[FFmpeg-devel] [PATCH] avcodec/dvdec: correctly set interlaced and tff

Baptiste Coudurier baptiste.coudurier at gmail.com
Wed Nov 6 18:50:33 EET 2019


> On Nov 2, 2019, at 12:00 PM, Baptiste Coudurier <baptiste.coudurier at gmail.com> wrote:
> 
> On Wed, Sep 11, 2019 at 1:29 PM Baptiste Coudurier <baptiste.coudurier at gmail.com <mailto:baptiste.coudurier at gmail.com>> wrote:
> Hey Carl,
> 
>> On Sep 11, 2019, at 12:38 PM, Carl Eugen Hoyos <ceffmpeg at gmail.com <mailto:ceffmpeg at gmail.com>> wrote:
>> 
>> Am Mi., 11. Sept. 2019 um 21:31 Uhr schrieb Baptiste Coudurier
>> <baptiste.coudurier at gmail.com <mailto:baptiste.coudurier at gmail.com>>:
>>> 
>>> ---
>>> libavcodec/dvdec.c | 13 ++++++++++---
>>> 1 file changed, 10 insertions(+), 3 deletions(-)
>>> 
>>> diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c
>>> index 4345cd9e29..cfa0fb9905 100644
>>> --- a/libavcodec/dvdec.c
>>> +++ b/libavcodec/dvdec.c
>>> @@ -592,12 +592,19 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data,
>>> 
>>>     if ((ret = ff_thread_get_buffer(avctx, &frame, 0)) < 0)
>>>         return ret;
>>> -    frame.f->interlaced_frame = 1;
>>> -    frame.f->top_field_first  = 0;
>>> 
>>>     /* Determine the codec's field order from the packet */
>>>     if ( *vsc_pack == dv_video_control ) {
>>> -        frame.f->top_field_first = !(vsc_pack[3] & 0x40);
>>> +        if (avctx->height == 720) {
>>> +            frame.f->interlaced_frame = 0;
>>> +            frame.f->top_field_first = 0;
>>> +        } else if (avctx->height == 1080) {
>>> +            frame.f->interlaced_frame = 1;
>>> +            frame.f->top_field_first = (vsc_pack[3] & 0x40) == 0x40;
>>> +        } else {
>>> +            frame.f->interlaced_frame = (vsc_pack[3] & 0x10) == 0x10;
>>> +            frame.f->top_field_first = !(vsc_pack[3] & 0x40);
>> 
>> Does this fix ticket #5092?
> Will apply

Applied

— 
Baptiste


More information about the ffmpeg-devel mailing list