Pinging the patch.
I've merged the fate test case patch into the functionality one, and rebased 
onto the current master.
Here are the two sample files required by the FATE test:
https://0x0.st/Xaw2.aea/boxboy333_house_music_multitrack.aea
https://0x0.st/Xaw_.pcm/boxboy333_house_music_multitrack.pcmPlease let me know 
if I need to provide anything else.
From 9866e0ccea148f24a8cc4c3e33176c48d2366ffb Mon Sep 17 00:00:00 2001
From: asivery <asiv...@protonmail.com>
Date: Sun, 29 Sep 2024 13:27:41 +0200
Subject: [PATCH] avformat/aeadec, avcodec/atrac1: Fix 8 and 4-channel ATRAC1
 support

---
 libavcodec/atrac1.c  | 12 ++++++------
 libavformat/aeadec.c |  2 +-
 tests/fate/atrac.mak |  4 ++++
 3 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/libavcodec/atrac1.c b/libavcodec/atrac1.c
index cdcc7a669e..448bdfc7e9 100644
--- a/libavcodec/atrac1.c
+++ b/libavcodec/atrac1.c
@@ -49,7 +49,7 @@
 #define AT1_SU_SAMPLES   512                ///< number of samples in a sound unit
 #define AT1_FRAME_SIZE   AT1_SU_SIZE * 2
 #define AT1_SU_MAX_BITS  AT1_SU_SIZE * 8
-#define AT1_MAX_CHANNELS 2
+#define AT1_MAX_CHANNELS 8
 
 #define AT1_QMF_BANDS    3
 #define IDX_LOW_BAND     0
@@ -339,7 +339,7 @@ static av_cold int atrac1_decode_init(AVCodecContext *avctx)
     AVFloatDSPContext *fdsp;
     int channels = avctx->ch_layout.nb_channels;
     float scale = -1.0 / (1 << 15);
-    int ret;
+    int ret, ch;
 
     avctx->sample_fmt = AV_SAMPLE_FMT_FLTP;
 
@@ -380,10 +380,10 @@ static av_cold int atrac1_decode_init(AVCodecContext *avctx)
     q->bands[2] = q->high;
 
     /* Prepare the mdct overlap buffers */
-    q->SUs[0].spectrum[0] = q->SUs[0].spec1;
-    q->SUs[0].spectrum[1] = q->SUs[0].spec2;
-    q->SUs[1].spectrum[0] = q->SUs[1].spec1;
-    q->SUs[1].spectrum[1] = q->SUs[1].spec2;
+    for (ch = 0; ch < AT1_MAX_CHANNELS; ch++) {
+        q->SUs[ch].spectrum[0] = q->SUs[ch].spec1;
+        q->SUs[ch].spectrum[1] = q->SUs[ch].spec2;
+    }
 
     return 0;
 }
diff --git a/libavformat/aeadec.c b/libavformat/aeadec.c
index be18e7b725..0a3d09a89d 100644
--- a/libavformat/aeadec.c
+++ b/libavformat/aeadec.c
@@ -84,7 +84,7 @@ static int aea_read_header(AVFormatContext *s)
     st->codecpar->sample_rate    = 44100;
     st->codecpar->bit_rate       = 146000 * channels;
 
-    if (channels != 1 && channels != 2) {
+    if (channels < 1 || channels > 8) {
         av_log(s, AV_LOG_ERROR, "Channels %d not supported!\n", channels);
         return AVERROR_INVALIDDATA;
     }
diff --git a/tests/fate/atrac.mak b/tests/fate/atrac.mak
index 592d1819df..d19da8d661 100644
--- a/tests/fate/atrac.mak
+++ b/tests/fate/atrac.mak
@@ -7,6 +7,10 @@ fate-atrac1-2: CMD = pcm -i $(TARGET_SAMPLES)/atrac1/chirp_tone_10-16000.aea
 fate-atrac1-2: REF = $(SAMPLES)/atrac1/chirp_tone_10-16000.pcm
 fate-atrac1-2: FUZZ = 61
 
+FATE_ATRAC1 += fate-atrac1-3
+fate-atrac1-3: CMD = pcm -i $(TARGET_SAMPLES)/atrac1/boxboy333_house_music_multitrack.aea
+fate-atrac1-3: REF = $(SAMPLES)/atrac1/boxboy333_house_music_multitrack.pcm
+
 FATE_ATRAC1-$(call DEMDEC, AEA, ATRAC1, ARESAMPLE_FILTER) += $(FATE_ATRAC1)
 
 FATE_ATRAC3 += fate-atrac3-1
-- 
2.46.2

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to