[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