X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-codec-support%2Fsrc%2Fcodecs%2Fmod.rs;h=ebdbaa7e56cf97bb715eaa2fc6ad36a27ae0d107;hb=7f7356a02d44ed553643502806d4342394419637;hp=389821eb6c4e1de71642cc44ff18ada1ab4306bc;hpb=8d7a1c5c2b1c41d284cbe7ab3d3ee344755db7bc;p=nihav.git diff --git a/nihav-codec-support/src/codecs/mod.rs b/nihav-codec-support/src/codecs/mod.rs index 389821e..ebdbaa7 100644 --- a/nihav-codec-support/src/codecs/mod.rs +++ b/nihav-codec-support/src/codecs/mod.rs @@ -1,6 +1,6 @@ //! Decoder support functions and definitions. use std::fmt; -use std::ops::{Add, AddAssign, Sub, SubAssign}; +use std::ops::{Add, AddAssign, Sub, SubAssign, Neg}; pub use nihav_core::frame::*; use std::mem; @@ -11,19 +11,19 @@ use std::mem; /// /// # Examples /// -/// ````norun +/// ```ignore /// let mut frame = if is_intra_frame { /// allocate_video_frame() /// } else { /// let ret = shuffler.clone_ref(); /// if ret.is_none() { -/// return Err(DecodingError::MissingReference); +/// return Err(DecoderError::MissingReference); /// } /// ret.unwrap() /// }; /// // output data into the frame /// shuffler.add_frame(frame.clone()); // tells frame manager to use the frame as the next reference -/// ```` +/// ``` #[allow(dead_code)] pub struct HAMShuffler { lastframe: Option>, @@ -72,18 +72,18 @@ impl Default for HAMShuffler { /// /// # Examples /// -/// ````norun +/// ```ignore /// let mut frame = allocate_video_frame(); /// if is_inter_frame { /// let ret = shuffler.get_ref(); /// if ret.is_none() { -/// return Err(DecodingError::MissingReference); +/// return Err(DecoderError::MissingReference); /// } /// let ref_frame = ret.unwrap(); /// // keep decoding using data from ref_frame /// } /// shuffler.add_frame(frame.clone()); // tells frame manager to use the frame as the next reference -/// ```` +/// ``` #[allow(dead_code)] pub struct IPShuffler { lastframe: Option>, @@ -122,7 +122,7 @@ impl Default for IPShuffler { /// /// # Examples /// -/// ````norun +/// ```ignore /// let mut frame = allocate_video_frame(); /// for mb in all_macroblocks { /// // decode macroblock type @@ -144,7 +144,7 @@ impl Default for IPShuffler { /// if is_intra_frame || is_p_frame { /// shuffler.add_frame(frame.clone()); // tells frame manager to use the frame as the next reference /// } -/// ```` +/// ``` #[allow(dead_code)] pub struct IPBShuffler { lastframe: Option>, @@ -288,6 +288,13 @@ impl SubAssign for MV { fn sub_assign(&mut self, other: MV) { self.x -= other.x; self.y -= other.y; } } +impl Neg for MV { + type Output = MV; + fn neg(self) -> Self::Output { + MV { x: -self.x, y: -self.y } + } +} + impl fmt::Display for MV { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{},{}", self.x, self.y)