]> git.nihav.org Git - nihav.git/commitdiff
binkaud: fix monaural RDFT decoding (and add a test while at it) master
authorKostya Shishkov <kostya.shishkov@gmail.com>
Tue, 2 Jul 2024 16:26:22 +0000 (18:26 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Tue, 2 Jul 2024 16:26:58 +0000 (18:26 +0200)
nihav-rad/src/codecs/binkaud.rs

index b424c0ee479ef248c8689b51d82344504b6c6a15..b56b6d40c80b0c904d6610117bbfe1153abc955c 100644 (file)
@@ -180,7 +180,7 @@ impl NADecoder for BinkAudioDecoder {
                 self.version_b = false;
             }
             let mut frame_bits = if srate < 22050 { 9 } else if srate < 44100 { 10 } else { 11 };
-            if !self.use_dct && !self.version_b {
+            if !self.use_dct && !self.version_b && channels > 1 {
                 frame_bits += 1;
             }
             self.len = 1 << frame_bits;
@@ -291,7 +291,18 @@ mod test {
         test_decode_audio("bink", file, None, None/*Some("bink")*/, &dmx_reg, &dec_reg);
     }
     #[test]
-    fn test_bink_audio_rdft() {
+    fn test_bink_audio_rdft_mono() {
+        let mut dmx_reg = RegisteredDemuxers::new();
+        rad_register_all_demuxers(&mut dmx_reg);
+        let mut dec_reg = RegisteredDecoders::new();
+        rad_register_all_decoders(&mut dec_reg);
+
+        // sample from Star Trek: Armada demo
+        let file = "assets/RAD/F1DEM1.bik";
+        test_decode_audio("bink", file, None, None/*Some("bink")*/, &dmx_reg, &dec_reg);
+    }
+    #[test]
+    fn test_bink_audio_rdft_stereo() {
         let mut dmx_reg = RegisteredDemuxers::new();
         rad_register_all_demuxers(&mut dmx_reg);
         let mut dec_reg = RegisteredDecoders::new();