This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit fda85d16e0800726d514c93addf655437c4f8256
Author:     Romain Beauxis <[email protected]>
AuthorDate: Wed Sep 16 15:02:03 2026 -0500
Commit:     James Almer <[email protected]>
CommitDate: Sat Sep 19 13:40:52 2026 +0000

    avcodec/mpegaudiodecheader: add avpriv_mpegaudio_decode_header2()
    
    MPADecodeHeader is allocated by callers in other libraries, on the stack
    among other places, so fields cannot be added to it. Add MPADecodeHeader2,
    which holds every field of the header and which libavcodec itself
    allocates, along with a packer turning it back into header bits.
    
    A test program walks the frames of a file, checks that every header
    encodes back to its original bits and prints the header fields.
---
 libavcodec/Makefile                            |   1 +
 libavcodec/mpegaudiodecheader.c                |  64 +++++++++++--
 libavcodec/mpegaudiodecheader.h                |  62 ++++++++++++
 libavcodec/tests/.gitignore                    |   1 +
 libavcodec/tests/mpegaudiodecheader.c          | 127 +++++++++++++++++++++++++
 libavcodec/version.h                           |   2 +-
 tests/fate/mp3.mak                             |  38 ++++++++
 tests/ref/fate/mpegaudiodecheader-bitrates     |  15 +++
 tests/ref/fate/mpegaudiodecheader-hecommon     |  10 ++
 tests/ref/fate/mpegaudiodecheader-joint-stereo |   2 +
 tests/ref/fate/mpegaudiodecheader-libmp3lame   |   3 +
 tests/ref/fate/mpegaudiodecheader-mp2          |   2 +
 tests/ref/fate/mpegaudiodecheader-mp3-remux    |   3 +
 tests/ref/fate/mpegaudiodecheader-mpeg25       |   3 +
 tests/ref/fate/mpegaudiodecheader-xing         |   3 +
 15 files changed, 328 insertions(+), 8 deletions(-)

diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index a5c71995ea..e2c60e9051 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -1393,6 +1393,7 @@ TESTPROGS-$(CONFIG_GOLOMB)                += golomb
 TESTPROGS-$(CONFIG_IDCTDSP)               += dct
 TESTPROGS-$(CONFIG_DXV_ENCODER)           += hashtable
 TESTPROGS-$(CONFIG_MJPEG_ENCODER)         += mjpegenc_huffman
+TESTPROGS-$(CONFIG_MPEGAUDIOHEADER)       += mpegaudiodecheader
 TESTPROGS-$(CONFIG_MPEGVIDEO)             += mpeg12framerate
 TESTPROGS-$(CONFIG_H264_METADATA_BSF)     += h264_levels
 TESTPROGS-$(CONFIG_HEVC_METADATA_BSF)     += h265_levels
diff --git a/libavcodec/mpegaudiodecheader.c b/libavcodec/mpegaudiodecheader.c
index ef63befbf4..b8bf0ae530 100644
--- a/libavcodec/mpegaudiodecheader.c
+++ b/libavcodec/mpegaudiodecheader.c
@@ -24,14 +24,16 @@
  * MPEG Audio header decoder.
  */
 
+#include "libavutil/error.h"
 #include "libavutil/macros.h"
+#include "libavutil/mem.h"
 
 #include "mpegaudio.h"
 #include "mpegaudiodata.h"
 #include "mpegaudiodecheader.h"
 
 
-int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header)
+int ff_mpegaudio_decode_header(MPADecodeHeader2 *s, uint32_t header)
 {
     int sample_rate, frame_size, mpeg25, padding;
     int sample_rate_index, bitrate_index;
@@ -62,12 +64,14 @@ int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, 
uint32_t header)
 
     bitrate_index = (header >> 12) & 0xf;
     padding = (header >> 9) & 1;
-    //extension = (header >> 8) & 1;
+    s->bitrate_index = bitrate_index;
+    s->padding = padding;
+    s->private_bit = (header >> 8) & 1;
     s->mode = (header >> 6) & 3;
     s->mode_ext = (header >> 4) & 3;
