2013-04-29 3 views
2

YUV420p 데이터 형식에 대한 기본적인 이해가 있습니다. 나는 그것이 비행기에 있다는 것을 이해하고 Y 데이터는 기본적으로 검은 색으로 & 백색 루마이고 width * height 픽셀의 길이 여야합니다.libswscale을 사용한 YUV420P 스케일링 - 회색 이미지 생성

나는 U 평면과 V 평면을 각 평면의 너비 * 높이/4라고 생각합니다.

그래서 모든 지식을 가지고 libswscale을 사용하여 yuv420p 이미지를 확장하려고합니다. U 및 V 평면이 누락 된 것처럼 출력 이미지가 회색입니다. 여기

내가 뭘하는지입니다 :

int src_stride[3] = {0, 0, 0}; 
    src_stride[0] = mInputWidth; 
    src_stride[1] = mInputWidth/4; 
    src_stride[2] = mInputWidth/4; 


    const uint8_t *input_planes[3]; 
    input_planes[0] = input.GetData(); // returns pointer to image data 
    input_planes[1] = input_planes[0] + (mInputWidth * mInputHeight); 
    input_planes[2] = input_planes[0] + (mInputWidth * mInputHeight) + (mInputWidth * mInputHeight/4); 


    int scale_rc = sws_scale(mSwsEncodeContext, input_planes, 
         src_stride, 0, mInputHeight, mEncodeAvFrame->data, 
         mEncodeAvFrame->linesize); 

어떤 생각 나는 src_stride 또는 input_planes을 서투르게 수선하고있어 경우에?

+0

보통 제멋대로이거나 충분한 정보를 제공하지 못하거나 올바른 태그가없는 경우 질문에 답하지 않습니다. 이 사건이 여기 있습니까? – spartygw

답변

0

위 코드는 YUV420P 데이터를 스케일링하는 경우에 적합합니다. 내 데이터는 YUV420P가 아니지만 동일한 크기를 가진 NV21이지만 U 및 V 데이터는 다른 평면에 없으며 1 평면에 있으며 인터리브되었습니다.