안드로이드 카메라 NV21바로 shader에서 처리하기. 안드로이드에서 Preview데이터를 받으면 NV21이라는 규격으로 받아오게 된다.물론 다른 형태도 지원하지만 필자가 테스트해본 바로는 NV21를 그냥 사용하는 것이 가장 간단하다는 결론을 내렸다. NV21을 RGB로 만드는 것에는 이미지라는 큰 데이터를 다루기에 부하가 많이 걸려 부하를 줄이기 위한 여러가지 작업을 하던 중 NV21을 바로 이용하여 처리하는 방법이 떠올랐다..(머리가 나빠졌는지 이 간단한 걸 알아내는 데 이리 오래 걸리다니..) NV21은 YPlane + VUPlane으로 구성되어 있다.이 Plane을 각각 Plane를 Texture로 만든다..(2개의 Texture를 이용한다.)여기서 VUPlane은 YPlane의 1/4크기를 갖..
카메라api를 이용하여 preview를 받아오는 중에.. NV21은 모든 기기에서 지원하고, setPreviewFormat을 쓰지 않을 경우에 NV21이 기본 값이다. 하지만 필자가 가지고 있는 기기들을 살펴본 결과 YV12형식을 대부분 지원(+1)하였다. NV21은 V와 U값이 1byte씩 교차하면서 저장되어 있는 데 반해, YV12는 전체V(V-Plane)와 전체U(U-Plane)이 따로 저장이 된다. 필자는 Preview를 OpenGLES에 Texture를 만들어야 했기 때문에, NV21보다는 YV12를 사용하기로 했다.(물론 NV21를 Y와U와 V로 분리하는 코드를 넣기로 했다. ) shader에서 YUV각각의 값을 RGB로 변환하는 코드를 두고, texture의 YUV위치를 vertext sha..
구버전의 카메라Api를 사용하여 Preview를 보이게 하는 과정에서, setPreviewCallback을 사용할 경우, 지속적으로 메모리를 할당하는 방식을 쓰기 때문에, 효율을 위해 setPreviewCallbackWithBuffer를 사용할 수 밖에 없다. 실제 setPreviewCallback만 사용할 경우 메모리할당이 지속적으로 일어나며, 메모리를 해제한다고 GC의 순간 멈춤 또한 지속적으로 발생한다.GC때문에 Logcat에는 GC가 동작에 따른 로그로 가득차기 일 수 있다. 효율적인 Preview를 위해 setPreviewCallBackWithBuffer를 사용해야 하는 데, 역시 예상대로 android개발은 삽질의 연속이다. 같은 코드를 사용하여 테스트를 한다고 해도, 어떤 기기에서는 상당히 ..
안드로이드 YV12 이 문서 오류가 있으니 수정되기 전까지 보지 마세요..ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 안드로이드의 카메라는 기본적으로 NV21방식을 쓴다 모든 안드로이드 기기의 카메라는 NV21로 촬영할 수있다. 아니면 기기에 들어갈 수 없다. 단, 구글이 정책을 바꾸면..헉~, 어찌 되건 NV21은 아마 거의 지원할 것이다. 언젠가 YUV_420_888가 기본이 될지도 모르겠다. 롤리팝부터는 YUV_420_888를 권장하기 때문에.... 필자가 테스트한 장치들의 경우 Camera Api(구버전)의 경우 NV21과 YV12를 지원하는 것으로 보였다. NV21은 다음의 구조를 가진다. 6x4픽셀크기의 이미지를 예를 들어 설명하면, 바이트순서는 다음과 같다( 16byte align stride 부분은 무시하고 보라..
안드로이드 장치에 장착된 카메라를 이용하는 프로그램을 연습 중이다.솔직히 필자의 경우 카메라를 사용할 일이 없어서 무심히 지나치던 부분인데, 일반 사용자들이 이렇게도 카메라를 이용하여 촬영을 많이 할 줄은 몰랐다.그래서 관심을 가지고 구글의 API문서를 정독을 시작했다. https://developer.android.com/guide/topics/media/camera.html : 킷캣까지.. 구글이 제공하는 일반적인 카메라 사용법https://developer.android.com/reference/android/hardware/Camera.html : 킷캣까지의 class 처음 위의 두 페이지에 들어가면 가장 눈에 띄는 것이 바로 이 문서들은 롤리팝부터는 Deprecated되었다는 것이다.글을 쓰고 ..
- Total
- Today
- Yesterday
- 텍스처
- gpgpu
- 아끼는 법
- ComputeShader
- 에어콘
- 애드핏
- 공유 컨텍스트
- OpenGLes
- 에어컨
- 전기세
- 애드센스
- 컴퓨트셰이더
- 금리
- 안드로이드
- 티스토리
- TTS
- 재테크
- 블로그
- 컴퓨트쉐이더
- Android
- 경제보복
- 재태크
- 전기요금
- choreographer
- 예금
- 사용료
- 전기료
- 적금
- texture
- OpenGL ES
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |