3520的YUV数据格式

1、vi的帧场数据格式为VIDEO_FIELD_INTERLACED(3)
    顶场底场数据按行交错排列。
    top line0
    bot line0
    top line1
    bot line1
    ...

    1700输出的1D1,16个通道,通道0~7在顶场,8~15在底场
    所以从vi获取ch0的yuv数据时,需要丢弃偶数场

2、VO的帧场数据格式为VIDEO_FIELD_TOP或者VIDEO_FIELD_BOTTOM
    先顶场再底场
    top line0
    top line1
    ...    
    bot line0
    bot line1
    ...        
    所以从v0获取ch0的yuv数据时,不需要丢弃偶数场

3、YUV的数据格式,stVFrameInfo.stVFrame.enPixelFormat==PIXEL_FORMAT_YUV_SEMIPLANAR_420
stVFrameInfo.stVFrame.u32PhyAddr[0]:保存Y数据(每像素8bit)
stVFrameInfo.stVFrame.u32PhyAddr[1]:保存UV数据(每像素2bit U,2bit V)
stVFrameInfo.stVFrame.u32Stride[0]和stVFrameInfo.stVFrame.u32Stride[1]是跨度。

yuv数据保存格式如下:
stVFrameInfo.stVFrame.u32PhyAddr[0]地址:
Y00 Y01 Y02 Y03 ...
Y10 Y11 Y12 Y13 ...

stVFrameInfo.stVFrame.u32PhyAddr[1]地址:
U00 V11 U02 V13 ...

还原出像素:
(Y00 U00 V11),(Y01 U00 V11),(Y02 U02 V13),(Y03 U02 V13)...
(Y10 U00 V11),(Y11 U00 V11),(Y12 U02 V13),(Y13 U02 V13)...


4、打印信息如下:
printf("w=%d,h=%d,Field=%d,format=%d,s0=%x,%d,s1=%x,%d,s2=%x,%d\n",
    stVFrameInfo.stVFrame.u32Width,stVFrameInfo.stVFrame.u32Height,
    stVFrameInfo.stVFrame.u32Field,stVFrameInfo.stVFrame.enPixelFormat,
    stVFrameInfo.stVFrame.u32PhyAddr[0],stVFrameInfo.stVFrame.u32Stride[0],
    stVFrameInfo.stVFrame.u32PhyAddr[1],stVFrameInfo.stVFrame.u32Stride[1],
    stVFrameInfo.stVFrame.u32PhyAddr[2],stVFrameInfo.stVFrame.u32Stride[2]);

8104(3515):
w=352,h=288,Field=4,format=19,s0=c8df8000,352,s1=c8e10c00,352,s2=0,0

7016(3515):
w=720,h=576,Field=3,format=19,s0=cc686200,720,s1=cc6eb600,720,s2=0,0

7032(3520,从VI获取数据):
w=352,h=4636,Field=3,format=19,s0=c3ab4e00,384,s1=c3c67800,384,s2=0,0

7032(3520,从VO获取数据):
w=352,h=2318,Field=2,format=19,s0=c40ef980,768,s1=c42a2380,768,s2=0,0

原文地址:https://www.cnblogs.com/GoodGoodWorkDayDayUp/p/2241042.html