'yuv'에 해당되는 글 2건

  1. 2012.12.29 Yuvist 0.9 release
  2. 2010.12.27 Java YuvViewer 0.1 (1)

Yuvist 0.9 release

프로그래밍 2012. 12. 29. 23:05

Yuvist 0.9.0 을 공개합니다.


Kivy framework을 사용한 YUV viewer 입니다.

4:0:0, 4:2:0, 4:2:2, 4:4:4 format을 지원하며

fragment shader를 사용하여 YUV to RGB conversion을 하므로 성능이 낮은 CPU에서도 잘 돕니다.




github에서 yuvist-release.zip을 다운받고 bin 디렉토리에서

윈도우이면 yuvist-0.9.0.zip을 맥이면 yuvist-0.9.0.dmg를 푸시면 됩니다.


소스코드는 https://github.com/luuvish/yuvist에 있습니다.

Posted by luuvish
,

Java YuvViewer 0.1

프로그래밍 2010. 12. 27. 01:01
 Head First Java 를 완독하고 뭔가 배운걸 티내볼까 하다가 간단한 프로그램을 짜보는게 좋겠다고 생각했습니다. 그래서 항상 작업하면서 아쉬웠던 툴을 만들어 보자고 시작한 프로젝트입니다.

 사실 Java는 기본적인 문법은 10년전에 알고 있었지만 써먹을 기회가 없었습니다. (솔직히 Java를 배울 당시에는 Java가 이렇게 까지 유명해지고 쓸모있을 줄 몰랐죠) Java와 아무 상관없는 일을 하다 보니 Java가 어떻게 발전하고 사용되어 왔는지 잘 몰랐죠. 정신을 차리고 보니 어느덧 Java는 C 언어 만큼 (혹은 그 이상) 많이 사용하는 언어가 되었습니다. 사용하지는 않더라도 알고 있어야 하는 기본 언어가 되어버렸습니다. 그래서 Head First Java를 읽었습니다.

 Head First 시리즈는 초보자용 책이 아닙니다. 그림도 많고 예제가 많아서 초심자가 보는 책이라고 생각하고 읽으면 분명 후회합니다. 그렇다고 전문가용 책도 아닙니다. 복잡하고 난해하고 잘 사용하지 않는 내용은 다루지 않습니다. 정상적인 프로그래머가 알아야 할 기본적이고 핵심적인 사항을 정확하게 이해하기 위해 노력한 책으로 평가하고 싶습니다. 저처럼 기본적인 건 알고 알고 있는 것중 약간 부정확하거나 헛갈리는 것, 그리고 다시 정리해서 이해해야 하는 저의 상황에 정확히 맞는 책이었습니다. Head First Java 덕분에 inner class를 이해하게 되었고 jar package와 jini 등을 구별하게 되었습니다. 물론 template 같은 경우는 사용할 수 있으나 만들 수는 없구요. 이정도의 수준만 되면 나머지는 java api document나 코딩하면서 익힐 수 있으니까 전문가처럼 능숙하지는 않아도 그럭저럭 코딩할 수 있겠죠... 아마..?

YuvViewer-0.1.jar


 YUV Viewer 입니다. YUV 4:2:0, 4:4:4 등의 file을 이미지로 보여주는 툴입니다. 복수개의 YUV 이미지를 화면에 보여주고 display할 수 있습니다. 뭐 자세한 건 생략할게요. 아는 사람은 쓰고 모르는 사람은 안쓰는 툴입니다. (--;)

 사용하기 위해서는 위의 첨부된 파일을 받으시고 콘솔에서 java -jar YuvViewer-0.1.jar 라고 타이핑하시거나 그냥 더블 클릭하셔도 됩니다. java runtime은 깔려 있어야 겠죠?


 습작이라 손 볼 곳은 많지만 우선은 이정도로 정리하고 올립니다. 저작권 같은 건 없으니 필요한 건 알아서 고치시면 됩니다. jar 안에 소스도 포함시켰어요. 잘 안 돈다고 뭐라하셔도 할 말 없고 수정했으니 반영하라고 던져주셔도 곤란합니다. 좀 여유가 생기면 수정된 버전을 만들지도 모르지만 약속드릴 수 없습니다.

 Java 자체도 조금 느리긴 하지만 최적화 할 여지가 몇군데 있습니다. YUV to RGB conversion은 일부러 최적화하지 않고 그대로 두었습니다. play mode나 fast backward/forward 일 때 이미지 로드 루틴을 thread로 분리하고 decoding된 frame들을 buffering 해야 하는데 이것도 아직 하지 않았습니다. 귀찮기도 하고 굳이 viewer가 realtime일 필요가 없었거든요. :-) 우선 최적화 되지 않은 코드로 작성하고 나중에 최적화해서 얼마나 차이가 나나 보고 싶기도 했었어요. 그런데 어느 정도 도니까 귀찮아졌네요. 언젠가는 고치겠죠?
Posted by luuvish
,