From patchwork Tue Aug 29 00:13:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 4869 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.15.201 with SMTP id 70csp2662403jao; Mon, 28 Aug 2017 17:13:37 -0700 (PDT) X-Received: by 10.28.103.6 with SMTP id b6mr162356wmc.28.1503965616937; Mon, 28 Aug 2017 17:13:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1503965616; cv=none; d=google.com; s=arc-20160816; b=FDwMu9ALFDgwD3TbCGP/rvv0h10BgmxNz9Gs0CnQ7k4Zjdvxc0rkbQ6QYbCzkL0gNb P8FzOAZJ6mvQRrxzpf7udDZn6n2hUP9uHi/kV6mf4xQDfpZDmm8xXXrlnGrkAs5HZj8C uoMWJcyVfHL5gVEkpKSnoNwky3gXY3INY6maANQZceA0HJwwVgp4b0GKxgwQyPrY1fXG +xKRduQ0S74m0NZXicGW1triwCwnLI7kEnDrvFoYf5pZ7juzt1CDp9kAzaDBlAQgGY// edCyeiQqSUEshJET4T91FpmJNM+CC4hgJcsCU78vN8Ha6RMO42YXhztt5D/w7l2XqdnJ 5X7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to:arc-authentication-results; bh=pW0NJAsYpTpgVDY15I+WoKvDXqTtWzzgBH7mA3uNc50=; b=K1wW6SfX4x115uhRiAm2SZukm35cb6K2yknBGHpn+PSLFp8V2u0NXYIA3OcevsFNi+ /W9nknHN96PtOzECRMQ2Eh4F+H2zRK/FN3nGl02zrEKh+TlmYe+DIb7J1wbN8AYdGUfS UB3riS10EUz59WjaO0Cd/lLMNSEchUBBw9rL3MhrCUHm2V6+/4pv5TCeNdBHxDNgiw6Z hp9XAAkyj6h5GfEuonBW/cRkHnHNIAvVyHpmxpqz4t4EXFYHWDrnPWPyzk2DhoMS2zNT bmvEDjKHxzusXgdR/E4scSe82IrPYK4x424dBB3A18XDovnr5vCkGyoTCNIJiMVOrDmF xn4w== 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 35si1173824wrj.410.2017.08.28.17.13.36; Mon, 28 Aug 2017 17:13:36 -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 B1ED1689FF5; Tue, 29 Aug 2017 03:13:22 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vie01a-dmta-pe04-1.mx.upcmail.net (vie01a-dmta-pe04-1.mx.upcmail.net [62.179.121.163]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1B62B689FBB for ; Tue, 29 Aug 2017 03:13:17 +0300 (EEST) Received: from [172.31.216.43] (helo=vie01a-pemc-psmtp-pe01) by vie01a-dmta-pe04.mx.upcmail.net with esmtp (Exim 4.88) (envelope-from ) id 1dmU9m-0000mq-BZ for ffmpeg-devel@ffmpeg.org; Tue, 29 Aug 2017 02:13:26 +0200 Received: from localhost ([213.47.41.20]) by vie01a-pemc-psmtp-pe01 with SMTP @ mailcloud.upcmail.net id 2oDQ1w00D0S5wYM01oDR47; Tue, 29 Aug 2017 02:13:25 +0200 X-SourceIP: 213.47.41.20 From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Tue, 29 Aug 2017 02:13:21 +0200 Message-Id: <20170829001321.1319-3-michael@niedermayer.cc> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20170829001321.1319-1-michael@niedermayer.cc> References: <20170829001321.1319-1-michael@niedermayer.cc> Subject: [FFmpeg-devel] [PATCH 3/3] avformat/mxfenc: Replace literal numbers by named enum values. 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Michael Niedermayer --- libavformat/mxfenc.c | 83 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 61 insertions(+), 22 deletions(-) diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 71f4b5b905..afa5ef7e28 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -120,6 +120,45 @@ static void mxf_write_mpegvideo_desc(AVFormatContext *s, AVStream *st); static void mxf_write_cdci_desc(AVFormatContext *s, AVStream *st); static void mxf_write_generic_sound_desc(AVFormatContext *s, AVStream *st); +enum { + INDEX_MPEG2 = 0, + INDEX_AES3, + INDEX_WAV, + INDEX_D10_625_50_50_VIDEO, + INDEX_D10_625_50_50_AUDIO, + INDEX_D10_525_60_50_VIDEO, + INDEX_D10_525_60_50_AUDIO, + INDEX_D10_625_50_40_VIDEO, + INDEX_D10_625_50_40_AUDIO, + INDEX_D10_525_60_40_VIDEO, + INDEX_D10_525_60_40_AUDIO, + INDEX_D10_625_50_30_VIDEO, + INDEX_D10_625_50_30_AUDIO, + INDEX_D10_525_60_30_VIDEO, + INDEX_D10_525_60_30_AUDIO, + INDEX_DV, + INDEX_DV25_525_60, + INDEX_DV25_625_50, + INDEX_DV50_525_60, + INDEX_DV50_625_50, + INDEX_DV100_1080_60, + INDEX_DV100_1080_50, + INDEX_DV100_720_60, + INDEX_DV100_720_50, + INDEX_DNXHD_1080p_10bit_HIGH, + INDEX_DNXHD_1080p_8bit_MEDIUM, + INDEX_DNXHD_1080p_8bit_HIGH, + INDEX_DNXHD_1080i_10bit_HIGH, + INDEX_DNXHD_1080i_8bit_MEDIUM, + INDEX_DNXHD_1080i_8bit_HIGH, + INDEX_DNXHD_720p_10bit, + INDEX_DNXHD_720p_8bit_HIGH, + INDEX_DNXHD_720p_8bit_MEDIUM, + INDEX_DNXHD_720p_8bit_LOW, + INDEX_JPEG2000, + INDEX_H264, +}; + static const MXFContainerEssenceEntry mxf_essence_container_uls[] = { { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x02,0x0D,0x01,0x03,0x01,0x02,0x04,0x60,0x01 }, { 0x06,0x0E,0x2B,0x34,0x01,0x02,0x01,0x01,0x0D,0x01,0x03,0x01,0x15,0x01,0x05,0x00 }, @@ -1681,37 +1720,37 @@ AVPacket *pkt) switch (cid) { case 1235: - sc->index = 24; + sc->index = INDEX_DNXHD_1080p_10bit_HIGH; sc->component_depth = 10; break; case 1237: - sc->index = 25; + sc->index = INDEX_DNXHD_1080p_8bit_MEDIUM; break; case 1238: - sc->index = 26; + sc->index = INDEX_DNXHD_1080p_8bit_HIGH; break; case 1241: - sc->index = 27; + sc->index = INDEX_DNXHD_1080i_10bit_HIGH; sc->component_depth = 10; break; case 1242: - sc->index = 28; + sc->index = INDEX_DNXHD_1080i_8bit_MEDIUM; break; case 1243: - sc->index = 29; + sc->index = INDEX_DNXHD_1080i_8bit_HIGH; break; case 1250: - sc->index = 30; + sc->index = INDEX_DNXHD_720p_10bit; sc->component_depth = 10; break; case 1251: - sc->index = 31; + sc->index = INDEX_DNXHD_720p_8bit_HIGH; break; case 1252: - sc->index = 32; + sc->index = INDEX_DNXHD_720p_8bit_MEDIUM; break; case 1253: - sc->index = 33; + sc->index = INDEX_DNXHD_720p_8bit_LOW; break; default: return -1; @@ -1772,7 +1811,7 @@ static int mxf_parse_dv_frame(AVFormatContext *s, AVStream *st, AVPacket *pkt) switch (stype) { case 0x18: // DV100 720p - ul_index = 6 + pal; + ul_index = INDEX_DV100_720_50 + pal; frame_size = pal ? 288000 : 240000; if (sc->interlaced) { av_log(s, AV_LOG_ERROR, "source marked as interlaced but codec profile is progressive\n"); @@ -1780,19 +1819,19 @@ static int mxf_parse_dv_frame(AVFormatContext *s, AVStream *st, AVPacket *pkt) } break; case 0x14: // DV100 1080i - ul_index = 4 + pal; + ul_index = INDEX_DV100_1080_50 + pal; frame_size = pal ? 576000 : 480000; break; case 0x04: // DV50 - ul_index = 2 + pal; + ul_index = INDEX_DV50_525_60 + pal; frame_size = pal ? 288000 : 240000; break; default: // DV25 - ul_index = 0 + pal; + ul_index = INDEX_DV25_525_60 + pal; frame_size = pal ? 144000 : 120000; } - sc->index = ul_index + 16; + sc->index = ul_index; sc->codec_ul = &mxf_essence_container_uls[sc->index].codec_ul; if(s->oformat == &ff_mxf_opatom_muxer) { @@ -2109,15 +2148,15 @@ static int mxf_write_header(AVFormatContext *s) return -1; } if ((sc->video_bit_rate == 50000000) && (mxf->time_base.den == 25)) { - sc->index = 3; + sc->index = INDEX_D10_625_50_50_VIDEO; } else if ((sc->video_bit_rate == 49999840 || sc->video_bit_rate == 50000000) && (mxf->time_base.den != 25)) { - sc->index = 5; + sc->index = INDEX_D10_525_60_50_VIDEO; } else if (sc->video_bit_rate == 40000000) { - if (mxf->time_base.den == 25) sc->index = 7; - else sc->index = 9; + if (mxf->time_base.den == 25) sc->index = INDEX_D10_625_50_40_VIDEO; + else sc->index = INDEX_D10_525_60_40_VIDEO; } else if (sc->video_bit_rate == 30000000) { - if (mxf->time_base.den == 25) sc->index = 11; - else sc->index = 13; + if (mxf->time_base.den == 25) sc->index = INDEX_D10_625_50_30_VIDEO; + else sc->index = INDEX_D10_525_60_30_VIDEO; } else { av_log(s, AV_LOG_ERROR, "error MXF D-10 only support 30/40/50 mbit/s\n"); return -1; @@ -2175,7 +2214,7 @@ static int mxf_write_header(AVFormatContext *s) mxf->timecode_base = (tbc.den + tbc.num/2) / tbc.num; mxf->edit_unit_byte_count = (av_get_bits_per_sample(st->codecpar->codec_id) * st->codecpar->channels) >> 3; - sc->index = 2; + sc->index = INDEX_WAV; } else { mxf->slice_count = 1; }