projects
/
nihav.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
make all codec crates export just register_all functions and document them
[nihav.git]
/
nihav-realmedia
/
src
/
codecs
/
rv20.rs
diff --git
a/nihav-realmedia/src/codecs/rv20.rs
b/nihav-realmedia/src/codecs/rv20.rs
index 36ccc67846ce9dd1d806f9a9542d311ce84c91da..b3f1e560e0e2e1ee64ccc6c3f4239dfcea264b1d 100644
(file)
--- a/
nihav-realmedia/src/codecs/rv20.rs
+++ b/
nihav-realmedia/src/codecs/rv20.rs
@@
-68,7
+68,7
@@
struct RV20SliceInfo {
impl RV20SliceInfo {
fn new(ftype: Type, seq: u32, qscale: u8, mb_x: usize, mb_y: usize, mb_pos: usize, w: usize, h: usize) -> Self {
impl RV20SliceInfo {
fn new(ftype: Type, seq: u32, qscale: u8, mb_x: usize, mb_y: usize, mb_pos: usize, w: usize, h: usize) -> Self {
- RV20SliceInfo { ftype
: ftype, seq: seq, qscale: qscale, mb_x: mb_x, mb_y: mb_y, mb_pos: mb_pos, w: w, h:
h }
+ RV20SliceInfo { ftype
, seq, qscale, mb_x, mb_y, mb_pos, w,
h }
}
}
}
}
@@
-78,7
+78,7
@@
impl<'a> RealVideo20BR<'a> {
let mut slice_offs = Vec::with_capacity(nslices);
{
let offs = &src[1..][..nslices * 8];
let mut slice_offs = Vec::with_capacity(nslices);
{
let offs = &src[1..][..nslices * 8];
- let mut br = BitReader::new(offs,
offs.len(),
BitReaderMode::BE);
+ let mut br = BitReader::new(offs, BitReaderMode::BE);
for _ in 0..nslices {
br.skip(32).unwrap();
let off = br.read(32).unwrap();
for _ in 0..nslices {
br.skip(32).unwrap();
let off = br.read(32).unwrap();
@@
-97,18
+97,18
@@
impl<'a> RealVideo20BR<'a> {
}
}
RealVideo20BR {
}
}
RealVideo20BR {
- br: BitReader::new(&src[soff..],
src.len() - soff,
BitReaderMode::BE),
- tables
: tables
,
+ br: BitReader::new(&src[soff..], BitReaderMode::BE),
+ tables,
num_slices: nslices,
slice_no: 0,
slice_off: slice_offs,
w: width,
h: height,
num_slices: nslices,
slice_no: 0,
slice_off: slice_offs,
w: width,
h: height,
- mb_w
: mb_w
,
- mb_h
: mb_h
,
+ mb_w,
+ mb_h,
mb_pos_bits: mbpb,
mb_pos_bits: mbpb,
- minor_ver
: minor_ver
,
- rpr
: rpr
,
+ minor_ver,
+ rpr,
}
}
}
}
@@
-126,7
+126,7
@@
impl<'a> RealVideo20BR<'a> {
let scan = match acpred {
ACPredMode::Hor => H263_SCAN_V,
ACPredMode::Ver => H263_SCAN_H,
let scan = match acpred {
ACPredMode::Hor => H263_SCAN_V,
ACPredMode::Ver => H263_SCAN_H,
- _ =>
H263_
ZIGZAG,
+ _ =>
&
ZIGZAG,
};
let rl_cb = if sstate.is_iframe { &self.tables.aic_rl_cb } else { &self.tables.rl_cb };
};
let rl_cb = if sstate.is_iframe { &self.tables.aic_rl_cb } else { &self.tables.rl_cb };
@@
-432,20
+432,20
@@
impl RealVideo20Decoder {
let mv_cb = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
let tables = Tables {
let mv_cb = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
let tables = Tables {
- intra_mcbpc_cb
: intra_mcbpc_cb
,
- inter_mcbpc_cb
: inter_mcbpc_cb
,
- mbtype_b_cb
: mbtype_b_cb
,
- cbpy_cb
: cbpy_cb
,
- cbpc_b_cb
: cbpc_b_cb
,
- rl_cb
: rl_cb
,
- aic_rl_cb
: aic_rl_cb
,
- mv_cb
: mv_cb
,
+ intra_mcbpc_cb,
+ inter_mcbpc_cb,
+ mbtype_b_cb,
+ cbpy_cb,
+ cbpc_b_cb,
+ rl_cb,
+ aic_rl_cb,
+ mv_cb,
};
RealVideo20Decoder{
info: NACodecInfoRef::default(),
dec: H263BaseDecoder::new_b_frames(false),
};
RealVideo20Decoder{
info: NACodecInfoRef::default(),
dec: H263BaseDecoder::new_b_frames(false),
- tables
: tables
,
+ tables,
w: 0,
h: 0,
minor_ver: 0,
w: 0,
h: 0,
minor_ver: 0,
@@
-457,7
+457,7
@@
impl RealVideo20Decoder {
impl NADecoder for RealVideo20Decoder {
#[allow(unused_variables)]
impl NADecoder for RealVideo20Decoder {
#[allow(unused_variables)]
- fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
+ fn init(&mut self,
_supp: &mut NADecoderSupport,
info: NACodecInfoRef) -> DecoderResult<()> {
if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
let w = vinfo.get_width();
let h = vinfo.get_height();
if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
let w = vinfo.get_width();
let h = vinfo.get_height();
@@
-491,7
+491,7
@@
impl NADecoder for RealVideo20Decoder {
Err(DecoderError::InvalidData)
}
}
Err(DecoderError::InvalidData)
}
}
- fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+ fn decode(&mut self,
_supp: &mut NADecoderSupport,
pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
let src = pkt.get_buffer();
let mut ibr = RealVideo20BR::new(&src, &self.tables, self.w, self.h, self.minor_ver, self.rpr);
let src = pkt.get_buffer();
let mut ibr = RealVideo20BR::new(&src, &self.tables, self.w, self.h, self.minor_ver, self.rpr);
@@
-501,7
+501,10
@@
impl NADecoder for RealVideo20Decoder {
let mut frm = NAFrame::new_from_pkt(pkt, self.info.clone(), bufinfo);
frm.set_keyframe(self.dec.is_intra());
frm.set_frame_type(self.dec.get_frame_type());
let mut frm = NAFrame::new_from_pkt(pkt, self.info.clone(), bufinfo);
frm.set_keyframe(self.dec.is_intra());
frm.set_frame_type(self.dec.get_frame_type());
- Ok(Rc::new(RefCell::new(frm)))
+ Ok(frm.into_ref())
+ }
+ fn flush(&mut self) {
+ self.dec.flush();
}
}
}
}
@@
-516,7
+519,7
@@
const H263_MBB: &[MBB; 7] = &[
MBB{ blocks: 65536, bits: 14 },
];
MBB{ blocks: 65536, bits: 14 },
];
-pub fn get_decoder() -> Box<
NADecoder
> {
+pub fn get_decoder() -> Box<
dyn NADecoder + Send
> {
Box::new(RealVideo20Decoder::new())
}
Box::new(RealVideo20Decoder::new())
}
@@
-525,8
+528,8
@@
mod test {
use nihav_core::codecs::RegisteredDecoders;
use nihav_core::demuxers::RegisteredDemuxers;
use nihav_core::test::dec_video::*;
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;
+ use crate::realmedia_register_all_codecs;
+ use crate::realmedia_register_all_demuxers;
#[test]
fn test_rv20() {
let mut dmx_reg = RegisteredDemuxers::new();
#[test]
fn test_rv20() {
let mut dmx_reg = RegisteredDemuxers::new();