From patchwork Fri Jun 3 12:46:15 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: 36061 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6914:b0:82:6b11:2509 with SMTP id q20csp4604372pzj; Fri, 3 Jun 2022 05:46:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxGiaSj9EVkxd/E4a/q6KR4dB4y7O2qOlwDsA/4K28S1JX2Bfzus958BFaRrzgYwy7QGbag X-Received: by 2002:a05:6402:35ce:b0:42d:efb0:7b61 with SMTP id z14-20020a05640235ce00b0042defb07b61mr10904378edc.77.1654260410328; Fri, 03 Jun 2022 05:46:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654260410; cv=none; d=google.com; s=arc-20160816; b=iudx7wdJRaXiP9Y9/mjL8S/jDsAbZi4i9+tyDUcZ/PrV3KJXwE2OYZ/iXbZOH2LI4k rU3rpZCF9fYhQoM5DORKu7Pi8QjN+zS4FIsopfxIsvtZIc8dSveq45J34wGIFVJrpUJw /AhaogBLtXjME/9rT403aN6QylAu3aNSRI123DY+95CTVCXrYsNxdN73YtsmuQsLzuyl rs0ga/7N153nsmu1woaLUgHycYKRW8jJWYwrguJw13/yCwBPFP8au/YfwsYkJsYaeTGa /J/zx3v/cjFfXAOrdm7CKAfGPzA7EkYkheeKA7uY1G3o2ga/T/KKG7CPT517PUHcry07 WcBA== 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=JF/oQ0OiN0ziEFCTINM9h/KkciYq9bR0eUUYcHWRPtI=; b=xUrPdjUuliB79wP6vwJWJkQcffH+V6WgcfEY3v8mLDcd/giH02NOK+grszpaRACjzb piCd1QxbVO6hkt72l7gPj/mw1yACJ6pSO1RFLKZ50EFiVX8zDqfwkWrnNaTt339duWKh G7gPG2mcDSHoYmLgIOI1d2VQ5a42MUGnM8ILXPalWSo7Ck4BtS224i1s9B4utANZNhkO ZFxth/wqvHrkEwGHOkltwmMdFaxGp9d/zl2jIkvvpmkPcvsWElbcudSuNf1QhryFbN2T uoO0EK91m1BuPnPt7Mazfu/C5WLAE5EUeN3Oj0TwGPwMiKA8LsIKyW4iXFHLl6CH/UCM EkrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=CGA2fsMF; 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 r23-20020aa7d597000000b0042df7316065si6563529edq.77.2022.06.03.05.46.49; Fri, 03 Jun 2022 05:46:50 -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=CGA2fsMF; 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 B5E4F68B7CB; Fri, 3 Jun 2022 15:46:35 +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 928CF68B7CA for ; Fri, 3 Jun 2022 15:46:27 +0300 (EEST) Received: by mail-lj1-f175.google.com with SMTP id q1so8306554ljb.5 for ; Fri, 03 Jun 2022 05:46:27 -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=+KLtikcybee90alVKf8KbXNuno6Kv92dGSinUD5XxGg=; b=CGA2fsMFNcc4c5tcji2uQUNfrCyTVdYxYBcTAGvbmt/nFYpH1zovY4I0WIC29tCFqy yZuftXIMHWYepzF9xvvpW8KVHSi0bkNrXT2aJuTGvxuToY+/NeCiFFlAOsj8246+W5S+ Ls9ia92B4WXPK8F7DHgHKj2oP6PuKc/5VtFd5KGNZtwRbZujkOV1zS88DQ85rE0asjCS FdoYnBsAN7roHyxb2mKtsKOnWII6JOw6Lf6t5ZmGFBw1E3wAg7KB0LZOMFHsg4690gGN 9F1iIaTEC5IXzr/pZtyqbU/qwqzpZVg+tc0RWTJ9jDjize33MXJnKCCJJhhhSjb4Lapf nTdQ== 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=+KLtikcybee90alVKf8KbXNuno6Kv92dGSinUD5XxGg=; b=ydz+tddxxFuLO2tmNHkJ9RcwW7RenP2mVDwDAVXrI1762TOlzFJoaaNZKhtY4wLeOW aMgmYGVYmfYLx5h/cPk1SGEY9XqVAh99ZwThxQMH0pEO44lzu0mG1My67dO2CeVjMgyu gxvp/Wmcoaj7iXhqfFvxdqNHfP+303GdJkce//zU1ndNx6kk7ebbRLhPuHmBqweFeRat pB+1SPgFMARat8YNwVvCi0eeQqtvmLzJyewZKbZS7b3Q6pN42SB4y8I+CFVYmfDTCxGj 5S32KF8ynHv67PWrCzaoDkwZB3pEM5K+QhCBruq66UDBNphkvuK2kaRUTta/Om+5f4NB /y3Q== X-Gm-Message-State: AOAM531Akl1YrkG9yWNlRW8lQcq5zNwab6wNBDLpBuZd6Y4+aT2NOZ8d 8slnWKffzgILiKKeZoCh+PLEtCtHzZY= X-Received: by 2002:a2e:2e12:0:b0:255:6b9e:98ed with SMTP id u18-20020a2e2e12000000b002556b9e98edmr7575851lju.136.1654260386881; Fri, 03 Jun 2022 05:46:26 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id m4-20020a0565120a8400b00477b624c0a8sm1561081lfu.180.2022.06.03.05.46.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Jun 2022 05:46:26 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Jun 2022 15:46:15 +0300 Message-Id: <20220603124620.15099-2-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220603124620.15099-1-jeebjp@gmail.com> References: <20220603124620.15099-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/6] avcodec/ac3_parser{, _internal}: expose AC-3 bit_rate_code 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: OFD/AY5Mh5Ww From: Jan Ekström Required by MP4's AC3SpecificBox and MPEG-TS AC-3 audio_descriptor, of which the former is implemented in our MP4 writer. Signed-off-by: Jan Ekström --- libavcodec/ac3_parser.c | 3 +++ libavcodec/ac3_parser_internal.h | 1 + 2 files changed, 4 insertions(+) diff --git a/libavcodec/ac3_parser.c b/libavcodec/ac3_parser.c index 119b1598c5..852c9e6b0d 100644 --- a/libavcodec/ac3_parser.c +++ b/libavcodec/ac3_parser.c @@ -70,6 +70,7 @@ int ff_ac3_parse_header(GetBitContext *gbc, AC3HeaderInfo *hdr) return AAC_AC3_PARSE_ERROR_BSID; hdr->num_blocks = 6; + hdr->ac3_bit_rate_code = -1; /* set default mix levels */ hdr->center_mix_level = 5; // -4.5dB @@ -89,6 +90,8 @@ int ff_ac3_parse_header(GetBitContext *gbc, AC3HeaderInfo *hdr) if(frame_size_code > 37) return AAC_AC3_PARSE_ERROR_FRAME_SIZE; + hdr->ac3_bit_rate_code = (frame_size_code >> 1); + skip_bits(gbc, 5); // skip bsid, already got it hdr->bitstream_mode = get_bits(gbc, 3); diff --git a/libavcodec/ac3_parser_internal.h b/libavcodec/ac3_parser_internal.h index dd57dc95a6..bd4e1bbffb 100644 --- a/libavcodec/ac3_parser_internal.h +++ b/libavcodec/ac3_parser_internal.h @@ -60,6 +60,7 @@ typedef struct AC3HeaderInfo { uint8_t channels; uint16_t frame_size; uint64_t channel_layout; + int8_t ac3_bit_rate_code; /** @} */ } AC3HeaderInfo; From patchwork Fri Jun 3 12:46:16 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: 36062 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6914:b0:82:6b11:2509 with SMTP id q20csp4604460pzj; Fri, 3 Jun 2022 05:46:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzgIwnTgyq6M8/LAmq4wV8KTQs8shGuFLScDOVgiwsMfwj0Wp1CyQtZ+crjgFi3o46Hg+zW X-Received: by 2002:a17:907:160f:b0:70f:cceb:d78c with SMTP id hb15-20020a170907160f00b0070fccebd78cmr624044ejc.247.1654260419529; Fri, 03 Jun 2022 05:46:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654260419; cv=none; d=google.com; s=arc-20160816; b=im/0x5PH77xWOKPvpGCQxhB4LNcOKsRC0K3xdMd4uI/EeqSSkc9SZGc83hS78FDbcL uDF4qXudyokbaXBfPzI18bffQxvHJHxXVLYEnEEXuL9rTFuhusJQeBktkR5A9p/7pjiO YyiKQG9yhM0WAxDHnwzHg47zT+79EA26zYsofMffiQxdgAW5bKRp2ua2OaxtQqh6kqIO 8C1hLgHHcZoQIvqOu+63oButbxrWOEljvlKAb2m4c2+4ndloYGcLu4FaW8OpGj6CNDkb EkNujeC+UXq5LDrOIdZ6ol/AhADfn1hsNg5wqJJEkCr2lA1SbIhcf8nGsk34cJHNYNY9 kmRA== 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=GA7HsTw686kyw6+AA485H9d6uAvqtma+EjIm33cw1dM=; b=Ip8SH6P0JxymabIuyXMX5QcRWMH1/Tbrd8XdzHmx9myONohTv4a/LsWn06HoxrOBtY H6fLiODJFSmbmuvG8kzX/SjaglSFBOoqY/PG8u+zNhPdSWu3oQ/epGyqTJ1ZKaVUYCs8 RbhFuHmwZ3i+8+q/urSGIZi/ajgQo7GrXiRtNVIYyuYYHbau5+wNbcnEqkz5bsYk8j++ mlyBhaV3zjf/pxg05Pr9s4EjVWiqTmgf+89ocQEY+XuiqP0sexe29cPGRLKsoAKkbdHI YsUtTILcECyFn9QFQa2h6dSJ8mi04Gtn43y2XknOQT1XmzqxAq6QQs9ypOcJYjeZL5/v j3pQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Q0pfNhCG; 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 v12-20020a50d58c000000b0042de497d718si5696883edi.469.2022.06.03.05.46.59; Fri, 03 Jun 2022 05:46:59 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Q0pfNhCG; 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 CB3CD68B842; Fri, 3 Jun 2022 15:46:36 +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 38CBA68B7CA for ; Fri, 3 Jun 2022 15:46:28 +0300 (EEST) Received: by mail-lf1-f51.google.com with SMTP id y32so12432327lfa.6 for ; Fri, 03 Jun 2022 05:46:28 -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=srHaEkdmxhTM3HZGYYdzMOSK0lJUHwLsiWfDEm01uVA=; b=Q0pfNhCGbfSOAlYsGug2eWzfFYL6vqdLScEuKOXY6xfeJ6MCo9cgah7VQRBJfc0MsX XBZPtF34AqIM3qAgt9fqDIDdL7bbRfT5bI/QNtqNaBBnaKz8l4uaaXG1nQJa37t/JXAd c/a806wAUgm0YbCVlKTlzaHdP3AXrs81oIG6RuaeEU0T14srzyDZ65mHJrTkaR17ekav GYVhmp1S/RqyiD05zoRN11etLBfbbsrT+pmoQye73OSe9/R/QIX3JDY2MZhQDySSNliE +NcYrigjnNJYDYBVUdf6slKI9uyDYU5vYb6uO6DYZMNJzio444ii+anM5Gjp8/hWoRhq gU3w== 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=srHaEkdmxhTM3HZGYYdzMOSK0lJUHwLsiWfDEm01uVA=; b=LqbuSM7EHgAJIX5lcFPP3DhApOwgBMCC0DvDAvoLFS6GGkPHo+BbNCvLNIz5krxvDz IiZgrHXxy+i9NU9zxZxtEK9t3mST5yoO1vvpdjR4gQgXenHE2WGXvjk50IGKQYR3R3oc +CVvBgVBYH38cW4ZOYhYxYv9fEKsqhM7EF/oTb6SL5n0yVbIfoxnJ8I9FJIz8SqOhkKM ze/+gdw7nEIkO9hEdAIE0SniNwGqO9fo2KpxLUXwcJp7UwZ94oEzkKO352gYP3puvE2x A1n6k57i5VR4DzT292WOE6XChP220dHeg+9OZO8hZQw3ZrnqJFJ8yPvFWwc2/xvmtmhk /iTQ== X-Gm-Message-State: AOAM5330xSyfwiWHIaOkGBCOd6BddwI42aNFtG4DyHDuQm5GxcCg71fB 760UIHn5RtnGjN0BRbhR2oJtFBoRovg= X-Received: by 2002:ac2:48a2:0:b0:478:f822:c44e with SMTP id u2-20020ac248a2000000b00478f822c44emr6999587lfg.88.1654260387573; Fri, 03 Jun 2022 05:46:27 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id m4-20020a0565120a8400b00477b624c0a8sm1561081lfu.180.2022.06.03.05.46.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Jun 2022 05:46:27 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Jun 2022 15:46:16 +0300 Message-Id: <20220603124620.15099-3-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220603124620.15099-1-jeebjp@gmail.com> References: <20220603124620.15099-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: N8d7lJXqpuNv 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 5a167613a4..a4e8e33b83 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 de971f94e8..63713e5640 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -407,7 +407,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; @@ -548,7 +547,6 @@ end: return ret; } -#endif static int mov_write_eac3_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *track) { @@ -6045,7 +6043,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) @@ -6053,7 +6050,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 3 12:46:17 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: 36063 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6914:b0:82:6b11:2509 with SMTP id q20csp4604543pzj; Fri, 3 Jun 2022 05:47:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz6Snw3QSwlnTODg9URp7vDU7GGIzjOEzzXEgaLQHXJMOum7FMchsgBw6sKYPcP2zJ0WrhZ X-Received: by 2002:a17:907:1b0c:b0:6fe:25bf:b3e5 with SMTP id mp12-20020a1709071b0c00b006fe25bfb3e5mr8643204ejc.689.1654260429141; Fri, 03 Jun 2022 05:47:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654260429; cv=none; d=google.com; s=arc-20160816; b=M3T/RbnDfRn9CJZ+XSnGuluI4iAntbs2YUENdwhtGgc9hvMUyOHce58lvJlvOwGZFB lpiv/eHCVVBA7202uaaiiScC14lWKPXdFEVj3grmDpW7ARf21ynUpjqlmwvbWCh9k/wy bMPHrCOCWJf5Ky//CNzrf/baX79LZk+/e5u+yF6PzPRhvfOys67bXV+iWlowUWCWHHkT s5COiLpK7kmQW5Zl+Viipqj0Nz38vDerdHRjydxy6u5Wk15OG3oduKfXeXvaozBqQ+6Z q4is6pFQ7wvqVugYq/PvFax+xXdIWQjN3QBqGd2TSFwOcnNsbixTSvc18C+Xwu5OP6h8 Xyzg== 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=zpuVOflN8O+RzCuYLvS7u3xgSxgQoOdvtl3tLGluvXU=; b=Jb6VDhvmFPz74jxiaTPxGpuTtIPBBFzdrLusbiCTTbKsyCbUnytqa6U+4FJFUmmayN IeutMrbS6Cds9iC9Psd4ldFvmIKM04ZBkmS8KO6xq9/9RQ5YtOwzK5mga3tCFSpGFVkz DgTY+4hUrt+lU8XwBh4cQJ3oUqbtwyzIa+fKYS+qkOvYg2SDpU+WxlfM63nWsy0S03g7 44xUWRbGl+S+/o+JlpLIRBwX5kLcg5T3kwf2xq3SXQDn7XAQ9Y5GSiuU5ku/yHVQ9kEU TiXbd76E1/jq5uqcv8vx8DD87yeP6Dqzk57lhF3XpQCDQQSWov2EbFn/WezF0lQHzXmI XZAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=gqjEEXlF; 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 p21-20020a170906229500b006fef85cfcd4si1381448eja.384.2022.06.03.05.47.08; Fri, 03 Jun 2022 05:47:09 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=gqjEEXlF; 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 E067568B837; Fri, 3 Jun 2022 15:46:37 +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 DBEA868B722 for ; Fri, 3 Jun 2022 15:46:28 +0300 (EEST) Received: by mail-lj1-f171.google.com with SMTP id l18so982548lje.13 for ; Fri, 03 Jun 2022 05:46:28 -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=BiZ9ClQv27brCRHEs+QhQ/vNu0Gg8Jztb8DM+VctURU=; b=gqjEEXlFI249HPjWernPOWArKwAUVjFrH29LeRQQkJ9oabLPE8atNa74SbYWxJo9Sn CT7tLEbGo8idLv0eP9INyj4fd3w3emYvRdoULHpLQy3ElQ6hIsVZZ9TKf4ZjNBT2AepN qgDq8bD9tdMT9qvoDDLgmwQ2EYsUFXmuxiesV1tyMBWRJBLMERb36I1uEVLleIct4skq kTHRMdUpDN37jSjPHoRLodeY0Z3Uhzbv1SJu8G1sYr46DPKBHz1RnZFnzkUBaA/ZV1RO cHo+3yU8fX5CiL16J2KPqbvXIqjcL44dHqSEHetpNuXexgnAZMmMNHp/Xsopj2GU72vk 0F6w== 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=BiZ9ClQv27brCRHEs+QhQ/vNu0Gg8Jztb8DM+VctURU=; b=slsW5twKz3QgR38NiUwI5lNqXwkdA+aIQcIBGNCgEJs2nfbuZY6c1RHB5jmO9vYcIF fbmN+CIJDTrltLJZS7iG8rwAUj+dn4wpkvDB5QucHOj0LLk7uTqpvjkt+0ropE/Da9Sr GAG1NwT1w/sBK+qmPCu9OJ6xPXvXIGLJ3iE/sAeCSq8P9idcFkDSdiIJn/kI7DgnJ0Ph dU/Px5SY0oP3+O5lq6WRZMvAGBFuRdQUF1jZS/+zB+4/sVS9ys2qYXTXZIW6F2l55k2m cvU9oIZYIVkHNxF7GoasQrhCg8lE12omnMMuF9Z0ODPDIWsdP2TtpBH4KE+GjosEcMaE hSmQ== X-Gm-Message-State: AOAM531Gnes6bL2T9BiwZov73SqfOrlVlejRGcuPWESXJmni49msLeRW +75mQXbfI0XzbTucWe2M0X8HJUrxyrk= X-Received: by 2002:a2e:82c5:0:b0:247:e81f:8b02 with SMTP id n5-20020a2e82c5000000b00247e81f8b02mr44436817ljh.90.1654260388212; Fri, 03 Jun 2022 05:46:28 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id m4-20020a0565120a8400b00477b624c0a8sm1561081lfu.180.2022.06.03.05.46.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Jun 2022 05:46:27 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Jun 2022 15:46:17 +0300 Message-Id: <20220603124620.15099-4-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220603124620.15099-1-jeebjp@gmail.com> References: <20220603124620.15099-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: /nLBkxZYwIns 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. Additionally, expose ac3_bit_rate_code via the eac3_info struct as it is required for AC3SpecificBox. Signed-off-by: Jan Ekström --- libavformat/movenc.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 63713e5640..2589f2f4bb 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -383,6 +383,7 @@ struct eac3_info { /* Layout of the EC3SpecificBox */ /* maximum bitrate */ uint16_t data_rate; + int8_t ac3_bit_rate_code; /* number of independent substreams */ uint8_t num_ind_sub; struct { @@ -413,8 +414,12 @@ static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track) struct eac3_info *info; int num_blocks, ret; - if (!track->eac3_priv && !(track->eac3_priv = av_mallocz(sizeof(*info)))) - return AVERROR(ENOMEM); + if (!track->eac3_priv) { + if (!(track->eac3_priv = av_mallocz(sizeof(*info)))) + return AVERROR(ENOMEM); + + ((struct eac3_info *)track->eac3_priv)->ac3_bit_rate_code = -1; + } info = track->eac3_priv; if (!info->pkt && !(info->pkt = av_packet_alloc())) @@ -431,6 +436,8 @@ static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track) } info->data_rate = FFMAX(info->data_rate, hdr->bit_rate / 1000); + info->ac3_bit_rate_code = FFMAX(info->ac3_bit_rate_code, + hdr->ac3_bit_rate_code); num_blocks = hdr->num_blocks; if (!info->ec3_done) { @@ -442,7 +449,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); @@ -474,6 +482,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 3 12:46:18 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: 36064 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6914:b0:82:6b11:2509 with SMTP id q20csp4604603pzj; Fri, 3 Jun 2022 05:47:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwEt92Lx8m6NCyLFIj5UYmvxC/BDRIwdzKKu3MlRpH7E7itA08lIAnfmHVDg115YQfih9iF X-Received: by 2002:a17:907:d88:b0:6fe:baac:25f5 with SMTP id go8-20020a1709070d8800b006febaac25f5mr8008822ejc.244.1654260438519; Fri, 03 Jun 2022 05:47:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654260438; cv=none; d=google.com; s=arc-20160816; b=tOiOZV6Jzcoz5VYhJatDgtuhdYnikyEZGwrIOSmYb4fnQESqKtsC2DgPz7z2ZFJedk ZAGWvMj0ojCye7/IeCmjoiL3GVm2JqjX+rcO0FyMo72YxsyUi0Xnrs2nhXq4EU1fBoyb be4HQvKyiWud4BhETRYl97kIrsKHJPa5UudiP5uvGdhdv8T8Zwk2hPa1h/GNtUY7GVZ5 78djD/dMJ56JBtrnxlkOsyCeSmw2ggSzJhgMkLIeMK+vehtOZMu81zSLT45HKfYy6c5K /dVV5ylveAPMo8PSmFnByHqcuWafo7zA2nrU74rfNyXWwMZJNR1jjwcHIwrDmyWVNsct SD9w== 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=KuEtqBkp5FsKTkAvOoZ4sPe3VI5L7jcjXMMPeMtRPqE=; b=k+Qt8cBFtnzLwuxlvhkMi7dNFq+YDJFF/J1fW6t/kerHCpkdG1Lt72cXoGpJFf+bEw PnlJd5q+3Le7X43LLmanTjxmold7NY1Ti76OG1uhECkvG8aVh8p0mkuDuCvw7xIiK6NR RpV0klCvDmmvbDnOxhcK3l+hsWvL43Jf2y+7YpiBdZOtNPZWwnXrzlsZ9C0C9zGxffMy VglqHtd35q+lAhkbyOZre69IHWqR5ERXgoU/RRrqTjn29jkdn0ZK9Buz2FEFYlroWHbv IjnBvWlWPOXfYWm4ZaLvZ8tW4PJeYSUgPvJxfOVZ9CghBxMApHncvckJNfBqUfjwe0Jh Sxtw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=LJNcCy3a; 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 ga35-20020a1709070c2300b006ff0f9209f8si1002523ejc.606.2022.06.03.05.47.18; Fri, 03 Jun 2022 05:47: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=LJNcCy3a; 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 CA9EE68B82F; Fri, 3 Jun 2022 15:46:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f172.google.com (mail-lj1-f172.google.com [209.85.208.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A4CF968B815 for ; Fri, 3 Jun 2022 15:46:29 +0300 (EEST) Received: by mail-lj1-f172.google.com with SMTP id s13so8311763ljd.4 for ; Fri, 03 Jun 2022 05:46:29 -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=4d3Hlu9958uDIfJ67OUXWB4Idj3Bw/Nb+1/LGsQgqz8=; b=LJNcCy3acJ/QrNztuBaiO9QXyMfSVbh6nHNkC/ETCEUKCBA9MO5ntK58QQSkDE9zyW 3InY0jl07kyehEULyG8uNlrfQZHAaHSVCi+Uc95ETQIFQhjEWTmqs3lngdJIq4BwVamt TiJh9dm0ZKCRaNLnBmn0uqlMk4BIC93tO7q4u3w0WUxz3hcojOKqc+HmUvHn1cNfijQM ew3tsqim6q0asEmLZ0/KCXY9uEmeyfIbHr+ZKM2dbdiFzLFlAo1R06Yv0RLr7ibbbmOU WFNvTQZ/KiosknQ7a+VVFLhBm5dVGeRYtQwa4FKTsUu0xO44/SyUZ321evx8VhL8LrgW dKLw== 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=4d3Hlu9958uDIfJ67OUXWB4Idj3Bw/Nb+1/LGsQgqz8=; b=KpnSg1rv3GFslowjdBSIdcQq02CfGeLmBruytJ2fifx0aIfpitfr+0Sp1SvYbR/eyQ bTH1FzORxqaZGQDbGEHmCVRm/q9V82Pxp/ch60kamFiaLlkmC3MINpQZ30fOtSZyoKoU hhwE1mbiP8OIOkMGfR4PQBA80q8IEJ7ZXNVCt1D5XGYIHSB4sSlCiKXlaQZ8E0/SdTWO bzlhVNq9RqvL7Qh59LpvFCDITZraVJ43IaaD78GXB0ZIoihUl+VVXz7S9DKAMm/Lh/X1 2nbDW+Wtv8V7MF6Amio2nsGdIwIc4hx1bkX0Slq3NlUloXcrgzynLAAQtubL32Go1BiH IXyg== X-Gm-Message-State: AOAM530258gRMcte3qQKjxpyTen0536r3SVwXAR6T98iqUypxhykIlMI PLOHsF1BIJwrKLgc778HiMl3d2E3tjg= X-Received: by 2002:a05:651c:1198:b0:253:c443:cdcb with SMTP id w24-20020a05651c119800b00253c443cdcbmr42962991ljo.22.1654260388932; Fri, 03 Jun 2022 05:46:28 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id m4-20020a0565120a8400b00477b624c0a8sm1561081lfu.180.2022.06.03.05.46.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Jun 2022 05:46:28 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Jun 2022 15:46:18 +0300 Message-Id: <20220603124620.15099-5-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220603124620.15099-1-jeebjp@gmail.com> References: <20220603124620.15099-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: zy7z4qnTMWSJ From: Jan Ekström Signed-off-by: Jan Ekström --- libavformat/movenc.c | 66 ++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 2589f2f4bb..5bc1f4c7a4 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -327,6 +327,39 @@ 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; + int8_t ac3_bit_rate_code; + /* 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; @@ -375,39 +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; - int8_t ac3_bit_rate_code; - /* 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 3 12:46:19 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: 36065 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6914:b0:82:6b11:2509 with SMTP id q20csp4604680pzj; Fri, 3 Jun 2022 05:47:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy0OfOp5UzkTbi1qVWIeJrUAf1KIaXo4fqUBIhDHRU5hkMpZyyO/FFFsjCw8TmRfj9XsyIe X-Received: by 2002:a05:6402:5211:b0:42e:2e1c:5bce with SMTP id s17-20020a056402521100b0042e2e1c5bcemr3690140edd.198.1654260447532; Fri, 03 Jun 2022 05:47:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654260447; cv=none; d=google.com; s=arc-20160816; b=FTC0UIbE/am2OiWfVfE5xE0DhW7t2NvryaHi9geJDpgRg5KFi2p6uHSHY28zajWnlH XKns6fzD4uYzPF7nJ0D5IDDCW8c3pTP5hy0ttd60GEHircswQbmzRbZO+kjeAfRJyvF4 qq27pQrZuoD6keYAyJZQi8tK40v9oQUO5Oqzg+MCTSRuod1XrmniBS2WaIVfa2YDKz7S ljBZ9LxNBbbCz2j/v6rZcF75r32XPzTKZVp3uxI/xLegS6AeU7yOo60AMmB2TGn+nq1Y jsVGQuMu2gMXVEzS4J5EsmF60q8fkFlc4y8euaALIoaA0PtmL8X9n6N2cszktQU188Yy yM4A== 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=e/Tc31/mUDy8XOyDm58aiXeBwYjrZFEwREdMtsumvOw=; b=D/nF2ZoDUMJ3hQMbvaugy8de29LKadJOnxRR/doj8jciHjiQGSEN1wgp6Trfpy0U+k 4jU9rDoQcGCupcw48xtpTlte5okI+ABqssnJ4WTAagjpB3rDWp8PNddg/LxrO1TIxJrH oiNAp6C6Dl0e8iLVunCV5bFFtdar6LkLLFWrk7LpKSvB9T1nq84XBHi2wykiECw8nD3M nqxqiBpopU+GU12STXiYUeic33TUblqZz5sm+qZXlKKG7WOPvjdPdfizOsf+XdoXyHvi QePhZMsn48rJsy8NV8e12yzsW3BgQS+QzxKRT+8dr+FvnOX6SJog5x/Sq8JZfleBYELy jzKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=X87PmeOe; 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 ga9-20020a1709070c0900b006febc8696acsi3891234ejc.770.2022.06.03.05.47.26; Fri, 03 Jun 2022 05: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=X87PmeOe; 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 D0B6168B850; Fri, 3 Jun 2022 15:46:39 +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 2BBDA68B815 for ; Fri, 3 Jun 2022 15:46:30 +0300 (EEST) Received: by mail-lj1-f175.google.com with SMTP id 1so8308226ljp.8 for ; Fri, 03 Jun 2022 05:46:30 -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=RGbJzkTilZhjBdp1ADJB78AYjoRskjXP+cjoJ6eJu+w=; b=X87PmeOeo832JLDVkb4s/m6g+najPVEz4vV2Ms/TNOUp6+Jrs+kYIrRsXCd2GRO12Q t9KHvYW8yhZdsyMuGQZVD9pF0QblxuoYQLQQzfoH0NhMANRCHjkjSJNnwQNQ+jkeaYrT AzW9O/R63dQ+u3zPr2OzZjTLYQvS9BfKu5fwQ1ElNYFHunbw/t4UdBPgdij1Qc+yIOLk JAfxSWLas+Xw/C5n4rcs+mDG5KUT3P+2fF/AwdyNfwKKCFHHR03lbVO7xmJ+Y1zBejyJ dAAC48eLByhB79+4yWeNApf3AB+jYL+1shq0bidfSLBwimgWQBkSulkl5OhQ1YVaEd+H ZwYA== 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=RGbJzkTilZhjBdp1ADJB78AYjoRskjXP+cjoJ6eJu+w=; b=GKi8bW8s6wIMBUR/KV93O92n4eoaO/JKryjV3zX4Anx0BbzwhqyzaIUVwY8JTwGQsq UXKhRq9/j+YghLJGgOyOJAC2xcV5NCdpeJI+BFEbVHBGrwQDhB3Z4RWchQ/bJnWrAhPY ZVh6+L7xSKbPs6xcjdR9U3TaqARAG8rck2cr+TOu+Q8eONcVi+JlbSsDCET/wXKs5roU n1v2t6GMQjeaZzXC08GRpfiM7NUMv+Ku7zhjTYGsWuuj+6xfAJZgtavZoBDgfCqSQiFG tm4RaEq24z7zKtnvn6Pu3oMzg+27Irf3RNsicMU0aF18IgFHSM192mlNOIA15Niov8GH OWRQ== X-Gm-Message-State: AOAM530gFCAtlE85DuFY2Z1GWAV/pV2o3AP469hQ7sKg+PlBK+rTCLzh 7Fw2k4D6gTq41oTau0RcFTwXOuwDQ/M= X-Received: by 2002:a05:651c:88f:b0:253:f747:2fd8 with SMTP id d15-20020a05651c088f00b00253f7472fd8mr29864911ljq.496.1654260389584; Fri, 03 Jun 2022 05:46:29 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id m4-20020a0565120a8400b00477b624c0a8sm1561081lfu.180.2022.06.03.05.46.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Jun 2022 05:46:29 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Jun 2022 15:46:19 +0300 Message-Id: <20220603124620.15099-6-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220603124620.15099-1-jeebjp@gmail.com> References: <20220603124620.15099-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: v/yjcWcjZTUv From: Jan Ekström Signed-off-by: Jan Ekström --- libavformat/movenc.c | 46 +++++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 5bc1f4c7a4..a1daf3598b 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -362,44 +362,34 @@ struct eac3_info { static int mov_write_ac3_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *track) { - GetBitContext gbc; + struct eac3_info *info = track->eac3_priv; 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); } + if (info->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); + } + avio_wb32(pb, 11); ffio_wfourcc(pb, "dac3"); - 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 - } - lfeon = get_bits1(&gbc); - 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, info->ac3_bit_rate_code); // bit_rate_code put_bits(&pbc, 5, 0); // reserved flush_put_bits(&pbc); @@ -5981,8 +5971,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; @@ -6059,7 +6048,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 3 12:46:20 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: 36066 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6914:b0:82:6b11:2509 with SMTP id q20csp4604751pzj; Fri, 3 Jun 2022 05:47:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwQyMFdOA+06ZDA/TSKZKwrm3WM76bMxN6Ny1olJgqQgk/Tc8nMOZAaDl/juaBLETj7r/zO X-Received: by 2002:a05:6402:500a:b0:42d:d109:b7da with SMTP id p10-20020a056402500a00b0042dd109b7damr10683582eda.289.1654260455852; Fri, 03 Jun 2022 05:47:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654260455; cv=none; d=google.com; s=arc-20160816; b=DxeAsj3U+VyGofD5eNRtSUgmhXTVC2DVD86vRIiLZWrgvlqJA0yV2qGAHkzr+IbHyQ GqBBRA6JZSRFvNidWb4KJ15Y2T/2JabJ7iuxg5JNBTMWaHcxnzzD7rslLQJ0LgqKuS6h QCtJnYeYlDEgDb5iF+OIsprdXhUrhLX56xyAtZEuPGwypXyOuQbaiEmA+v4Fz4LF8GyX oEKtbTD6+8fBVPGalGR5y7uW4v0QPkyvVCSdpBmnsdOK3AeyXj61QVWftY3T/IknzqBD mA/k6NqUYQy9hni8g0ctWwYNmbxnWllESwx4sSZaStBRl7EaGrKtssI4/AT1upiAlNAa wiIw== 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=GAJ1GeRXYx4wdNREaCJEVF8ayQaHgVvdYbhyEMLjKEI=; b=pIfF28jLgLoIhxg/dACsbK5UurFrrrq90tTn104H27elUGr1tp2Nx/Qp/Ph5+aeeGA fG2dNZtlyukANd2G18vFuloI+8J+5atREJ4+eQaSbfr+XzCQtzWieb2Wgp8x1iT31+yi Axz2QWBtMx90W2FVVPFhnIoAnVpq0ALtjqaRkTXTXfR8joI7KFma30Z2tt5bxW2vpQkw f5k+BvAWkihQ+v7chqxsYZNkkQ6Tslvh07ShKAbA6gQAioBOF0asfQM3v2C/CfUHuq83 OH7ZwxU90A1MwZw38P/Onkr1HszC5bYKEI7IsyoQ5d4B3X2Pxskkt1n3fKPQK0oOnPZn 5Dew== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=VcBT7pHw; 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 cr15-20020a170906d54f00b006fec302305asi7180700ejc.281.2022.06.03.05.47.35; Fri, 03 Jun 2022 05:47:35 -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=VcBT7pHw; 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 D5B4A68B861; Fri, 3 Jun 2022 15:46:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E6A1868B7E7 for ; Fri, 3 Jun 2022 15:46:30 +0300 (EEST) Received: by mail-lj1-f176.google.com with SMTP id s13so8311808ljd.4 for ; Fri, 03 Jun 2022 05:46:30 -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=0TIuYc6GxIvzB5mpdphBBItiAOd/E5ViA+RVudX1Hgs=; b=VcBT7pHwH/RaKSj5AXZrnDe6cEsMSHBLduYSxfiOiHxGzy6emmCrOzpqygkK6rlJpQ gig1MKzN2DwCqp2DQWJCGizsAvngdD/5xVMibOEl41WDBjlMnu+KyUooMZnr8PYnrFp+ 5xWYkYbrs2C2SR7GVGjAnBqkIwH7gmSx5v3OStWGGdMjnAvK3yNdl/bh364/t0JCv2pb lKkH5rcYs723y4WTGDy7M/PfXS3L5ohW8uVrMDUQyqqyvSCu38DWCJWbs0kzpm9EJ/t4 XfMTzUwd5AQ4zqzFvWVU8wXuI2sUHLv//tz+0+PQMGcguXfZSEOnalaw815ODYFUahdQ rTiA== 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=0TIuYc6GxIvzB5mpdphBBItiAOd/E5ViA+RVudX1Hgs=; b=TsA4hBvyXdZGiA1991WsXvee50A6dUMLEz3bAYEsKzAOASKzr1UmUa5BJtrDP+bebM CewE77glgRJzKnp/LaqUeFDUDWE+TC/2PaJELTyl1VbaPgxdtUBWjr5BLKYRjo5JqXj7 m/fjD6U3bmdVjDVc7Ki0j+n5ob8AeNCkYuYXh2FmUyPgrkHf95EuUmJ/SrnRQTE/CZhb dROqykOEA5b+UGTqxrF60YjIpRSd+t28rPxFyUpedBpqUOwt+ekpY/jFI072Jva0vsNl TJR09QxpGQyuGwTOCZu067XIcLmnQEEGhWGLuDHu3CRDFwyPt/9mitnVGdIbU1ImvPJE 9ORg== X-Gm-Message-State: AOAM531NX2/2y+KyxBWVQNcB52ZDypbKo1nGK35twwHOINb/KUZjOnf1 iny9En+e7MGFipra9ot14orjcRZVWUg= X-Received: by 2002:a2e:8881:0:b0:255:7790:25e6 with SMTP id k1-20020a2e8881000000b00255779025e6mr4059452lji.525.1654260390219; Fri, 03 Jun 2022 05:46:30 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id m4-20020a0565120a8400b00477b624c0a8sm1561081lfu.180.2022.06.03.05.46.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Jun 2022 05:46:29 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Jun 2022 15:46:20 +0300 Message-Id: <20220603124620.15099-7-jeebjp@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220603124620.15099-1-jeebjp@gmail.com> References: <20220603124620.15099-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: FxzkDPnZc2K9 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 a1daf3598b..0f92f0e04e 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -415,7 +415,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");