h263: make is_gob a part of init
authorKostya Shishkov <kostya.shishkov@gmail.com>
Mon, 27 Nov 2017 16:52:12 +0000 (17:52 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Mon, 27 Nov 2017 16:52:12 +0000 (17:52 +0100)
src/codecs/h263/decoder.rs
src/codecs/h263/intel263.rs
src/codecs/h263/mod.rs
src/codecs/h263/rv10.rs
src/codecs/h263/rv20.rs

index db200e71769f06042501e4e4622c42b3a0a9daa4..15e18fc7ce491e26927863d76612861669706c78 100644 (file)
@@ -129,6 +129,7 @@ pub struct H263BaseDecoder {
     has_b:      bool,
     b_data:     Vec<BMB>,
     pred_coeffs: Vec<PredCoeffs>,
+    is_gob:     bool,
 }
 
 #[inline]
@@ -147,7 +148,7 @@ fn clip_ac(ac: i16) -> i16 {
 
 #[allow(dead_code)]
 impl H263BaseDecoder {
-    pub fn new() -> Self {
+    pub fn new(is_gob: bool) -> Self {
         H263BaseDecoder{
             w: 0, h: 0, mb_w: 0, mb_h: 0, num_mb: 0,
             ftype: Type::Special,
@@ -155,6 +156,7 @@ impl H263BaseDecoder {
             last_ts: 0,
             has_b: false, b_data: Vec::new(),
             pred_coeffs: Vec::new(),
+            is_gob: is_gob,
         }
     }
 
@@ -191,7 +193,7 @@ impl H263BaseDecoder {
         let mut bufinfo = bufret.unwrap();
         let mut buf = bufinfo.get_vbuf().unwrap();
 
-        let mut slice = if bd.is_gob() {
+        let mut slice = if self.is_gob {
                 SliceInfo::get_default_slice(&pinfo)
             } else {
                 bd.decode_slice_header(&pinfo)?
index 55e49a91955ac10d229c5403df0e549da94077c8..9bef52da2fa06d9d3599b309902a1fa0435d21f9 100644 (file)
@@ -316,8 +316,6 @@ impl<'a> BlockDecoder for Intel263BR<'a> {
     }
 
     fn is_slice_end(&mut self) -> bool { self.br.peek(16) == 0 }
-
-    fn is_gob(&mut self) -> bool { true }
 }
 
 impl Intel263Decoder {
@@ -345,7 +343,7 @@ impl Intel263Decoder {
 
         Intel263Decoder{
             info:           Rc::new(DUMMY_CODEC_INFO),
-            dec:            H263BaseDecoder::new(),
+            dec:            H263BaseDecoder::new(true),
             tables:         tables,
             bdsp:           H263BlockDSP::new(),
         }
index 28eb44f2f572b453b9d0b6ec8db3af443d5d4237..c5d63fc0b70017e64c7a0fc7ea09b07933847b0f 100644 (file)
@@ -21,7 +21,6 @@ pub trait BlockDecoder {
     fn decode_block_intra(&mut self, info: &BlockInfo, sstate: &SliceState, quant: u8, no: usize, coded: bool, blk: &mut [i16; 64]) -> DecoderResult<()>;
     fn decode_block_inter(&mut self, info: &BlockInfo, sstate: &SliceState, quant: u8, no: usize, coded: bool, blk: &mut [i16; 64]) -> DecoderResult<()>;
     fn is_slice_end(&mut self) -> bool;
-    fn is_gob(&mut self) -> bool;
 }
 
 pub trait BlockDSP {
index 4b00bf6e0880f50c3e909c92aef2c6f4d2c4d86e..0093f87da1013b1a3f36e3a974d5f5c18be793ec 100644 (file)
@@ -315,8 +315,6 @@ println!(" MB {}.{} cbp = {:X}", sstate.mb_x, sstate.mb_y, cbp);
     }
 
     fn is_slice_end(&mut self) -> bool { false }
-
-    fn is_gob(&mut self) -> bool { false }
 }
 
 impl<'a> RealVideo10BR<'a> {
@@ -399,7 +397,7 @@ impl RealVideo10Decoder {
 
         RealVideo10Decoder{
             info:           Rc::new(DUMMY_CODEC_INFO),
-            dec:            H263BaseDecoder::new(),
+            dec:            H263BaseDecoder::new(false),
             tables:         tables,
             w:              0,
             h:              0,
@@ -465,7 +463,7 @@ mod test {
     use test::dec_video::test_file_decoding;
     #[test]
     fn test_rv10() {
-         test_file_decoding("realmedia", "assets/RV/rv10_dnet_640x352_realvideo_encoder_4.0.rm", Some(1000), true, false, Some("rv10"));
+         test_file_decoding("realmedia", "assets/RV/rv10_dnet_640x352_realvideo_encoder_4.0.rm", Some(1000), true, false, None/*Some("rv10")*/);
     }
 }
 
index 252c9b9b9c8b22a2f8698c9233133192c05d4e0a..adcf5030b970a9861c38ae8c51361174b9fb1d3e 100644 (file)
@@ -321,8 +321,6 @@ println!(" MB {}.{} cbp = {:X}", sstate.mb_x, sstate.mb_y, cbp);
     }
 
     fn is_slice_end(&mut self) -> bool { false }
-
-    fn is_gob(&mut self) -> bool { false }
 }
 
 impl<'a> RealVideo20BR<'a> {
@@ -411,7 +409,7 @@ impl RealVideo20Decoder {
 
         RealVideo20Decoder{
             info:           Rc::new(DUMMY_CODEC_INFO),
-            dec:            H263BaseDecoder::new(),
+            dec:            H263BaseDecoder::new(false),
             tables:         tables,
             w:              0,
             h:              0,