X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-indeo%2Fsrc%2Fcodecs%2Fivi.rs;h=ab1c91d6091b3c90fd8f3da54954f59ad931c6d2;hb=64e8b9711a54641d4155d01f095053233c79a9bf;hp=064da0b44504c0af413c8142ec0ad691c0025126;hpb=5641dccfbf2a70d589cf094a0d4ed5a10f919f00;p=nihav.git diff --git a/nihav-indeo/src/codecs/ivi.rs b/nihav-indeo/src/codecs/ivi.rs index 064da0b..ab1c91d 100644 --- a/nihav-indeo/src/codecs/ivi.rs +++ b/nihav-indeo/src/codecs/ivi.rs @@ -46,16 +46,16 @@ pub struct PictureHeader { impl PictureHeader { pub fn new(ftype: IVIFrameType, width: usize, height: usize, slice_w: usize, slice_h: usize, transparent: bool, luma_bands: usize, chroma_bands: usize, in_q: bool) -> Self { PictureHeader { - ftype: ftype, - width: width, height: height, slice_w: slice_w, slice_h: slice_h, - transparent: transparent, - luma_bands: luma_bands, chroma_bands: chroma_bands, - in_q: in_q, + ftype, + width, height, slice_w, slice_h, + transparent, + luma_bands, chroma_bands, + in_q, } } pub fn new_null(ftype: IVIFrameType) -> Self { PictureHeader { - ftype: ftype, + ftype, width: 0, height: 0, slice_w: 0, slice_h: 0, transparent: false, luma_bands: 0, chroma_bands: 0, @@ -89,16 +89,16 @@ pub type TrFunc = fn (&mut [i32; 64]); pub type TrFuncDC = fn (&mut [i32; 64], i32); impl IVITransformType { - pub fn is_8x8(&self) -> bool { - match *self { + pub fn is_8x8(self) -> bool { + match self { IVITransformType::Haar (ref sz, _) => { *sz == TSize::T8x8 }, IVITransformType::Slant(ref sz, _) => { *sz == TSize::T8x8 }, IVITransformType::DCT (ref sz, _) => { *sz == TSize::T8x8 }, IVITransformType::None (ref sz) => { *sz == TSize::T8x8 }, } } - pub fn is_2d(&self) -> bool { - match *self { + pub fn is_2d(self) -> bool { + match self { IVITransformType::Haar (_, ref dir) => { *dir == TDir::TwoD }, IVITransformType::Slant(_, ref dir) => { *dir == TDir::TwoD }, IVITransformType::DCT (_, ref dir) => { *dir == TDir::TwoD }, @@ -118,7 +118,7 @@ pub struct TxParams4x4 { impl TxParams4x4 { pub fn new(quant_intra: &'static [u16; 16], quant_inter: &'static [u16; 16], scan: &'static [usize; 16]) -> Self { TxParams4x4 { - quant_intra: quant_intra, quant_inter: quant_inter, scan: scan, + quant_intra, quant_inter, scan, } } } @@ -134,7 +134,7 @@ pub struct TxParams8x8 { impl TxParams8x8 { pub fn new(quant_intra: &'static [u16; 64], quant_inter: &'static [u16; 64], scan: &'static [usize; 64]) -> Self { TxParams8x8 { - quant_intra: quant_intra, quant_inter: quant_inter, scan: scan, + quant_intra, quant_inter, scan, } } } @@ -172,26 +172,22 @@ impl BandHeader { for i in 0..num_corr { let pos1 = corr_map[i * 2 + 0] as usize; let pos2 = corr_map[i * 2 + 1] as usize; - let t = rvmap.runtab[pos1]; - rvmap.runtab[pos1] = rvmap.runtab[pos2]; - rvmap.runtab[pos2] = t; - let t = rvmap.valtab[pos1]; - rvmap.valtab[pos1] = rvmap.valtab[pos2]; - rvmap.valtab[pos2] = t; + rvmap.runtab.swap(pos1, pos2); + rvmap.valtab.swap(pos1, pos2); } BandHeader { - plane_no: plane_no, band_no: band_no, - empty: false, halfpel: halfpel, - inherit_mv: inherit_mv, - has_qdelta: has_qdelta, inherit_qd: inherit_qd, quant: quant, - mb_size: mb_size, blk_size: blk_size, - rvmap: rvmap, blk_cb: blk_cb, - tr: tr, ttype: ttype, + plane_no, band_no, + empty: false, halfpel, + inherit_mv, + has_qdelta, inherit_qd, quant, + mb_size, blk_size, + rvmap, blk_cb, + tr, ttype, } } pub fn new_empty(plane_no: usize, band_no: usize) -> Self { BandHeader { - plane_no: plane_no, band_no: band_no, + plane_no, band_no, empty: true, halfpel: true, inherit_mv: false, has_qdelta: false, inherit_qd: false, quant: 0, mb_size: 0, blk_size: 0, @@ -248,22 +244,12 @@ pub struct IVITile { impl IVITile { pub fn new(pos_x: usize, pos_y: usize, w: usize, h: usize) -> Self { IVITile { - pos_x: pos_x, pos_y: pos_y, w: w, h: h, + pos_x, pos_y, w, h, mb_w: 0, mb_h: 0, mb: Vec::new(), } } } -pub const IVI_ZIGZAG: [usize; 64] = [ - 0, 1, 8, 16, 9, 2, 3, 10, - 17, 24, 32, 25, 18, 11, 4, 5, - 12, 19, 26, 33, 40, 48, 41, 34, - 27, 20, 13, 6, 7, 14, 21, 28, - 35, 42, 49, 56, 57, 50, 43, 36, - 29, 22, 15, 23, 30, 37, 44, 51, - 58, 59, 52, 45, 38, 31, 39, 46, - 53, 60, 61, 54, 47, 55, 62, 63 -]; pub const IVI_SCAN_8X8_VER: [usize; 64] = [ 0, 8, 16, 24, 32, 40, 48, 56, 1, 9, 17, 25, 33, 41, 49, 57,