impl RealVideo60Decoder {
fn new() -> Self {
let tmp_vinfo = NAVideoInfo::new(64, 64, false, YUV420_FORMAT);
- let mut vt = alloc_video_buffer(tmp_vinfo, 4).unwrap();
+ let vt = alloc_video_buffer(tmp_vinfo, 4).unwrap();
let vb = vt.get_vbuf();
let avg_buf = vb.unwrap();
RealVideo60Decoder{
if !split_i4x4 {
let dstride = buf.get_stride(0);
let off = xpos + ypos * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let dst = &mut data;
self.populate_ipred(hdr, dst, 0, dstride, 0, 0, size, true);
self.ipred.pred_angle(dst, off, dstride, size, itype as usize, true);
let dstride = buf.get_stride(comp);
let soff = buf.get_offset(comp);
let off = soff + (xpos >> 1) + (ypos >> 1) * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.populate_ipred(hdr, dst, soff, dstride, 0, 0, size >> 1, false);
self.ipred.pred_angle(&mut dst, off, dstride, size >> 1, itype as usize, false);
self.dsp.transform4x4(&mut self.y_coeffs[i * 16..][..16]);
let dstride = buf.get_stride(0);
let off = xpos + x * 4 + (ypos + y * 4) * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.dsp.add_block(&mut dst, off, dstride, &self.y_coeffs[i*16..][..16], 4);
}
self.dsp.transform4x4(&mut self.u_coeffs[i * 16..][..16]);
let dstride = buf.get_stride(1);
let off = buf.get_offset(1) + xoff + yoff * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.dsp.add_block(&mut dst, off, dstride, &self.u_coeffs[i * 16..][..16], 4);
}
self.dsp.transform4x4(&mut self.v_coeffs[i * 16..][..16]);
let dstride = buf.get_stride(2);
let off = buf.get_offset(2) + xoff + yoff * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.dsp.add_block(&mut dst, off, dstride, &self.v_coeffs[i * 16..][..16], 4);
}
if split_i4x4 {
let dstride = buf.get_stride(0);
let off = xpos + xoff + (ypos + yoff) * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.populate_ipred(hdr, dst, 0, dstride, xoff, yoff, 4, true);
let itype = self.blk_info[self.blk_pos + (i & 1) + (i >> 1) * self.blk_stride].imode;
let dstride = buf.get_stride(0);
let soff = buf.get_offset(0);
let off = soff + xpos + xoff + (ypos + yoff) * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.dsp.add_block(&mut dst, off, dstride, blk, 4);
}
let dstride = buf.get_stride(1);
let soff = buf.get_offset(1);
let off = soff + (xpos >> 1) + (ypos >> 1) * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.dsp.add_block(&mut dst, off, dstride, &self.u_coeffs, 4);
}
let dstride = buf.get_stride(2);
let soff = buf.get_offset(2);
let off = soff + (xpos >> 1) + (ypos >> 1) * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.dsp.add_block(&mut dst, off, dstride, &self.v_coeffs, 4);
}
self.dsp.transform8x8(&mut self.y_coeffs);
let dstride = buf.get_stride(0);
let off = xpos + ypos * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.dsp.add_block(&mut dst, off, dstride, &self.y_coeffs, 8);
}
let dstride = buf.get_stride(1);
let soff = buf.get_offset(1);
let off = soff + (xpos >> 1) + (ypos >> 1) * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.dsp.add_block(&mut dst, off, dstride, &self.u_coeffs, 4);
}
let dstride = buf.get_stride(2);
let soff = buf.get_offset(2);
let off = soff + (xpos >> 1) + (ypos >> 1) * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.dsp.add_block(&mut dst, off, dstride, &self.v_coeffs, 4);
}
self.dsp.transform16x16(&mut self.y_coeffs);
let dstride = buf.get_stride(0);
let off = xpos + x * 16 + (ypos + y * 16) * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.dsp.add_block(&mut dst, off, dstride, &self.y_coeffs, 16);
}
let dstride = buf.get_stride(1);
let soff = buf.get_offset(1);
let off = soff + (xpos >> 1) + x * 8 + ((ypos >> 1) + y * 8) * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.dsp.add_block(&mut dst, off, dstride, &self.u_coeffs, 8);
}
let dstride = buf.get_stride(2);
let soff = buf.get_offset(2);
let off = soff + (xpos >> 1) + x * 8 + ((ypos >> 1) + y * 8) * dstride;
- let mut data = buf.get_data_mut();
+ let mut data = buf.get_data_mut().unwrap();
let mut dst = &mut data;
self.dsp.add_block(&mut dst, off, dstride, &self.v_coeffs, 8);
}
let tmp_vinfo = NAVideoInfo::new(hdr.width, hdr.height, false, YUV420_FORMAT);
let res = alloc_video_buffer(tmp_vinfo, 6);
if !res.is_ok() { return Err(DecoderError::InvalidData); }
- let mut bufinfo = res.unwrap();
+ let bufinfo = res.unwrap();
let mut buf = bufinfo.get_vbuf().unwrap();
let cu_w = hdr.get_width_cu();
#[cfg(test)]
mod test {
- use crate::test::dec_video::test_file_decoding;
+ use nihav_core::codecs::RegisteredDecoders;
+ use nihav_core::demuxers::RegisteredDemuxers;
+ use nihav_core::test::dec_video::*;
+ use crate::codecs::realmedia_register_all_codecs;
+ use crate::demuxers::realmedia_register_all_demuxers;
#[test]
fn test_rv60() {
- test_file_decoding("realmedia", "assets/RV/RV60.rmhd", Some(4000), true, false, None/*Some("rv60")*/);
+ let mut dmx_reg = RegisteredDemuxers::new();
+ realmedia_register_all_demuxers(&mut dmx_reg);
+ let mut dec_reg = RegisteredDecoders::new();
+ realmedia_register_all_codecs(&mut dec_reg);
+
+ test_file_decoding("realmedia", "assets/RV/RV60.rmhd", Some(4000), true, false, None/*Some("rv60")*/, &dmx_reg, &dec_reg);
//panic!("end");
}
}