From patchwork Wed Dec 15 12:35:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 32660 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a0c:e101:0:0:0:0:0 with SMTP id w1csp229784qvk; Wed, 15 Dec 2021 04:37:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJxdAav9zb/sIWpIJmoxcNOAc53h1nbe1Cwl1nr72lp2Pt5Z+ir4aOV+xCHWFenrqHcrBy/z X-Received: by 2002:a17:906:2a11:: with SMTP id j17mr10585734eje.555.1639571827934; Wed, 15 Dec 2021 04:37:07 -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 u8si1200596eds.199.2021.12.15.04.37.07; Wed, 15 Dec 2021 04:37:07 -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=BnsIMDrJ; 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 D4D1368B10D; Wed, 15 Dec 2021 14:36:13 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-oln040092067080.outbound.protection.outlook.com [40.92.67.80]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A805C68B0D8 for ; Wed, 15 Dec 2021 14:36:09 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k6/cHoiVDy0pB+hj0XmKJpRqYvmmNIQryBczWZp+B7NIK8mwQR9fTHBkKkE00omARwFbdF1APiFE6dMLgLpWkNN9nXauWhe00SJc4pc7xTb0w4rLyQGtoD9KY8eI4QWBLDA+uw/t3iErhVPcLGX+gsCJrJGlpjHLsPmUmAKLikYJ1kznF/7ZGENPzug/G4KDS0bvZVWfoMVimm3qgmVAadX8bU0PwGaIw9L9SKk1+cZNgP7O2QrIudSipZSS9nxSTpUk/3bb7AtuFTvndCjgeWlkwkrNn0ZwLJHvIEVOkRkXUC0qOqjfiGiD6XkZ8wjY+sfDwUDiCSCi+H9x34UZjw== 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=oVLkVYeSMMbiFuI5AxHJZV0nMLFrTMzfZpaPj8OoQjc=; b=KkRp43R4xf9bdhqGUwrJWrcH582PSh61WQGwbIvOdMj3yDzRj+ORYJlIch3AjhawM+/KJOcsmfZ+wsue0GTYW5/GBPnDs5fRgLj/scN/2sq/pam3KJ9HlamlWsN2HmYiXfCFSvUsYdhIUD4gyrnHMFNgUoGqXjYOq6ZnzmZFxNaV1y/lWgB0IuqgOCN8iefHenG30cB5bVmEoRZQ1Kt2mLvn9Scog0izSglgnVCB85NsBXlbmbw+pW7DEAe+K4h9bHF+Ur5SKboa2pV0GFc9l4w5oXJhLvAcCnonJTtqFzw7+R3xqCNyz3W41eNlsfLOIOoRQIFH5miePKpRSLx9bg== 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=oVLkVYeSMMbiFuI5AxHJZV0nMLFrTMzfZpaPj8OoQjc=; b=BnsIMDrJeexW+Q9We5+fdDxuYvkgYSbebG2J2ARseO2g+A/otN53wwgbqYgf2BMG4LZ2BtPijhcsujP2Szd696pQcakl7FHOTQcrXzSQrnciRYwhCXU90kPstfj9k7A4SNIlomw1LYooEIecRWwfewev9UDDPLH6b7PW5ppiXCBMJbAeq0X+SrfxFdExWLClWZwCIfEo9llaM5t6zL/NOdugxHg8D+2qQc04R64Z3tzjDOlQo7dZi3yrF3SS96EK8NCpKzjL6XjXOeCdKnz7JGivn6cM9c/uZ81CIDQRviowA5PeiCk1Ztk5t9UROQOTNl8Z5jDaAMVFmvuvr0CT2A== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB4952.eurprd03.prod.outlook.com (2603:10a6:20b:8a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.17; Wed, 15 Dec 2021 12:36:05 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca%6]) with mapi id 15.20.4778.018; Wed, 15 Dec 2021 12:36:05 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 15 Dec 2021 13:35:39 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [ZgBYr3fZqohZ8Zp/p/hZdMH1uG4GQLq3] X-ClientProxiedBy: AM0PR08CA0014.eurprd08.prod.outlook.com (2603:10a6:208:d2::27) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20211215123541.5406-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e7dfc010-b849-4477-2eeb-08d9bfc77600 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiR3EehW4kxQzdNcP2D/mG1JZg9tEmIvrua12M23mW7q70ToEKE9bSuEuf9hsxf2btnmc3H0vLAfaMIGBuw4uwpZpZ9aKirmCGvNq8+/9Ser5rYjGtbVH4U/PH2yzEXNPnmkJE5DmAdwwCRCNCfdWeFh+8MW9o6mvvmZnxY7vF1FVwGkIeBNgL1X+SIKnqXSR8iDrfjO5ZvDpTs9Q2+6SrBRdHBy1/v03hyAV6PmzL/Xe8vjIOoDb08zMtqz6JEpQDZZO41MhgDWv+0IOIStmPPp1LWoPTobCE7PWzY2b4Q9j0qTYSU1OwzwHiOntBQ4J8N2EUROVc2GPYjB9WLTMs3JXZCwMunQptN5HX1cf/Lk1/wraoUIydyxnMShZ8qygELcjG7RLpYoGhMcyR7DMc9jx5Ob0vc/qp6hNzWw2nq60s00HralTccRFkINTNhUj6d3NtqAG6ARSr/svzt15IWOqrUtCigCGxK3idJNP1A0KJ3vtgTt3AVRUpyGyFRBoBw83l4SBPzxWW8tsw5ax3M2bG9Ivvdbz0goFX1RcQLTI4eWHje6pR1C2+VLxQ9Wgk+tw0W10lSol7EfH2e5rPeZHTs5siTn8iv1I7PuTJgdy7cJs/ux78JUE5k7heLN8euVgx1jdx2sGzUl9kzyQKgrtKTv3e2qQTgvgyskQ7XcKIOTgz0LAdAA5YyJ6iysQ2XSFGv+QJETq4f+9qFoHPOK/Lv/QXeUHCbPRJauUF8muq+XeiYiH3g+3TYa3WaKO+o= X-MS-TrafficTypeDiagnostic: AM6PR03MB4952:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1yAmh3qDsEvUWH3bK5O5FYj8fTXu03TMq0Zh3SXHio3AG453ChsQr/cukq1t4mmCna1oW/2cg+f5bSZfMn31FRcvgt0i3Ce0GZrmaYhIUPaFj6sMZq07vxxsEuhUbpzy9QJ/RbnZCGnAFyWgoyXQOlnYEgEbH+XKvAj4gevIQBfS2oGLVUPoIPEgWxTPbqBlL1QCGifO9uEdJNgY7TGCXcRffwtsquIpfTtRkhBzXj7vQpVd9IqfIZ2fL7Ia4vleXUz/mZkY9MtUZOUfidB49ZVIAuAuPm9kpFpO5PEGbCUN/1/vUzQXHsphK5P5laAkFOYIzLr4X07YU28CXcFLoQnfMuUcF1npWkR+tplLcRvb6m8MNY1J/39MF3H34bgGKfD42nfFEIZcarQB2WkWjjJGo2/CXrPZ2QIbLfmc7qzklReNJwBUvU/dBw5X4geQyanjyoq1vtzoOiL6rzVz5fFk16xA3VZ+WTviRTW2f+NQkhP8YE6Evp/TMeww6aY2r7+9Ancosju5PPGlCHLev53ReZpVO8k4PzrRPK5RQEAZRFJVA9M3QtCaryPjwQo2iRhjKPbyx2a3KDVLvTl83w== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yFFcnLilg0vq7e9oMGMvsX1KZHL1F+2IzViCO95sFeTJSGTk6IDKYZIhXsA9wxzygevAYzR2dQ6YLWUCUw21d5RXmTWTX9GqEYRB/8b005zPjBmBYoVDei5/DAtc8NDxfO29UFzyBf9Fi0h9K+AQHKTcDtMc9E3iFuAfUoSSASzSzdGAlQBZqX4lXlWezO2r9W2TZlMRwgg5/5Iv5oVMzUVfLp6OKGgSw7pxt78NXT1oHJk58/9gzuulGpDVcHBAZxUdYrzMeGRRulznTlPHEn2jyAF5WAwHKXRq/8CX3MdPAk5P3238fbHjwbRqfigy++k+lIKO2YTX1LsZ3SAt2fPEbEoceGAGRmalADLzTsM0vUUA+QQBnIS3ICvn5GfKY1IHD10LwdTaVj8d5Hp+/WwHy1dyaNtqU55370r7/f0L8A8DTn6FVHCjvOFnNlQXYzDjyoqVIg6Ajup7/gvwBJQSDi7MhGCjXjI/bwD3WTfl0tlUFT3+bCdzjRVUnFM2Z7U5p7cZbODO9uwKNVGk1QAKOc1EpBxZooLZhlXy9JV/LhduroiZJ8WgO+Dhcys3pevGKXbrnh/IRrSfwGJFcbp43qTqZQZZj4oD2bX271ANco6SSWJcwsdFgHtCuwF2hoI3/1eEviOtgyRM4Buwj5cMN5yUSfMJ45BMJ9GTpRfm8/CqMx9+opulmy4ZufNHpaS+utHM/xuaT9ShHXYaRaL8clRM3dQg/r2hXJwlbaaW/ZkGKJAviyVvycXhypOYdLhDT0enWloLw2rRQaQ8FPKUcr2RNOvyP7cNnFRqaKtEZAhHi4gQ5++NJUU24mfN0sDUmPhzDgn811TKJEIu1DlaSe4Xk5jVFwkCIL1tgB9bbBZCFpkFJmaX6Tpj6aq4T3tSTJpvojfS1hhpX7MyGoM4BhfzH98ieqYPGweDfNEHw/26yaTJC2IYjrfhOqg8x6CTalUNyEuoZlwCBwDf9w== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e7dfc010-b849-4477-2eeb-08d9bfc77600 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2021 12:36:05.1412 (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: AM6PR03MB4952 Subject: [FFmpeg-devel] [PATCH 09/11] avcodec/mpegaudiodata: Unavpriv mpa_bitrate and mpa_frequency tabs 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: I4lUUoFyKTsO Content-Length: 18290 These arrays have a size of 180 resp. six bytes. This does not make it worthwhile to export them due to the overhead this occurs; for x64 Elf/Linux/GNU: 2x2B version, 2x24B .dynsym, 24B .rela.dyn, 8B .got, 4B hash + twice the size of the name (here 20+23B). Therefore these symbols are unavprived and duplicated for shared builds. Signed-off-by: Andreas Rheinhardt --- libavcodec/Makefile | 16 ++++++----- libavcodec/mp3_header_decompress_bsf.c | 5 ++-- libavcodec/mpegaudiodata.c | 13 --------- libavcodec/mpegaudiodata.h | 5 ++-- libavcodec/mpegaudiodecheader.c | 6 ++-- libavcodec/mpegaudioenc_template.c | 8 +++--- libavcodec/mpegaudiotabs.c | 22 +++++++++++++++ libavcodec/mpegaudiotabs.h | 39 ++++++++++++++++++++++++++ libavformat/Makefile | 3 ++ libavformat/isom.c | 2 +- libavformat/mp3enc.c | 8 +++--- libavformat/mpegaudiotabs.c | 22 +++++++++++++++ libavformat/nutenc.c | 4 +-- 13 files changed, 114 insertions(+), 39 deletions(-) create mode 100644 libavcodec/mpegaudiotabs.c create mode 100644 libavcodec/mpegaudiotabs.h create mode 100644 libavformat/mpegaudiotabs.c diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 42caa1d59c..0b4aaf544e 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -122,7 +122,7 @@ OBJS-$(CONFIG_MPEGAUDIODSP) += mpegaudiodsp.o \ mpegaudiodsp_data.o \ mpegaudiodsp_fixed.o \ mpegaudiodsp_float.o -OBJS-$(CONFIG_MPEGAUDIOHEADER) += mpegaudiodecheader.o mpegaudiodata.o +OBJS-$(CONFIG_MPEGAUDIOHEADER) += mpegaudiodecheader.o mpegaudiotabs.o OBJS-$(CONFIG_MPEG4AUDIO) += mpeg4audio.o mpeg4audio_sample_rates.o OBJS-$(CONFIG_MPEGVIDEO) += mpegvideo.o mpegvideodsp.o rl.o \ mpegvideo_motion.o mpegutils.o \ @@ -472,9 +472,11 @@ OBJS-$(CONFIG_MP1_DECODER) += mpegaudiodec_fixed.o OBJS-$(CONFIG_MP1FLOAT_DECODER) += mpegaudiodec_float.o OBJS-$(CONFIG_MP2_DECODER) += mpegaudiodec_fixed.o OBJS-$(CONFIG_MP2_ENCODER) += mpegaudioenc_float.o mpegaudio.o \ - mpegaudiodata.o mpegaudiodsp_data.o + mpegaudiodata.o mpegaudiodsp_data.o \ + mpegaudiotabs.o OBJS-$(CONFIG_MP2FIXED_ENCODER) += mpegaudioenc_fixed.o mpegaudio.o \ - mpegaudiodata.o mpegaudiodsp_data.o + mpegaudiodata.o mpegaudiodsp_data.o \ + mpegaudiotabs.o OBJS-$(CONFIG_MP2FLOAT_DECODER) += mpegaudiodec_float.o OBJS-$(CONFIG_MP3_DECODER) += mpegaudiodec_fixed.o OBJS-$(CONFIG_MP3_MF_ENCODER) += mfenc.o mf_utils.o @@ -987,18 +989,18 @@ OBJS-$(CONFIG_VP8_QSV_HWACCEL) += qsvdec.o SHLIBOBJS += log2_tab.o reverse.o # General libavformat dependencies -OBJS-$(CONFIG_ISO_MEDIA) += mpegaudiodata.o - OBJS-$(CONFIG_FITS_DEMUXER) += fits.o -OBJS-$(CONFIG_NUT_MUXER) += mpegaudiodata.o OBJS-$(CONFIG_TAK_DEMUXER) += tak.o # libavformat dependencies for static builds +STLIBOBJS-$(CONFIG_ISO_MEDIA) += mpegaudiotabs.o 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_MXF_MUXER) += golomb.o +STLIBOBJS-$(CONFIG_MP3_MUXER) += mpegaudiotabs.o +STLIBOBJS-$(CONFIG_NUT_MUXER) += mpegaudiotabs.o STLIBOBJS-$(CONFIG_RTPDEC) += jpegtables.o STLIBOBJS-$(CONFIG_RTP_MUXER) += golomb.o jpegtables.o \ mpeg4audio_sample_rates.o @@ -1168,7 +1170,7 @@ OBJS-$(CONFIG_MJPEGA_DUMP_HEADER_BSF) += mjpega_dump_header_bsf.o OBJS-$(CONFIG_MPEG4_UNPACK_BFRAMES_BSF) += mpeg4_unpack_bframes_bsf.o OBJS-$(CONFIG_MOV2TEXTSUB_BSF) += movsub_bsf.o OBJS-$(CONFIG_MP3_HEADER_DECOMPRESS_BSF) += mp3_header_decompress_bsf.o \ - mpegaudiodata.o + mpegaudiotabs.o OBJS-$(CONFIG_MPEG2_METADATA_BSF) += mpeg2_metadata_bsf.o OBJS-$(CONFIG_NOISE_BSF) += noise_bsf.o OBJS-$(CONFIG_NULL_BSF) += null_bsf.o diff --git a/libavcodec/mp3_header_decompress_bsf.c b/libavcodec/mp3_header_decompress_bsf.c index 44c174c21c..ebf6bde1c2 100644 --- a/libavcodec/mp3_header_decompress_bsf.c +++ b/libavcodec/mp3_header_decompress_bsf.c @@ -22,6 +22,7 @@ #include "libavutil/intreadwrite.h" #include "bsf.h" #include "bsf_internal.h" +#include "defs.h" #include "mpegaudiodecheader.h" #include "mpegaudiodata.h" @@ -67,10 +68,10 @@ static int mp3_header_decompress(AVBSFContext *ctx, AVPacket *out) goto fail; } - sample_rate= avpriv_mpa_freq_tab[sample_rate_index] >> (lsf + mpeg25); //in case sample rate is a little off + 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 = avpriv_mpa_bitrate_tab[lsf][2][bitrate_index>>1]; + 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; diff --git a/libavcodec/mpegaudiodata.c b/libavcodec/mpegaudiodata.c index 0569281109..669590908f 100644 --- a/libavcodec/mpegaudiodata.c +++ b/libavcodec/mpegaudiodata.c @@ -26,19 +26,6 @@ #include "mpegaudiodata.h" - -const uint16_t avpriv_mpa_bitrate_tab[2][3][15] = { - { {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448 }, - {0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384 }, - {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 } }, - { {0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256}, - {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160}, - {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160} - } -}; - -const uint16_t avpriv_mpa_freq_tab[3] = { 44100, 48000, 32000 }; - /*******************************************************/ /* layer 2 tables */ diff --git a/libavcodec/mpegaudiodata.h b/libavcodec/mpegaudiodata.h index 0a425ef6a8..a4148a1ffe 100644 --- a/libavcodec/mpegaudiodata.h +++ b/libavcodec/mpegaudiodata.h @@ -31,14 +31,13 @@ #include "config.h" -#include "internal.h" #include "vlc.h" #define MODE_EXT_MS_STEREO 2 #define MODE_EXT_I_STEREO 1 -extern av_export_avcodec const uint16_t avpriv_mpa_bitrate_tab[2][3][15]; -extern av_export_avcodec const uint16_t avpriv_mpa_freq_tab[3]; +extern const uint16_t ff_mpa_bitrate_tab[2][3][15]; +extern const uint16_t ff_mpa_freq_tab[3]; extern const int ff_mpa_sblimit_table[5]; extern const int ff_mpa_quant_steps[17]; extern const int ff_mpa_quant_bits[17]; diff --git a/libavcodec/mpegaudiodecheader.c b/libavcodec/mpegaudiodecheader.c index 93c5f3d8f8..446a6e29d8 100644 --- a/libavcodec/mpegaudiodecheader.c +++ b/libavcodec/mpegaudiodecheader.c @@ -52,9 +52,9 @@ int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header) s->layer = 4 - ((header >> 17) & 3); /* extract frequency */ sample_rate_index = (header >> 10) & 3; - if (sample_rate_index >= FF_ARRAY_ELEMS(avpriv_mpa_freq_tab)) + if (sample_rate_index >= FF_ARRAY_ELEMS(ff_mpa_freq_tab)) sample_rate_index = 0; - sample_rate = avpriv_mpa_freq_tab[sample_rate_index] >> (s->lsf + mpeg25); + sample_rate = ff_mpa_freq_tab[sample_rate_index] >> (s->lsf + mpeg25); sample_rate_index += 3 * (s->lsf + mpeg25); s->sample_rate_index = sample_rate_index; s->error_protection = ((header >> 16) & 1) ^ 1; @@ -75,7 +75,7 @@ int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header) s->nb_channels = 2; if (bitrate_index != 0) { - frame_size = avpriv_mpa_bitrate_tab[s->lsf][s->layer - 1][bitrate_index]; + frame_size = ff_mpa_bitrate_tab[s->lsf][s->layer - 1][bitrate_index]; s->bit_rate = frame_size * 1000; switch(s->layer) { case 1: diff --git a/libavcodec/mpegaudioenc_template.c b/libavcodec/mpegaudioenc_template.c index 1df3cc704a..1ffd31f7cb 100644 --- a/libavcodec/mpegaudioenc_template.c +++ b/libavcodec/mpegaudioenc_template.c @@ -95,9 +95,9 @@ static av_cold int MPA_encode_init(AVCodecContext *avctx) /* encoding freq */ s->lsf = 0; for(i=0;i<3;i++) { - if (avpriv_mpa_freq_tab[i] == freq) + if (ff_mpa_freq_tab[i] == freq) break; - if ((avpriv_mpa_freq_tab[i] / 2) == freq) { + if ((ff_mpa_freq_tab[i] / 2) == freq) { s->lsf = 1; break; } @@ -110,12 +110,12 @@ static av_cold int MPA_encode_init(AVCodecContext *avctx) /* encoding bitrate & frequency */ for(i=1;i<15;i++) { - if (avpriv_mpa_bitrate_tab[s->lsf][1][i] == bitrate) + if (ff_mpa_bitrate_tab[s->lsf][1][i] == bitrate) break; } if (i == 15 && !avctx->bit_rate) { i = 14; - bitrate = avpriv_mpa_bitrate_tab[s->lsf][1][i]; + bitrate = ff_mpa_bitrate_tab[s->lsf][1][i]; avctx->bit_rate = bitrate * 1000; } if (i == 15){ diff --git a/libavcodec/mpegaudiotabs.c b/libavcodec/mpegaudiotabs.c new file mode 100644 index 0000000000..eaa380c808 --- /dev/null +++ b/libavcodec/mpegaudiotabs.c @@ -0,0 +1,22 @@ +/* + * MPEG Audio common tables + * copyright (c) 2002 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 "mpegaudiotabs.h" diff --git a/libavcodec/mpegaudiotabs.h b/libavcodec/mpegaudiotabs.h new file mode 100644 index 0000000000..671b83848d --- /dev/null +++ b/libavcodec/mpegaudiotabs.h @@ -0,0 +1,39 @@ +/* + * MPEG Audio common tables + * copyright (c) 2002 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_MPEGAUDIOTABS_H +#define AVCODEC_MPEGAUDIOTABS_H + +#include + +const uint16_t ff_mpa_bitrate_tab[2][3][15] = { + { { 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448 }, + { 0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384 }, + { 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 } }, + { { 0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256 }, + { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 }, + { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 } + } +}; + +const uint16_t ff_mpa_freq_tab[3] = { 44100, 48000, 32000 }; + +#endif diff --git a/libavformat/Makefile b/libavformat/Makefile index c89e413dda..6e93d082d9 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -678,11 +678,14 @@ OBJS-$(CONFIG_LIBZMQ_PROTOCOL) += libzmq.o # Objects duplicated from other libraries for shared builds SHLIBOBJS += log2_tab.o +SHLIBOBJS-$(CONFIG_ISO_MEDIA) += mpegaudiotabs.o 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_MP3_MUXER) += mpegaudiotabs.o SHLIBOBJS-$(CONFIG_MXF_MUXER) += golomb_tab.o +SHLIBOBJS-$(CONFIG_NUT_MUXER) += mpegaudiotabs.o SHLIBOBJS-$(CONFIG_RTPDEC) += jpegtables.o SHLIBOBJS-$(CONFIG_RTP_MUXER) += golomb_tab.o jpegtables.o \ mpeg4audio_sample_rates.o diff --git a/libavformat/isom.c b/libavformat/isom.c index 300ba927c2..015c82e1bb 100644 --- a/libavformat/isom.c +++ b/libavformat/isom.c @@ -362,7 +362,7 @@ int ff_mp4_read_dec_config_descr(AVFormatContext *fc, AVStream *st, AVIOContext return ret; st->codecpar->channels = cfg.channels; if (cfg.object_type == 29 && cfg.sampling_index < 3) // old mp3on4 - st->codecpar->sample_rate = avpriv_mpa_freq_tab[cfg.sampling_index]; + st->codecpar->sample_rate = ff_mpa_freq_tab[cfg.sampling_index]; else if (cfg.ext_sample_rate) st->codecpar->sample_rate = cfg.ext_sample_rate; else diff --git a/libavformat/mp3enc.c b/libavformat/mp3enc.c index e4b2a65b07..71e96a8651 100644 --- a/libavformat/mp3enc.c +++ b/libavformat/mp3enc.c @@ -159,8 +159,8 @@ static int mp3_write_xing(AVFormatContext *s) if (!(s->pb->seekable & AVIO_SEEKABLE_NORMAL) || !mp3->write_xing) return 0; - for (i = 0; i < FF_ARRAY_ELEMS(avpriv_mpa_freq_tab); i++) { - const uint16_t base_freq = avpriv_mpa_freq_tab[i]; + for (i = 0; i < FF_ARRAY_ELEMS(ff_mpa_freq_tab); i++) { + const uint16_t base_freq = ff_mpa_freq_tab[i]; if (par->sample_rate == base_freq) ver = 0x3; // MPEG 1 else if (par->sample_rate == base_freq / 2) ver = 0x2; // MPEG 2 @@ -170,7 +170,7 @@ static int mp3_write_xing(AVFormatContext *s) srate_idx = i; break; } - if (i == FF_ARRAY_ELEMS(avpriv_mpa_freq_tab)) { + if (i == FF_ARRAY_ELEMS(ff_mpa_freq_tab)) { av_log(s, AV_LOG_WARNING, "Unsupported sample rate, not writing Xing header.\n"); return -1; } @@ -190,7 +190,7 @@ static int mp3_write_xing(AVFormatContext *s) header |= channels << 6; for (bitrate_idx = 1; bitrate_idx < 15; bitrate_idx++) { - int bit_rate = 1000 * avpriv_mpa_bitrate_tab[ver != 3][3 - 1][bitrate_idx]; + int bit_rate = 1000 * ff_mpa_bitrate_tab[ver != 3][3 - 1][bitrate_idx]; int error = FFABS(bit_rate - par->bit_rate); if (error < best_bitrate_error) { diff --git a/libavformat/mpegaudiotabs.c b/libavformat/mpegaudiotabs.c new file mode 100644 index 0000000000..41ac76e21b --- /dev/null +++ b/libavformat/mpegaudiotabs.c @@ -0,0 +1,22 @@ +/* + * MPEG Audio common tables + * copyright (c) 2002 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/mpegaudiotabs.h" diff --git a/libavformat/nutenc.c b/libavformat/nutenc.c index 7977980935..585ce953ca 100644 --- a/libavformat/nutenc.c +++ b/libavformat/nutenc.c @@ -70,11 +70,11 @@ static int find_expected_header(AVCodecParameters *p, int size, int key_frame, else if (sample_rate < (44100 + 48000) / 2) sample_rate_index = 0; else sample_rate_index = 1; - sample_rate = avpriv_mpa_freq_tab[sample_rate_index] >> (lsf + mpeg25); + sample_rate = ff_mpa_freq_tab[sample_rate_index] >> (lsf + mpeg25); for (bitrate_index = 2; bitrate_index < 30; bitrate_index++) { frame_size = - avpriv_mpa_bitrate_tab[lsf][layer - 1][bitrate_index >> 1]; + ff_mpa_bitrate_tab[lsf][layer - 1][bitrate_index >> 1]; frame_size = (frame_size * 144000) / (sample_rate << lsf) + (bitrate_index & 1);