[FFmpeg-devel] [PATCH] yadif does not copy video props

Baptiste Coudurier baptiste.coudurier
Mon Nov 22 21:42:50 CET 2010


On 11/21/10 9:11 AM, Michael Niedermayer wrote:
> On Sat, Nov 20, 2010 at 07:14:35PM -0800, Baptiste Coudurier wrote:
>> On 10/4/10 3:32 PM, Michael Niedermayer wrote:
>>> On Mon, Oct 04, 2010 at 12:25:44PM -0700, Baptiste Coudurier wrote:
>>>> On 10/04/2010 03:45 AM, Michael Niedermayer wrote:
>>>>> On Sun, Oct 03, 2010 at 08:56:33PM -0700, Baptiste Coudurier wrote:
>>>>>> Hi,
>>>>>>
>>>>>> $subject.
>>>>>>
>>>>>> Copy video props and unset interlaced :)
>>>>>>
>>>>>> --
>>>>>> Baptiste COUDURIER
>>>>>> Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
>>>>>> FFmpeg maintainer                                  http://www.ffmpeg.org
>>>>>
>>>>>>   vf_yadif.c |    2 ++
>>>>>>   1 file changed, 2 insertions(+)
>>>>>> 9e59687e1e0c65aab1fa4b25b861a64de82e4c97  yadif_video_props.patch
>>>>>> Index: libavfilter/vf_yadif.c
>>>>>> ===================================================================
>>>>>> --- libavfilter/vf_yadif.c	(revision 25329)
>>>>>> +++ libavfilter/vf_yadif.c	(working copy)
>>>>>> @@ -177,6 +177,8 @@
>>>>>>
>>>>>>       if (is_second)
>>>>>>           avfilter_start_frame(ctx->outputs[0], yadif->out);
>>>>>> +    avfilter_copy_buffer_ref_props(yadif->out, yadif->cur);
>>>>>> +    yadif->out->video->interlaced = 0;
>>>>>>       avfilter_draw_slice(ctx->outputs[0], 0, link->h, 1);
>>>>>>       avfilter_end_frame(ctx->outputs[0]);
>>>>>>
>>>>>
>>>>> this should remove yadif->out->pts = yadif->cur->pts;
>>>>
>>>> Ok, so the change be moved in start_frame ?
>>>
>>> probably not
>>>
>>> my pts copy was just in start_frame because that way the second field
>>> would end with the default pts which should be AV_NOPTS_VALUE
>>>
>>>
>>>>
>>>>> and the second frame with field->frame mode should have its pts set to
>>>>> unknown or interpolated
>>>>
>>>> I was fearing that.
>>>
>>> it should be trivial, we have the next frame already its a matter of
>>> if either is AV_NOPTS make it AV_NOPTS otherwise (a+b)/2
>>>
>>
>> Humm, something like that ?
>>
>> -- 
>> Baptiste COUDURIER
>> Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
>> FFmpeg maintainer                                  http://www.ffmpeg.org
> 
>>  vf_yadif.c |   12 ++++++++++--
>>  1 file changed, 10 insertions(+), 2 deletions(-)
>> fa62f63f613efd8352ae7db258b1c8c865bccdbd  yadif_video_props.patch
>> Index: libavfilter/vf_yadif.c
>> ===================================================================
>> --- libavfilter/vf_yadif.c	(revision 25775)
>> +++ libavfilter/vf_yadif.c	(working copy)
>> @@ -175,8 +175,17 @@
>>  
>>      filter(ctx, yadif->out, tff ^ !is_second, tff);
>>  
>> -    if (is_second)
>> +    avfilter_copy_buffer_ref_props(yadif->out, yadif->cur);
>> +    yadif->out->video->interlaced = 0;
>> +    if (is_second) {
>> +        if (yadif->next->video->pts != AV_NOPTS_VALUE &&
>> +            yadif->cur->video->pts != AV_NOPTS_VALUE)
>> +            yadif->out->video->pts =
> 
>> +                (yadif->next->video->pts + yadif->cur->video->pts) / 2;
> 
> (a+b)/2 can overflow
> (a&b) + ((a^b)>>1) should be better
> we might want this as macro in libavutil

Well fixed.

> also nipikcery says if else should have a {} to minimize future diffs
> 
> except that it lgtm if tested

Tested, fixed and applied. See cvslog :)

-- 
Baptiste COUDURIER
Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
FFmpeg maintainer                                  http://www.ffmpeg.org



More information about the ffmpeg-devel mailing list