[FFmpeg-devel] [PATCH v3 2/2] libavformat/mxfenc: add missing dnxhr mxfcontainer essence ULs
jay at wizardofthenet.com
jay at wizardofthenet.com
Fri Sep 7 16:42:55 EEST 2018
I've not seen a smpte spec that contains the DNXHR mxf ULs.
The mxf UL definitions can be looked up at registry.smpte-ra.org
search for "VC-3", CIDs 1270-1274 are DNXHR.
DNXHR in already supported in mov and mkv.
-Jason
-----Original Message-----
From: "Tomas Härdin" <tjoppen at acc.umu.se>
Sent: Friday, September 7, 2018 1:54am
To: "FFmpeg development discussions and patches" <ffmpeg-devel at ffmpeg.org>
Cc: "Jason Stevens" <jay at wizardofthenet.com>
Subject: Re: [FFmpeg-devel] [PATCH v3 2/2] libavformat/mxfenc: add missing dnxhr mxfcontainer essence ULs
fre 2018-09-07 klockan 01:03 -0700 skrev Jason Stevens:
> Add missing dnxhr mxf container essence ULs to the mxf encoder.
> set proper mxf frame size for dnxhr using libavformat/dnxhd's get dnxhr size function.
>
> This fixes dnxhr mxf files being quarantined by Avid Media Composer.
>
> > Signed-off-by: Jason Stevens <jay at wizardofthenet.com>
> ---
> libavformat/mxfenc.c | 53 +++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 52 insertions(+), 1 deletion(-)
>
> @@ -1959,7 +1989,11 @@ AVPacket *pkt)
> header_cid = pkt->data + 0x28;
> cid = header_cid[0] << 24 | header_cid[1] << 16 | header_cid[2] << 8 | header_cid[3];
>
> - if ((frame_size = avpriv_dnxhd_get_frame_size(cid)) < 0)
> + if ((frame_size = avpriv_dnxhd_get_frame_size(cid)) == DNXHD_VARIABLE) {
> + frame_size = avpriv_dnxhd_get_hr_frame_size(cid, st->codecpar->width, st->codecpar->height);
> + }
> +
> + if (frame_size < 0)
> return -1;
> if ((sc->interlaced = avpriv_dnxhd_get_interlaced(cid)) < 0)
> return AVERROR_INVALIDDATA;
> @@ -1998,6 +2032,23 @@ AVPacket *pkt)
> case 1253:
> sc->index = INDEX_DNXHD_720p_8bit_LOW;
> break;
> + case 1274:
> + sc->index = INDEX_DNXHR_LB;
> + break;
> + case 1273:
> + sc->index = INDEX_DNXHR_SQ;
> + break;
> + case 1272:
> + sc->index = INDEX_DNXHR_HQ;
> + break;
> + case 1271:
> + sc->index = INDEX_DNXHR_HQX;
> + sc->component_depth = 10;
> + break;
> + case 1270:
> + sc->index = INDEX_DNXHR_444;
> + sc->component_depth = 10;
> + break;
Is there some spec one can reference to for these magic constants?
Perhaps this has been mentioned already, but mxf_parse_dnxhd_frame()
seems like something that could be useful for other muxers, assuming
DNxHR can be muxed into anything beyond MXF
/Tomas
More information about the ffmpeg-devel
mailing list