From patchwork Tue Jun 21 06:46:29 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: 36365 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp2050696pzb; Mon, 20 Jun 2022 23:47:05 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vh5acStnggJE40rXOIt45a7fEklGuweoYcTBvgOSYtBOkpgcfESCdGpMWAF6p0zi3oiVX2 X-Received: by 2002:a17:907:6d8b:b0:71d:9537:38f8 with SMTP id sb11-20020a1709076d8b00b0071d953738f8mr16825144ejc.72.1655794025192; Mon, 20 Jun 2022 23:47:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655794025; cv=none; d=google.com; s=arc-20160816; b=bcggdGT0YID5y5bkUI8Q8YklUUJsYmdEc9schdyOmL7BRMK6Bvend/moXbDOv+B+Xb 3QKVj6DDTpXfNuWOxf0o2pD45Va8ugPLg4WNkRlDUjVIS/wCgSeXJi7veea/f2oyfbX1 iDXUDE3Bgpd2EgYE4GijYJvd6jF20I88bsAKNLh03jsnsmMdg8XksWgZXpl4hlJOK8SY fmgOhzpONXAB/7FYIBAWGzgVyCyvJg+JdfKWuMFqJTTHDo/SeemBoJTRUXcYKSXt85jQ Fq9eCCh+OHnuou9qrh9mB+TS/SqztUS5ESP2RSRp/3y5vRRXVyf2qlSdaOCgSuFL0e0Q fXjg== 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=DX3cjt18IbNw6q9WGkgR8gWE/3zRNyPw1COC0kyZ/VvrKQDZn4QMNdxH74vGD6bAyp XE3CmMsyGBQxyVMlkgryWHJqlrNSonyyUcUfpdlSTf3uEfb+tJV1zN+5OU589XEKPzSL ihvXZ20beJs5/xNo3mGFNpYdPC8hYPFsWuJ4oTmTGIBKKQ5V14pVGSzqloFI+1pw62JM Fx9g/u7/eWwIZs4rBdGQGcaISGTnWE06W9QP8GkXhn983QcYlIW9f48p+hYN9A4f7FN3 +Biom3GChvos6HCTKpba/zmx33BFFdIQQdItmpe+HA/eF1p9PH0xwI+gFelWgnaQPO3m v6gQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=dC8CUz08; 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 zb13-20020a17090687cd00b007121178dc1bsi17657542ejb.735.2022.06.20.23.47.04; Mon, 20 Jun 2022 23:47:05 -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=dC8CUz08; 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 4D7AE68B661; Tue, 21 Jun 2022 09:46:49 +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 75C3668B5B0 for ; Tue, 21 Jun 2022 09:46:42 +0300 (EEST) Received: by mail-lf1-f52.google.com with SMTP id y32so20731594lfa.6 for ; Mon, 20 Jun 2022 23:46:42 -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=dC8CUz08g34M7CgEYvtfOPPOpN/cd0xjNQexsoA0twvg7VOoLTq36B0mT4j57zXAy/ R5fQkptxE5eI7MD8OdfIzBQPfIywTbhSm29OTAd7AIj12PmV/IqRHFA1e9J27UoB7C38 CcdZxKeptF3qyHqnqpJUAEVRVkOYBSt7RY+K2zAf3/2OJHai75UUM/Keuxm/KOi6fhP/ XL3bxregMLA2jWtqSka0DcHR6Dz3fWTeXDauLGw9TpZs1JHy1Vk2Ez0GY+9dJk2/jPAl ZsW7b0iZ8uKHZUWOVKTP6gskdDGybj8R4zydiuSbcHsDInb0vQx6+8YBhxg0pfGZxU5D Sl5w== 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=pA5css49pTEo16D8+9NWWFXNRwoHndbJlvnzketO6oCsYzKcSWHHGb9mgTAHSNZKJu GBIiAw7ju/oxNv52Ih7lZ9i3wByZ55Ce+ebSFpZga2AVyhl+o+D0laGtAHotgHneeShA tIz0KPfepk+CGlGz2ymbL5oSeCGg9yfjUzZk6gS4u5ABFj8QnLsOCd3zrC+sjjMaFHuj +YEM3i7a6vNTk7+SSmV5Dkp923yvhyJMSmD7AocrhbwujYOyynmDHYedQBUnURS3EIqc 8tXtuCuPNrAKpmJi7eNWaK2BCbikFFO90yZBj5s2SApzEy05nO4XvhJQpEv1kNLdOGwB FEIQ== X-Gm-Message-State: AJIora9iFRDzIE1JnMTkFc5oBu63ixNMZWEfRVWXeseothXE4E0R0UE0 OBC9zwjLIvR60dSjOaR2U6ZrO/4crkA= X-Received: by 2002:a05:6512:a96:b0:47f:4295:73d3 with SMTP id m22-20020a0565120a9600b0047f429573d3mr14943668lfu.470.1655794001717; Mon, 20 Jun 2022 23:46:41 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id u18-20020a199212000000b0047255d211c7sm2046767lfd.246.2022.06.20.23.46.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jun 2022 23:46:41 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Jun 2022 09:46:29 +0300 Message-Id: <20220621064634.16797-2-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220621064634.16797-1-jeebjp@gmail.com> References: <20220621064634.16797-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 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: VKBWQokE//lm 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 Tue Jun 21 06:46:30 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: 36366 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp2050767pzb; Mon, 20 Jun 2022 23:47:16 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tJrvjsTr/3aW606yA0k679hMkO/IAfuU7vWVVIDHQIjmSwVZJDmlE6f/R2Nqx3aJxzDj4V X-Received: by 2002:a05:6402:524f:b0:435:8f6a:59d1 with SMTP id t15-20020a056402524f00b004358f6a59d1mr5843264edd.65.1655794035950; Mon, 20 Jun 2022 23:47:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655794035; cv=none; d=google.com; s=arc-20160816; b=CuhHxt9ackhoSzW8QdD5B3C3rU4C6dwCUkyBD4OTCCdS4htKBYcKKg3jwaG1iquLWK 2wL6LFhLbfMkimIJoYvD5ooZnpdhHU9kJZgUzGZ3Cc+iIjoi/NSSrQy480WbeBHN7Iv+ XW3kNazdMhgHIz8lD/itJ99hH++H5wTDT96gZ53ueXzXolbTxYVCUYmerzj7GXO6r2LG Z5TEzI64rVCfyQZlE1jZ+ua/7/71WVnyr2aF4SbkQkZrBvQ0G7J/avmQ1Z7/qpJSTmTt czN8c55BsVklIRqnuR7Ny0iditTOhooxQGO2XaBVE8MM43ldrD4jAczAvWHNMI9UXn5g NJvA== 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=RRmBFcmLPSctgdASgEa0Gme3T24dKOpRJIsZS3Arc3w=; b=UIfPFj6pRP/h1UWznpAGeDghWq2f5w7LMdHYuNM7uK9fKYLamBqwr/O6fhCj6HimBP x1V4s350xg88mIa2G7dR1r+uY5Xbo66lip5/NEQaAIQEax75PPVNoCqRgm1CxMc9HCZF qzMeGt1EHIKLUmaUA3AStOLRYbSzqLHqmZqzDV9dwd0L2tvduz5Ihm7BurYZ+fZstLjx 87A85Tj5L4IiVftDvYK++wSQ31eIePrUo6CSUzyRV1aRLlXzGcDDIWnebBk9vySONGui Gt0MisKjE0QJkdbhpVVz0pUpOwi/ryRU3LIaVZorM/6eLe36KLXe7peI0BKfU15p8Wsg v+PA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=T0+m6F0a; 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 z22-20020a05640235d600b004358594050esi5794652edc.320.2022.06.20.23.47.15; Mon, 20 Jun 2022 23:47:15 -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=T0+m6F0a; 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 6C2CB68B66E; Tue, 21 Jun 2022 09:46:50 +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 0506268B63D for ; Tue, 21 Jun 2022 09:46:43 +0300 (EEST) Received: by mail-lf1-f53.google.com with SMTP id j21so7628504lfe.1 for ; Mon, 20 Jun 2022 23:46:42 -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=zE5LBsSM1qj47CoIDmnWH7XbnYLhfFLX+tnv1tNmJuQ=; b=T0+m6F0a9Wh7TqFxsTGmy1iMKiMI2ZtG+G0E51t5WJ8sTTOOucP1Rkm33g/TqHR4iU +q6K7iv5+Ds5IpaP8q6lwEv+YsDlxiqvLLfz6Jz1bt51nke01ro1Czp3xK4InY0+CaFV M37iTIoa9Hg9I3HYPawGhBJ7E/Lqa8oTehznb0R+gn4KVEQbh2ivZ9M6iSyqK17gcVme D9zgbWfNl0Hhu6WiPMToMWytiriDH0nJLXxmdiskCjwu8N/BEVsJedAyNOz62b/my5lJ uc4qsEfYKDI+lz0XWKBo6kPzy6srDitkP+HdNGxSDdgmam7GiPofIydsf/iuF3XuntcO Ldiw== 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=zE5LBsSM1qj47CoIDmnWH7XbnYLhfFLX+tnv1tNmJuQ=; b=RgY9EKVnvMJ42XMdu4aWrBH9S+QLp5rdNz6Mc8Tadbj1GfsB/l1kA9FBDm4hEgSHNB g48DRpg2dGOcQfbCzrHCKj7NLPjxn7vEPlXVRZx+5g/0/63fIJ6Fq+fW1mSmPpOVm2xv 801mKW5uYDbFB1quGm7E/tndBJVII4+RwHfHYSziBO+KZ3Q1BWFU3lfQsY7APdgZN92g GX2Fdj9qfQg9UmpjZrVr+yeslFls4SLot2z7CB1+s3hjXD8J7GLAHIfvbRXg4w6o7jgl WYb9jWciWGMPa7CyR1eunM3MnaLJDMAWx8q0j7zBTpMXyPbel8fogl3/FaUdZQ10BcIc ts/Q== X-Gm-Message-State: AJIora8PJc/JkPE8/rLTq71CckrP7VrnELMT8SsXc79Zf5Qu2bmH4UTW qkuzonO8eC2Xbn0tEZurHCStPA1oyhY= X-Received: by 2002:a05:6512:c21:b0:47f:6392:dcf5 with SMTP id z33-20020a0565120c2100b0047f6392dcf5mr8587781lfu.117.1655794002347; Mon, 20 Jun 2022 23:46:42 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id u18-20020a199212000000b0047255d211c7sm2046767lfd.246.2022.06.20.23.46.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jun 2022 23:46:41 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Jun 2022 09:46:30 +0300 Message-Id: <20220621064634.16797-3-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220621064634.16797-1-jeebjp@gmail.com> References: <20220621064634.16797-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 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: xxwDFQ4b7PcK 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 7ffbb85e21..0c5a1ae8c0 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 Tue Jun 21 06:46:31 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: 36367 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp2050827pzb; Mon, 20 Jun 2022 23:47:27 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tGGVCCK/m/rJOi0s0vT+KY5b1yHNUsAJDmeltmiYUF3NgDsMsWZ2BfrTIdMCPm5d4DLH27 X-Received: by 2002:a17:906:77d1:b0:713:cc5e:e908 with SMTP id m17-20020a17090677d100b00713cc5ee908mr23763804ejn.254.1655794047097; Mon, 20 Jun 2022 23:47:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655794047; cv=none; d=google.com; s=arc-20160816; b=a75URq90myp7vMJrNsxq8uwkccIbbmJln+Tnjo02dtrZo6pfgtIMfGiVkk5sefi0Ad W9XAGOydh3enqUdi1yAJKYVEz+Sakp8eNHRg8swoZ+9Yc6XZFg8SaeS4V859QrOvLNtt wH2dVcxkSSKqk2L+73UDbI9bL5zR+0FXNDXis9BGt20g5BUc6WZSvSii6cfv0qBGgXAK eGHa/i64OnpmuNb6CWQ8IOK0J8Xx6/dntWlGeeMzl960NeaxMKAS85asm2535OH/j6ma sVpaCuwxXr2gESuWVzXQ8o3ci3gRQfZrZbq4yw0N9fi9tPUfksghn/3AfQZ4/R8/EDuK T2ig== 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=ATpjFvu+25rXJCNNN7gIeeV3C10SnLdyhaKQ3mrlxpgCgRd/6rrMA7n3kAZKq9okTL sdOc/itf4lYAEuIDscydKcNEZ8HVpS7GFs3vnWru5cRjLGXGl6yVBrR7nRL87Ra03u6h 8ynHDp85IjDbZgEAihjqNWA1jH6sDXQ9jf8pSsH57BbJC4fKAt/I/ewuRvfkZPksvPgn X2YI4kcHRoeat00WGlBlfmNmQDe0qli1A+EvI83Z0SAksHXrzspVb/DPonpbEuKFBOK4 uaG6vDfZXS7n3O6onqc6doAGh2FggkkxVrusDjNe5zPPU9QcbKNmn5Eh0I/0o073F7dv Yypg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=phL5YxMR; 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 du6-20020a17090772c600b00708f4d9dbdbsi14607217ejc.79.2022.06.20.23.47.26; Mon, 20 Jun 2022 23:47:27 -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=phL5YxMR; 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 7935568B697; Tue, 21 Jun 2022 09:46:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f179.google.com (mail-lj1-f179.google.com [209.85.208.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AB26468B641 for ; Tue, 21 Jun 2022 09:46:43 +0300 (EEST) Received: by mail-lj1-f179.google.com with SMTP id s14so7541423ljs.3 for ; Mon, 20 Jun 2022 23:46:43 -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=phL5YxMRHHwSA2BAuqDlySF+glzaTRI6gLayVD0IPvYN3ALg9oRTd2nJ760ECuHfuk mvzA87t8YF2gcC7BpfRU9agMb1ArZGbn6nDyjbvfRHbEfBcRhzT4zFVPL+oDncRjt+C7 aOPKd4AVMWkqxvBeqGOMXZel+X9juZtGlCzBWUW9qRyB+YTFRpx1ZUzoWNgkN0mvYupu bKZ/0z7xTiMC/ueTQMn/jPzbZAMzX2XXl9Y0fWYYGddJCARADJbRGAbWeHUpssQbwayk pSVqtDl11gizVf7x27HgvNmc5vYIqrkzaGLTg5OAWLO6CLfgooWpSfPZ6C7HobNkfE8H MT9g== 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=7WrJ2G7BGzhYQvy3ShJWy0tpeJC9SHHbfX8RN2869SJdhX55s3IOEI+woRv9SVZeBR 881g0zuSJ2s4Yw6v9mThzKi+iE/VENSpspiRlu/Bv4rk95ARCZTeIaey/uk9FSm1TiO3 28ypMSkCF/dR06mLtZynr2/NKZWhRT6nmpILvYI8f9LazGLU3osfdLCLPKv2uaNUZux8 ydLQFcWmGG9MwImHekghixG6Oq3H4Al507dCu+8UX+ZfrmCbVsEN350lsv0kvwUi0bqI cETYrMwaFNYKQ+DshEv0604V21Xu4BRIhqPCrXXTy9PikxB3nxdD4PzqM+hFKYu4l19z okLQ== X-Gm-Message-State: AJIora83nqaENU7ABvWArPIn3DX7PUDwjUaYGNCHQE3yPPbd6VRP93UO 73pv2nFIJEqsXFNIHlVyEKGh57+SLXE= X-Received: by 2002:a2e:a484:0:b0:255:5bf9:144 with SMTP id h4-20020a2ea484000000b002555bf90144mr13089574lji.8.1655794003022; Mon, 20 Jun 2022 23:46:43 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id u18-20020a199212000000b0047255d211c7sm2046767lfd.246.2022.06.20.23.46.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jun 2022 23:46:42 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Jun 2022 09:46:31 +0300 Message-Id: <20220621064634.16797-4-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220621064634.16797-1-jeebjp@gmail.com> References: <20220621064634.16797-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 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: GhWEZs0FiECf 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 Tue Jun 21 06:46:32 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: 36368 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp2050882pzb; Mon, 20 Jun 2022 23:47:39 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vTHe9byyBAQrexSe0wpFVDdD+HxUvRekSDCcv41v7GirKJHNItec52HVDiWTW5Xl3NsRKM X-Received: by 2002:a05:6402:3514:b0:431:7164:f1d9 with SMTP id b20-20020a056402351400b004317164f1d9mr33272324edd.99.1655794059228; Mon, 20 Jun 2022 23:47:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655794059; cv=none; d=google.com; s=arc-20160816; b=Ao1BQkVO+nJxzjYPenRAkgEN7sKihj3PJPHn4/lEZK1QVXv0i2hg3aI+i+BD38vUWH 5IC6XtEJmz8rXtu8eb67026+QajWwX2Wxiyc/XeW96gdAH6vnFag8IyqROUWXj65AkY8 QoE8VL5Hg6yrK/eTrYGiSOPhWVFahHjHkTEMvadcmncHEjySOihoJApr9XSmliGzdQmD p8C2idrT2zY3P3wLAKZQ8JopTAOmcFv9XVRJkqvzYdznPebgKZgTnKOPyumu7AwmA3Rf YD1lltH1ZTs1+RRyrtfpNYpAHMgMRSsNZfKQ6QauW6k8njA4ofCSP4IEYkZ3qe3jrvxn p7KQ== 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=BJlLUBUs/XA8n6DhkzWnwv1MqMoplvzZyyqO2n7v3Nu+O5WFdvtrGd5MJD7ND8VGPs 21lUi8jyhAGUU5gjtOzmo2Mma4K5GQue9vkZi1lP17w268V+hjpoLdfqENzzN15mptH5 LQDBRLEnIjPRX5aZp2yDYMvcdtRXMnEVDoGvY6ToNfrWdbVaAmGSXhhhTKf6s1ZDuUPr K0Xc4ZTW88Qfxcr+TCAgUhX4gzQtRKOI00l0G0o7gPWRWxuvxfj5DdhEAym1c7XfjuNJ QHmCEmjKiFZpQh9saNChC6uhuJMBdDcaDA4D5fLvI//kjHbzF3tU584VJkklm2xdy0l5 iErA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=HtKp3apX; 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 g13-20020aa7c84d000000b004356df8591csi8650482edt.373.2022.06.20.23.47.38; Mon, 20 Jun 2022 23:47:39 -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=HtKp3apX; 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 B07E668B6A1; Tue, 21 Jun 2022 09:46:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 729AF68B666 for ; Tue, 21 Jun 2022 09:46:44 +0300 (EEST) Received: by mail-lj1-f171.google.com with SMTP id b7so14292994ljr.6 for ; Mon, 20 Jun 2022 23:46:44 -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=HtKp3apX+boS4HMWa6QyiloqWsQbEcHYRJpiWMX3/7Sjp+Kaq9wU2DZKESAWgwtBQ/ Cvxz+EoJhgXqBcdA+siSZpQ7ssYDqa464Qvz0q2xstpRqoUNh/oGVbcKzFDJzF1hkPxs 5Rv5wVLkwX8QzrIMr7UmJ85v+6aVfYHpRFEg8BKyW+5EpFM96fJy1OWvtJbImzm5601p /wGpt67im1H/qJ6B1ogm3Fq5SCz/1wHXwYtwoxXYrpEc9vVS54Hc8tFlQV55QsYXCyFh b1Pe1mtvgcnOyTgMpcKhd4cZZTauin7S6sviuV1mGzzJtla0Zf9XkAHcZytGJ4ZZ1Yyc CUjg== 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=ETBj+ffTNpCvLOnrEz/xvroUdmJTUioWX1l+m3CQFv6CEJywiC1lVZLQabNpb5klNO tuDm21uItWDkIiuAgo2nZ9kTUiLoXiwC+vE6ZwXPOpiZzvyLBlIqk8nqqpX8mMAJPHVA sti5VgFHNM10zwGg8tebA0AS6rSzo6kyvobGwUgvoPaTtMApkFne2Zls+yftimYrYbDG SOFbb8ls4EAKonzRJn7T92SesPptb9l0PfQY/3xEQINNg3mQ+9ruIKpIXrj8+H9LOjXq xZu7Km43c9xt1UAztdTsH2wARGS5KpusMeD51CJ4x71Q8JPCwI0SYrpUL1EYOdICLmqJ o+AQ== X-Gm-Message-State: AJIora+FLo4MiySaGKqrdC+qjv62bovU+reTm0OLeO+vgc++Ftq9MC72 Hz87yEKdCgLBkzEMx7ELzdxtA1YuWkg= X-Received: by 2002:a2e:9f57:0:b0:25a:6867:1db with SMTP id v23-20020a2e9f57000000b0025a686701dbmr5913005ljk.264.1655794003751; Mon, 20 Jun 2022 23:46:43 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id u18-20020a199212000000b0047255d211c7sm2046767lfd.246.2022.06.20.23.46.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jun 2022 23:46:43 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Jun 2022 09:46:32 +0300 Message-Id: <20220621064634.16797-5-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220621064634.16797-1-jeebjp@gmail.com> References: <20220621064634.16797-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 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: 1PXaG6VPSN59 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 Tue Jun 21 06:46:33 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: 36369 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp2050919pzb; Mon, 20 Jun 2022 23:47:50 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uRsia62J8rEhQSbU0+3MJjO1UwNg7eXUKLVbQKZtOr2XVQnRbkk+wYhEPbE5NPb/tJmtUR X-Received: by 2002:a05:6402:3689:b0:435:95b0:edf2 with SMTP id ej9-20020a056402368900b0043595b0edf2mr2090769edb.279.1655794069966; Mon, 20 Jun 2022 23:47:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655794069; cv=none; d=google.com; s=arc-20160816; b=r8qQwBLpEKnPEktGp62n2OSMqgfL/vji1gUfDKHa9MlxCpoMyLMp+3Q2bTs1iC3skz SBk6eA0rIYH7ZTyHJwYjMPxx2L5cAomTb/WXiE2UpyymiubXyrTSDjkSRTzrMJdBDVSm uaUQI+v93V2Xymn+W6mScn/MAF+Xi66OOtNiVOkQumctQRZ9mBPmBrbEcR+clKuKag6A xYa1zXfaYAO6sgukw8dAd4EUmR32J9aQ8lcZ3I0cXwsgGbs8U7grOiUdDhHWds4LElRI lelQUiN5wTk55f922WcPSH2W2RioT+Jxd9Z1XFj6gFLmk8twyQS7y/4bE6ge2xdZHQBd pvpA== 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=POtlfzfwRQAzTEwKsUxjwr95ATHP4THFgd7981oFg/xfdaGJ3iA8XruU0J/+w3agzM coTbjs9u6jGDc5CU61dkit1HOzzHQEzFRsiDZOnqYSozvPEvMxwP3f3Ukz8vwWNqkFh1 NTt8jzIzZAErHg0SIHFCQUNA9XvRHrRZh4AIOCgDBSM1UBdf9Vl5D1VvV83WAhzMjZqZ OD2aj+XhA+H3jCAKwfYZT7XFKdheX9i84zVH8z7eJZa58dnHcV614QtGnw+NsLJPgciG VG1/xTi8qnvNz+gRUQfW/5zaJMx4eHEj2knyrqq8l9pSyGT6U3WgXWwn999UumQyxuEN q7+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=F6hJSwu2; 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 ch16-20020a0564021bd000b00435817432fesi4697719edb.308.2022.06.20.23.47.49; Mon, 20 Jun 2022 23:47:49 -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=F6hJSwu2; 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 AF4FB68B687; Tue, 21 Jun 2022 09:46:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com [209.85.208.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2BAD668B66E for ; Tue, 21 Jun 2022 09:46:45 +0300 (EEST) Received: by mail-lj1-f175.google.com with SMTP id c30so14268263ljr.9 for ; Mon, 20 Jun 2022 23:46:45 -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=F6hJSwu23xib2HWeA83UDPfrL/Hw3GS4pOIgoubhbQCdEAPy+7EwCnK6Y2VZMM30se nChrvYPOo5rbxtNY4+bSyP9Tg6k49cglBifFh9MKTGanJ0Jlca9UlC31f8QnPCmI53bM i9i5PmNUo8sVhChCscZtM3SNwzFq+hph++2rEHFt4A6c2O7AYTU1YpZwNY5sNO/D3ZGe 4pS7YjAwqz9uUU9QXGNqxI5JZToIoxtQjT7cnayQ47oiQB4VI106if32Hjyvx9w31i7w zTyDQU0dalmASWvO9kPUEltUxkpEANcNushvbCHXKYNvuToskKXO1ytej9g+5UkdOQ4K Ibmw== 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=T1YZSEQ3z4NzuHG1EpOjWa7HlM6KQhL7L0pEuOtGrWWNiqJb+Nazhm6mVr+XXdeD15 ssF/vJf9UK07Ew7xTiAD5DIj06ELwtvqtS2/rA1XtAWXnPazNat0guaK2hf9AvdFgDco XFwkLeDKBENxBRjh8MeNN6qCELyUtnb2xXP2WGkWM9ycUcjwVlWkWIhDGgpMNOyiOzqL BX/ss040QwWnvpO2y0fG4L1VGJRDE83h1QLH2+tYAPyVPakAwjgz3W+Kt50dDm/42fxK wL7OGce5faqGoXWckgkeeC+9UdGzP1hirxtQJ+jHIz3DxRi/6TNNMU1BWlJN3Yu7zGdv BrRw== X-Gm-Message-State: AJIora9oNI1R8+pzoBY5KWL0e5Kt/sC3EXcgU5oY6OJ7ohIBeq7B2XEF cGWjLA3OJVAsf7p0UPdYkaPo5I98Y1Y= X-Received: by 2002:a05:651c:2124:b0:255:847d:38ea with SMTP id a36-20020a05651c212400b00255847d38eamr13254098ljq.439.1655794004458; Mon, 20 Jun 2022 23:46:44 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id u18-20020a199212000000b0047255d211c7sm2046767lfd.246.2022.06.20.23.46.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jun 2022 23:46:43 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Jun 2022 09:46:33 +0300 Message-Id: <20220621064634.16797-6-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220621064634.16797-1-jeebjp@gmail.com> References: <20220621064634.16797-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 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: NbGdSlvoXXJq 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 Tue Jun 21 06:46:34 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: 36370 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp2050972pzb; Mon, 20 Jun 2022 23:48:01 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uf+/LfkEQ9n5XJ06kSWragwutgRxj3FyhmEApuBMQiZQY2DWdKu3FqhrnHjg4XA16j+C+b X-Received: by 2002:a05:6402:50f:b0:435:7996:e90f with SMTP id m15-20020a056402050f00b004357996e90fmr14097361edv.110.1655794081386; Mon, 20 Jun 2022 23:48:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655794081; cv=none; d=google.com; s=arc-20160816; b=hp9aQXT7Z4pU/M4RWxxjsPhgy8VxquqpHMsNV2IXjgi7n9KANowLn9W+LdvylXHmFn 94UTUeISMPQgLunekja16+R19BF1+l/Hh7pP8McSfmrxssh8DjvApQoch8tXSnL/z74m fQpYSXi3JpB9rHIP2iFU4ubW1rIWMXDOzIgET3yY+k8bqAIALJkN1R1KM1oe3weZaWA6 /LI/2SnJj/XQECaZTNguPABkLi72D3L5Wg8cHkdzHOlBxsJS34Pox6TMmMc+1fmOWz63 FfiueIxikicX4UHEc+kaawLk+u5yxMzqmSbSqRfK79QCreVh7o8PbrRlbzrVqui8B643 0sCw== 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=1E7jbSxr/0AqRvjgGSdZ7TqvmN5FsfnHAJLUOb1uCwVwKsSp9RVojlP9efoXLHemxv Uo+zZcGdndjlUVZ5BRl8slQCjh3Fu32TixGcPB51W1ctRgrFnP2kJQV3+7GtiJh0w1ap jv3GV/qtfEHseblw/tGnSKYAIo6TWhgl1Eq7RVG/F3I8uW4VDCj7rD/LiKN67DmxeT49 2Ugyish+AA2iA6YRe4PQ1eMV0PZOkOHDszRIA+algrJurWpLROjqPe7gz3VpL2U2Z3u4 0pMWRtsvBwfj8R9lvw3izglC/TeNliGq+c1vAI3KY1mBp1QzqISWIRlkiIBPB6GkWNO4 VeFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=qDPlx0ki; 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-20020a17090760cb00b006df76385e6csi15241471ejc.780.2022.06.20.23.48.00; Mon, 20 Jun 2022 23:48: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=qDPlx0ki; 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 892B268B6B0; Tue, 21 Jun 2022 09:46:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C7EC068B649 for ; Tue, 21 Jun 2022 09:46:45 +0300 (EEST) Received: by mail-lf1-f51.google.com with SMTP id j21so7628676lfe.1 for ; Mon, 20 Jun 2022 23:46:45 -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=qDPlx0kiZHmRvpZHGlwDpRKqh6VfDf8HUr8Lp2xBDnjlqpiCRfmPqUC0z1UWgpsJtS RaJ3N9CsGFSwG3Vzyf7KmfGn+qUd0rj355WD9hCRZOpUAlHr6uPtDthN6DvPgpXiKDPv 9PbKazA+vfOBPw6YY8nJIItZ+T75t/AiuIIbgiwQ1mlQPxmB2249mToY+hpEldRjeap/ cuoJfaw8nORW6pNMRgWeaR7gVl4nQ0150ZgO1KvXP0ZqQgDoJrdUKwpf23mIco16PIQk ytaEow7gD8pC4AzTXe7tHAjqPejrvG3ZuHdp5bRFc6HkYGubELDpcjq8k0EJMU3lRFEu 5/XQ== 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=DBdsY4ORde/bJfrRM1t/Cksk4zRNcufOzxOCdN9tDtE2V7aMDeZpuqPuAZe9WPmWvj xAbWEfRYtdqcT1ggrQL1sZUxz2EIPLZaw9gfbvdoAs61CsnU1WOfdmQoKWx8BBYBfKOd MVwyWjAkDnzaScg3iV/5Ia2cvDczkBNm+AF0FS7jGpl9Rg6qXu/NceMSMxQ3WsE5G28I pM5edZ+LMCnepCEYJb1Gg0xyFfLCqPQBaS/MSncaQtqqEMhGgoWgy01bjeVlOZI9b7fl /Nu2XrgFMH2HFcYFUkZwmj29DTpoUOjqYj018O8fTFUtLvqxWXFaZ/SMV/KfOd5negB7 MGaA== X-Gm-Message-State: AJIora8ZjW1hzgi6CK94Z8ZC+fpvQRvNAmEhJ9/ZzuKEnvWSjvundCap s6vU+YOtIqdhCnHNZudWw4dVJ1Ff2Qg= X-Received: by 2002:a05:6512:1310:b0:47d:ccfc:b07d with SMTP id x16-20020a056512131000b0047dccfcb07dmr16760761lfu.243.1655794005140; Mon, 20 Jun 2022 23:46:45 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id u18-20020a199212000000b0047255d211c7sm2046767lfd.246.2022.06.20.23.46.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jun 2022 23:46:44 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Jun 2022 09:46:34 +0300 Message-Id: <20220621064634.16797-7-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220621064634.16797-1-jeebjp@gmail.com> References: <20220621064634.16797-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 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: Km1PLKTXpzKH 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");