[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