[FFmpeg-devel] [PATCHv2] Revert "do not write f2 if not interlaced"

Tomas Härdin tomas.hardin at codemill.se
Mon Feb 1 09:31:51 CET 2016


On Fri, 2016-01-29 at 17:45 +0100, Sebastian Dröge wrote:
> From: Sebastian Dröge <sebastian at centricular.com>
> 
> This reverts commit 8ed82d8174a666f80ab8834e3617cbe91ae740a9.
> 
> SMPTE S377-1-2009c defines in F.4.1 that the Video Line Map should
> always be an array with two 32 bit integers as elements. This is
> repeated in G.2.12 with actual examples for progressive content,
> where the second value would always be 0.
> 
> Additionally, the IRT MXF analyser also lists this as the only
> error in the MXF output from ffmpeg: https://mxf-analyser-cloud.irt.de
> ---
>  libavformat/mxfenc.c      | 10 +++++-----
>  tests/ref/lavf/mxf        |  6 +++---
>  tests/ref/lavf/mxf_opatom |  2 +-
>  3 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
> index 35c67f7..6da8b10 100644
> --- a/libavformat/mxfenc.c
> +++ b/libavformat/mxfenc.c
> @@ -1013,7 +1013,7 @@ static void mxf_write_cdci_common(AVFormatContext *s, AVStream *st, const UID ke
>      int stored_height = (st->codec->height+15)/16*16;
>      int display_height;
>      int f1, f2;
> -    unsigned desc_size = size+8+8+8+8+8+8+8+5+16+sc->interlaced*4+12+20+5;
> +    unsigned desc_size = size+8+8+8+8+8+8+8+5+16+4+12+20+5;

Not strictly related to this patch but:
Can we do something about this? Other muxers (such as movenc) use a
combination of ftell() and fseek() to rewrite size fields like these.
Or perhaps mxfenc needs to be able to write to a pipe? In that case
seeking in a short buffer is allowed in avio IIRC

>      if (sc->interlaced && sc->field_dominance)
>          desc_size += 5;
>      if (sc->signal_standard)
> @@ -1081,12 +1081,12 @@ static void mxf_write_cdci_common(AVFormatContext *s, AVStream *st, const UID ke
>          f1 *= 2;
>      }
>  
> -    mxf_write_local_tag(pb, 12+sc->interlaced*4, 0x320D);
> -    avio_wb32(pb, sc->interlaced ? 2 : 1);
> +
> +    mxf_write_local_tag(pb, 16, 0x320D);
> +    avio_wb32(pb, 2);
>      avio_wb32(pb, 4);
>      avio_wb32(pb, f1);
> -    if (sc->interlaced)
> -        avio_wb32(pb, f2);
> +    avio_wb32(pb, f2);

Looks OK..

/Tomas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160201/4959af62/attachment.sig>


More information about the ffmpeg-devel mailing list