From patchwork Wed Jun 28 15:41:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Derek Buitenhuis X-Patchwork-Id: 4150 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.1.76 with SMTP id 73csp3455424vsb; Wed, 28 Jun 2017 08:49:48 -0700 (PDT) X-Received: by 10.223.150.27 with SMTP id b27mr21824353wra.67.1498664988294; Wed, 28 Jun 2017 08:49:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1498664988; cv=none; d=google.com; s=arc-20160816; b=JhALWSD+6C5fbtkkqvmxPbEZmqIygmtadvJhocONRFQwOHmzLexLM83w92vQAfnAZo H0uGUkzs9DBuoA4mRWRgY+watMmle22svisZjvqWPlmvm2sL8wVgT2jJ/KISDh5PjBJo U7y1g2BFQfJM4tSs+7uZdNFVnJsqkd4/B+UkZusJPjCSBrkZsLAm6r8cv8F/7DF7HyMb w1Q49qmiLsEgV2LL45Dno4qh4F1lX6/SQt2T77rGDsbXYngFfuz5gzkA/LEds4t74Lqh mzFE3wTYKhOwqFpoazStFkA9NBmv7ejJlrSAa3kuZh0zVFYfzo3bSoXtxM1U02b1NzV4 QqGw== 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:dkim-signature:delivered-to:arc-authentication-results; bh=tXEyTY7l8Bfss0c4izSMcO/HQyb2ErxaRcuHhxHwq1E=; b=V4K6pe/W+tsqvnYXJoZ99BOdp0eeGBiv8qyboQx2IYb0JCwNqN2gU8WkPX/z2P97sy 86EYXZbHpbLNhJE1p7EnKUozKppiF0pisQEU8dLUIBluDgOy2xeHRCtg6pnoKjYtm9bT SeGjIKfOBfDVZIqRJVEJ1wYoz94AXfTVZy1eBMFCgopJID+hm/LGmmAEehhxS7AWLuI/ 6Ua21wyM8iNenGYgqpfq1rThw6FhM2Ogm0plxgOf5aMGYg8mXvXB8AsV+OGQ8W9DRPkZ cSm4HDZMmNZ824+8WF5Lmg+064A/Oek7OiKnOZENpptREsls14j0nVMWb5X77KW6EWa8 UDzA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.b=HKg3Zu14; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id d42si2036982wrd.85.2017.06.28.08.49.47; Wed, 28 Jun 2017 08:49:48 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.b=HKg3Zu14; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3D67368A4D3; Wed, 28 Jun 2017 18:49:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6033668A463 for ; Wed, 28 Jun 2017 18:49:36 +0300 (EEST) Received: by mail-wm0-f66.google.com with SMTP id j85so12296925wmj.0 for ; Wed, 28 Jun 2017 08:49:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=EtezqRqYFfHVxsbmQ14Q7R9L7a5/4G5v6YehgTLg5rw=; b=HKg3Zu14WVyC9eUASaZq6lhA9EhUG9lHVLWcpLJScEdlmuaTqmwmMxEy9GMy53QJ1w ITWAhffyWxUKa2jPISghb3BIABq0iuHh1PAfGzEJAovhGvKCux6x/jyCzaxfBs5NvREh bImq0K1J3IAAsuTSE3uadYCu25V9t8NpNgOiwZNNCby1hrj55cEDkczVeAwraCfq4IIT 2vM7BHKUrQzx5R6bxny9amUXGjUdrJ6ZeBMIYM10Llue2Q5eiImy+pZgzNKT3DKaR9SU RhfmLtTxe0ygTpOGyt65VGMNG2V5P/wGqtE4Poyfb+kYb+zt9AqrxXNKOVf3SHL2YGOW it6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=EtezqRqYFfHVxsbmQ14Q7R9L7a5/4G5v6YehgTLg5rw=; b=KJ/eLq/j1tkcvo1FpAa3nw82xWTFnfiK/kAWbiln6/faMblchrOWSItzFLNXEwh7l8 hjJLBgSR3ELnDMOf4UgwC5+DITTn/FFgbCsoK7jEI/LMTcK6I2+V+pRUZEwAlaH/ZGuS QRfjFZV3IhCeowThH8vNot5DLf09tI+yUumpZI+tcMyGbiWyyH8MzL1K+Qvzf1gLPKrx HbSCrgDAlZ74tjiiAU/2ar/7h38i0GvzmyaU5CR0/i0ZhZrPEP77d5PAUdYdoHU4Nr45 ZaKR7UJwbtH3/08PtaVRkPrSoch/dWi94d9rvnAPRHLqXmzEVcBSqIOM9aMWsTvxjqPN X5dQ== X-Gm-Message-State: AKS2vOzDZzI3IRAskoH6X4iU8rC+ulHHtI2jrtKEGqFn/smpfY0WjqRD 4XdXmiBGLWQdvhgZ24Y= X-Received: by 10.80.185.3 with SMTP id m3mr8056488ede.41.1498664561029; Wed, 28 Jun 2017 08:42:41 -0700 (PDT) Received: from vimeo-vm.localdomain ([62.208.38.79]) by smtp.gmail.com with ESMTPSA id y53sm1230538edd.4.2017.06.28.08.42.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 28 Jun 2017 08:42:40 -0700 (PDT) From: Derek Buitenhuis To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Jun 2017 16:41:59 +0100 Message-Id: <1498664522-44645-3-git-send-email-derek.buitenhuis@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1498664522-44645-1-git-send-email-derek.buitenhuis@gmail.com> References: <1498664522-44645-1-git-send-email-derek.buitenhuis@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/5] movenc: simplify codec_tag lookup 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" From: John Stebbins mux.c init_muxer() already sets codec_tag correctly in the cases simplified here. This also adds the capability to support alternative tags for the same codec_id. (cherry picked from commit f6f86f432fe51526a7aad2bdb025d6a45d239883) Signed-off-by: Derek Buitenhuis --- libavformat/movenc.c | 68 ++++++++++++---------------------------------------- 1 file changed, 15 insertions(+), 53 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 2a07e00..3ca23de 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -35,6 +35,8 @@ #include "libavcodec/dnxhddata.h" #include "libavcodec/flac.h" #include "libavcodec/get_bits.h" + +#include "libavcodec/internal.h" #include "libavcodec/put_bits.h" #include "libavcodec/vc1_common.h" #include "libavcodec/raw.h" @@ -1225,30 +1227,6 @@ static int mov_write_dpxe_tag(AVIOContext *pb, MOVTrack *track) return 0; } -static int mp4_get_codec_tag(AVFormatContext *s, MOVTrack *track) -{ - int tag = track->par->codec_tag; - - if (!ff_codec_get_tag(ff_mp4_obj_type, track->par->codec_id)) - return 0; - - if (track->par->codec_id == AV_CODEC_ID_H264) tag = MKTAG('a','v','c','1'); - else if (track->par->codec_id == AV_CODEC_ID_HEVC) tag = MKTAG('h','e','v','1'); - else if (track->par->codec_id == AV_CODEC_ID_VP9) tag = MKTAG('v','p','0','9'); - else if (track->par->codec_id == AV_CODEC_ID_AC3) tag = MKTAG('a','c','-','3'); - else if (track->par->codec_id == AV_CODEC_ID_EAC3) tag = MKTAG('e','c','-','3'); - else if (track->par->codec_id == AV_CODEC_ID_DIRAC) tag = MKTAG('d','r','a','c'); - else if (track->par->codec_id == AV_CODEC_ID_MOV_TEXT) tag = MKTAG('t','x','3','g'); - else if (track->par->codec_id == AV_CODEC_ID_VC1) tag = MKTAG('v','c','-','1'); - else if (track->par->codec_id == AV_CODEC_ID_FLAC) tag = MKTAG('f','L','a','C'); - else if (track->par->codec_id == AV_CODEC_ID_OPUS) tag = MKTAG('O','p','u','s'); - else if (track->par->codec_type == AVMEDIA_TYPE_VIDEO) tag = MKTAG('m','p','4','v'); - else if (track->par->codec_type == AVMEDIA_TYPE_AUDIO) tag = MKTAG('m','p','4','a'); - else if (track->par->codec_id == AV_CODEC_ID_DVD_SUBTITLE) tag = MKTAG('m','p','4','s'); - - return tag; -} - static const AVCodecTag codec_ipod_tags[] = { { AV_CODEC_ID_H264, MKTAG('a','v','c','1') }, { AV_CODEC_ID_MPEG4, MKTAG('m','p','4','v') }, @@ -1260,25 +1238,6 @@ static const AVCodecTag codec_ipod_tags[] = { { AV_CODEC_ID_NONE, 0 }, }; -static int ipod_get_codec_tag(AVFormatContext *s, MOVTrack *track) -{ - int tag = track->par->codec_tag; - - // keep original tag for subs, ipod supports both formats - if (!(track->par->codec_type == AVMEDIA_TYPE_SUBTITLE && - (tag == MKTAG('t', 'x', '3', 'g') || - tag == MKTAG('t', 'e', 'x', 't')))) - tag = ff_codec_get_tag(codec_ipod_tags, track->par->codec_id); - - if (!av_match_ext(s->filename, "m4a") && - !av_match_ext(s->filename, "m4b") && - !av_match_ext(s->filename, "m4v")) - av_log(s, AV_LOG_WARNING, "Warning, extension is not .m4a, .m4v nor .m4b " - "Quicktime/Ipod might not play the file\n"); - - return tag; -} - static int mov_get_dv_codec_tag(AVFormatContext *s, MOVTrack *track) { int tag; @@ -1580,17 +1539,20 @@ static int mov_find_codec_tag(AVFormatContext *s, MOVTrack *track) int tag; if (track->mode == MODE_MP4 || track->mode == MODE_PSP) - tag = mp4_get_codec_tag(s, track); - else if (track->mode == MODE_ISM) { - tag = mp4_get_codec_tag(s, track); - if (!tag && track->par->codec_id == AV_CODEC_ID_WMAPRO) - tag = MKTAG('w', 'm', 'a', ' '); - } else if (track->mode == MODE_IPOD) - tag = ipod_get_codec_tag(s, track); - else if (track->mode & MODE_3GP) - tag = ff_codec_get_tag(codec_3gp_tags, track->par->codec_id); + tag = track->par->codec_tag; + else if (track->mode == MODE_ISM) + tag = track->par->codec_tag; + else if (track->mode == MODE_IPOD) { + if (!av_match_ext(s->filename, "m4a") && + !av_match_ext(s->filename, "m4v") && + !av_match_ext(s->filename, "m4b")) + av_log(s, AV_LOG_WARNING, "Warning, extension is not .m4a nor .m4v " + "Quicktime/Ipod might not play the file\n"); + tag = track->par->codec_tag; + } else if (track->mode & MODE_3GP) + tag = track->par->codec_tag; else if (track->mode == MODE_F4V) - tag = ff_codec_get_tag(codec_f4v_tags, track->par->codec_id); + tag = track->par->codec_tag; else tag = mov_get_codec_tag(s, track);