[Libav-user] Help with unpacking PIX_FMT_YUV4* data types

Ricky Huang rhuang.work at gmail.com
Wed Mar 12 01:55:34 CET 2014

On Mar 11, 2014, at 5:03 PM, wm4 <nfxjfg at googlemail.com> wrote:

> On Mon, 10 Mar 2014 18:32:54 -0700
> Ricky Huang <rhuang.work at gmail.com> wrote:
>>>>> AVFilterBufferRef *cur_pic = link->cur_buf;
>>>>> uint8_t *data = cur_pic->data[0];
>>> I think this functionality was removed long ago. You're supposed to
>>> write/read AVFrames from the filters.
>> Due to internal reasons, we are running ffmpeg 0.7, so the primary arguments to draw_slice() is AVFilterLink*.  Sorry I should have specified that when asked the question.
> Sure is ancient...
>> Or maybe I am missing something obvious here?  Can you help me out with how to use AVFrame to extract the luminance component?
> AVFrame works similar to AVFilterBufferRef. Assuming the data member
> contains the plane pointers, data[0] will contain the plane with the
> luminance data.

Thank you for responding, wm4.  Let's use this from pixfmt.h header file as an example:

    PIX_FMT_YUV420P,   ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)

Does that mean I should read in the luminance plane 2 bytes at a time and interpret it as a number together?  The reason I ask that is because the linesize of data[0] is twice as wide as data[1] or data[2] (720 vs 368 and 368, respectively).  Also the data point is declared as "uint8_t *", how does one determine how to interpret the type of the value - int, float, etc?

Thank you again!

> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20140311/7c1fcfc3/attachment.html>

More information about the Libav-user mailing list