I'm trying to dump a YUV420
data into the AVFrame
structure of FFMPEG. From the below link:
http://ffmpeg.org/doxygen/trunk/structAVFrame.html, i can derive that i need to put my data into
data[AV_NUM_DATA_POINTERS]
using
linesize [AV_NUM_DATA_POINTERS].
The YUV data i'm trying to dump is YUV420 and the picture size is 416x240.
So how do i dump/map this yuv data to AVFrame structures variable? Iknow that linesize represents the stride i.e. i suppose the width of my picture, I have tried with some combinations but do not get the output.I kindly request you to help me map the buffer. Thanks in advance.
AVFrame can be interpreted as an AVPicture to fill the
data
andlinesize
fields. The easiest way to fill these field is to the use the avpicture_fill function.To fill in the AVFrame's Y U and V buffers, it depends on your input data and what you want to do with the frame (do you want to write into the AVFrame and erase the initial data? or keep a copy).
If the buffer is large enough (at least
linesize[0] * height
for Y data,linesize[1 or 2] * height/2
for U/V data), you can directly use input buffers:If you want/need to manipulate a copy of input data, you need to compute the needed buffer size, and copy input data in it.
Once you are done with the AVFrame, do not forget to free it with
av_frame_free
(and any buffer allocated byav_malloc
).