]> git.nihav.org Git - nihav.git/commitdiff
switch some TableCodebookDescReader use cases to closures master
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 9 Nov 2024 17:30:43 +0000 (18:30 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 9 Nov 2024 17:30:43 +0000 (18:30 +0100)
nihav-acorn/src/codecs/movingblockshq.rs
nihav-acorn/src/codecs/supermovingblocks.rs
nihav-duck/src/codecs/on2avc.rs
nihav-duck/src/codecs/vp3.rs
nihav-mpeg/src/codecs/aac/coeff_read.rs
nihav-rad/src/codecs/bink2.rs
nihav-rad/src/codecs/binkvid.rs
nihav-vivo/src/codecs/siren.rs

index ab17ff5575449f344d499640b7810224fee70b9d..178480990150a6770f3e7115de87ccb155e59b97 100644 (file)
@@ -9,13 +9,9 @@ struct DeltaCodebook {
     cb: Codebook<u16>,
 }
 
-fn map_idx(idx: usize) -> u16 {
-    idx as u16
-}
-
 impl Default for DeltaCodebook {
     fn default() -> Self {
-        let mut cr = TableCodebookDescReader::new(&LUMA_CODES, &LUMA_BITS, map_idx);
+        let mut cr = TableCodebookDescReader::new(&LUMA_CODES, &LUMA_BITS, |idx| idx as u16);
         let cb = Codebook::new(&mut cr, CodebookMode::LSB).unwrap();
         Self { cb }
     }
index 8b82e835574e359c5e31f2bce1dc988e9ed0f8ae..9df1ae69f283d9a0b336e7f093005e167f6fd8ab 100644 (file)
@@ -8,13 +8,9 @@ struct DeltaCodebook {
     cb: Codebook<u16>,
 }
 
-fn map_idx(idx: usize) -> u16 {
-    idx as u16
-}
-
 impl Default for DeltaCodebook {
     fn default() -> Self {
-        let mut cr = TableCodebookDescReader::new(&LUMA_CODES, &LUMA_BITS, map_idx);
+        let mut cr = TableCodebookDescReader::new(&LUMA_CODES, &LUMA_BITS, |idx| idx as u16);
         let cb = Codebook::new(&mut cr, CodebookMode::LSB).unwrap();
         Self { cb }
     }
index 6cbf2b3c8ba0d05cabbcc5e242a44a9f6b91a57c..4fabe2b458deb7da24a0f3110ed285155d44df21 100644 (file)
@@ -37,56 +37,39 @@ struct Codebooks {
     spec_cb:        [Codebook<u16>; 15],
 }
 
-fn scale_map(idx: usize) -> i8 { (idx as i8) - 60 }
-fn cb_map1(idx: usize)  -> u16 { AVC_SPEC_CB1_SYMS[idx] }
-fn cb_map2(idx: usize)  -> u16 { AVC_SPEC_CB2_SYMS[idx] }
-fn cb_map3(idx: usize)  -> u16 { AVC_SPEC_CB3_SYMS[idx] }
-fn cb_map4(idx: usize)  -> u16 { AVC_SPEC_CB4_SYMS[idx] }
-fn cb_map5(idx: usize)  -> u16 { AVC_SPEC_CB5_SYMS[idx] }
-fn cb_map6(idx: usize)  -> u16 { AVC_SPEC_CB6_SYMS[idx] }
-fn cb_map7(idx: usize)  -> u16 { AVC_SPEC_CB7_SYMS[idx] }
-fn cb_map8(idx: usize)  -> u16 { AVC_SPEC_CB8_SYMS[idx] }
-fn cb_map9(idx: usize)  -> u16 { AVC_SPEC_CB9_SYMS[idx] }
-fn cb_map10(idx: usize) -> u16 { AVC_SPEC_CB10_SYMS[idx] }
-fn cb_map11(idx: usize) -> u16 { AVC_SPEC_CB11_SYMS[idx] }
-fn cb_map12(idx: usize) -> u16 { AVC_SPEC_CB12_SYMS[idx] }
-fn cb_map13(idx: usize) -> u16 { AVC_SPEC_CB13_SYMS[idx] }
-fn cb_map14(idx: usize) -> u16 { AVC_SPEC_CB14_SYMS[idx] }
-fn cb_map15(idx: usize) -> u16 { AVC_SPEC_CB15_SYMS[idx] }
-
 impl Codebooks {
     fn new() -> Self {
-        let mut coderead = TableCodebookDescReader::new(AVC_SCF_CODEBOOK_CODES, AVC_SCF_CODEBOOK_BITS, scale_map);
+        let mut coderead = TableCodebookDescReader::new(AVC_SCF_CODEBOOK_CODES, AVC_SCF_CODEBOOK_BITS, |idx| (idx as i8) - 60);
         let scale_cb = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB1_CODES, AVC_SPEC_CB1_BITS, cb_map1);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB1_CODES, AVC_SPEC_CB1_BITS, |idx| AVC_SPEC_CB1_SYMS[idx]);
         let cb1 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB2_CODES, AVC_SPEC_CB2_BITS, cb_map2);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB2_CODES, AVC_SPEC_CB2_BITS, |idx| AVC_SPEC_CB2_SYMS[idx]);
         let cb2 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB3_CODES, AVC_SPEC_CB3_BITS, cb_map3);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB3_CODES, AVC_SPEC_CB3_BITS, |idx| AVC_SPEC_CB3_SYMS[idx]);
         let cb3 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB4_CODES, AVC_SPEC_CB4_BITS, cb_map4);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB4_CODES, AVC_SPEC_CB4_BITS, |idx| AVC_SPEC_CB4_SYMS[idx]);
         let cb4 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB5_CODES, AVC_SPEC_CB5_BITS, cb_map5);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB5_CODES, AVC_SPEC_CB5_BITS, |idx| AVC_SPEC_CB5_SYMS[idx]);
         let cb5 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB6_CODES, AVC_SPEC_CB6_BITS, cb_map6);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB6_CODES, AVC_SPEC_CB6_BITS, |idx| AVC_SPEC_CB6_SYMS[idx]);
         let cb6 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB7_CODES, AVC_SPEC_CB7_BITS, cb_map7);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB7_CODES, AVC_SPEC_CB7_BITS, |idx| AVC_SPEC_CB7_SYMS[idx]);
         let cb7 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB8_CODES, AVC_SPEC_CB8_BITS, cb_map8);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB8_CODES, AVC_SPEC_CB8_BITS, |idx| AVC_SPEC_CB8_SYMS[idx]);
         let cb8 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB9_CODES, AVC_SPEC_CB9_BITS, cb_map9);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB9_CODES, AVC_SPEC_CB9_BITS, |idx| AVC_SPEC_CB9_SYMS[idx]);
         let cb9 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB10_CODES, AVC_SPEC_CB10_BITS, cb_map10);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB10_CODES, AVC_SPEC_CB10_BITS, |idx| AVC_SPEC_CB10_SYMS[idx]);
         let cb10 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB11_CODES, AVC_SPEC_CB11_BITS, cb_map11);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB11_CODES, AVC_SPEC_CB11_BITS, |idx| AVC_SPEC_CB11_SYMS[idx]);
         let cb11 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB12_CODES, AVC_SPEC_CB12_BITS, cb_map12);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB12_CODES, AVC_SPEC_CB12_BITS, |idx| AVC_SPEC_CB12_SYMS[idx]);
         let cb12 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB13_CODES, AVC_SPEC_CB13_BITS, cb_map13);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB13_CODES, AVC_SPEC_CB13_BITS, |idx| AVC_SPEC_CB13_SYMS[idx]);
         let cb13 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB14_CODES, AVC_SPEC_CB14_BITS, cb_map14);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB14_CODES, AVC_SPEC_CB14_BITS, |idx| AVC_SPEC_CB14_SYMS[idx]);
         let cb14 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB15_CODES, AVC_SPEC_CB15_BITS, cb_map15);
