From patchwork Fri Jun 17 13:04:38 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: 36300 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp120320pzb; Fri, 17 Jun 2022 06:05:21 -0700 (PDT) X-Google-Smtp-Source: AGRyM1v3ZWgQ/BMr+nQxlzLFZePEe0a47kwgjfvCUDNXfFaKoryJoTp2ZUU5l3UAh6pUT4XXhNJq X-Received: by 2002:a17:906:ff18:b0:711:d197:b942 with SMTP id zn24-20020a170906ff1800b00711d197b942mr9142532ejb.357.1655471120977; Fri, 17 Jun 2022 06:05:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655471120; cv=none; d=google.com; s=arc-20160816; b=K3PUL2eLviEjuom3hmJpN+/f2mLUUPNd8a85Be8kh6I2tkLXjWhDEJdVd+u2YgCHMQ WU31/UHR+HOqOeCwtlc+qXjtHck+iDmjt1zQWmDCxJDOJO2fTE+JL7agV1CucmwvYd/y 3l+YRyhDb+dCoxiFJKD62NXuC/zeOaD4WNa9+I3rzvkf8WxsBCFMC0cqci4Mzcg3tTdl e84YOqikzI+t+7Hdx2ICQh98b2Up4vHCmBV+5gwu7gPrCYwIY7bsVqEKqj5wK7H3r18P WZDku/Bd8qbLy4nyO7bVRkTFXf2npdm4TSp9QdRyIXIwYve0hVkJLRyFMOSCvCLa7Lz9 457w== 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=+W1Y43ieY9QvQrCgbJ8s6oQdZM/ND0JPT5wOltu7Z1M=; b=SPSygol1bFWPJ+x+wCDd03qga74FqqWVfFJ5NNwlKG+vaho798+R8w26M/Abn2IRdk IFxd986jQJgvOdL/ts9LNOtifVZAooWiAWYnxiC/9itk0WsgQVe2tc0GyDa8sw17vw28 +dhP2l3LmCV6S3NwrStPoRVb9pRrwA4D+pDU8i6XscpsDpn7B3nnmB3tJLO9Ychz2DzY fKZGZ3X/UTClhtBpNUiZICN98G2EXeUB27vsNPFZCt5jCxNOPJhYhCjzWl16s44MGFoU 7jrIe8G+yqAsczesT2NOMRzrJ9pwJARxPzwdSKGolNggNZ79VLi4OknizVQETSaddLDg 5wqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=TpdKZKlt; 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 s8-20020a170906454800b00709af14e386si4887040ejq.205.2022.06.17.06.05.19; Fri, 17 Jun 2022 06:05:20 -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=TpdKZKlt; 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 5DA4368B8BE; Fri, 17 Jun 2022 16:04:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B8D2968B610 for ; Fri, 17 Jun 2022 16:04:51 +0300 (EEST) Received: by mail-lf1-f47.google.com with SMTP id h23so6853944lfe.4 for ; Fri, 17 Jun 2022 06:04:51 -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=zx0Rz9OpLvGAnNegaIt9ohdbqln3jszxLa7y6ojgMPQ=; b=TpdKZKltOJiVFRI5N1C2wh4/FAH7G1cpi0NVcnJR4/IHcZaTEP46fv9sOkdKg040Rf JZF717a9jGRx9JaCwSS+jG9ZvvI+CPVqsRMaSwC4LHHUq1sVAs37FWNGuCQRZtdgjtsQ HZRgFsyB6G48f6/fSJpKnNaUuXFEZ/isQzJ2WcOvG0yjd2jqiugsMdK5X1oJgYrZNuBB 23viaCplLrqF41iZIWHlfL6p1xs1AXwwQ09iitHJQFphSW8Kp7Hd8cGjSoCN1BSFwOWn mGs5n40eGASIh2IHIL3FTVHT7g3AvHIZ4wdlVbt5Jki9mSRPh5FXTk9biB43imcAScHT gsOA== 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=zx0Rz9OpLvGAnNegaIt9ohdbqln3jszxLa7y6ojgMPQ=; b=7+ABFz7ZBOl3XHteAaBxEiPqZvBAW2/i9tan7wCWcqf30YPbekSVqn9YrB+7si8XxP BFh6aihO64g2q5i8gNMLY7tNBW3laSQ7Q2ZyzbIulCVonoRes6lpD65nOU2zXiS9XCrq AOqzPtMgtOakpNf7QbIVUqRWyHNifGrQmhN3/72GcEaSyPNPLftIp86BGxXMjRpAT4sn EwxapVmudqasc1+yB+CrTpgYg1ozLkeDWeaKyBqxIXcHCBWqnr/9W1zmY4roek6/sgA8 Xb/b2IXMBIqtOoXk/Rr7YrP2ycy3h4pRJYhyfawV15X6KA8A5+LsqFn7bDlzkCBeI+55 SbCw== X-Gm-Message-State: AJIora/dj+kMvoL5myWi7mGHBGjMWq2T5OZ9gCRxqIAJlDKdjsU99i1z GUfHkQR/1Sqn2BgI0LgBTMyvhgfyDtg= X-Received: by 2002:a05:6512:73:b0:479:2674:f1b6 with SMTP id i19-20020a056512007300b004792674f1b6mr5430856lfo.134.1655471090939; Fri, 17 Jun 2022 06:04:50 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id k20-20020a192d14000000b00477a287438csm638487lfj.2.2022.06.17.06.04.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jun 2022 06:04:50 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Jun 2022 16:04:38 +0300 Message-Id: <20220617130443.188377-2-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220617130443.188377-1-jeebjp@gmail.com> References: <20220617130443.188377-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/6] 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: cYGTBS09e5zu From: Jan Ekström This makes it possible to include it from libavformat --- 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 Fri Jun 17 13:04:39 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: 36301 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp120498pzb; Fri, 17 Jun 2022 06:05:34 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vNAPqbNyNzWYfYSE5a8+Kc4jVK9ZYXWbYko4IBkwZqbuGDWZHwtQrqjVHF6+QvPm/VZXYp X-Received: by 2002:a05:6402:4252:b0:42e:13d4:4f4c with SMTP id g18-20020a056402425200b0042e13d44f4cmr12176084edb.92.1655471134470; Fri, 17 Jun 2022 06:05:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655471134; cv=none; d=google.com; s=arc-20160816; b=yId7jNAWCsWT+0drNzjpyaV6Ciz2eUZG6Eo2L0O+7jfWZsLS47zSDpxwqiMAh52osC z4cCufc3eDPmsDkh5WkSC6CLikr9H2sMRDAOpkrjmNCmrT8iQ8upf3U+1oBymgxzXZ5k jclYrI3nO10Pudz0D1TgKmZ5mb6Yy9EgHS5LxwxTnTCtu75NvA66PSnr0mD1s0C/sTai gE//3C02oQaChyE4VWI6atxesp1qtAAd3TfcOEe+xbO0n2BhkcDxiCJrnoFPNdVFYDFb YvjWU7r+MwYhQeNT4YfxRvKbyd9lTeu9Ltys/sc/7Ne8x72OXNK9PniOBkucq/YgEeyg Zbaw== 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=l0DuSAuUhcUAG+NZtBJn9+5CpEBTvIEShe+2wVPRVBs=; b=OqeAXFaDQ1o+X6BsoCwGFOi6PvLYqiuKAWA4pdsX35H/fdv/ugN5QGLP6vPXJqBSlh jOewrbUmSh3Jb2hI69WKV1Q9GzShoKm8EHxuW4vS9O8yxO/PINDJOF6Qb+3Cb01BUl89 ILgUrpQEzrW4BZjhnRX2Ogmae203uq3qYlvUesLM4e/MbWwBTjfTIJdk0N1KFJ9/O5mh /ycjgh5Ghyg4fHx+x6Fq8F/chBqNG/9fSvLZ0WMzIjmxWNDYW38z2WEtH9ChURW4p/XS 3Ah2BtBQ1iqxz3pRxIaIBFnLSCpob2es+sjCcHnxfZP/eOSW2CpPL7bxzoL3MLF1b6q5 AfkQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=nmKYdnx9; 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 ft19-20020a170907801300b0071200c8fa60si3821981ejc.596.2022.06.17.06.05.33; Fri, 17 Jun 2022 06:05:34 -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=nmKYdnx9; 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 65DAC68B8D0; Fri, 17 Jun 2022 16:05:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8220A68B634 for ; Fri, 17 Jun 2022 16:04:52 +0300 (EEST) Received: by mail-lf1-f45.google.com with SMTP id i29so6867952lfp.3 for ; Fri, 17 Jun 2022 06:04:52 -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=TFckWsadjNHI0hBs1TBsqWj1MQ2VHp3ByykFHEfEjMs=; b=nmKYdnx92IPO8dnG8lJ2x+icOH2C8onouvfXmDj1kNds49O9dEBuvj8xqKUm1Q0znN tTrx+6OPjucLQC1oZLyHE4VL/8A6uP1yLz5nAqcJuEFQHRAZtvZTy5f3xQHY+rtZyrFA 78G5PGMSWmX6GMDq7hrLnDU5rPkLnkYzcdyDgxCJTE7PeqduB+UL5dM73aFs4v8sfSwQ FS0odnKhaqaBa7XmMsrD42BZzcrfngKv8ZL71UlnxU1sfVR257pw3qmb6bfNGEbMsrB7 FOoZXULoGcOwyiBOaGk/u1FtpIhDnDWXnJxsb++MpycNqMQLbaE9VOGjLPmWli6PASiI buIQ== 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=TFckWsadjNHI0hBs1TBsqWj1MQ2VHp3ByykFHEfEjMs=; b=zv81iiPVpdHIau9kZTV0PnqMskyy8ZrwNBbn3ZGv/N4AWiVkmzwDKegozZiZ7bJfcI z+RRhzIohI9xe2K9LoGvWa46hG1Va0CD9A14Ms+p82kqDU/J8SeCdGZIyKeQ2GahuW3e jm36uhvQtVKESNH5Nrcrt+W+dEUqE72hYxLPE7gmGlAAcyRibYgHIyNTHLyPhTD8Q63e aEoqsP80jaQfe9qcMjixCkj3eYgOINZxrBb5LAd1lYpJSI8uDoDwUutolcUnwClHIZpO jWx/1ADIUjV+EBvm0e500vtME5tmp8H9uancTzzTRxnqDKFiPd0puZzKJR4aKM61YXDk 67iw== X-Gm-Message-State: AJIora+6nLFtHu57/hK5xpvErzXwKbMf/hpx4Xwi+xfAMzxM7nfjZxJ0 WZjfqTMRikkQLPs6c1eP8Hf4Fv0PaYg= X-Received: by 2002:ac2:4d82:0:b0:47d:b3c8:9e80 with SMTP id g2-20020ac24d82000000b0047db3c89e80mr5473560lfe.623.1655471091843; Fri, 17 Jun 2022 06:04:51 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id k20-20020a192d14000000b00477a287438csm638487lfj.2.2022.06.17.06.04.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jun 2022 06:04:51 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Jun 2022 16:04:39 +0300 Message-Id: <20220617130443.188377-3-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220617130443.188377-1-jeebjp@gmail.com> References: <20220617130443.188377-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/6] {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: qwxVK2cvYVe3 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 3dca1c4bd3..c535c4d4f1 100755 --- a/configure +++ b/configure @@ -3440,7 +3440,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 Fri Jun 17 13:04:40 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: 36302 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp120692pzb; Fri, 17 Jun 2022 06:05:49 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vLAK8yVTZp/NEyvrhwxnkaVpEnUemLhWwx+62FZwYOALZEwz+5VOvgo+yH9ReF93z44WVb X-Received: by 2002:aa7:c542:0:b0:435:75e:8a7b with SMTP id s2-20020aa7c542000000b00435075e8a7bmr6145171edr.108.1655471148636; Fri, 17 Jun 2022 06:05:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655471148; cv=none; d=google.com; s=arc-20160816; b=lIquU1YFZorpFTbsYp1KfFjaRKQLSDMH9Pu47KwWBgdzed8hnMQiJwXG/7pUnKXgwJ pzLU2LHmUTCo3IPCUaX6P9igJ7YHaSbSWI1ssCJgubuxMpZu9R2ghEr7aEFRTHxF4TDk 2WB5HBUN2vD6SM7bosMy+S6TKPw/8CMttBF8WJoAf1PSKAxsaHMRa1USpBfnjiwfkHbs 12fs+tloADd+juVLEeZYSh1b1MTW51Iv4Wj2HXDXkWZUbEYWvWsoaTb4F95uq1dBPbl0 pP3aqdE8FWPwFX7u40iOEu88V/qON3uPO8PN2GkIkfCQpvVql2NOE7n8tfPZZVht8MG1 DdNA== 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=Bn++x5Cy3aNoOgdqvGJEFfcuDA+/qyQTDQ0ir3xeqTnvDTpOnGexRVQ6INq3Pn+y9t 6PkBCLEBd5gz4aGu3gKTmXYde5H5aHB090hmKUlQYlGtKxF1l1HaJQevN+wHhMMASG8K zJBT9w76i0DXMvOvU87K+6xHvJTn5CkvorUJp8nEDghom53AvJudED9FG4jfwIMJ8us/ pxpGnKww5OzzJMljZEYJdnMjQIWJrzdCDDsHbEPJwtvNb/e7zng5tRIg8gL6YnNNfVyB k/fjVCHScWWMIgIHBDTi6Ljas3mQE17TJ5BWlepmsnnYoTPo5DYWlNTwytO57hfl8AcN uUvg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=bWHMbDIY; 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 ds14-20020a170907724e00b006e8d1d9dc28si5403253ejc.32.2022.06.17.06.05.47; Fri, 17 Jun 2022 06:05: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=bWHMbDIY; 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 5C49968B8A6; Fri, 17 Jun 2022 16:05:01 +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 6DA4968B8B8 for ; Fri, 17 Jun 2022 16:04:53 +0300 (EEST) Received: by mail-lf1-f46.google.com with SMTP id c4so6824679lfj.12 for ; Fri, 17 Jun 2022 06:04:53 -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=bWHMbDIY9vMaKbC9bW1zsc/E2hnkcSWmpMsvwxVuhMFm7ZAyfH1I7C8Gq1DtbTxoi4 dBOGxwdaiFEqc0PWWG5mjBDue7PN7UJB+X6QCX045ebF2AZuvJFWyQBYHB+z+2lv9QYJ 4tK68kRxLqIJDOja0gr3Mrtc69NCqefAGz+fybDSbIOkz2k/bDyiYzUf6luoJVkGh8uM m2slLMIbq1eAsFtikM60WxMg6XBgDpmMlZ20EUczba5Oc3iJk3iBPJxKwT58FjGhDkXx HWO3knSAYJQ6gC9nC+nSnnPUi1iHv+vTnJVeLHOYmrnKFS8CoMQP6FX4wExZQLTveM+3 C97w== 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=H5hcSEi0AQObgcP29z29G7Anqc9zIVlPadvOmXoB7cHUVsxo3eUo8xzLB0L+3OipRW BykjZHlOrmwGY2O6mHeU862rPANChEKyl1W2BHTp81aKbphXN9qbMJX4DpR40FYhfJY5 CJW6Lf3l1kxZvZO4YUZgh4a407GbrrrYwnq93gX8XVnIx85VMoKBF2RxQooJjwNCzyxe I7t8KufUlOzEKBqQ4kGQPRAdJX7HpYpc5drzFX6yFcD2Or7kN1l3arkYixES8nvvhcbn ktOeJTckpnKodnmb5xeQHi4cQtpm6hUhcXk+MynWzH1knZBVnpUibAvo8/ZANPDAOWZI E8Lg== X-Gm-Message-State: AJIora9Wpg+xUWhZCbkZ2Apui2XfEyhJeSOOQPANnByJhm1sbtvJ7l1w aEZaHTrulDd1bF+g232pXGjmM4Wj3Mk= X-Received: by 2002:ac2:48b4:0:b0:479:9fb:6326 with SMTP id u20-20020ac248b4000000b0047909fb6326mr5878803lfg.130.1655471092700; Fri, 17 Jun 2022 06:04:52 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id k20-20020a192d14000000b00477a287438csm638487lfj.2.2022.06.17.06.04.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jun 2022 06:04:52 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Jun 2022 16:04:40 +0300 Message-Id: <20220617130443.188377-4-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220617130443.188377-1-jeebjp@gmail.com> References: <20220617130443.188377-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/6] 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: SItyCJ2L3psa 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 Fri Jun 17 13:04:41 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: 36303 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp120818pzb; Fri, 17 Jun 2022 06:06:01 -0700 (PDT) X-Google-Smtp-Source: AGRyM1v5j5weHN5GF7YqzD6vXkg5+SyIk8eA7GRURIegjuXAE27tZLq20o1nuD5KbOVxjn5Mm9De X-Received: by 2002:a05:6402:3705:b0:435:5e48:b6c7 with SMTP id ek5-20020a056402370500b004355e48b6c7mr4105257edb.396.1655471161062; Fri, 17 Jun 2022 06:06:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655471161; cv=none; d=google.com; s=arc-20160816; b=FoC3IrD+6vugmdHZZCycywjXdftw4J8vbn0bH1PXXOcMwSBzs6c/7zfJXoweooTVQi 5xNY5OcZEF+GlN9uqAIMEdjIwVyNGh2piVpWko7GnK88nHdEX8kxQWC3tvReYKDGxamS iuuaHxxhpiT5r/3J4urOS3y0y/Hfd9TaJWqUoiln1EKeIlNWFDl7/PJY26Lk9c48/9yY 0b49hj6S2OmqE6YkBTbX6iDHPPuQklRI+hkGixudRWcHdd2WVvFNybnKk+MIgV1OLXPe 573qsp7qhIBzA579HSPTyNbeB0goXRKBY0orvu0qiBGf/ygEV8x0mgG8R197erEwhLkx ctCg== 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=GJ49DOI68hzfrAPowoxotMBkqfXfcn3r3hfhDknJO/WIakchc7O67FE6QSPQTWMszy pZQcR54fvk419ApPeQR+NP/lxzOcfCic7g0PFnah38lvJxDm+bd2rPafaCXdiY204lu3 EpfV1EnCvSqGbHpPvfnLE4vOeq6emPalSYrSJ42jRCtUihrKLzVhvigt9oEtEEVjlzaf NbieimxEQzcexH4kHagohFfOPRRwC6si/IJT0V1bjt6Xn5F6gUT1NbY9LKnsiHzLP1X4 9dleqQwoFBTr9jK6A6CMYREA1bVOHFnCWl/9bCFNKRifAHgqjv1YhAOswKEyBsxxaQj+ 9svg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Otle7nSd; 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 i26-20020a1709067a5a00b007152a3ee50asi3380240ejo.122.2022.06.17.06.06.00; Fri, 17 Jun 2022 06:06:01 -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=Otle7nSd; 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 52DF568B8B7; Fri, 17 Jun 2022 16:05:02 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com [209.85.208.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A726C68B8C0 for ; Fri, 17 Jun 2022 16:04:54 +0300 (EEST) Received: by mail-lj1-f170.google.com with SMTP id h23so4679676ljl.3 for ; Fri, 17 Jun 2022 06:04:54 -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=Otle7nSd93/Gf4vj3wwFQCEZfGtcNHxJf3qOduuio+flQGdWkrzRiSFrM4hZo3vGQL zcOTasy0NWrJnmt7HQAMv0aryODnFDmCLuTNwN38fadlCCNx3kEZFXeQncQE95ZP0F/T fiAQuYhmJ6svKdz0BqNpFyTdRbsQyrN/EvM1DZDlsNTEkM3ZKeq5cdQMra69TZwtNNUs /Dy487dWvhAPWwcTJhDIJlxwzcQpCs2QfvXU+/eKXu9TuqlcqwND2rZ+TNMT1r9r5BU3 irCWj6JZ4XGcnKWzb2tjcYM9KgOiYVLlwpPuvGREGDLTHLzNeak/iF3Oy0pjqXJZ+bnT qKRA== 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=ESSoQaphVFJC6WLazxKnTeq0HfZRZv/JNXTpRluBWAK1kmUAECmV0rtysypc1WRrks 7pjrok0Tnb7DCTnRx4ZLc+zWiE6ux3cDsqNC2gkBYHvm2qtVLhgG/GSakr5tlYVF+efr Ep9zi4M5fI0eRCt8lqWdqobQRQtqMU3bcoI8ZUQ+xHJr7Pfz1Xr6xN64BJnt874dOUwn SsdHlyrIAwrkKD8vP5TZ0rpEBipC7a8wh0NvJL2QDAsfND2HpjqFFyQxMrKNAsicbB3M 5GCJjKR8RnrxGbDxv4XhC6WfjQMPTOqxFNZLJLzKjYAAexc84v81sKyP88eoZ31ZOn/g 4BiQ== X-Gm-Message-State: AJIora+T+5VvOOoIdOhJriqQJ+6Xq/6Ne9i1w46+kUUkHkK//xdY8At3 mZBlLZy3tZxFZQ5AE+lCd8gLC1/qK0o= X-Received: by 2002:a2e:a236:0:b0:259:c94:3144 with SMTP id i22-20020a2ea236000000b002590c943144mr4903682ljm.466.1655471093483; Fri, 17 Jun 2022 06:04:53 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id k20-20020a192d14000000b00477a287438csm638487lfj.2.2022.06.17.06.04.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jun 2022 06:04:52 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Jun 2022 16:04:41 +0300 Message-Id: <20220617130443.188377-5-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220617130443.188377-1-jeebjp@gmail.com> References: <20220617130443.188377-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/6] 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: /h8LrINuaa7v 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 Fri Jun 17 13:04:42 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: 36304 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp121012pzb; Fri, 17 Jun 2022 06:06:18 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sKiv7gYGL86rr5Vt8zyDLT/wq8NUqsC2z9tCBe5cGs4cLqNW+hIg8EF7KmhiUXI/Cz5m18 X-Received: by 2002:a05:6402:3805:b0:435:61d8:8da0 with SMTP id es5-20020a056402380500b0043561d88da0mr3136492edb.63.1655471178316; Fri, 17 Jun 2022 06:06:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655471178; cv=none; d=google.com; s=arc-20160816; b=NdZ+k/X2Pc4JXxc+lpvEYg7NHO1Y96jrsCVdbCYI/0l6e67aSl63DyAbZ05mUWGJyx 7vxNjfu7oajBRodxl0uy7xM02h7LSW10V7A0JICH2hhKRKXABXnJIs6/3R+Zuw4zR/04 QehqJ2uJV5lTh3Xe6aYF2IsD0sBi6lhMcRqrXCcCVdhz7sQhyI9MrDyYD9Ei1Q6qrmSu W+2dCxfzRLYPiXfeJE3RfcuqVv+P4bFcgA8w1HKxLqYjFryZwUGj5yl7VO0bn8+XzvL+ gruG94G261PBtwhc0yczb0gZdiU0FkVm8hTEIbZ+Z51EvKOkjVqViPKiceGnbWJcqtxM HinA== 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=TugizUz3TMIBueOI9kPIw0U/QmvJUt6zHyYNvKaFU7Q=; b=lcL0BfCWcisVbKGGoDMGzUtjvTJaJTYNtCPxL5BV00lJ0+1e7JFO6H8Xl4QslUHLFR z7xJ23iCTMvR8mfwzGIdv5UJ3hoteYOY2bHlMtpVHkje8PWJe5XscgrXt2nGV4YtrfvD wbZ4UdryW17FQnkzOHfWwjia5zCtJ9wN6SB3j1LyuvjuFDcau4hyXZ9xML0//0+MFFF7 YKmKnjQlhcXwsdaSr072OQi2sKJ9r1joRATcnaJtCFWrxhkC0UkqOgLccEyAjjYczj1o DkAsMYS1POcMFx3Uj4eVpwE/fcw+ocQSP1op2caorGwhA/hv2sX9XO0jKF4S6aQrWVBI 8RKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=peVhqq+V; 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 f18-20020a0564021e9200b0042dcf5f5921si6141333edf.597.2022.06.17.06.06.16; Fri, 17 Jun 2022 06:06:18 -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=peVhqq+V; 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 4BA7068B8C1; Fri, 17 Jun 2022 16:05:03 +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 026D168B8A5 for ; Fri, 17 Jun 2022 16:04:55 +0300 (EEST) Received: by mail-lf1-f53.google.com with SMTP id i29so6868128lfp.3 for ; Fri, 17 Jun 2022 06:04:54 -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=LVBIwjS6rQYX+lRQFgiD1VyK0mX+qwID/sGBKUW45TU=; b=peVhqq+V/RRCukKDzvuQLwQBtjUDFNyg2iq7tcpBfnDfc5gu9s7V5oAUYw+4Y75n93 wcUYPHiEyynpMhOTWUHEJLHS38j5fQN/aJMGTVj1J4myyeygDRzVcbVUAgOcWCuYh6Xw pkr3mwDDWPDg7KrNREijFmW5EsEb1epQSm+prBPgOaLiLhze8VG+nJs/Vo2nuzAOS4sy iFT/ZmN8iIuANSGFxBsTuF3dE1NtuRa3foVjHfT+TjGM5viYAMsIp8V20NPlcslABKiL ZfCC7WwBabxVFQRQXEZXUQmkVrADpyJLQ2wugMdggMqPnBoA0XU5ZNikUE0AsmuhMabv C+hQ== 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=LVBIwjS6rQYX+lRQFgiD1VyK0mX+qwID/sGBKUW45TU=; b=dJ2bXPiSnxcvVGyh/MG983L1MuQKdDf141LmhCOdDSLorurLPMMXy3StQ6bpGhueqs owjwuLc1RHTm0GiOixL9wJ1nRuUzIC/Crwst3K3VnN9R7J3j5isQmMs400oVlDsQfHQO QDDKf3Zi07Zgp8h2roooz1G3GFdPBnZgb4Sxq6F+5YfhwDkVA7jB8tZU7Ci7ejSeSa7s TQlzR6D7EdvraEktBOcOInnuLePlX0iN6cfWNLAI/OMtlzLxgG3McF28RvJqkIiD0sIT nwwZ8qcdiE5+g74K6PdBXYwBNy1PkyNtNsGXavFZ8aLec5JI7kuY+WpJp6XGOR966nAX Fdbg== X-Gm-Message-State: AJIora9O6VrEbYPcmwzaHzDVAFSuCkPE6ikLVRBRU3vVf1ZyQ7sN6cbp WMJbSZ/IlRYAh3ZbLOrFrz6Ygown4Q0= X-Received: by 2002:ac2:4c49:0:b0:47d:d5e6:6501 with SMTP id o9-20020ac24c49000000b0047dd5e66501mr5687728lfk.295.1655471094227; Fri, 17 Jun 2022 06:04:54 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id k20-20020a192d14000000b00477a287438csm638487lfj.2.2022.06.17.06.04.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jun 2022 06:04:53 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Jun 2022 16:04:42 +0300 Message-Id: <20220617130443.188377-6-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220617130443.188377-1-jeebjp@gmail.com> References: <20220617130443.188377-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/6] 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: GYVKOEl2dng9 From: Jan Ekström Signed-off-by: Jan Ekström --- libavformat/Makefile | 1 + libavformat/ac3_bitrate_tab.c | 22 ++++++++++++++ libavformat/movenc.c | 55 +++++++++++++++++------------------ 3 files changed, 50 insertions(+), 28 deletions(-) create mode 100644 libavformat/ac3_bitrate_tab.c 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 Fri Jun 17 13:04:43 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: 36305 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp121216pzb; Fri, 17 Jun 2022 06:06:32 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tcMyetI16AuKaFHs0MJdBqNSWsVFv2P4xw+KTszHWAVYTNyTwzClaqk+80WLqhgPxxJgdT X-Received: by 2002:a05:6402:84a:b0:423:fe99:8c53 with SMTP id b10-20020a056402084a00b00423fe998c53mr12007835edz.195.1655471192389; Fri, 17 Jun 2022 06:06:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655471192; cv=none; d=google.com; s=arc-20160816; b=KqAov+d2uEZGpD6JIL1d87ryUrddYnHPXofLi8t4L1f22PSjiOf2M2fz9EkBs2P/sc 24J7oqSzuF8S/Q+erp+WHbNx04YnfW8F33xjMQDsEkk8jFFiv4PrD1667wb/MjbX/Otg +tWi0foZdwpEx4nnipMTBs95KKf2hMcjvmZAwXuRM8WHjegCtcGBY6bOrMoqMrn/IeQr aeytEYi+3C/aARhtyDe6mhxP3OtGBhew1HrndkiBjc1upJwsAXkcMOem3vZx0WUvUOrC rpG4mI6O6vY4W3kxUQHQbNRzsJeZAwBYaAGCh+WzoznAcLa6osOGxotWw+Tnkxtu9u/t jGCw== 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=Jz+xF9pvXIMAHxYuCmjE5zkib0JBevANqPc5BwrNUkoqe/9gsZMmRHtCN9IN2VWgd9 XZ41uA5YRY4GTzttti79DOgs6PVQ5CdGWyBCeGAklr9hKL+Ab0XXEGnFZHEZNsTD82xU mq0t6zGpfZ3yn35L4ZJi70xLEZLntZpLmHQ20ar0aLMlUrHWpoXtg8nEen69939QMPEv aIhl8NQUO/y/WysOIiO1ustP2hWJWCkgFpKB31z3cpC10nZgn+JyeikWqoFHbR/svDko wy6rMI+FwXNGWHzcozf2+5QTFLohajADkTAVJWlc7WectcE6swrCCnlAURQM9YZFS7fZ QzOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=QBQxH7eg; 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 hv11-20020a17090760cb00b006df76385e6csi4837710ejc.780.2022.06.17.06.06.32; Fri, 17 Jun 2022 06:06:32 -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=QBQxH7eg; 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 3CE0868B8E9; Fri, 17 Jun 2022 16:05:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DBC3468B8CB for ; Fri, 17 Jun 2022 16:04:55 +0300 (EEST) Received: by mail-lj1-f182.google.com with SMTP id c30so4657575ljr.9 for ; Fri, 17 Jun 2022 06:04:55 -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=QBQxH7eg3wG1u841lcKVO4iH8LhISpOrCQxOez+IX7zAzn6RFFkKu+iQJqVdNIrFJG itKOTvwEoI+TLyH9NFLbZaDWMBpi/nIWGnz8453ZeMvD9NRHog328N5u+z78YBQxUeap pHx0S+hDmHHaEAi8VezYKc/A74WVbXl0WFHW1AUeJZ1T3EvkpRSqga5PENI4a6UwFpxa x+X0zBi6hEIMMRw91xaT/PZElEQ4cpRN1/8ZCk87jg7gYidwauil00sVDhPZz598xB7o 4eQEt16JaJvgCQ5xRknqYqRuoRlYInq67cVzHwHNv3q/9NJoF+UCF7sCKS/iXg7xYJAx fABg== 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=zaUDIlcLK+u3YjJVxq9RzLh7dOPo5gv+pEp6LwqdPdlAz+ppHARsTMjPxitQninvmD bamfym9SAwOz4EjqtBwI/ge9JBY1XloIT+Q7HfdfRWLCq7ruAHk8yFEM7jwNp1GEm33t n28b3bfzL4LkMi1SPK/9hIo3q+6luCXZUmHow0O0G54D+gdBdZQ65jDoWdzkcQb3Mtes 2xN8zVCBaM6Yd2rJdrA6n0Ufex9m5ZQtTTCAzQFbnmTlWguEmBXVYzxoiSH5L3q0jiXM mtI49BVMNpXMmPVKdPgEIoeaZoNNZZukRFIgxR3Qh0OV7MqeaDuDaWb1TKZY7wDy8Utc WkUQ== X-Gm-Message-State: AJIora/7upg3v22LDr49jJ4bXLymvEQsoMj6ZUeMlhLlZoDE25A6x0qh yAuho85fZRL5ClkXsCrC071FBwkCrxI= X-Received: by 2002:a2e:a793:0:b0:255:a3e6:986f with SMTP id c19-20020a2ea793000000b00255a3e6986fmr5152544ljf.104.1655471094889; Fri, 17 Jun 2022 06:04:54 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id k20-20020a192d14000000b00477a287438csm638487lfj.2.2022.06.17.06.04.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jun 2022 06:04:54 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Jun 2022 16:04:43 +0300 Message-Id: <20220617130443.188377-7-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220617130443.188377-1-jeebjp@gmail.com> References: <20220617130443.188377-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 6/6] 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: 2apLFtxCkCEK 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");