-    //copyright = (header >> 3) & 1;
-    //original = (header >> 2) & 1;
-    //emphasis = header & 3;
+    s->copyright = (header >> 3) & 1;
+    s->original = (header >> 2) & 1;
+    s->emphasis = header & 3;
 
     if (s->mode == MPA_MONO)
         s->nb_channels = 1;
@@ -117,11 +121,57 @@ int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, 
uint32_t header)
     return 0;
 }
 
+int avpriv_mpegaudio_decode_header2(MPADecodeHeader2 **phdr, uint32_t header)
+{
+    MPADecodeHeader2 *hdr = *phdr;
+    int ret;
+
+    if (!hdr) {
+        ret = ff_mpa_check_header(header);
+        if (ret < 0)
+            return ret;
+        hdr = av_mallocz(sizeof(*hdr));
+        if (!hdr)
+            return AVERROR(ENOMEM);
+    }
+
+    ret = ff_mpegaudio_decode_header(hdr, header);
+    if (ret < 0)
+        return ret;
+
+    *phdr = hdr;
+    return ret;
+}
+
+int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header)
+{
+    MPADecodeHeader2 hdr = { 0 };
+    int ret = ff_mpegaudio_decode_header(&hdr, header);
+
+    if (ret < 0)
+        return ret;
+
+    /* callers in other libraries allocate the smaller structure, so only
+       its fields may be written */
+    s->frame_size        = hdr.frame_size;
+    s->error_protection  = hdr.error_protection;
+    s->layer             = hdr.layer;
+    s->sample_rate       = hdr.sample_rate;
+    s->sample_rate_index = hdr.sample_rate_index;
+    s->bit_rate          = hdr.bit_rate;
+    s->nb_channels       = hdr.nb_channels;
+    s->mode              = hdr.mode;
+    s->mode_ext          = hdr.mode_ext;
+    s->lsf               = hdr.lsf;
+
+    return ret;
+}
+
 int ff_mpa_decode_header(uint32_t head, int *sample_rate, int *channels, int 
*frame_size, int *bit_rate, enum AVCodecID *codec_id)
 {
-    MPADecodeHeader s1, *s = &s1;
+    MPADecodeHeader2 s1, *s = &s1;
 
-    if (avpriv_mpegaudio_decode_header(s, head) != 0) {
+    if (ff_mpegaudio_decode_header(s, head) != 0) {
         return -1;
     }
 
diff --git a/libavcodec/mpegaudiodecheader.h b/libavcodec/mpegaudiodecheader.h
index ed5d1f3b33..f45dfbdc8f 100644
--- a/libavcodec/mpegaudiodecheader.h
+++ b/libavcodec/mpegaudiodecheader.h
@@ -28,7 +28,11 @@
 #define AVCODEC_MPEGAUDIODECHEADER_H
 
 #include <stdint.h>
+
+#include "libavutil/attributes.h"
+
 #include "codec_id.h"
+#include "version_major.h"
 
 #define MP3_MASK 0xFFFE0CCF
 
@@ -48,11 +52,50 @@ typedef struct MPADecodeHeader {
   MPA_DECODE_HEADER
 } MPADecodeHeader;
 
+/**
+ * Same as MPADecodeHeader, plus the header fields that carry no decoding
+ * information. Its size is not part of the libavcodec ABI: it is only ever
+ * allocated by avpriv_mpegaudio_decode_header2().
+ */
+typedef struct MPADecodeHeader2 {
+    int frame_size;
+    int error_protection;
+    int layer;
+    int sample_rate;
+    int sample_rate_index; /* between 0 and 8 */
+    int bit_rate;
+    int nb_channels;
+    int mode;
+    int mode_ext;
+    int lsf;
+    int copyright;
+    int original;
+    int emphasis;
+    int bitrate_index;
+    int padding;
+    int private_bit;
+} MPADecodeHeader2;
+
 /* header decoding. MUST check the header before because no
    consistency check is done there. Return 1 if free format found and
    that the frame size must be computed externally */
 int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header);
 
+/**
+ * Decode an MPEG audio header into *phdr, which is allocated if it is NULL.
+ *
+ * The header must have been checked beforehand, as no consistency check is
+ * done here.
+ *
+ * @return 1 if free format was found and the frame size must be computed
+ *         externally, 0 on success, a negative AVERROR code on failure
+ */
+int avpriv_mpegaudio_decode_header2(MPADecodeHeader2 **phdr, uint32_t header);
+
+/* same as avpriv_mpegaudio_decode_header2(), for callers within libavcodec,
+   which are built against this very header and may allocate it themselves */
+int ff_mpegaudio_decode_header(MPADecodeHeader2 *s, uint32_t header);
+
 /* useful helper to get MPEG audio stream info. Return -1 if error in
    header, otherwise the coded frame size in bytes */
 int ff_mpa_decode_header(uint32_t head, int *sample_rate,
@@ -78,4 +121,23 @@ static inline int ff_mpa_check_header(uint32_t header){
     return 0;
 }
 
+static inline uint32_t ff_mpa_encode_header(const MPADecodeHeader2 *s)
+{
+    int version = s->sample_rate_index < 6 ? 3 - s->sample_rate_index / 3 : 0;
+
+    return 0xffeU                   << 20 |
+           version                  << 19 |
+           (4 - s->layer)           << 17 |
+           !s->error_protection     << 16 |
+           s->bitrate_index         << 12 |
+           s->sample_rate_index % 3 << 10 |
+           s->padding               <<  9 |
+           s->private_bit           <<  8 |
+           s->mode                  <<  6 |
+           s->mode_ext              <<  4 |
+           s->copyright             <<  3 |
+           s->original              <<  2 |
+           s->emphasis;
+}
+
 #endif /* AVCODEC_MPEGAUDIODECHEADER_H */
diff --git a/libavcodec/tests/.gitignore b/libavcodec/tests/.gitignore
index 4977c63e00..8e4f26c2ad 100644
--- a/libavcodec/tests/.gitignore
+++ b/libavcodec/tests/.gitignore
@@ -18,5 +18,6 @@
 /mathops
 /mjpegenc_huffman
 /mpeg12framerate
+/mpegaudiodecheader
 /rangecoder
 /snowenc
diff --git a/libavcodec/tests/mpegaudiodecheader.c 
b/libavcodec/tests/mpegaudiodecheader.c
new file mode 100644
index 0000000000..fe718cc855
--- /dev/null
+++ b/libavcodec/tests/mpegaudiodecheader.c
@@ -0,0 +1,127 @@
+/*
+ * 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
+ */
+
+/**
+ * Walks the MPEG audio frames of a file, checks that every frame header
+ * encodes back to its original bits, and prints each distinct header.
+ */
+
+#include <inttypes.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "libavutil/file.h"
+#include "libavutil/mem.h"
+#include "libavutil/intreadwrite.h"
+
+#include "libavcodec/mpegaudiodecheader.h"
+
+#define PADDING_BIT (1U << 9)
+
+static size_t id3v2_size(const uint8_t *buf, size_t size)
+{
+    if (size < 10 || memcmp(buf, "ID3", 3))
+        return 0;
+
+    return 10 + (buf[5] & 0x10 ? 10 : 0) +
+           ((buf[6] & 0x7f) << 21 | (buf[7] & 0x7f) << 14 |
+            (buf[8] & 0x7f) <<  7 | (buf[9] & 0x7f));
+}
+
+static void print_header(size_t offset, unsigned frames, uint32_t bits,
+                         const MPADecodeHeader2 *header)
+{
+    printf("offset=%zu frames=%u header=%08"PRIX32" layer=%d sample_rate=%d "
+           "bit_rate=%d crc=%d mode=%d mode_ext=%d copyright=%d original=%d "
+           "emphasis=%d private_bit=%d\n",
+           offset, frames, bits, header->layer, header->sample_rate,
+           header->bit_rate, header->error_protection, header->mode,
+           header->mode_ext, header->copyright, header->original,
+           header->emphasis, header->private_bit);
+}
+
+int main(int argc, char *argv[])
+{
+    MPADecodeHeader2 run_header, *header = NULL;
+    uint8_t *buf;
+    size_t size, pos, run_offset = 0;
+    uint32_t run_bits = 0;
+    unsigned run_frames = 0, total_frames = 0;
+    int ret = 1;
+
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s <file>\n", argv[0]);
+        return 1;
+    }
+
+    if (av_file_map(argv[1], &buf, &size, 0, NULL) < 0) {
+        fprintf(stderr, "Failed to open '%s'\n", argv[1]);
+        return 1;
+    }
+
+    pos = id3v2_size(buf, size);
+    while (pos + 4 <= size) {
+        uint32_t bits = AV_RB32(buf + pos);
+        uint32_t encoded;
+        int decoded;
+
+        if (ff_mpa_check_header(bits) < 0) {
+            pos++;
+            continue;
+        }
+
+        if (header)
+            memset(header, 0, sizeof(*header));
+
+        decoded = avpriv_mpegaudio_decode_header2(&header, bits);
+        if (decoded < 0)
+            goto end;
+
+        encoded = ff_mpa_encode_header(header);
+        if (encoded != bits) {
+            printf("offset=%zu header=%08"PRIX32" encoded back as 
%08"PRIX32"\n",
+                   pos, bits, encoded);
+            goto end;
+        }
+
+        if (run_frames && (bits & ~PADDING_BIT) != (run_bits & ~PADDING_BIT)) {
+            print_header(run_offset, run_frames, run_bits, &run_header);
+            run_frames = 0;
+        }
+        if (!run_frames) {
+            run_offset = pos;
+            run_bits   = bits;
+            run_header = *header;
+        }
+        run_frames++;
+        total_frames++;
+
+        pos += decoded == 0 ? header->frame_size : 1;
+    }
+    if (run_frames)
+        print_header(run_offset, run_frames, run_bits, &run_header);
+
+    printf("frames=%u\n", total_frames);
+    ret = !total_frames;
+
+end:
+    av_freep(&header);
+    av_file_unmap(buf, size);
+    return ret;
+}
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 755c90bbc1..7531c6c42a 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@
 
 #include "version_major.h"
 
-#define LIBAVCODEC_VERSION_MINOR  13
+#define LIBAVCODEC_VERSION_MINOR  14
 #define LIBAVCODEC_VERSION_MICRO 100
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
diff --git a/tests/fate/mp3.mak b/tests/fate/mp3.mak
index 145ce72a6e..edce1f98e6 100644
--- a/tests/fate/mp3.mak
+++ b/tests/fate/mp3.mak
@@ -40,3 +40,41 @@ FATE_MP3-$(call DEMDEC, MP3, MP3FLOAT, ARESAMPLE_FILTER 
PIPE_PROTOCOL) += $(FATE
 
 FATE_SAMPLES_AVCONV += $(FATE_MP3-yes)
 fate-mp3: $(FATE_MP3-yes)
+
+MPA_HEADER_TESTBIN = libavcodec/tests/mpegaudiodecheader$(EXESUF)
+
+FATE_MPA_HEADER-$(CONFIG_MPEGAUDIOHEADER) += fate-mpegaudiodecheader-hecommon
+fate-mpegaudiodecheader-hecommon: $(MPA_HEADER_TESTBIN)
+fate-mpegaudiodecheader-hecommon: CMD = run "$(MPA_HEADER_TESTBIN)" 
"$(TARGET_SAMPLES)/mp3-conformance/hecommon.bit"
+
+FATE_MPA_HEADER-$(CONFIG_MPEGAUDIOHEADER) += fate-mpegaudiodecheader-bitrates
+fate-mpegaudiodecheader-bitrates: $(MPA_HEADER_TESTBIN)
+fate-mpegaudiodecheader-bitrates: CMD = run "$(MPA_HEADER_TESTBIN)" 
"$(TARGET_SAMPLES)/mp3-conformance/he_32khz.bit"
+
+FATE_MPA_HEADER-$(CONFIG_MPEGAUDIOHEADER) += fate-mpegaudiodecheader-mpeg25
+fate-mpegaudiodecheader-mpeg25: $(MPA_HEADER_TESTBIN)
+fate-mpegaudiodecheader-mpeg25: CMD = run "$(MPA_HEADER_TESTBIN)" 
"$(TARGET_SAMPLES)/id3v2/lang_xxx.mp3"
+
+FATE_MPA_HEADER-$(CONFIG_MPEGAUDIOHEADER) += 
fate-mpegaudiodecheader-joint-stereo
+fate-mpegaudiodecheader-joint-stereo: $(MPA_HEADER_TESTBIN)
+fate-mpegaudiodecheader-joint-stereo: CMD = run "$(MPA_HEADER_TESTBIN)" 
"$(TARGET_SAMPLES)/mp3-conformance/sin1k0db.bit"
+
+FATE_MPA_HEADER-$(CONFIG_MPEGAUDIOHEADER) += fate-mpegaudiodecheader-xing
+fate-mpegaudiodecheader-xing: $(MPA_HEADER_TESTBIN)
+fate-mpegaudiodecheader-xing: CMD = run "$(MPA_HEADER_TESTBIN)" 
"$(TARGET_SAMPLES)/exif/embedded_small.mp3"
+
+FATE_MPA_HEADER-$(call ALLYES, MPEGAUDIOHEADER MP3_DEMUXER MP3FLOAT_DECODER 
ARESAMPLE_FILTER MP2_ENCODER MP2_MUXER FILE_PROTOCOL) += 
fate-mpegaudiodecheader-mp2
+fate-mpegaudiodecheader-mp2: $(MPA_HEADER_TESTBIN)
+fate-mpegaudiodecheader-mp2: CMD = run_with_temp "$(FFMPEG) -nostdin 
-hide_banner -loglevel error -i $(TARGET_SAMPLES)/mp3-conformance/compl.bit -ar 
24000 -c:a mp2 -fflags +bitexact -f mp2 -y" "$(MPA_HEADER_TESTBIN)" mp2
+
+FATE_MPA_HEADER-$(call REMUX, MP3, MPEGAUDIOHEADER) += 
fate-mpegaudiodecheader-mp3-remux
+fate-mpegaudiodecheader-mp3-remux: $(MPA_HEADER_TESTBIN)
+fate-mpegaudiodecheader-mp3-remux: CMD = run_with_temp "$(FFMPEG) -nostdin 
-hide_banner -loglevel error -i $(TARGET_SAMPLES)/exif/embedded_small.mp3 -map 
0:a -c copy -fflags +bitexact -f mp3 -y" "$(MPA_HEADER_TESTBIN)" mp3
+
+FATE_MPA_HEADER_LAME-$(call ENCDEC, LIBMP3LAME PCM_S16LE, MP3 WAV, 
MPEGAUDIOHEADER PAN_FILTER ARESAMPLE_FILTER) += 
fate-mpegaudiodecheader-libmp3lame
+fate-mpegaudiodecheader-libmp3lame: tests/data/asynth-44100-2.wav 
$(MPA_HEADER_TESTBIN)
+fate-mpegaudiodecheader-libmp3lame: CMD = run_with_temp "$(FFMPEG) -nostdin 
-hide_banner -loglevel error -i $(TARGET_PATH)/tests/data/asynth-44100-2.wav 
-af pan=stereo|c0=c0|c1=c0 -c:a libmp3lame -b:a 128k -fflags +bitexact -f mp3 
-y" "$(MPA_HEADER_TESTBIN)" mp3
+
+FATE_SAMPLES_FFMPEG += $(FATE_MPA_HEADER-yes)
+FATE_FFMPEG += $(FATE_MPA_HEADER_LAME-yes)
+fate-mpegaudiodecheader: $(FATE_MPA_HEADER-yes) $(FATE_MPA_HEADER_LAME-yes)
diff --git a/tests/ref/fate/mpegaudiodecheader-bitrates 
b/tests/ref/fate/mpegaudiodecheader-bitrates
new file mode 100644
index 0000000000..2b41fc573b
--- /dev/null
+++ b/tests/ref/fate/mpegaudiodecheader-bitrates
@@ -0,0 +1,15 @@
+offset=0 frames=10 header=FFFB18C0 layer=3 sample_rate=32000 bit_rate=32000 
crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 private_bit=0
+offset=1440 frames=10 header=FFFB28C0 layer=3 sample_rate=32000 bit_rate=40000 
crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 private_bit=0
+offset=3240 frames=10 header=FFFB38C0 layer=3 sample_rate=32000 bit_rate=48000 
crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 private_bit=0
+offset=5400 frames=10 header=FFFB48C0 layer=3 sample_rate=32000 bit_rate=56000 
crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 private_bit=0
+offset=7920 frames=10 header=FFFB58C0 layer=3 sample_rate=32000 bit_rate=64000 
crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 private_bit=0
+offset=10800 frames=10 header=FFFB68C0 layer=3 sample_rate=32000 
bit_rate=80000 crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 
private_bit=0
+offset=14400 frames=10 header=FFFB78C0 layer=3 sample_rate=32000 
bit_rate=96000 crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 
private_bit=0
+offset=18720 frames=10 header=FFFB88C0 layer=3 sample_rate=32000 
bit_rate=112000 crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 
private_bit=0
+offset=23760 frames=10 header=FFFB98C0 layer=3 sample_rate=32000 
bit_rate=128000 crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 
private_bit=0
+offset=29520 frames=10 header=FFFBA8C0 layer=3 sample_rate=32000 
bit_rate=160000 crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 
private_bit=0
+offset=36720 frames=10 header=FFFBB8C0 layer=3 sample_rate=32000 
bit_rate=192000 crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 
private_bit=0
+offset=45360 frames=10 header=FFFBC8C0 layer=3 sample_rate=32000 
bit_rate=224000 crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 
private_bit=0
+offset=55440 frames=10 header=FFFBD8C0 layer=3 sample_rate=32000 
bit_rate=256000 crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 
private_bit=0
+offset=66960 frames=20 header=FFFBE8C0 layer=3 sample_rate=32000 
bit_rate=320000 crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 
private_bit=0
+frames=150
diff --git a/tests/ref/fate/mpegaudiodecheader-hecommon 
b/tests/ref/fate/mpegaudiodecheader-hecommon
new file mode 100644
index 0000000000..4ea48dced2
--- /dev/null
+++ b/tests/ref/fate/mpegaudiodecheader-hecommon
@@ -0,0 +1,10 @@
+offset=0 frames=5 header=FFFB9000 layer=3 sample_rate=44100 bit_rate=128000 
crc=0 mode=0 mode_ext=0 copyright=0 original=0 emphasis=0 private_bit=0
+offset=2089 frames=1 header=FFFA9200 layer=3 sample_rate=44100 bit_rate=128000 
crc=1 mode=0 mode_ext=0 copyright=0 original=0 emphasis=0 private_bit=0
+offset=2507 frames=1 header=FFFA9300 layer=3 sample_rate=44100 bit_rate=128000 
crc=1 mode=0 mode_ext=0 copyright=0 original=0 emphasis=0 private_bit=1
+offset=2925 frames=1 header=FFFA9208 layer=3 sample_rate=44100 bit_rate=128000 
crc=1 mode=0 mode_ext=0 copyright=1 original=0 emphasis=0 private_bit=0
+offset=3343 frames=1 header=FFFA9204 layer=3 sample_rate=44100 bit_rate=128000 
crc=1 mode=0 mode_ext=0 copyright=0 original=1 emphasis=0 private_bit=0
+offset=3761 frames=1 header=FFFA9201 layer=3 sample_rate=44100 bit_rate=128000 
crc=1 mode=0 mode_ext=0 copyright=0 original=0 emphasis=1 private_bit=0
+offset=4179 frames=1 header=FFFA9202 layer=3 sample_rate=44100 bit_rate=128000 
crc=1 mode=0 mode_ext=0 copyright=0 original=0 emphasis=2 private_bit=0
+offset=4597 frames=1 header=FFFA9203 layer=3 sample_rate=44100 bit_rate=128000 
crc=1 mode=0 mode_ext=0 copyright=0 original=0 emphasis=3 private_bit=0
+offset=5015 frames=18 header=FFFA9200 layer=3 sample_rate=44100 
bit_rate=128000 crc=1 mode=0 mode_ext=0 copyright=0 original=0 emphasis=0 
private_bit=0
+frames=30
diff --git a/tests/ref/fate/mpegaudiodecheader-joint-stereo 
b/tests/ref/fate/mpegaudiodecheader-joint-stereo
new file mode 100644
index 0000000000..b813cad988
--- /dev/null
+++ b/tests/ref/fate/mpegaudiodecheader-joint-stereo
@@ -0,0 +1,2 @@
+offset=215 frames=318 header=FFFB9260 layer=3 sample_rate=44100 
bit_rate=128000 crc=0 mode=1 mode_ext=2 copyright=0 original=0 emphasis=0 
private_bit=0
+frames=318
diff --git a/tests/ref/fate/mpegaudiodecheader-libmp3lame 
b/tests/ref/fate/mpegaudiodecheader-libmp3lame
new file mode 100644
index 0000000000..3955a43426
--- /dev/null
+++ b/tests/ref/fate/mpegaudiodecheader-libmp3lame
@@ -0,0 +1,3 @@
+offset=20 frames=1 header=FFFB9000 layer=3 sample_rate=44100 bit_rate=128000 
crc=0 mode=0 mode_ext=0 copyright=0 original=0 emphasis=0 private_bit=0
+offset=437 frames=231 header=FFFB9064 layer=3 sample_rate=44100 
bit_rate=128000 crc=0 mode=1 mode_ext=2 copyright=0 original=1 emphasis=0 
private_bit=0
+frames=232
diff --git a/tests/ref/fate/mpegaudiodecheader-mp2 
b/tests/ref/fate/mpegaudiodecheader-mp2
new file mode 100644
index 0000000000..df9e9ff8d7
--- /dev/null
+++ b/tests/ref/fate/mpegaudiodecheader-mp2
@@ -0,0 +1,2 @@
+offset=0 frames=109 header=FFF5E4C4 layer=2 sample_rate=24000 bit_rate=160000 
crc=0 mode=3 mode_ext=0 copyright=0 original=1 emphasis=0 private_bit=0
+frames=109
diff --git a/tests/ref/fate/mpegaudiodecheader-mp3-remux 
b/tests/ref/fate/mpegaudiodecheader-mp3-remux
new file mode 100644
index 0000000000..c5d4d5cdd7
--- /dev/null
+++ b/tests/ref/fate/mpegaudiodecheader-mp3-remux
@@ -0,0 +1,3 @@
+offset=301 frames=1 header=FFFB9000 layer=3 sample_rate=44100 bit_rate=128000 
crc=0 mode=0 mode_ext=0 copyright=0 original=0 emphasis=0 private_bit=0
+offset=718 frames=21 header=FFFB9064 layer=3 sample_rate=44100 bit_rate=128000 
crc=0 mode=1 mode_ext=2 copyright=0 original=1 emphasis=0 private_bit=0
+frames=22
diff --git a/tests/ref/fate/mpegaudiodecheader-mpeg25 
b/tests/ref/fate/mpegaudiodecheader-mpeg25
new file mode 100644
index 0000000000..c3a11dcd37
--- /dev/null
+++ b/tests/ref/fate/mpegaudiodecheader-mpeg25
@@ -0,0 +1,3 @@
+offset=1062 frames=1 header=FFE338C0 layer=3 sample_rate=8000 bit_rate=24000 
crc=0 mode=3 mode_ext=0 copyright=0 original=0 emphasis=0 private_bit=0
+offset=1278 frames=4 header=FFE318C4 layer=3 sample_rate=8000 bit_rate=8000 
crc=0 mode=3 mode_ext=0 copyright=0 original=1 emphasis=0 private_bit=0
+frames=5
diff --git a/tests/ref/fate/mpegaudiodecheader-xing 
b/tests/ref/fate/mpegaudiodecheader-xing
new file mode 100644
index 0000000000..fbaafedc48
--- /dev/null
+++ b/tests/ref/fate/mpegaudiodecheader-xing
@@ -0,0 +1,3 @@
+offset=16110 frames=1 header=FFFB4000 layer=3 sample_rate=44100 bit_rate=56000 
crc=0 mode=0 mode_ext=0 copyright=0 original=0 emphasis=0 private_bit=0
+offset=16292 frames=21 header=FFFB9064 layer=3 sample_rate=44100 
bit_rate=128000 crc=0 mode=1 mode_ext=2 copyright=0 original=1 emphasis=0 
private_bit=0
+frames=22

-- 
To stop receiving notification emails like this one, please contact
[email protected].
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to