1、我想在 AlgLink_OsdalgProcessFrame 里用自己的算法替换osd算法,输入的视频流是
SWOSD_FORMAT_YUV420sp,我想分别处理 y_buffer, cb_buffer and cr_buffer ,但是我不知道
如何分别提取cb_buffer and cr_buffer,是不是我需要创建两个数组用来临时存储cb_buffer and cr_buffer,
处理完后在把处理后的值赋值回去,如下:
int i=0,j=0;
UInt8 *y_buffer = pFrame->addr[0][0];
UInt8 cbbuffer_arr[pFrameInfo->rtChInfo.height*(pFrameInfo->rtChInfo.width/4)];
UInt8 crbuffer_arr[pFrameInfo->rtChInfo.height*(pFrameInfo->rtChInfo.width/4)];
UInt8 *pBufferStart = pFrame->addr[0][1];
for (i= 0; i<(pFrameInfo->rtChInfo.height*pFrameInfo->rtChInfo.width)>>1; i+=2)
{
cbbuffer_arr[j] = *(pBufferStart+i);
crbuffer_arr[j] = *(pBufferStart+i+1);
j++;
}
/*----我的算法接口------*/
YUV420_PROCESS(y_buffer,cbbuffer_arr,crbuffer_arr);
j=0;
/*----处理完后的y_buffer,cbbuffer_arr,crbuffer_arr再赋值回去------*/
for (i= 0; i<(pFrameInfo->rtChInfo.height*pFrameInfo->rtChInfo.width)>>1; i+=2)
{
*(pBufferStart+i) = cbbuffer_arr[j];
*(pBufferStart+i+1)= crbuffer_arr[j];
j++;
}
这样对吗?
2、If I do that in AlgLink_OsdalgProcessFrame,whether I rewrite
UInt8 *y_buffer = pFrame->addr[0][0]+0x30000000;
UInt8 *pBufferStart = pFrame->addr[0][1]+0x30000000;