From patchwork Fri Jan 17 19:59:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17397 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id A9F3D44A829 for ; Fri, 17 Jan 2020 22:00:16 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 722A0680505; Fri, 17 Jan 2020 22:00:16 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7D13568A862 for ; Fri, 17 Jan 2020 22:00:09 +0200 (EET) Received: by mail-wr1-f66.google.com with SMTP id c9so23880186wrw.8 for ; Fri, 17 Jan 2020 12:00:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vl+tW5CqiwTJWCVDqIxBjJ/ctMpwyjx0tjiJdotdRQc=; b=qCrlESvfeRHOqlqQtadi/W5aeRs5PunwHSUlDbW0H2ac4naC2rSR/vcgR+81sMoQ30 b4JXwdSTc3oSKBlBqijReeq8IRzAqt5WfFRFgRA3W18dqSSq7CzCCHNWD6qU0xXhBbHH Abth8T0Zg4Xt7BDcilP7bUzgzoPJHhwLfFQSkKv8ZKer9Dah2pkQ54y43T0aLPHVg7Ea +DAyAZHNbSyML4DvG6hr+0d7o6MuLuZsTM+cGc61J4DVEb1WnVNe3r0ZzIBcPyDXEDKs r9P7K8btMi8/gKRy1V78ZEziQ8d74NAqwyQhuAcDSKTmZj395jRc9yq63WfVkqfo936V ZaDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vl+tW5CqiwTJWCVDqIxBjJ/ctMpwyjx0tjiJdotdRQc=; b=oYAhkeIGTd+qrShAHh1aakb/I9wbDJemBzKGRjErixGCK65nNsFaJVx5+jmS3uO0cw TjvZfqYb1/0Pl3Eo9kztV3zLhu+gLbkF3JUgKrGh5MFakUtN9C4WIhUQBEsd8NhgqPDT fikZC2Kup4xa0HRr4eaa52HULr54njcU3oKRmBvV2aDdCUCr/aFO0m3xXndC3Q4iF3Sz Pn/kQksnj+uPAonSouHeaBlin8QQWGdpF/6kmbZTfjLe7z2RZ5kta9/d9gjz4baK2nEy AN0iVQ2ZqKSb1ATHDhfhPjsmElPhxk2yge+qg9SCD2KwBco8ZdZKAEQHAkYJSnJ/ZJyl NMvQ== X-Gm-Message-State: APjAAAUl8d/h1iTwbzJdqvGuq/fFKmHSJn55WAUv8q2ZssjQWVNcyGCX H3qCJ8yDJMkn7L1jeZjUN+aZVKRK X-Google-Smtp-Source: APXvYqyhhbfV60x87d4ZHCjMDV8Wn8dzxgrEB5KhRmJ30OeZbZC2ibZnyCgaVp+fWI4c0xg9pYuo/g== X-Received: by 2002:a5d:5347:: with SMTP id t7mr4804933wrv.401.1579291208614; Fri, 17 Jan 2020 12:00:08 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc08bbf.dynamic.kabel-deutschland.de. [188.192.139.191]) by smtp.gmail.com with ESMTPSA id b16sm37086908wrj.23.2020.01.17.12.00.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jan 2020 12:00:08 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Jan 2020 20:59:57 +0100 Message-Id: <20200117195958.27367-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200101005837.11356-1-andreas.rheinhardt@gmail.com> References: <20200101005837.11356-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 22/23] avformat/matroskaenc: Combine checks for audio 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" mkv_write_track() currently has three places where it checks for whether the current codec type is audio: One in a switch and two outside of it. These checks can be combined by moving the code after the other two checks inside the audio-related part of the switch. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 59 +++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index e74d59d271..93f01da930 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1092,7 +1092,7 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, ebml_master subinfo, track; int native_id = 0; int qt_id = 0; - int bit_depth = av_get_bits_per_sample(par->codec_id); + int bit_depth; int sample_rate = par->sample_rate; int output_sample_rate = 0; int display_width_div = 1; @@ -1105,17 +1105,6 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, return 0; } - if (par->codec_type == AVMEDIA_TYPE_AUDIO) { - if (!bit_depth && par->codec_id != AV_CODEC_ID_ADPCM_G726) { - if (par->bits_per_raw_sample) - bit_depth = par->bits_per_raw_sample; - else - bit_depth = av_get_bytes_per_sample(par->format) << 3; - } - if (!bit_depth) - bit_depth = par->bits_per_coded_sample; - } - if (par->codec_id == AV_CODEC_ID_AAC) { ret = get_aac_sample_rates(s, par->extradata, par->extradata_size, &sample_rate, &output_sample_rate); @@ -1202,24 +1191,6 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, } } - if (par->codec_type == AVMEDIA_TYPE_AUDIO && par->initial_padding && par->codec_id == AV_CODEC_ID_OPUS) { - int64_t codecdelay = av_rescale_q(par->initial_padding, - (AVRational){ 1, 48000 }, - (AVRational){ 1, 1000000000 }); - if (codecdelay < 0) { - av_log(s, AV_LOG_ERROR, "Initial padding is invalid\n"); - return AVERROR(EINVAL); - } -// mkv->tracks[i].ts_offset = av_rescale_q(par->initial_padding, -// (AVRational){ 1, par->sample_rate }, -// st->time_base); - - put_ebml_uint(pb, MATROSKA_ID_CODECDELAY, codecdelay); - } - if (par->codec_id == AV_CODEC_ID_OPUS) { - put_ebml_uint(pb, MATROSKA_ID_SEEKPREROLL, OPUS_SEEK_PREROLL); - } - switch (par->codec_type) { case AVMEDIA_TYPE_VIDEO: mkv->have_video = 1; @@ -1313,6 +1284,24 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, break; case AVMEDIA_TYPE_AUDIO: + if (par->initial_padding && par->codec_id == AV_CODEC_ID_OPUS) { + int64_t codecdelay = av_rescale_q(par->initial_padding, + (AVRational){ 1, 48000 }, + (AVRational){ 1, 1000000000 }); + if (codecdelay < 0) { + av_log(s, AV_LOG_ERROR, "Initial padding is invalid\n"); + return AVERROR(EINVAL); + } +// mkv->tracks[i].ts_offset = av_rescale_q(par->initial_padding, +// (AVRational){ 1, par->sample_rate }, +// st->time_base); + + put_ebml_uint(pb, MATROSKA_ID_CODECDELAY, codecdelay); + } + if (par->codec_id == AV_CODEC_ID_OPUS) { + put_ebml_uint(pb, MATROSKA_ID_SEEKPREROLL, OPUS_SEEK_PREROLL); + } + put_ebml_uint(pb, MATROSKA_ID_TRACKTYPE, MATROSKA_TRACK_TYPE_AUDIO); if (!native_id) @@ -1326,6 +1315,16 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, put_ebml_float (pb, MATROSKA_ID_AUDIOSAMPLINGFREQ, sample_rate); if (output_sample_rate) put_ebml_float(pb, MATROSKA_ID_AUDIOOUTSAMPLINGFREQ, output_sample_rate); + + bit_depth = av_get_bits_per_sample(par->codec_id); + if (!bit_depth && par->codec_id != AV_CODEC_ID_ADPCM_G726) { + if (par->bits_per_raw_sample) + bit_depth = par->bits_per_raw_sample; + else + bit_depth = av_get_bytes_per_sample(par->format) << 3; + } + if (!bit_depth) + bit_depth = par->bits_per_coded_sample; if (bit_depth) put_ebml_uint(pb, MATROSKA_ID_AUDIOBITDEPTH, bit_depth); end_ebml_master(pb, subinfo);