2014-12-12 1 views
0

나는 아래의 방법을 따라 YUV 버퍼에 액세스했습니다. 그것은 몇 가지 휴대폰에서 작동합니다. 그러나 S3와 Note 3에서는 문제가 발생합니다. 어떤 이유 ? 도와주세요.YUV를 Android에서 덤프하는 방법 Native OMXCodec (S3 및 Note 3)

sp<GraphicBuffer> mCurrGraphicBuffer; 

void *vaddr; 

mCurrGraphicBuffer = mVideoBuffer->graphicBuffer(); 

mCurrGraphicBuffer->lock(GRALLOC_USAGE_SW_READ_OFTEN, &vaddr); 

나는 Google을 시도했지만 아무런 도움이되지 않았습니다.

+0

이 YUV는 카메라에서 가져온 것으로, HW 인코더에 들어가기 전에 변경하고 싶습니다. 맞습니까? –

+0

안녕하세요, 알렉스, 네트워크에서 H264 스트림을 받고 JB 이후에 OMXCodec에 이러한 스트림을 제공합니다. 렌더링은 괜찮습니다. 하지만 JPG에 일부 키 프레임을 캡처해야합니다. 그래서 나는이 코드를 작성했다. 대부분의 핸드셋에서 잘 작동합니다. 그러나 참고 3과 S3에서 나는이 문제에 직면 해있다. – user3865065

+0

아하, 그래서 당신은 표면에 출력을 렌더링하기 위해 무대 조명을 설정하십시오. 일부 삼성 기기에서는이 경우 YUV 프레임에 액세스 할 수 없습니다. 별도의 디코더를 실행하여 YUV를 수신 할 수 있습니다. 정말로 키 프레임 만 필요하면 잠시 동안이 디코더를 실행할 수 있습니다. –

답변

1

매핑 된 가상 주소를 제공하기위한 lock의 구현은 공급 업체의 내부 구현 gralloc에 따라 다릅니다. 문제에 대한

하나의 잠재적 인 원인은 GraphicBufferusage 플래그 GRALLOC_USAGE_SW_READ_OFTEN을 나타내는으로 작성되지 않았을 수있을 수 있습니다.

가능하면 을 생성하기 전에 usage 플래그에서이 플래그를 사용하도록 설정하고 실험을 다시 시도하십시오. 성공해야한다고 생각합니다.

+0

kEnableGrallocUsageProtected 플래그를 활성화 하시겠습니까? – user3865065

+0

'gralloc'에 전달되는 사용 플래그에서'GRALLOC_USAGE_SW_READ_OFTEN'을 포함해야합니다. 예를 들어,'kEnableGrallocUsageProtected'의 경우, http://androidxref.com/5.0.0_r2/xref/frameworks/av/media/libstagefright/OMXCodec.cpp#1848 에서처럼 사용 플래그에 대한 업데이트가 있습니다. 한 가지 예가 http://androidxref.com/5.0.0_r2/xref/frameworks/native/libs/gui/tests/SurfaceTextureGL_test.cpp#332 – Ganesh

+0

안녕하세요.이 방법을 시도했습니다. 불운. 다른 제안은 제발? – user3865065

관련 문제