我试图找到AVFrame.linesize[]
的每个单元格的含义,但没有找到。
据我所知linesize[0]
是宽度,linesize[1]
是高度。
avcodec_decode_video2(codecCtxDecode, frameDecoded, &frameFinished, &packet);
之后仅linesize [0]具有该值,而其他单元格始终为0? 更新了
我认为AVFrame.data [i]和AVFrame.linesize [i]是该行中特定颜色的数据和该行的长度,对吗?
最佳答案
对于诸如YUV420
的平面数据,linesize[i]
包含第i
个平面的步幅。
例如,对于帧640x480
,data[0]
包含指向Y
组件的指针,data[1]
和data[2]
包含指向U
和V
平面的指针。在这种情况下,linesize[0] == 640
,linesize[1] == linesize[2] == 320
(因为U
和V
平面小于Y
平面的一半)
对于像素数据(RGB24
),只有一个平面(data[0]
)和linesize[0] == width * channels
(640 * 3
的RGB24
)