From patchwork Thu Jun 23 07:24:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 36384 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp3301316pzb; Thu, 23 Jun 2022 00:24:39 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sQb5aPkNeT++CfFJLX+BOxlAN4P5WbXtIVlwmI/ky/dedljCv9qUZvOSBHp9WydErMGsbV X-Received: by 2002:a17:907:3e91:b0:711:ea5e:2d4 with SMTP id hs17-20020a1709073e9100b00711ea5e02d4mr6779643ejc.52.1655969078971; Thu, 23 Jun 2022 00:24:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655969078; cv=none; d=google.com; s=arc-20160816; b=xtmdO6qqZqmnQXiC/wVpm49u2LYT3vbuXFqrpjbd7IBy/xtjKUroSu/4lkLt3jPnsn iVAx0/FUByp94kKrahGUFeuIePEF/qA/dDDeHmoUupiOS0Aft/rkP5eNfb9Qkmug+jub i/0q3B3Rw8IvDVhTCUsqLtHcgHGFFXzLT53g2PL5jsmCBNk5F89PIT21sHDOzHYXAHRU bcNdjqnqgSyvlkpIkN7sYe4yAsI7niaTZ1UQdgLY2gQoFiukzQUQt8n6ARAjxQzJpNE1 R1hyonnRV55GekOSAs9OHED4pg0kSwtOCCdOHSN4r2I2bSx6c3wqfd4Q2Aa9xzeofEQ9 58+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=ehTt8IIZfIT8ecI+E3cUNphuLBPL0p+DQzkLcvNodY4=; b=a9pEraO1/xJZJBy6f9ThsAOsuwmFjoTaZxrc4uDKYtXpui3wk4USAN6tiEjablMtvp FS0eICjhP3ja9+K40IZ5K8KWNC8dimA1Bbdu4Yr6RGdqmz6ObLkgFg1km3OvIjiawX3l UptYm/sFABKGOYNekmQrvXzjKD4f7GDxaYbJUtSn5hqpbgO/cLzJaKyZIPDcLn3mtKEm 4KyfoI4+ZCjkeennprCpzavB6Iv2/QNpvEGZ3rZN3vADrkEU57XQfHRLcqlfygsC6hMB VcN8hIvxX8aZLGE6ek2uBaYzOXFw68tUGE7vA0MYj6eWMzm8yuwXu4o6vnoeFq8e+LS/ tiDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=WGdMgl7J; 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=QUARANTINE 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 gt11-20020a1709072d8b00b0070560397963si422200ejc.233.2022.06.23.00.24.38; Thu, 23 Jun 2022 00:24:38 -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.s=20210112 header.b=WGdMgl7J; 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=QUARANTINE 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 F352668B6D1; Thu, 23 Jun 2022 10:24:23 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 36FA768B610 for ; Thu, 23 Jun 2022 10:24:16 +0300 (EEST) Received: by mail-lf1-f52.google.com with SMTP id a13so21952365lfr.10 for ; Thu, 23 Jun 2022 00:24:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=MBgWY8MNwEms86OI0H2jLoltmmviCags1Ep62MVQRkM=; b=WGdMgl7JdyzPYNKLhvGtKGw5Hko/itlItkd9SYaaeG1q4/DEecyz7Xvo/HapzWa20g lXLcwGDXo+dnw+b/8HmmPyrxWzM1So3VwcvzFoJD/v4Sx1IfeckgDLWbBQ72PYYzl6jy +exGulgsjaulOiMPlFKfFh9lRfcAqDs/wL5MkBxtWH7OK5Bp4tWi+g14s2u4IvDhnIZW kgQPpdW+FPeKtFJOs265lxT1jGptbFrsS3Ajais17JeqLzkmL6VxjmX4Jtj/S4gidXA1 z9C//2gYR4yvrXH8oKjWWTrp5ZXrTXcB73ibx6Ct81AuVcPfUDC8GIzB3q9kBx4k5ctu cGqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MBgWY8MNwEms86OI0H2jLoltmmviCags1Ep62MVQRkM=; b=cCz9eRKYyur2HMuGSesZ7BAvQ2HejoLIxYAj48T1f19w9ig6LqXqBopuxAlJfPwXw+ OhVFfFqcYhcjHbWINI73S4VFt/kf5fyNALle+WGd6NmO4yNILkHkjwRWn7Aw6R/rqaF1 oeNMrx9f9Z/qtEN3HpTYcoIo9JwKboBm96yKOtQmKMmRalkXP+ih5gnXAiZs8LaHkLSN VHUmzQbo15Yq6PDiCpzMuXl1nypZzPpKg8imMuH50KUWjmNEictpjCSAnVP+B1r04ZXU n5DX177KV+k3hPTXR79TAOnIv5ILucaW28AAHySBI1NNGVHJYj8hpUhhlCKkdL4Rm4Cx 6Gxw== X-Gm-Message-State: AJIora/CHkbyFRsylTXuCuX+XqiSmzLs3GSPOkFnqxXLzbNKdt/VbJTP JOGo9C6VqR2Gz0c5roFlcI++Ic8oWoc= X-Received: by 2002:a05:6512:31d3:b0:479:478e:2628 with SMTP id j19-20020a05651231d300b00479478e2628mr4761444lfe.153.1655969055520; Thu, 23 Jun 2022 00:24:15 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id a15-20020a056512200f00b0047f8ec3ca4esm732843lfb.87.2022.06.23.00.24.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jun 2022 00:24:14 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 23 Jun 2022 10:24:02 +0300 Message-Id: <20220623072408.38977-2-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623072408.38977-1-jeebjp@gmail.com> References: <20220623072408.38977-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 1/7] avcodec: make AC-3 bit rate table available in a separate header X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 2NKjE8t0rPt4 From: Jan Ekström This makes it possible to include it from libavformat Signed-off-by: Jan Ekström --- libavcodec/Makefile | 8 +++++--- libavcodec/ac3_bitrate_tab.c | 22 ++++++++++++++++++++++ libavcodec/ac3_bitrate_tab.h | 33 +++++++++++++++++++++++++++++++++ libavcodec/ac3tab.c | 6 ------ 4 files changed, 60 insertions(+), 9 deletions(-) create mode 100644 libavcodec/ac3_bitrate_tab.c create mode 100644 libavcodec/ac3_bitrate_tab.h diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 3b8f7b5e01..10697d31f7 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -190,8 +190,9 @@ OBJS-$(CONFIG_AC3_DECODER) += ac3dec_float.o ac3dec_data.o ac3.o \ OBJS-$(CONFIG_AC3_FIXED_DECODER) += ac3dec_fixed.o ac3dec_data.o ac3.o \ kbdwin.o ac3tab.o ac3_channel_layout_tab.o OBJS-$(CONFIG_AC3_ENCODER) += ac3enc_float.o ac3enc.o ac3tab.o \ - ac3.o kbdwin.o -OBJS-$(CONFIG_AC3_FIXED_ENCODER) += ac3enc_fixed.o ac3enc.o ac3tab.o ac3.o kbdwin.o + ac3.o kbdwin.o ac3_bitrate_tab.o +OBJS-$(CONFIG_AC3_FIXED_ENCODER) += ac3enc_fixed.o ac3enc.o ac3tab.o \ + ac3.o kbdwin.o ac3_bitrate_tab.o OBJS-$(CONFIG_AC3_MF_ENCODER) += mfenc.o mf_utils.o OBJS-$(CONFIG_ACELP_KELVIN_DECODER) += g729dec.o lsp.o celp_math.o celp_filters.o acelp_filters.o acelp_pitch_delay.o acelp_vectors.o g729postfilter.o OBJS-$(CONFIG_AGM_DECODER) += agm.o @@ -1110,7 +1111,8 @@ OBJS-$(CONFIG_LIBZVBI_TELETEXT_DECODER) += libzvbi-teletextdec.o ass.o OBJS-$(CONFIG_AAC_LATM_PARSER) += latm_parser.o OBJS-$(CONFIG_AAC_PARSER) += aac_parser.o aac_ac3_parser.o OBJS-$(CONFIG_AC3_PARSER) += aac_ac3_parser.o ac3tab.o \ - ac3_channel_layout_tab.o + ac3_channel_layout_tab.o \ + ac3_bitrate_tab.o OBJS-$(CONFIG_ADX_PARSER) += adx_parser.o adx.o OBJS-$(CONFIG_AMR_PARSER) += amr_parser.o OBJS-$(CONFIG_AV1_PARSER) += av1_parser.o diff --git a/libavcodec/ac3_bitrate_tab.c b/libavcodec/ac3_bitrate_tab.c new file mode 100644 index 0000000000..9ae8794a4c --- /dev/null +++ b/libavcodec/ac3_bitrate_tab.c @@ -0,0 +1,22 @@ +/* + * AC-3 bit rate table + * copyright (c) 2001 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "ac3_bitrate_tab.h" diff --git a/libavcodec/ac3_bitrate_tab.h b/libavcodec/ac3_bitrate_tab.h new file mode 100644 index 0000000000..44fc5f59ec --- /dev/null +++ b/libavcodec/ac3_bitrate_tab.h @@ -0,0 +1,33 @@ +/* + * AC-3 bit rate table + * copyright (c) 2001 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_AC3_BITRATE_TAB_H +#define AVCODEC_AC3_BITRATE_TAB_H + +#include + +/* possible bitrates */ +const uint16_t ff_ac3_bitrate_tab[19] = { + 32, 40, 48, 56, 64, 80, 96, 112, 128, + 160, 192, 224, 256, 320, 384, 448, 512, 576, 640 +}; + +#endif diff --git a/libavcodec/ac3tab.c b/libavcodec/ac3tab.c index 48c89a8ba0..75865fd7d2 100644 --- a/libavcodec/ac3tab.c +++ b/libavcodec/ac3tab.c @@ -94,12 +94,6 @@ const uint8_t ff_ac3_dec_channel_map[8][2][6] = { /* possible frequencies */ const int ff_ac3_sample_rate_tab[] = { 48000, 44100, 32000, 0 }; -/* possible bitrates */ -const uint16_t ff_ac3_bitrate_tab[19] = { - 32, 40, 48, 56, 64, 80, 96, 112, 128, - 160, 192, 224, 256, 320, 384, 448, 512, 576, 640 -}; - /** * Table of bin locations for rematrixing bands * reference: Section 7.5.2 Rematrixing : Frequency Band Definitions From patchwork Thu Jun 23 07:24:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 36385 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp3301343pzb; Thu, 23 Jun 2022 00:24:48 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sWRgGQwF0pN02trzgMkPamySEVKXXNIhIL+jGRj6jd3EGc/6Qn5EFmLixFRpDzcBQmchtP X-Received: by 2002:a17:907:6d12:b0:711:d524:8c88 with SMTP id sa18-20020a1709076d1200b00711d5248c88mr6808343ejc.615.1655969088577; Thu, 23 Jun 2022 00:24:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655969088; cv=none; d=google.com; s=arc-20160816; b=L8T6io25KpMN8c+DvBxDkmQgJyr+jLVNHgWuf+d4pJILCmM4F3K/x/R3E5EznfTtsj Z7Svuyiwvgb3Za7DxQKQf/IbEteCpGJClXsC7uxrEuloRuDvRpNXmtqRyta5zKFaTXb4 Jsq+imxFgeD8BEFcLpb57HActasiMX/SksESSuHQXg/ezJ/Z3+TEcCrdzBkMuOezbDOV yfoLD/KM+AEx9Zk5Iml7J+xmHmDlcJoKH/26oLd9615+t+kv3S+r1+op8gh61QO1nW6O cBKovmsht2FT+aaUn4bDY84ClO28Fl54v3012USBMKufdqgCr32jw3p5QK0cZ1xBOuqV Keqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=brqXmh3PxWPpQDHDW37ANRhOOen6T7psiBj90fekReg=; b=Wm5x457Rg7evJ7wr2vDI49gGqlTlOuCZNu1OIyZiTWN5jjTmP+sjpHdf69TJCXXqG5 my5ch4YKm/cen3rFjElJ8LUYTseTY3Xtx+ozuBPUoHRStUjzG1o7jt/hTBf2PbJobQjs 2DqAjiopQEo6eqpbKWYiBncy+H5vWGqTcUxot+7I/Cbxc676Wya8cYPiIoR5NqWk5bwx i+kuUrWQwatqKqE4wnfxk9mWIlpx2ABdSZi9Tc5QJP0Te5meZk6pdZZTLF98ZHRGO0bS oKCOM6E47Uzy0TU1QdiVKrM6e+ef9SsCqFvM2iTlSdsR4mt5hGHrognkUaGUcyW2E4um ebKQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=nkK7hemx; 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=QUARANTINE 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 t1-20020a170906948100b00711fc1fb3cfsi4688831ejx.399.2022.06.23.00.24.47; Thu, 23 Jun 2022 00:24: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.s=20210112 header.b=nkK7hemx; 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=QUARANTINE 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 13AA468B6E2; Thu, 23 Jun 2022 10:24:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E761268B574 for ; Thu, 23 Jun 2022 10:24:16 +0300 (EEST) Received: by mail-lf1-f52.google.com with SMTP id z13so1328004lfj.13 for ; Thu, 23 Jun 2022 00:24:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=24Z98jCqKP0NDF+w9tyNgk4Ztj0bmh5PPazvRcQmDCQ=; b=nkK7hemxvk13qqmiYsZ0pPxmsWUOyzoGXtdnQy4/KdcDEWp415hp2ZV+hbfE3sVMo+ I16aJGtOSnzyon/rngxM258OXN/YwbF+trF9iRUg6qdUYq5yiebWBGWNxBFiuH8FZItL NubaUPu5EEUE7x4duu4+1VlXiGSEX5CYNlhrER57+y7PRhinHSfm+zfGWRS8AC/B16g5 jhWLZDY4ArioKEhEekYY06SV3Y3Fw/E6e28pAtkbMdJ+3szQ75HPAO515dC3PSLE3ij2 IX9gw7UnyUIoNSbrxLnXVGusdPbQ0WgAPviDswO41HmJn1DzDEJr7GRITxiM8+nuYGZ8 fL7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=24Z98jCqKP0NDF+w9tyNgk4Ztj0bmh5PPazvRcQmDCQ=; b=bnGOx2kuG1fxh3VpnTrcfnawNArEkxiPgyR0BAki8oCrJ+4Qf6l0ai1rixs1xAmLj6 mcErMOj+dzuvJ0egXzv15ynyk1h4Hqt9hOGcLhq27WCIOEuInXw2eH2a8pjStsPnJyHr 4g2atMGCATBpjgwpkBPUcLTsRqntly9co5C6dcMVZO3nNjSdt+G4uriuJdud4FQtJov4 02O5DtC/6t0XtkpUEpBDn3CDfDS7TQIpWAFj3SvYmYr+iHa0KGkjNLYB+RinVa1uQLrh NZ2vPXnD8zrljp93u3bNAYHBGxV3nmNPd2IEgrb/Wl5v492GN8AOtGmUk7e1bnNs8tzI oChg== X-Gm-Message-State: AJIora9DzHj5eKJ+3CCr/mQ83X8rDIROa/ba0gXOFoy8h7obiqa20Kyl mq72UN2gx8mN52CLnhjYCV9g1DHHhEk= X-Received: by 2002:a05:6512:33c9:b0:47f:3f2f:5c28 with SMTP id d9-20020a05651233c900b0047f3f2f5c28mr4494931lfg.675.1655969056336; Thu, 23 Jun 2022 00:24:16 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id a15-20020a056512200f00b0047f8ec3ca4esm732843lfb.87.2022.06.23.00.24.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jun 2022 00:24:15 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 23 Jun 2022 10:24:03 +0300 Message-Id: <20220623072408.38977-3-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623072408.38977-1-jeebjp@gmail.com> References: <20220623072408.38977-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 2/7] {configure, avformat/movenc}: enable AC-3 parser for movenc X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: gvor3Qod/10P From: Jan Ekström This simplifies the code to no longer have #ifs in a manner which does not require handling avpriv_ac3_parse_header returning ENOSYS. As an existing example, the MPEG-TS muxer already requires the AC-3 parser, and in order to fix existing issues with the current AC-3 movenc code, switching to use the AC-3 parser is required, so this is an enabling change for that. Signed-off-by: Jan Ekström --- configure | 2 +- libavformat/movenc.c | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/configure b/configure index 3a97610209..5d991ae530 100755 --- a/configure +++ b/configure @@ -3441,7 +3441,7 @@ mlp_demuxer_select="mlp_parser" mmf_muxer_select="riffenc" mov_demuxer_select="iso_media riffdec" mov_demuxer_suggest="zlib" -mov_muxer_select="iso_media riffenc rtpenc_chain vp9_superframe_bsf aac_adtstoasc_bsf" +mov_muxer_select="iso_media riffenc rtpenc_chain vp9_superframe_bsf aac_adtstoasc_bsf ac3_parser" mp3_demuxer_select="mpegaudio_parser" mp3_muxer_select="mpegaudioheader" mp4_muxer_select="mov_muxer" diff --git a/libavformat/movenc.c b/libavformat/movenc.c index b7b2f46a17..87cd066c95 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -408,7 +408,6 @@ struct eac3_info { } substream[1]; /* TODO: support 8 independent substreams */ }; -#if CONFIG_AC3_PARSER static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track) { AC3HeaderInfo *hdr = NULL; @@ -549,7 +548,6 @@ end: return ret; } -#endif static int mov_write_eac3_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *track) { @@ -6046,7 +6044,6 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt) } } -#if CONFIG_AC3_PARSER } else if (par->codec_id == AV_CODEC_ID_EAC3) { size = handle_eac3(mov, pkt, trk); if (size < 0) @@ -6054,7 +6051,6 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt) else if (!size) goto end; avio_write(pb, pkt->data, size); -#endif } else if (par->codec_id == AV_CODEC_ID_EIA_608) { size = 8; From patchwork Thu Jun 23 07:24:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 36386 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp3301412pzb; Thu, 23 Jun 2022 00:24:59 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uHbqNtmD9oL26jzvEYjSK1dJokjfVDqZ+1/M0oks2aL2f2TLi4IwblqTtOxKPlX34QJemO X-Received: by 2002:a05:6402:350e:b0:42f:b2c1:9393 with SMTP id b14-20020a056402350e00b0042fb2c19393mr8927072edd.11.1655969099422; Thu, 23 Jun 2022 00:24:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655969099; cv=none; d=google.com; s=arc-20160816; b=Zg8m0oTxdGCnDEBH4+O+ooYE0+4cbEFMdm2EvWQO1IDpsIb8KkdGYugZ6wSA7S/x53 9/weTxXzo/qs7lPCjgm8qMqx2yHIsNNygCpVJPWsPGpPzC77OMCRDkbwOB3FCtl2kI1C 8PMqavqmWLFXLnTiQmdIwiCZIYzQU7hounKKg0ljLk1Bdvf1qQRHwWqcOa6FX3VCLIdl dZftECKEBft94k2G8+XseeyfCJ+joaAx2tOMlyseRNtGf0U7xt0wRtHC6Ygv+2GWAqMx RHcYA20Ztsus5VO0FAs4u4i6Hws4Xgsxjg2XoYturWsyjiFGl94Gh+to3C7DJ1/Y8l8D S1Lw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=DBxIfFrtMbD/40wDCTL1kKWESrpdpWbA8tJGW4Q8XP4=; b=iXkFVfhtOSP34S0H1U4z+QPow753lFxWiL+pCwk3cUJVASzD2el05dtBmU+aXd4TZt SeqD9cR4+LkMTmNcWlR1QM8S4VsdodwQHyGRfyIRFrYcVxn696hTzvN0hOhtnRCHksvA iGazsX3xIu0ET5ux7/BbVglcMJ4w7wYrDQXEyKG2pYU3471QP4zwkZbWxE1yvim0nG5A G/DBY+EiWaLNvQCUq3/XOvqaryuD/7r86fLk2M4GbVX5ZcCzhqsD5tBOOulh2vj0BJl1 u9VGT5qo2vOTabdgRkgyZzq24qo5e9z6jcCLaNo/FIEYui7NRU/6ik7PhzF/8EFYZBXg V0Ng== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="M7WfH/4g"; 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=QUARANTINE 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 d4-20020a1709067a0400b0070bf25f1732si2369283ejo.155.2022.06.23.00.24.58; Thu, 23 Jun 2022 00:24:59 -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.s=20210112 header.b="M7WfH/4g"; 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=QUARANTINE 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 0815D68B735; Thu, 23 Jun 2022 10:24:26 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BDB5D68B610 for ; Thu, 23 Jun 2022 10:24:17 +0300 (EEST) Received: by mail-lf1-f49.google.com with SMTP id c4so31773845lfj.12 for ; Thu, 23 Jun 2022 00:24:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=fcbExe8cG1I3ThLOlhh3fKmilCQtn9xvoksEk+gUrp4=; b=M7WfH/4gRT5qXNyu+bm9s2Kvobn9VsTdNDndXImSBtBEMrfoC2k6/tWRONn25URD3l VBYsCmdaIpUkMRGJzMEbQ8xLtIJH72xdCf2pypfDTwJXVIW0YRDOw9i2pBzckN/GpS6U 2eRKMnRydSRsO5qct4YnqDDQpeu0wSD8np5gnmexsXiD8htBxiu4BxFuh1xZ/ClCQftU /QuWusuI7GjRd7eYnryzLPELl7oFxO0oYfVtVLo1sXPD42Np4u4YcaVq896N7ZqqM//y tVLIfAX5yOprwPerKyRYoEAwz0Q+a1yUynsVPzLFlTPQyBOlt+kXXf8VAgLAQ/j8O7ju 1piQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fcbExe8cG1I3ThLOlhh3fKmilCQtn9xvoksEk+gUrp4=; b=4kOg8RxQ3eoObnYTONOIq1V35FqrMIeF6Cd1/cvP0xnYrnHU1RVwQUV6ftKPros7XO oQsTPu4VmF56Ik8NmaM2Uq17IqBbw0PoWaJSBCrDybR3L3JGdRKr9/UAfj6E2KYH53bk 7wtCOjW9upbZKKWUTGcBVQ8rlngayvZloGbqOqpzvQaGnjhqy7PGRGhlBjmEw8jjKHvx 1dlv6xGNWEgreMHVKugVnOQ4X1irm8wKv3gYylPyNnJoONNLXiZ7sg5IeTw6Fzrf7lFB PhBdcGkDQCk7dcQtLSgAyKrtDNMmwdLq01iAVbH6Qp3PCjaxyhNr2EhdUvzgzA5xO74b Yn3w== X-Gm-Message-State: AJIora8N1d4YyDFs7XlyNm6MM5bobiOi+Bq1NAkDa++kFIcHFtXWAKV8 3Msax+Y+esOvfDTmHr82DRU7pebt+0M= X-Received: by 2002:a05:6512:304d:b0:47f:79a8:294b with SMTP id b13-20020a056512304d00b0047f79a8294bmr4723215lfb.484.1655969057050; Thu, 23 Jun 2022 00:24:17 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id a15-20020a056512200f00b0047f8ec3ca4esm732843lfb.87.2022.06.23.00.24.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jun 2022 00:24:16 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 23 Jun 2022 10:24:04 +0300 Message-Id: <20220623072408.38977-4-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623072408.38977-1-jeebjp@gmail.com> References: <20220623072408.38977-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 3/7] avformat/movenc: enable handle_eac3 to handle AC-3 tracks X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: HXY3qXvjsfvW From: Jan Ekström Add the AC-3 frame type, as well as early exit from additional packet parsing in case of AC-3, as only a single packet is required to get the required information. Signed-off-by: Jan Ekström --- libavformat/movenc.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 87cd066c95..c24b11cf5f 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -443,7 +443,8 @@ static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track) /* this should always be the case, given that our AC-3 parser * concatenates dependent frames to their independent parent */ - if (hdr->frame_type == EAC3_FRAME_TYPE_INDEPENDENT) { + if (hdr->frame_type == EAC3_FRAME_TYPE_INDEPENDENT || + hdr->frame_type == EAC3_FRAME_TYPE_AC3_CONVERT) { /* substream ids must be incremental */ if (hdr->substreamid > info->num_ind_sub + 1) { ret = AVERROR(EINVAL); @@ -475,6 +476,14 @@ static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track) info->substream[hdr->substreamid].acmod = hdr->channel_mode; info->substream[hdr->substreamid].lfeon = hdr->lfe_on; + if (track->par->codec_id == AV_CODEC_ID_AC3) { + // with AC-3 we only require the information of a single packet, + // so we can finish as soon as the basic values of the bit stream + // have been set to the track's informational structure. + info->ec3_done = 1; + goto concatenate; + } + /* Parse dependent substream(s), if any */ if (pkt->size != hdr->frame_size) { int cumul_size = hdr->frame_size; From patchwork Thu Jun 23 07:24:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 36387 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp3301465pzb; Thu, 23 Jun 2022 00:25:10 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tmRV590dPPHtzNTz9ybwGopSfu2xBB2cwlL0HFiiRdIcmaMhHCtFihZlmAn3F8kR7w/wDJ X-Received: by 2002:a05:6402:2077:b0:435:a428:76e4 with SMTP id bd23-20020a056402207700b00435a42876e4mr8901699edb.367.1655969109870; Thu, 23 Jun 2022 00:25:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655969109; cv=none; d=google.com; s=arc-20160816; b=HjaazfaYPE6bx2QBOdbqWe6Uw0C+SAi5GqJT0ZFs94zljmbSdxgDRP9dzD0MhUb/oT YWxjlws5SRzU9lVV7QmKcYui+1sw3AC25ey1U3gugiEuYCx8xPxCN1vYyOlL1SWB4+n2 Ljk1+bdgtP+3LzXuma4RKtXBvjBeCqdI8jKC7pGFrcaFizjrEAsn0aDZ5u5IXT/4B1Ci tprpxG1WgcnpT9OTkGaZeuh7Zq6LNf+tvmA45hdzuJ62RXVIW9f4EwcenGTmZ6uScabd ZZYmaZoronmT+3PWDZ9G4w7QNdX/epuAkxlAPbkn5c7ZBVZomXKQWXsFvlVl0E6h6HTj nkjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=N0DVPMVbjvNUDhyXCo5GDfG82rzjd6FrJVeb0yxGHBs=; b=nE2swJFr3mgEVdVHuCm2Dsx9W2KWD2OjrKFpGgp2jOZStiakfmQL2BvjnW15gl/lpT AwpM0xMEHMXJ0O2YluTFdBJkbKcNKJtc14vyayXEpyo7aMB6rgeUWcllcjRvEjQ0iMkK UrrZrUlD6T4xo0CN/hd2kfR4F092rWMfLguG9XlZvQG5G7kfUh/ZhON40FbkTcxVcqnC fvrIDDe4ajkOjnqPGdJiPGbBX4MKObKA9qTdmc2VmRJNQz1yRkDlDBfWgr2KZrlD8GDx ZJ2FTN4zmeGEdnScV01FjYIaZ9fez7Iij9c6Nq0IHB5ID24Ab5MtZpTSMMhySH6wjoyO 79LA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Tm+7n1Z+; 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=QUARANTINE 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 u13-20020a056402064d00b00435c2425755si2208413edx.103.2022.06.23.00.25.09; Thu, 23 Jun 2022 00:25:09 -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.s=20210112 header.b=Tm+7n1Z+; 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=QUARANTINE 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 097C268B6D3; Thu, 23 Jun 2022 10:24:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A0C4468B6CC for ; Thu, 23 Jun 2022 10:24:18 +0300 (EEST) Received: by mail-lf1-f46.google.com with SMTP id t25so31783700lfg.7 for ; Thu, 23 Jun 2022 00:24:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=w7E5vS2/iXahngwLJcBfF4dDww50uiYogXpY8YDLNgA=; b=Tm+7n1Z+a+ngcguWeF5QK+2ZtJ4T7akAbmw2BHYyUnPT+ir3bbMAu11SMBYb3jGYUY pdM8GIhCNxd81WjLiW4CrhV+krwowhTdZHaDVskRChx3XqHj52jqwq91D2ExFjBMzLSf gT163mblHz3yC5XQ32ikCZYgsY5mYa/ctxtSn3toG+5rdAiDV61g+kar0C4imHidXkqU xu6reSknWNiL5lEIS/wgo63TZS67Jj/6Uk0TOIdmaZjh0VmTRN+H9qiuvtQHxiHz3yhk WER33bEHBc8wlmbyhSLf/fptPbqHGC1keRRFb/SuihqpCyjraAefKoftS7N7XpLKko2Z 5uug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=w7E5vS2/iXahngwLJcBfF4dDww50uiYogXpY8YDLNgA=; b=h5uxVIxV+KZLPumKWqpFTZ/nqXJ0fkIwHV2RweJC0XEg9Q4LAlFidBMpCkJ111NfYa pjJhBgXvc1bvhv7hOWkGDwzmTMFfAUY3APHz23QSJkWXfxCVeCRPPbQGWQL2kWeMTolb ZcIRlQKfYmEqKlNcNqU5p5ORoqBuOYrc0yv0L+F3SZuLHQ9y6OwiBQef3PCj3RAJQWpQ ISSFt9OQidZzvwsouXDTSoCqecJElPIgseUhD+VBzeDXIwJJ4pCY02fXgZ7CSU77sNre DaIEcydOnXcW0MpgFVK54kZNfl+lCm3Nr4BihnVBVGDM9J4ExZWIMjZDXE2Epz96zGDD L3Qw== X-Gm-Message-State: AJIora+76mJ1Tvr9MJ7wCs5v1ORmJfptKyhHoav4N5lv5hBdNCto1Wco 7nw9Sqoi5+oOVX95Nk4C5gSmenmwD6g= X-Received: by 2002:a05:6512:108f:b0:479:48b0:b650 with SMTP id j15-20020a056512108f00b0047948b0b650mr4634945lfg.33.1655969057983; Thu, 23 Jun 2022 00:24:17 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id a15-20020a056512200f00b0047f8ec3ca4esm732843lfb.87.2022.06.23.00.24.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jun 2022 00:24:17 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 23 Jun 2022 10:24:05 +0300 Message-Id: <20220623072408.38977-5-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623072408.38977-1-jeebjp@gmail.com> References: <20220623072408.38977-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 4/7] avformat/movenc: move eac3_info definition so that it can be used for AC-3 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ZUDId0dtioJA From: Jan Ekström Signed-off-by: Jan Ekström --- libavformat/movenc.c | 64 ++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index c24b11cf5f..103f958d75 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -328,6 +328,38 @@ static int mov_write_amr_tag(AVIOContext *pb, MOVTrack *track) return 0x11; } +struct eac3_info { + AVPacket *pkt; + uint8_t ec3_done; + uint8_t num_blocks; + + /* Layout of the EC3SpecificBox */ + /* maximum bitrate */ + uint16_t data_rate; + /* number of independent substreams */ + uint8_t num_ind_sub; + struct { + /* sample rate code (see ff_ac3_sample_rate_tab) 2 bits */ + uint8_t fscod; + /* bit stream identification 5 bits */ + uint8_t bsid; + /* one bit reserved */ + /* audio service mixing (not supported yet) 1 bit */ + /* bit stream mode 3 bits */ + uint8_t bsmod; + /* audio coding mode 3 bits */ + uint8_t acmod; + /* sub woofer on 1 bit */ + uint8_t lfeon; + /* 3 bits reserved */ + /* number of dependent substreams associated with this substream 4 bits */ + uint8_t num_dep_sub; + /* channel locations of the dependent substream(s), if any, 9 bits */ + uint16_t chan_loc; + /* if there is no dependent substream, then one bit reserved instead */ + } substream[1]; /* TODO: support 8 independent substreams */ +}; + static int mov_write_ac3_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *track) { GetBitContext gbc; @@ -376,38 +408,6 @@ static int mov_write_ac3_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *trac return 11; } -struct eac3_info { - AVPacket *pkt; - uint8_t ec3_done; - uint8_t num_blocks; - - /* Layout of the EC3SpecificBox */ - /* maximum bitrate */ - uint16_t data_rate; - /* number of independent substreams */ - uint8_t num_ind_sub; - struct { - /* sample rate code (see ff_ac3_sample_rate_tab) 2 bits */ - uint8_t fscod; - /* bit stream identification 5 bits */ - uint8_t bsid; - /* one bit reserved */ - /* audio service mixing (not supported yet) 1 bit */ - /* bit stream mode 3 bits */ - uint8_t bsmod; - /* audio coding mode 3 bits */ - uint8_t acmod; - /* sub woofer on 1 bit */ - uint8_t lfeon; - /* 3 bits reserved */ - /* number of dependent substreams associated with this substream 4 bits */ - uint8_t num_dep_sub; - /* channel locations of the dependent substream(s), if any, 9 bits */ - uint16_t chan_loc; - /* if there is no dependent substream, then one bit reserved instead */ - } substream[1]; /* TODO: support 8 independent substreams */ -}; - static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track) { AC3HeaderInfo *hdr = NULL; From patchwork Thu Jun 23 07:24:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 36388 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp3301508pzb; Thu, 23 Jun 2022 00:25:20 -0700 (PDT) X-Google-Smtp-Source: AGRyM1td3YeypbjgofmuN/sd22ZfHNT754U9jhrnXNpLeS6VdUweV7IlRn2PtQlOJQHYM2rB4aIx X-Received: by 2002:a05:6402:3886:b0:435:643a:b7ae with SMTP id fd6-20020a056402388600b00435643ab7aemr8754776edb.4.1655969119879; Thu, 23 Jun 2022 00:25:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655969119; cv=none; d=google.com; s=arc-20160816; b=s/GC7sAwonZINwOUADy92YdS5Q7eFVhpiI+GkBh2MGh8X2ka4Or19lhN1fKaPdQ1cq BZj4Tk7HzH9xKDksglQyqFGoGnnXt+jsd3KFCeIMpXuBKkCBAFbYSb22OFngYyB4IlXR GgJrJ5+Ecdkdgx1iLS3FAaHQyl+iwKiIr0OIrMG1kJdLe+0AVFRU4TEWGT/LD8mr4yOt uAXmVgIAdMOfWBu++A+Lfi1rgLZDhIT/sq8lGRPvzKOQpdFIsQ7N5PNWJ6hFS3/moSPi TdK2O0crcapEjXQfCPoCIRluUOPBb4qlUVml5IMf9fIbujOiSnzdf5EXZJX0l9JX086c evJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=rAkgtQ2ZBYDZybG/f/jZi/iFuqsoSRA4PZbPA1MSVtQ=; b=vIYOEdAWh7ES8tihMxNhoPHxzoKYyNVRQM/gyNVvI/2Dpho/uNdiLZE8CSeHrvPdOS 0zIgsHub8vEnVLK8UH48f0A96pYjVZ3fzeWTH+i8lrfP0YvLOF+FEY2Rv7TP3JFdfJg4 crbF9DciSQf6nfNfMH6ZvMsnypF1cWH3rvuYLzGsP7Q3IXzs4vXaVABBTrzjPn8vndFJ 70VR73+szDmcCdo7MeMnwZl+1xwsTqkpOWwjgbPiD0fabjV647QdVBcS9CPaCB8aMWg6 oaOVh5kUVk1NYZ6Zfj3eQGGGm5d3DnHcPb/GAUqQseBi2wvIUGUosDCCTnlVxtK6ohZL iLiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=An3mqf5G; 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=QUARANTINE 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 sc30-20020a1709078a1e00b00718f3ee264asi4977584ejc.773.2022.06.23.00.25.19; Thu, 23 Jun 2022 00:25:19 -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.s=20210112 header.b=An3mqf5G; 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=QUARANTINE 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 22AAD68B70B; Thu, 23 Jun 2022 10:24:28 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 858CD68B6E8 for ; Thu, 23 Jun 2022 10:24:19 +0300 (EEST) Received: by mail-lf1-f53.google.com with SMTP id i18so18180697lfu.8 for ; Thu, 23 Jun 2022 00:24:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=cRUrgyOZT5G//cmFaQpGLw8Vhg8lE26rI3oOpsVnAzE=; b=An3mqf5GtAG/4xRkya7Bgm4iEV69vQP+38tlSf4QPzAoRktRoHfGiwuvYtJwrslwJR e2JLeVcDLl1DqoKKDNFc6KQnpRU2QBNGhgD7l5DEhwlN1i1lodfyIQAL2kEyrG5XsF7u /Zc/dHudEdalqV18yhR+6T1U9P5y8SQqYhuHU0o5O9wO4BbvWDKBS0TjEamKam7Eqf95 9sT1bFjFdvCg5jP3BPxM56Fhk5zb8MhefUjnrhKIeSAlESpQDABxFlL7J2HKWMQmxCDC WC7MGfgP3KcTp/8xGkUHMNbCTgZDK0fDY6RFdYfo8MGC6ZoekU8gT00oIiF9oSgy8u+8 /WEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cRUrgyOZT5G//cmFaQpGLw8Vhg8lE26rI3oOpsVnAzE=; b=CbwzRaChZP+DQqEudOyRvoBiQF1NIpAkz+94v5+LO1tj9s99gjy2iapU8hEgy7QHFJ qF1xaDfjfqV5nvbVHELK96ejI/SeVyVyWnqtlNgntja5IBXwMgkFdRmsuCTIH8T9ZWmx sxFWAGhBMKxXbu2eVbTWOKtXjbIlyTThCSrqd7IhgpEvPvSwQY12Ve8fJ27Hb9YtTlDr hR2SdaFcwVo5EdZVAkcaKb9IAVVlOYoacpYmS9EgcCnvCnVnrxCgW2DG0lLtEsW0jKM7 h1SrTUXStQYMkLkJds6EI2lgSbjxIt5Avrt8yOwa8xIsp3aHZYGtWliwRJAUIr0Yf5D5 wqEw== X-Gm-Message-State: AJIora8/WZ4wCxdgcEqIP6jWQ1b+xvWWczBIHZdKqmhH2ibef9CYxTA8 y/6j5yHjylQhCh8zMbDzi3BuL6XUf2U= X-Received: by 2002:a05:6512:1028:b0:47f:a07e:6e85 with SMTP id r8-20020a056512102800b0047fa07e6e85mr2011552lfr.294.1655969058845; Thu, 23 Jun 2022 00:24:18 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id a15-20020a056512200f00b0047f8ec3ca4esm732843lfb.87.2022.06.23.00.24.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jun 2022 00:24:18 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 23 Jun 2022 10:24:06 +0300 Message-Id: <20220623072408.38977-6-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623072408.38977-1-jeebjp@gmail.com> References: <20220623072408.38977-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 5/7] avformat/movenc: utilize existing AC-3 parsing workflow for AC-3 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: lTd6yDNpHbpJ From: Jan Ekström Signed-off-by: Jan Ekström --- libavcodec/Makefile | 1 + libavformat/Makefile | 1 + libavformat/ac3_bitrate_tab.c | 22 ++++++++++++++ libavformat/movenc.c | 55 +++++++++++++++++------------------ 4 files changed, 51 insertions(+), 28 deletions(-) create mode 100644 libavformat/ac3_bitrate_tab.c diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 10697d31f7..7e0d278e3d 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -1018,6 +1018,7 @@ STLIBOBJS-$(CONFIG_FLV_MUXER) += mpeg4audio_sample_rates.o STLIBOBJS-$(CONFIG_HLS_DEMUXER) += ac3_channel_layout_tab.o STLIBOBJS-$(CONFIG_MATROSKA_DEMUXER) += mpeg4audio_sample_rates.o STLIBOBJS-$(CONFIG_MOV_DEMUXER) += ac3_channel_layout_tab.o +STLIBOBJS-$(CONFIG_MOV_MUXER) += ac3_bitrate_tab.o STLIBOBJS-$(CONFIG_MXF_MUXER) += golomb.o STLIBOBJS-$(CONFIG_MP3_MUXER) += mpegaudiotabs.o STLIBOBJS-$(CONFIG_NUT_MUXER) += mpegaudiotabs.o diff --git a/libavformat/Makefile b/libavformat/Makefile index 1416bf31bd..c71de95b2f 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -699,6 +699,7 @@ SHLIBOBJS-$(CONFIG_FLV_MUXER) += mpeg4audio_sample_rates.o SHLIBOBJS-$(CONFIG_HLS_DEMUXER) += ac3_channel_layout_tab.o SHLIBOBJS-$(CONFIG_MATROSKA_DEMUXER) += mpeg4audio_sample_rates.o SHLIBOBJS-$(CONFIG_MOV_DEMUXER) += ac3_channel_layout_tab.o +SHLIBOBJS-$(CONFIG_MOV_MUXER) += ac3_bitrate_tab.o SHLIBOBJS-$(CONFIG_MP3_MUXER) += mpegaudiotabs.o SHLIBOBJS-$(CONFIG_MXF_MUXER) += golomb_tab.o SHLIBOBJS-$(CONFIG_NUT_MUXER) += mpegaudiotabs.o diff --git a/libavformat/ac3_bitrate_tab.c b/libavformat/ac3_bitrate_tab.c new file mode 100644 index 0000000000..57b6181511 --- /dev/null +++ b/libavformat/ac3_bitrate_tab.c @@ -0,0 +1,22 @@ +/* + * AC-3 bit rate table + * copyright (c) 2001 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavcodec/ac3_bitrate_tab.h" diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 103f958d75..a071f1cdd5 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -36,6 +36,7 @@ #include "av1.h" #include "avc.h" #include "libavcodec/ac3_parser_internal.h" +#include "libavcodec/ac3tab.h" #include "libavcodec/dnxhddata.h" #include "libavcodec/flac.h" #include "libavcodec/get_bits.h" @@ -362,44 +363,42 @@ struct eac3_info { static int mov_write_ac3_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *track) { - GetBitContext gbc; + struct eac3_info *info = track->eac3_priv; + int8_t ac3_bit_rate_code = -1; PutBitContext pbc; uint8_t buf[3]; - int fscod, bsid, bsmod, acmod, lfeon, frmsizecod; - if (track->vos_len < 7) { + if (!info || !info->ec3_done) { av_log(s, AV_LOG_ERROR, "Cannot write moov atom before AC3 packets." " Set the delay_moov flag to fix this.\n"); return AVERROR(EINVAL); } - avio_wb32(pb, 11); - ffio_wfourcc(pb, "dac3"); + for (unsigned int i = 0; i < FF_ARRAY_ELEMS(ff_ac3_bitrate_tab); i++) { + if (info->data_rate == ff_ac3_bitrate_tab[i]) { + ac3_bit_rate_code = i; + break; + } + } - init_get_bits(&gbc, track->vos_data + 4, (track->vos_len - 4) * 8); - fscod = get_bits(&gbc, 2); - frmsizecod = get_bits(&gbc, 6); - bsid = get_bits(&gbc, 5); - bsmod = get_bits(&gbc, 3); - acmod = get_bits(&gbc, 3); - if (acmod == 2) { - skip_bits(&gbc, 2); // dsurmod - } else { - if ((acmod & 1) && acmod != 1) - skip_bits(&gbc, 2); // cmixlev - if (acmod & 4) - skip_bits(&gbc, 2); // surmixlev + if (ac3_bit_rate_code < 0) { + av_log(s, AV_LOG_ERROR, + "No valid AC3 bit rate code for data rate of %d!\n", + info->data_rate); + return AVERROR(EINVAL); } - lfeon = get_bits1(&gbc); + + avio_wb32(pb, 11); + ffio_wfourcc(pb, "dac3"); init_put_bits(&pbc, buf, sizeof(buf)); - put_bits(&pbc, 2, fscod); - put_bits(&pbc, 5, bsid); - put_bits(&pbc, 3, bsmod); - put_bits(&pbc, 3, acmod); - put_bits(&pbc, 1, lfeon); - put_bits(&pbc, 5, frmsizecod >> 1); // bit_rate_code + put_bits(&pbc, 2, info->substream[0].fscod); + put_bits(&pbc, 5, info->substream[0].bsid); + put_bits(&pbc, 3, info->substream[0].bsmod); + put_bits(&pbc, 3, info->substream[0].acmod); + put_bits(&pbc, 1, info->substream[0].lfeon); + put_bits(&pbc, 5, ac3_bit_rate_code); // bit_rate_code put_bits(&pbc, 5, 0); // reserved flush_put_bits(&pbc); @@ -5975,8 +5974,7 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt) if ((par->codec_id == AV_CODEC_ID_DNXHD || par->codec_id == AV_CODEC_ID_H264 || par->codec_id == AV_CODEC_ID_HEVC || - par->codec_id == AV_CODEC_ID_TRUEHD || - par->codec_id == AV_CODEC_ID_AC3) && !trk->vos_len && + par->codec_id == AV_CODEC_ID_TRUEHD) && !trk->vos_len && !TAG_IS_AVCI(trk->tag)) { /* copy frame to create needed atoms */ trk->vos_len = size; @@ -6053,7 +6051,8 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt) } } - } else if (par->codec_id == AV_CODEC_ID_EAC3) { + } else if (par->codec_id == AV_CODEC_ID_EAC3 || + par->codec_id == AV_CODEC_ID_AC3) { size = handle_eac3(mov, pkt, trk); if (size < 0) return size; From patchwork Thu Jun 23 07:24:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 36389 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp3301575pzb; Thu, 23 Jun 2022 00:25:30 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uesVYv+jSzERWhSFUsePe4q2r9D89qGAUziLvTOTu9hIO2Ec1tG/IIwupF36GMeFNsrpED X-Received: by 2002:a05:6402:d0a:b0:425:d455:452 with SMTP id eb10-20020a0564020d0a00b00425d4550452mr8905184edb.259.1655969130571; Thu, 23 Jun 2022 00:25:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655969130; cv=none; d=google.com; s=arc-20160816; b=CAjjo9TUKAQNLfbuNu+eQVP6/zsp/ajiG/mMiHCY9/bxuF5RgWXg75+EQKDw2vQMJa 3Q0Y+UJdCiiihkWqKLkEgR8w+FFmaDNfYm+nX5Nv5eeIb6q9UdnQrJbIXjKch1l2XZJr 4GZtaiq/NOmZpIhDUPoRjVfb2gDQ9D12EW8H7VmamrLDAsDgtynh8cepD7iJ4rauf8IL hVeOQzHtTBLQEvwBWU4NRQNzvUNa+Ho9P1Qo4Mq0MHCUqNkGtEKYl284WZokFUyYoDmp 0IC7tFmnfgp+H3yl6yshxYU5tq2I7OmNtfk4AGgUzw3QrJJ4IBpLO3Roy8kZLMCC7U6l eI4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=qrgnIMZxKHugV2yQ9zNtPKfRFtAo4nMCF3/GL53FHRM=; b=R1g5j/6cl/1dy39oh9qEXvCR68k0tGTc9dxUr/F4bg4tJB6P6W7AgBQntyKBifKUn5 SkKuQM8ewt5f3JN0M+EhewsaGeMUZvNVy7qfPeuauk6eEmFWdUO7eykU7n88VvtzyqHQ KLD51BoA6L18HqqG+9EfHaNxCIkYTlYZlLSogVldjtjsZjC+v35A9lTkUIh8pTLllMlt keYLBgvGryQyemvg22xO30ECNArJUEV4I18+BBCBtso9jUGlkKjtZPK26BZq1O+/ZgD9 KDvK39ts/IkmCc6ll3uZ7+4ZHE6Hg0RpAKCkU2vXGqOkWRmk+am7WmmPIQrrizE+rGWT yN+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=i8dSAUNP; 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=QUARANTINE 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 i29-20020a0564020f1d00b0043574f03987si15279331eda.39.2022.06.23.00.25.28; Thu, 23 Jun 2022 00:25:30 -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.s=20210112 header.b=i8dSAUNP; 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=QUARANTINE 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 3878A68B743; Thu, 23 Jun 2022 10:24:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 34DA168B6F6 for ; Thu, 23 Jun 2022 10:24:20 +0300 (EEST) Received: by mail-lf1-f44.google.com with SMTP id j21so18728987lfe.1 for ; Thu, 23 Jun 2022 00:24:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=bH099dhZYI9uqdn/8sDYeksjgzgw9cAuU5G0EUDEpyE=; b=i8dSAUNP3GlUjm9qqm9NEVMOtTK3UTU7Wioaf1ujb2SOv5pqqhKXEdkzRvcSOc7Val 9kTFfsSSOMPDdV+FrWADNEbIzpQIEid9rR1r0qjkpVUbDIPePJyaclgVu/q76ib2irEH xdSUHZehjUx5wR3kDJalQJ8MReXYTcyWFXLthUCG9iUJk2cB583fPftJeIh5YFsz9G04 4X5O1DQlaD6/IutIEdwh2dzYIrT/pmM5GkauezjCmmnEPHK+QUNS7X4OnzYxQwQC4KRA w770wuZD0nVqxGD108EM3lSdNwyjV6JIisSu+oIHNUmkTATRM6QWs/S5vKdqcCQsiCA7 67uQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=bH099dhZYI9uqdn/8sDYeksjgzgw9cAuU5G0EUDEpyE=; b=0b/X9lpqHwDsBHfFpJF56AGIzNRHoWp1cuMD34m8ol1FVfqXc1qK4ny/rbEjhfVf4v 5G5CuIMhnG/LF9iFRvVje5DxAUUpry/RgzYqdn0QD3jZ2OW1S+uuG3Y1iY7hzu9k2XOq eThiXbR1T0PBehwAeVQLDlfPHRMiAXwWe5kHX9o1UWJDyEboOBkyIN+WNr/lg5ZVouw9 tSfBSY4BfGOS2ekuV9GeY0eoIPuZ3WKaWkUMRtfJXh3vP6+kHg+14oTArS1oFAC2YOUD 2wU9/4e32oDGUsWht0ymAhvvPq4i3IIjFB6qijseg9/4eXfQ1MqlL7KXCmKOAlvGcBTf 0gFA== X-Gm-Message-State: AJIora/6iECrFTSfzM1Lxmzc11zKX5CKX/AUU+gjggbz46UBogv9HymG iIrhEgGhhlWztFiSP480VGfVmrdeYew= X-Received: by 2002:a05:6512:1047:b0:479:7805:5f with SMTP id c7-20020a056512104700b004797805005fmr4696253lfb.238.1655969059598; Thu, 23 Jun 2022 00:24:19 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id a15-20020a056512200f00b0047f8ec3ca4esm732843lfb.87.2022.06.23.00.24.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jun 2022 00:24:19 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 23 Jun 2022 10:24:07 +0300 Message-Id: <20220623072408.38977-7-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623072408.38977-1-jeebjp@gmail.com> References: <20220623072408.38977-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 6/7] avformat/movenc: handle OOM situations when parsing AC-3 headers X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: nFd03pVh/qhc From: Jan Ekström Signed-off-by: Jan Ekström --- libavformat/movenc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index a071f1cdd5..58ba0bc545 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -420,7 +420,10 @@ static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track) if (!info->pkt && !(info->pkt = av_packet_alloc())) return AVERROR(ENOMEM); - if (avpriv_ac3_parse_header(&hdr, pkt->data, pkt->size) < 0) { + if ((ret = avpriv_ac3_parse_header(&hdr, pkt->data, pkt->size) < 0)) { + if (ret == AVERROR(ENOMEM)) + goto end; + /* drop the packets until we see a good one */ if (!track->entry) { av_log(mov->fc, AV_LOG_WARNING, "Dropping invalid packet from start of the stream\n"); From patchwork Thu Jun 23 07:24:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 36390 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp3301600pzb; Thu, 23 Jun 2022 00:25:38 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vd2hedJG3ch4A1gIGzAOiOyQRsw3QkBKcubjiE7Bn7ZO40Ez3OrX0v+TOEf5RqCnetkiL5 X-Received: by 2002:a17:907:1314:b0:722:fc80:3b34 with SMTP id vj20-20020a170907131400b00722fc803b34mr3737267ejb.583.1655969137909; Thu, 23 Jun 2022 00:25:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655969137; cv=none; d=google.com; s=arc-20160816; b=BxbtEmBIkCt2O4+w7qG+zVdFjurES2wy8YqENYhaJcNmSqxoLNg13a2SngX5ViUmMo 55xBVsy7ZbT8WtTx/woyuVv3twoM7F1bXpd05XjvkgujPg+rdaqZL8Z7Pr44aSUYe/+I TPd8BEiXQgMdu4Blo1XeehN3ppN9+Bf/BQjsUFJAvEzV4DyOkkcVexrqs5wad6pMK4Q6 l8WlQw7qRD78tu9YcSeHbVtKAxbEemGE1Y9QJptWmAijQtBnKTZkSqMf1C3aUOreG4FQ mdQh2EP2rRMKRrVfSgcjqgOjuAEN4bnM8oRIsJAao0h4+ktJV3ycZ+DsWY+8x3bhDyKA 8Fuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=uReGTI3BwuN+B1o4BkzC17FkcUybFP9eDGJxuekyFhA=; b=intazJq3ig6FnwmiMvZc0AkjNWV+YVNnhOV5mp5YLQt92hr26yRkuLC8MtUx1Sa3iP 6XOtAR1vgasO3r2uPBk7mEx7V7nIpqWbw3bi05vFsz+GEHyiFKOn6zO82i36CSc0REX1 ug6QHfidz7Slf7wV5Q1RLVU8e+Ik44gz0lWWQKLBl/J/hS2fmR0qGWcoQHEY62v1c/O5 rOHmcQ8kZbOHzaUChsV0zCLNbdzBtBDDbERB19zIoSSgMQ+dl7KBDeQa1A6FcnWw0ERN ffj4r6tzyIJEVxp6h65XHCQwSauQEEQ/yXNzIiYFIRKVsWhbg+tQpG7GEgW6+w8ZsQ7V 39BQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=pAYeQgkG; 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=QUARANTINE 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 j20-20020a05640211d400b0042b9c88d5bdsi24069301edw.470.2022.06.23.00.25.37; Thu, 23 Jun 2022 00:25:37 -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.s=20210112 header.b=pAYeQgkG; 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=QUARANTINE 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 370DC68B749; Thu, 23 Jun 2022 10:24:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EDB1168B710 for ; Thu, 23 Jun 2022 10:24:20 +0300 (EEST) Received: by mail-lf1-f46.google.com with SMTP id z13so1328247lfj.13 for ; Thu, 23 Jun 2022 00:24:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=46Z3TUgjfrE7InVArlCCjrDwhXE8kADnjGNVAfuIMEQ=; b=pAYeQgkGRmTxO+t4p1QziBlGwBytzEjD9VEFwarAj+WfWEa1J2fRpCKxMBbi6puXXt AkNrZwQsQPCizwkxMaOrTH8mwS9SIjuKBHBYY0yrYKADaHS6LOvS4YWSKE70ekoatMNJ ESo+KjrB4gHLaKaC70EAVNr8Cs2M91V0AmGHPM7MO6xmz6kkzC7hUW0wFLeLLJCRM0Cu pyqBWChyWKrpCvIU3YXZRus6vdTU1gC+g4voZYvT95WnbFQ22gBiROYC6+sPmOkj2p4X jVc4uk7EUSpYNUIm1ys9O1VcWznsQtm1yaPJEA506WnLNCWDXcoO9LJmcq9rnk2aXiO5 Id9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=46Z3TUgjfrE7InVArlCCjrDwhXE8kADnjGNVAfuIMEQ=; b=C5yJrttZvg8r7RNyRmUQy4PNzL4Yl3vwUtErgGoAN2QqaQJ9+0itPWf6EbNpfwOFiD i1LpVmXETp95K9mqw+hfdAKsWJo6A3DR896o0nCLVS0+2MU0uO0rvZN5Rkk25dkD2g85 tifS8m7sNUFVNfcXrjO3TT9wT993tsod4YvfSr3iH7CJh1JEW05Ov4CA65mr08+xH4md 0HMZ1NKiEFh2W9FSQEJv9c9B2CaQeN8ZhaSgieY3KDwreBviqZM9bTxvbcZgbBZNAgmb q1tQwb4Dwo5ERZ070j7i6zYsNSpdkZAtagKh1QwYfSPr9cGdAOxCpFTADn515ohBDjfW fxjg== X-Gm-Message-State: AJIora/DsID3LTyjr+BTKMTuKaXAIRGSORn/jrYgA9xc1WaKfT7fUeL9 w4OJRRbI030YN0cdI2sQFVGqlwPnBUc= X-Received: by 2002:a05:6512:40b:b0:47f:8215:8bf9 with SMTP id u11-20020a056512040b00b0047f82158bf9mr4388198lfk.360.1655969060374; Thu, 23 Jun 2022 00:24:20 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id a15-20020a056512200f00b0047f8ec3ca4esm732843lfb.87.2022.06.23.00.24.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jun 2022 00:24:19 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 23 Jun 2022 10:24:08 +0300 Message-Id: <20220623072408.38977-8-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623072408.38977-1-jeebjp@gmail.com> References: <20220623072408.38977-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 7/7] avformat/movenc: limit ISOBMFF AC-3 mapping to bsids <=8 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: KGjH7etFX3ij From: Jan Ekström This leaves out RealAudio DolbyNet, which utilizes bsids 9 and 10, It is not clear whether the interpreted bit rate value (divided by 2 or 4 depending on the variant), or the original bit rate value should be utilized to receive the bit_rate_code index. Signed-off-by: Jan Ekström --- libavformat/movenc.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 58ba0bc545..a3e108c5af 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -375,6 +375,14 @@ static int mov_write_ac3_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *trac return AVERROR(EINVAL); } + if (info->substream[0].bsid > 8) { + av_log(s, AV_LOG_ERROR, + "RealAudio AC-3/DolbyNet with bsid %d is not defined by the " + "ISOBMFF specification in ETSI TS 102 366!\n", + info->substream[0].bsid); + return AVERROR(EINVAL); + } + for (unsigned int i = 0; i < FF_ARRAY_ELEMS(ff_ac3_bitrate_tab); i++) { if (info->data_rate == ff_ac3_bitrate_tab[i]) { ac3_bit_rate_code = i;