+        let mut coderead = TableCodebookDescReader::new(AVC_SPEC_CB15_CODES, AVC_SPEC_CB15_BITS, |idx| AVC_SPEC_CB15_SYMS[idx]);
         let cb15 = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
         let spec_cb = [cb1, cb2, cb3, cb4, cb5, cb6, cb7, cb8, cb9, cb10, cb11, cb12, cb13, cb14, cb15];
         Self { scale_cb, spec_cb }
index 86e512fcff9528afa2fe3c524077e3be7bc7e4e5..7eeb4e3c89aec0dcac1c8888f4dbdfa9adb7e8f7 100644 (file)
@@ -26,16 +26,12 @@ struct VP30Codes {
     mbtype_cb:  Codebook<VPMBType>,
 }
 
-fn map_mbt(idx: usize) -> VPMBType {
-    VP30_MBTYPE_SYMS[idx]
-}
-
 impl VP30Codes {
     fn new() -> Self {
         let dc_cb;
         let ac_i_cb;
         let ac_p_cb;
-        let mut cr = TableCodebookDescReader::new(&VP30_MBTYPE_CODES, &VP30_MBTYPE_BITS, map_mbt);
+        let mut cr = TableCodebookDescReader::new(&VP30_MBTYPE_CODES, &VP30_MBTYPE_BITS, |idx| VP30_MBTYPE_SYMS[idx]);
         let mbtype_cb = Codebook::new(&mut cr, CodebookMode::MSB).unwrap();
         unsafe {
             let mut udc_cb: mem::MaybeUninit::<[Codebook<u8>; 5]> = mem::MaybeUninit::uninit();
index 8fc485371a8d13ef52d66775e5788f200bca9483..cbd256625e2ac9b74d772151ec2c6bb2f95f141c 100644 (file)
@@ -21,7 +21,6 @@ pub struct Codebooks {
 }
 
 fn scale_map(idx: usize) -> i8 { (idx as i8) - 60 }
-fn cb_map(idx: usize) -> u16 { idx as u16 }
 
 impl Codebooks {
     pub fn new() -> Self {
@@ -30,7 +29,7 @@ impl Codebooks {
         let spec_cb = unsafe {
                 let mut uspec_cb: mem::MaybeUninit::<[Codebook<u16>; 11]> = mem::MaybeUninit::uninit();
                 for i in 0..AAC_SPEC_CODES.len() {
-                    let mut coderead = TableCodebookDescReader::new(AAC_SPEC_CODES[i], AAC_SPEC_BITS[i], cb_map);
+                    let mut coderead = TableCodebookDescReader::new(AAC_SPEC_CODES[i], AAC_SPEC_BITS[i], |idx| idx as u16);
                     ptr::write(&mut (*uspec_cb.as_mut_ptr())[i], Codebook::new(&mut coderead, CodebookMode::MSB).unwrap());
                 }
                 uspec_cb.assume_init()
index 0dd66eff7b9d61e7d094fc24aef315ce7426c61c..b8c716243295b247ce8430a422bc6b824ebb47ff 100644 (file)
@@ -1008,7 +1008,6 @@ struct Bink2Codes {
 }
 
 fn map_ac(idx: usize) -> u8 { idx as u8 }
-fn map_mv(idx: usize) -> i8 { BINK2_MV_SYMS[idx] }
 
 impl Default for Bink2Codes {
     fn default() -> Self {
@@ -1016,7 +1015,7 @@ impl Default for Bink2Codes {
         let ac_cb1 = Codebook::new(&mut cbr, CodebookMode::LSB).unwrap();
         let mut cbr = TableCodebookDescReader::new(BINK2_AC_CODES2, BINK2_AC_BITS2, map_ac);
         let ac_cb2 = Codebook::new(&mut cbr, CodebookMode::LSB).unwrap();
-        let mut cbr = TableCodebookDescReader::new(BINK2_MV_CODES, BINK2_MV_BITS, map_mv);
+        let mut cbr = TableCodebookDescReader::new(BINK2_MV_CODES, BINK2_MV_BITS, |idx| BINK2_MV_SYMS[idx]);
         let mv_cb = Codebook::new(&mut cbr, CodebookMode::LSB).unwrap();
         let mut cbr = TableCodebookDescReader::new(BINK2_AC_VAL_CODES1, BINK2_AC_VAL_BITS1, map_ac);
         let val_cb1 = Codebook::new(&mut cbr, CodebookMode::LSB).unwrap();
index ef9aa609c2c9e11fb7819c08385a8c831c2f5661..f4fece8900291d7fcd2a2b92482a0b19d5ee213d 100644 (file)
@@ -383,14 +383,12 @@ struct BinkTrees {
     cb:         [Codebook<u8>; 16],
 }
 
-fn map_u8(idx: usize) -> u8 { idx as u8 }
-
 impl Default for BinkTrees {
     fn default() -> Self {
         let cb = unsafe {
                 let mut ucb: std::mem::MaybeUninit::<[Codebook<u8>; 16]> = std::mem::MaybeUninit::uninit();
                 for i in 0..16 {
-                    let mut cr = TableCodebookDescReader::new(&BINK_TREE_CODES[i], &BINK_TREE_BITS[i], map_u8);
+                    let mut cr = TableCodebookDescReader::new(&BINK_TREE_CODES[i], &BINK_TREE_BITS[i], |idx| idx as u8);
                     std::ptr::write(&mut (*ucb.as_mut_ptr())[i], Codebook::new(&mut cr, CodebookMode::LSB).unwrap());
                 }
                 ucb.assume_init()
index d342898c6516e3a3b5fcbde16a3fa28e6b1413f0..89cb97dfeb5d30dafdb7fd460af3965920569677 100644 (file)
@@ -57,13 +57,6 @@ struct SirenDecoder {
 }
 
 fn map_idx_diff(idx: usize) -> i8 { (idx as i8) - 12 }
-fn map_idx0(idx: usize) -> u16 { VEC_CB0_SYMS[idx] }
-fn map_idx1(idx: usize) -> u16 { VEC_CB1_SYMS[idx] }
-fn map_idx2(idx: usize) -> u16 { VEC_CB2_SYMS[idx] }
-fn map_idx3(idx: usize) -> u16 { VEC_CB3_SYMS[idx] }
-fn map_idx4(idx: usize) -> u16 { VEC_CB4_SYMS[idx] }
-fn map_idx5(idx: usize) -> u16 { VEC_CB5_SYMS[idx] }
-fn map_idx6(idx: usize) -> u16 { VEC_CB6_SYMS[idx] }
 impl SirenDecoder {
     fn new() -> Self {
         let mut diff_cb = Vec::with_capacity(NUM_DIFF_CB);
@@ -72,19 +65,19 @@ impl SirenDecoder {
             let cb = Codebook::new(&mut cr, CodebookMode::MSB).unwrap();
             diff_cb.push(cb);
         }
-        let mut cr = TableCodebookDescReader::new(&VEC_CB0_BITS, &VEC_CB0_LENS, map_idx0);
+        let mut cr = TableCodebookDescReader::new(&VEC_CB0_BITS, &VEC_CB0_LENS, |idx| VEC_CB0_SYMS[idx]);
         let vec_cb0 = Codebook::new(&mut cr, CodebookMode::MSB).unwrap();
-        let mut cr = TableCodebookDescReader::new(&VEC_CB1_BITS, &VEC_CB1_LENS, map_idx1);
+        let mut cr = TableCodebookDescReader::new(&VEC_CB1_BITS, &VEC_CB1_LENS, |idx| VEC_CB1_SYMS[idx]);
         let vec_cb1 = Codebook::new(&mut cr, CodebookMode::MSB).unwrap();
-        let mut cr = TableCodebookDescReader::new(&VEC_CB2_BITS, &VEC_CB2_LENS, map_idx2);
+        let mut cr = TableCodebookDescReader::new(&VEC_CB2_BITS, &VEC_CB2_LENS, |idx| VEC_CB2_SYMS[idx]);
         let vec_cb2 = Codebook::new(&mut cr, CodebookMode::MSB).unwrap();
-        let mut cr = TableCodebookDescReader::new(&VEC_CB3_BITS, &VEC_CB3_LENS, map_idx3);
+        let mut cr = TableCodebookDescReader::new(&VEC_CB3_BITS, &VEC_CB3_LENS, |idx| VEC_CB3_SYMS[idx]);
         let vec_cb3 = Codebook::new(&mut cr, CodebookMode::MSB).unwrap();
-        let mut cr = TableCodebookDescReader::new(&VEC_CB4_BITS, &VEC_CB4_LENS, map_idx4);
+        let mut cr = TableCodebookDescReader::new(&VEC_CB4_BITS, &VEC_CB4_LENS, |idx| VEC_CB4_SYMS[idx]);
         let vec_cb4 = Codebook::new(&mut cr, CodebookMode::MSB).unwrap();
-        let mut cr = TableCodebookDescReader::new(&VEC_CB5_BITS, &VEC_CB5_LENS, map_idx5);
+        let mut cr = TableCodebookDescReader::new(&VEC_CB5_BITS, &VEC_CB5_LENS, |idx| VEC_CB5_SYMS[idx]);
         let vec_cb5 = Codebook::new(&mut cr, CodebookMode::MSB).unwrap();
-        let mut cr = TableCodebookDescReader::new(&VEC_CB6_BITS, &VEC_CB6_LENS, map_idx6);
+        let mut cr = TableCodebookDescReader::new(&VEC_CB6_BITS, &VEC_CB6_LENS, |idx| VEC_CB6_SYMS[idx]);
         let vec_cb6 = Codebook::new(&mut cr, CodebookMode::MSB).unwrap();
         let vec_cb = [vec_cb0, vec_cb1, vec_cb2, vec_cb3, vec_cb4, vec_cb5, vec_cb6];