From patchwork Wed Feb 28 16:13:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46618 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp27846pzb; Wed, 28 Feb 2024 08:12:18 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCVrqcjEOSLAdga9gJ3XVcWmAzXGz2XiLWpUcuNF23I73spk7qDpfGY8riM2f9X5rqdMQnmGTq9duL+Qn9MDBPMaqxvgrJPibbpUwg== X-Google-Smtp-Source: AGHT+IHGFyyD/E2ExjBIduKA2EqlgeU+ogITS23yPDYCVmMr9IAG6pVCBC+2M9Cd0TT11AZ5+tw/ X-Received: by 2002:a17:906:2291:b0:a44:fb7:d42 with SMTP id p17-20020a170906229100b00a440fb70d42mr129662eja.2.1709136738267; Wed, 28 Feb 2024 08:12:18 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id v5-20020a170906380500b00a43bf7f653dsi1449087ejc.822.2024.02.28.08.12.17; Wed, 28 Feb 2024 08:12:18 -0800 (PST) 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=@outlook.com header.s=selector1 header.b=Dwgh0+Gy; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7764E68CD00; Wed, 28 Feb 2024 18:12:14 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2022.outbound.protection.outlook.com [40.92.73.22]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C262968C7DA for ; Wed, 28 Feb 2024 18:12:07 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F4yzD0I2MhoU97iXHeVol2hbk2SEBXe41jqobZrIPzPgaA3NdVtLzGtsIgK1JYFCzzREynEfd/jfJUM32Pgn0CJOxdsT1E4rMJDItPStG2rfXNACR7GHHNLQYaMSqGd1YbBLmxLJ0t4z+MtG390LNBQj3YvxGcrq7rzXpNM7BAfzszpTi4HiYOlHcAiTIjBxQtimDgwk7RFOvSMxuMdbkkTGw6LRWsx28ss/pA5EJOUpY/EjA1QFAELtPNrRiTryeR53wZUS2Pj/10FkPk48q09/HneYcNOvSw0379wRjW38oH+5SlnHS8/589heUk4RnJ8VA09j3ayNbiuxM6BfxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Hx+IEHTYcDaXb3iselh0AsK+8xbUHTzwC9nwBpTEphs=; b=WumdaVWyMhSQKJ1cICnHPmXrITX5cxUeMgo30LeJFZ9D2xG0+eue8WT9kVHus5LtLoIfGSHAM3cbEXSi6YDxBqJilI90UOlNoe6jcUFlvXAwjZ/SRrVCm56NTgcY8sVDXfxsIRDwLMoYBTef/d4gy/ao7xu2BRlDB8xQm5iytviIYS30Xq792okgU2/VFTL+UutmgpmYfpSa2EZG/hBz1jw+wNnIwDPyvCNNW7ut/9uyUC99u2XPb1VJmRddIAAjO9/l2lvl1NVn21HHYvn1CjSVS5rF8KCXiOxytsdpurqp9bpjCJ0bWG+EVg3KyeKr2QKJeXSp+lAyYz406wZVqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hx+IEHTYcDaXb3iselh0AsK+8xbUHTzwC9nwBpTEphs=; b=Dwgh0+GypNCyfkvknuQRG34I/J/7xbt1zIFwCbfVUyJrcAHmeSDCY8EHVD5agJf8UEXt7PUHed0Z5rsm4Hbfcm1oYAMaOKsdduUWJ+TrTqGr1osnF6nsxSYBbC+7lOp6SnyOV8jGhEYls3MsJRwcKeGn5v+gUONKgaAMV0+LSsdLB+j4UiDsJg+/ASr705Y4rmJcBrdAVvy6uAR1rMkJ9LqbkB/gaCQ/U1sNVHQJGIHudLhtOtl7rCBopbtW7c1Pr9SbptbfAsOwlQF8/jjMF3erQJ6SaKY/pCmzP+INCu8I5uEXTGGo01zGp0Wuh/XTxHxU4Y5ORNmDh1pt1kiWdw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0270.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.37; Wed, 28 Feb 2024 16:12:05 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Wed, 28 Feb 2024 16:12:05 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Feb 2024 17:13:59 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 X-TMN: [jK+q2KzZKKfTt2v25riYGKJyFEIH8VSQ] X-ClientProxiedBy: ZR0P278CA0035.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1c::22) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240228161359.2186942-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0270:EE_ X-MS-Office365-Filtering-Correlation-Id: 87be4350-7d26-490c-4e76-08dc387801c6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yxHnLtzM5oOI8ABHjw9r99Az3aFP9gCZjGKc4JS1iCHJMDj3+HHEf0SOPyW1LQ5YpZN0DTC1bwYJdR3T7yBE7ufAeqirtvuXP7kZiMgoUNk8s1fRXMxF6K9/gfyRKyXJGFMkRWpheQKJP4PnKe//JbAmaBsayVo/mdCkUnEpNa4xxmAtHotDUXd+bsul8kZutAhLRJaNjSjR0TTZd+yn6Cf4GVFoa7JDCIwTfFwtaiEr0RxHg8W3pAQ81KzUoWrDW6PK0IHNsMXxX5xp+UqykkqhN/FjVvPyrc0KTVLdX9c5S1/JHOGgqqOWO5f00SC9sWYY0UJKNQzvLncwVG63r9vQhROBhnEetmOjZA6RmnVqqaZfILWgZqh/wf/dji97z3+xoNPU1OO+UdnpKLZ2xOYIjtbvLUBRHLRf7+SyO5qEqQ2Oaic3exxuKMftfW6yY0qznhkXrqHkMUBSzHsSWmUPtsvRsdjvJFo/YQG1eOIwqnYLSdZvo/HsKnSLhE4q9b3ZsxWdXiW4MxemwxHFDKE/vuKrBGplCNdrCdlP5jJjyYFCuKWmsn0omuvzvGRR/f5wqtGMU2TTa6jD9PI3W2/NXK3YMG+pxgz5h5yvtrGc5EmC8meSA3M2Qt5l90HO X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Jvl7IrtcwiN4MXB6QXYGFRS0cnbtATrD6eRU83jTXDKJlWvxbB+YL8AilPRNLiJ0XPTdCqcAdkkiB1frX/KBDeuOB8zEf/Cxg4eZrfmhscF4S+ndyHOCe9VFfUbWM7x7JRWZUUUlppR0qx1/iEkSCRbvHhrji8Vi31jMzlerbZu1AF6b8UcIIdpODipjruk4JXNhNlIFYrcm+7G20Czk2YfyuuUR2kHTm/cH6QKfI/sJMldUWdSI07KG12CeahgbqzA82pMcNL8kzRuXbVq9RXs0VlRo7D2zvF8+oBrHsQD7mWb6GoTNM6NdTe9QlRzsAFSz8nnqHhUVauQSCVBkq8+lRmr8SAi/IUls9at9IkyMJN0duOrLx0y+CFI964hng5fi8TLqs68XxlE0qVo+opWqgS0DKlu7R3YPZxxJ4GOjRd0KwGtnKbhEsln1PPc5mzcstCJqgADsT9pwhB/Q4vIvebuN9Xw4kwlXPyATf66R1JYR4F2AgCxRjqhG6ERusCfl1nCplcjmlLbr2pB/FdrBOhmi4rxouIN87/c7EVzJWMTjyNqF2Ki+4g7U3K1tvmc9C7VpHbjWV+F1cZQLCoN98rQuXZxr2l+aHH14UhktSyeNXtCawXvPPXvXou119CseBSRT928dlL/aWeAdfsjlugzWQ4HKiIDtAubOEyCbWHiFBJzzOtyti6Pm59zdC1K6WDfYtEDzPtfMqdVFBgqFU20yhLzBnS9NFaM2s7onogUaAfaj/yJBi2ADG+BLO0O7jrzN5xPQ0gnTJeVzgrxZtFs+dcFKhnkmxcp/Ymx2F9fFE3sjO4klO6lwYlZRlcm9QeUUJKyXVAmnIUr1/seR+8tqY3Q3GWA3RIm+HXgxioFyeOB6g6UnmBUxpggncSKRyFSOtGWUMSs2/sSaKh9hD5rKHf94FIV3jgM5J82hSL/L+ZybRz/Woq027YtuQjYq5AWpUFwyoMM55kkPkuXJvkYGqGxRQ0h/qoL8vjOajM6+TcAIpXikdNbERiCVy+/nXQAhtVFoWINHhxF0XJfD8461nCtXM9Ifk+8lLT0uuxHPB7Av4FOAICFyPnWuUQmV2XCfmqylU6Fzv/786cOgAxTUKhItPrOWuGzUnLqxvB13ujQgvMg6H0dKdOJHB+lOpMMr8IqCd41OPFtlr4tETlH0rTB14RvWH4/hOgoWPtdMfq12KCsFLFWMV7n1i5BOiS+vxLgU9CI31be8yyd1LgEql3VNLSA4XKPRZC2hMbfdU6HHmjOOv7iEyxVnmIsG+NuYlAsoFur299duTA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 87be4350-7d26-490c-4e76-08dc387801c6 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2024 16:12:05.8744 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2P250MB0270 Subject: [FFmpeg-devel] [PATCH] avcodec/bsf/mp3_header_decompress: Remove BSF 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 2eEpS2wv5WjY This BSF is supposed to be used in conjunction with mp3_header_compress, which has been removed more than ten years ago in commit c6080d89009056530119ab794ad02e4d515c7754. It mangled the headers by removing the CRC field as well as fields that are supposed to stay constant for the entirety of a stream (which are put into extradata). This made these files unplayable; they need to be decompressed with the BSF first (which does not happen automatically). Even in this case the CRC does not get restored. I am not aware that such compressed files exist at all; therefore this commit removes the BSF completely. Signed-off-by: Andreas Rheinhardt --- doc/bitstream_filters.texi | 4 - libavcodec/Makefile | 1 - libavcodec/bitstream_filters.c | 1 - libavcodec/bsf/Makefile | 1 - libavcodec/bsf/mp3_header_decompress.c | 130 ------------------------- 5 files changed, 137 deletions(-) delete mode 100644 libavcodec/bsf/mp3_header_decompress.c diff --git a/doc/bitstream_filters.texi b/doc/bitstream_filters.texi index d5bac105ff..e06de1a73a 100644 --- a/doc/bitstream_filters.texi +++ b/doc/bitstream_filters.texi @@ -528,10 +528,6 @@ metadata header from each subtitle packet. See also the @ref{text2movsub} filter. -@section mp3decomp - -Decompress non-standard compressed MP3 audio headers. - @section mpeg2_metadata Modify metadata embedded in an MPEG-2 stream. diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 09ae5270b3..f28a6568de 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -1240,7 +1240,6 @@ OBJS-$(CONFIG_EXTRACT_EXTRADATA_BSF) += av1_parse.o h2645_parse.o OBJS-$(CONFIG_H264_METADATA_BSF) += h264_levels.o h2645data.o OBJS-$(CONFIG_HAPQA_EXTRACT_BSF) += hap.o OBJS-$(CONFIG_HEVC_METADATA_BSF) += h265_profile_level.o h2645data.o -OBJS-$(CONFIG_MP3_HEADER_DECOMPRESS_BSF) += mpegaudiotabs.o OBJS-$(CONFIG_REMOVE_EXTRADATA_BSF) += av1_parse.o OBJS-$(CONFIG_TRUEHD_CORE_BSF) += mlp_parse.o mlp.o diff --git a/libavcodec/bitstream_filters.c b/libavcodec/bitstream_filters.c index 1bae113d92..12860c332b 100644 --- a/libavcodec/bitstream_filters.c +++ b/libavcodec/bitstream_filters.c @@ -46,7 +46,6 @@ extern const FFBitStreamFilter ff_imx_dump_header_bsf; extern const FFBitStreamFilter ff_media100_to_mjpegb_bsf; extern const FFBitStreamFilter ff_mjpeg2jpeg_bsf; extern const FFBitStreamFilter ff_mjpega_dump_header_bsf; -extern const FFBitStreamFilter ff_mp3_header_decompress_bsf; extern const FFBitStreamFilter ff_mpeg2_metadata_bsf; extern const FFBitStreamFilter ff_mpeg4_unpack_bframes_bsf; extern const FFBitStreamFilter ff_mov2textsub_bsf; diff --git a/libavcodec/bsf/Makefile b/libavcodec/bsf/Makefile index 62609eb24e..fb70ad0c21 100644 --- a/libavcodec/bsf/Makefile +++ b/libavcodec/bsf/Makefile @@ -25,7 +25,6 @@ OBJS-$(CONFIG_MEDIA100_TO_MJPEGB_BSF) += bsf/media100_to_mjpegb.o OBJS-$(CONFIG_MJPEG2JPEG_BSF) += bsf/mjpeg2jpeg.o OBJS-$(CONFIG_MJPEGA_DUMP_HEADER_BSF) += bsf/mjpega_dump_header.o OBJS-$(CONFIG_MOV2TEXTSUB_BSF) += bsf/movsub.o -OBJS-$(CONFIG_MP3_HEADER_DECOMPRESS_BSF) += bsf/mp3_header_decompress.o OBJS-$(CONFIG_MPEG2_METADATA_BSF) += bsf/mpeg2_metadata.o OBJS-$(CONFIG_MPEG4_UNPACK_BFRAMES_BSF) += bsf/mpeg4_unpack_bframes.o OBJS-$(CONFIG_NOISE_BSF) += bsf/noise.o diff --git a/libavcodec/bsf/mp3_header_decompress.c b/libavcodec/bsf/mp3_header_decompress.c deleted file mode 100644 index a177029fe0..0000000000 --- a/libavcodec/bsf/mp3_header_decompress.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * 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 "libavutil/common.h" -#include "libavutil/intreadwrite.h" -#include "bsf.h" -#include "bsf_internal.h" -#include "defs.h" -#include "mpegaudiodecheader.h" -#include "mpegaudiodata.h" - - -static int mp3_header_decompress(AVBSFContext *ctx, AVPacket *out) -{ - AVPacket *in; - uint32_t header; - int sample_rate= ctx->par_in->sample_rate; - int sample_rate_index=0; - int lsf, mpeg25, bitrate_index, frame_size, ret; - uint8_t *buf; - int buf_size; - - ret = ff_bsf_get_packet(ctx, &in); - if (ret < 0) - return ret; - - buf = in->data; - buf_size = in->size; - - header = AV_RB32(buf); - if(ff_mpa_check_header(header) >= 0){ - av_packet_move_ref(out, in); - av_packet_free(&in); - - return 0; - } - - if(ctx->par_in->extradata_size != 15 || strcmp(ctx->par_in->extradata, "FFCMP3 0.0")){ - av_log(ctx, AV_LOG_ERROR, "Extradata invalid %d\n", ctx->par_in->extradata_size); - ret = AVERROR(EINVAL); - goto fail; - } - - header= AV_RB32(ctx->par_in->extradata+11) & MP3_MASK; - - lsf = sample_rate < (24000+32000)/2; - mpeg25 = sample_rate < (12000+16000)/2; - sample_rate_index= (header>>10)&3; - if (sample_rate_index == 3) { - ret = AVERROR_INVALIDDATA; - goto fail; - } - - sample_rate = ff_mpa_freq_tab[sample_rate_index] >> (lsf + mpeg25); //in case sample rate is a little off - - for(bitrate_index=2; bitrate_index<30; bitrate_index++){ - frame_size = ff_mpa_bitrate_tab[lsf][2][bitrate_index>>1]; - frame_size = (frame_size * 144000) / (sample_rate << lsf) + (bitrate_index&1); - if(frame_size == buf_size + 4) - break; - if(frame_size == buf_size + 6) - break; - } - if(bitrate_index == 30){ - av_log(ctx, AV_LOG_ERROR, "Could not find bitrate_index.\n"); - ret = AVERROR(EINVAL); - goto fail; - } - - header |= (bitrate_index&1)<<9; - header |= (bitrate_index>>1)<<12; - header |= (frame_size == buf_size + 4)<<16; //FIXME actually set a correct crc instead of 0 - - ret = av_new_packet(out, frame_size); - if (ret < 0) - goto fail; - ret = av_packet_copy_props(out, in); - if (ret < 0) { - av_packet_unref(out); - goto fail; - } - memcpy(out->data + frame_size - buf_size, buf, buf_size + AV_INPUT_BUFFER_PADDING_SIZE); - - if (ctx->par_in->ch_layout.nb_channels == 2){ - uint8_t *p= out->data + frame_size - buf_size; - if(lsf){ - FFSWAP(int, p[1], p[2]); - header |= (p[1] & 0xC0)>>2; - p[1] &= 0x3F; - }else{ - header |= p[1] & 0x30; - p[1] &= 0xCF; - } - } - - AV_WB32(out->data, header); - - ret = 0; - -fail: - av_packet_free(&in); - return ret; -} - -static const enum AVCodecID codec_ids[] = { - AV_CODEC_ID_MP3, AV_CODEC_ID_NONE, -}; - -const FFBitStreamFilter ff_mp3_header_decompress_bsf = { - .p.name = "mp3decomp", - .p.codec_ids = codec_ids, - .filter = mp3_header_decompress, -};