[FFmpeg-devel] [PATCH v5 2/2] libavformat/mxfenc: add missing dnxhr mxfcontainer essence ULs
Baptiste Coudurier
baptiste.coudurier at gmail.com
Mon Sep 10 20:26:56 EEST 2018
Hi Jason,
On Sat, Sep 8, 2018 at 6:27 AM Jason Stevens <jay at wizardofthenet.com> wrote:
> Add missing dnxhr mxf container essence ULs to the mxf encoder.
>
> 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(-)
>
> diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
> index 7f629dbe53..66814ef6a1 100644
> --- a/libavformat/mxfenc.c
> +++ b/libavformat/mxfenc.c
> @@ -146,6 +146,11 @@ enum ULIndex {
> INDEX_DNXHD_720p_8bit_HIGH,
> INDEX_DNXHD_720p_8bit_MEDIUM,
> INDEX_DNXHD_720p_8bit_LOW,
> + INDEX_DNXHR_LB,
> + INDEX_DNXHR_SQ,
> + INDEX_DNXHR_HQ,
> + INDEX_DNXHR_HQX,
> + INDEX_DNXHR_444,
> INDEX_JPEG2000,
> INDEX_H264,
> };
> @@ -345,6 +350,31 @@ static const MXFContainerEssenceEntry
> mxf_essence_container_uls[] = {
> {
> 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01,0x15,0x01,0x05,0x00
> },
> {
> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x71,0x13,0x00,0x00
> },
> mxf_write_cdci_desc },
> + // DNxHR LB - CID 1274
> + { {
> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x11,0x01,0x00
> },
> + {
> 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01,0x15,0x01,0x05,0x00
> },
> + {
> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x71,0x28,0x00,0x00
> },
> + mxf_write_cdci_desc },
> + // DNxHR SQ - CID 1273
> + { {
> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x11,0x01,0x00
> },
> + {
> 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01,0x15,0x01,0x05,0x00
> },
> + {
> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x71,0x27,0x00,0x00
> },
> + mxf_write_cdci_desc },
> + // DNxHR HQ - CID 1272
> + { {
> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x11,0x01,0x00
> },
> + {
> 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01,0x15,0x01,0x05,0x00
> },
> + {
> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x71,0x26,0x00,0x00
> },
> + mxf_write_cdci_desc },
> + // DNxHR HQX - CID 1271
> + { {
> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x11,0x01,0x00
> },
> + {
> 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01,0x15,0x01,0x05,0x00
> },
> + {
> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x71,0x25,0x00,0x00
> },
> + mxf_write_cdci_desc },
> + // DNxHR 444 - CID 1270
> + { {
> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x11,0x01,0x00
> },
> + {
> 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01,0x15,0x01,0x05,0x00
> },
> + {
> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x71,0x24,0x00,0x00
> },
> + mxf_write_cdci_desc },
> // JPEG2000
> { {
> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0c,0x01,0x00
> },
> {
> 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01,0x15,0x01,0x08,0x00
> },
> @@ -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 = st->codecpar->bits_per_raw_sample;
> + break;
> + case 1270:
> + sc->index = INDEX_DNXHR_444;
> + sc->component_depth = st->codecpar->bits_per_raw_sample;
> + break;
> default:
> return -1;
> }
>
Looks good to me.
--
Baptiste
More information about the ffmpeg-devel
mailing list