From patchwork Tue Aug 28 07:52:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: jay@wizardofthenet.com X-Patchwork-Id: 10160 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:12c4:0:0:0:0:0 with SMTP id 65-v6csp7322134jap; Tue, 28 Aug 2018 00:53:31 -0700 (PDT) X-Google-Smtp-Source: ANB0Vda163H72Itm8KuruB00X0dbKGLut55XyZNYdCDpCHUed7/16xagcAIeLY6Q6UK592FPHTQw X-Received: by 2002:a1c:55c2:: with SMTP id j185-v6mr581777wmb.104.1535442811433; Tue, 28 Aug 2018 00:53:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535442811; cv=none; d=google.com; s=arc-20160816; b=QFdr+PnwKnbr0g/8KQqg7WCRfC53rPvKptkuXOtcBWLqZqFCQ71JqJoOy0qVqqHJp/ nTkz31bwaKYiY3Ob6s1gvd+g4iQWyh/8OEKQWTsBVr9oKEQXoWLi5mf47clZLyex99v7 /aUVeN70zogLOjVk4UnddcE6JwuV1/XcryEbJvCIgudZXFfemwzl3GjjV8f3ZSqgvyIh pBDfOQnx1XO9F1G9VCj24Il9G2fqqlDiAsoGnDppwXSQPMy2+Rn0d7r0UDq/3OvxlgW2 ufAKHDjXowDSXOSfiV0vjajcstXlyHSqMOXYT9azPbFXl37Vd1AzNpI717/t/DLpwEvb pkJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :delivered-to:arc-authentication-results; bh=vvDp4jrEbiecj3bVomzCVrdcvTkVHVvdT6F/WoXkIhc=; b=xMLz80wLpcTI50KqgZwrkhH+t2s8Ksbis/dgPUNH91XXJ6rUDkbyeeiolwoMRHJGU9 EZD70rDuBe6qTEue7tidy4przEsa3tFAaT0RuvCe9gjVtm5+7bAS3BMMsW3J1i0sMV8f CsKzwKp4ZlGN+kqq5r9VeYs7+hXD5ZHkD5v0dpco3KQFPE0QfhcYyC+F/+407JqPyGZC RiShdqocix9MxXyfv4CNS3SvhM+ODt2fAPcpclQoTBLH+JPlLqOYGhyJstqi4kodY0gD Ho7bN1THwolZ+ME3XAVFZyxmzAr4T1yzb9L/PEiRZ9Ag81ECRrepxtdkYaZG1OgPfgnH /0Gw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id o16-v6si299380wrp.94.2018.08.28.00.53.30; Tue, 28 Aug 2018 00:53:31 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4343A689B0F; Tue, 28 Aug 2018 10:53:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from smtp97.iad3b.emailsrvr.com (smtp97.iad3b.emailsrvr.com [146.20.161.97]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C57526800A7 for ; Tue, 28 Aug 2018 10:53:18 +0300 (EEST) Received: from smtp5.relay.iad3b.emailsrvr.com (localhost [127.0.0.1]) by smtp5.relay.iad3b.emailsrvr.com (SMTP Server) with ESMTP id EEEE740076; Tue, 28 Aug 2018 03:53:20 -0400 (EDT) X-Auth-ID: jay@wizardofthenet.com Received: by smtp5.relay.iad3b.emailsrvr.com (Authenticated sender: jay-AT-wizardofthenet.com) with ESMTPSA id 93AB940069; Tue, 28 Aug 2018 03:53:20 -0400 (EDT) X-Sender-Id: jay@wizardofthenet.com Received: from localhost.localdomain (cpe-76-89-145-17.socal.res.rr.com [76.89.145.17]) (using TLSv1.2 with cipher DHE-RSA-AES128-GCM-SHA256) by 0.0.0.0:465 (trex/5.7.12); Tue, 28 Aug 2018 03:53:20 -0400 From: Jason Stevens To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Aug 2018 00:52:48 -0700 Message-Id: <20180828075248.22152-1-jay@wizardofthenet.com> X-Mailer: git-send-email 2.18.0.windows.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] libavformat/mxfenc: add missing dnxhr mxf container essence ULs X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Jason Stevens Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Add missing dnxhr mxf container essence ULs to the mxf encoder. set proper mxf frame size for dnxhr. This fixes dnxhr mxf files being quarantined by Avid Media Composer. --- libavformat/mxfenc.c | 55 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 7f629dbe53..7991a1c6de 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,13 @@ 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 ((cid >= 1270) && (cid <= 1274)) { + frame_size = pkt->size; // DNxHR is not predefined, use encoded frame size + } else { + frame_size = avpriv_dnxhd_get_frame_size(cid); // DNxHD predefined frame sizes + } + + if (frame_size < 0) return -1; if ((sc->interlaced = avpriv_dnxhd_get_interlaced(cid)) < 0) return AVERROR_INVALIDDATA; @@ -1998,6 +2034,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; default: return -1; }