On Mar 10, 2014, at 4:47 PM, wm4 <[email protected]> wrote:

> On Mon, 10 Mar 2014 16:18:27 -0700
> Ricky Huang <[email protected]> wrote:
> 
>> Hello all,
>> 
>> I am writing code that extracts the luminance component of an input video 
>> using my own custom filter in libavfilter - specifically I am extracting it 
>> from "PIX_FMT_YUV420P" a video and I am wondering how to go about doing so.  
>> According to the pixfmt.h header: 
>>> 
>>> PIX_FMT_YUV420P,   ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 
>>> Y samples)
>> 
>> I am not sure how to interpret that.  Assuming I am doing this in my 
>> draw_slice() function. It has the definition of:
>>> 
>>> static void draw_slice(AVFilterLink *inlink, int y0, int h, int slice_dir)
>> 
>> I know I can get to the input data plane by:
>>> 
>>> 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.

Or maybe I am missing something obvious here?  Can you help me out with how to 
use AVFrame to extract the luminance component?


>> But there are multiple "planes" in the data.  Does data[0], data[1], data[2] 
>> correspond to each of the Y, U, V channels?
> 
> Yes, for YUV420P.
> 
>> Also, once I am able to point my pointer at the correct coordinate, how 
>> should I interpret the extracted result (float, int, etc)?
>> 
>> 
>> Thank you in advance.
> _______________________________________________
> Libav-user mailing list
> [email protected]
> http://ffmpeg.org/mailman/listinfo/libav-user

_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to