2013-05-06 86 views
2

在相机预览框架上,我在Android端以yv12格式获取数据。我需要在jni侧将其转换为YUV420P。我该怎么做?正如我从YUV420P格式的许多资料中看到的那样,y样本首先出现,然后是u样本。 u样本后跟v样本。 yv12格式与YUV420P相同,除了u和v采样以相反的顺序出现,这意味着y采样后面是v,然后是u采样。牢记这一点,我已经使用下面的交换代码在编码之前从yv12数据格式生成YUV420P数据。如何将yv12转换为yuv420p

avpicture_fill((AVPicture*)outframe, (uint8_t*)camData, codecCtx->pix_fmt, codecCtx->width, codecCtx->height); 

uint8_t * buf_store = outframe->data[1]; 
outframe->data[1]=outframe->data[2]; 
outframe->data[2]=buf_store; 

但它似乎并没有工作。我应该如何调整我的代码?

回答

0

不要使用avpicture_fill。我在我的应用程序中实现了这样的工作,并且其工作正常



picture->linesize[0] = frameWidth; 
picture->linesize[1] = frameWidth/2; 
picture->linesize[2] = frameWidth/2; 

picture->data[0] = camData; 
picture->data[1] = camData + picture->linesize[0]*frameHeight+picture->linesize[1]*frameHeight/2; 
picture->data[2] = camData + picture->linesize[0]*frameHeight;