pub struct CamfStream<'a> { /* private fields */ }Expand description
Incremental decoder of an X3F SECc (CAMF calibration) section.
section is the whole section starting at its SECc signature: a 28-byte header
(signature, version, coding type, four type-specific words) followed by the coded
data. Three codings exist:
- type 2 (SD9 … SD14): bytes XOR-ed with a pseudo-random stream seeded by word 3;
- type 4 (DP1 … Merrill): a TRUE-style prefix code (table at the start of the data,
bit stream at data offset 32) over
block_size x block_count(words 2 and 3) 12-bit samples with the TRUE 2x2-phase prediction (seed in word 1), packed two samples per three bytes and cut to the decoded size in word 0; - type 5 (Quattro): the same code over a running byte sum (seed in word 1), one symbol per decoded byte (decoded size in word 0).
The decoded block is a sequence of CMb* entries. Blocks run to several MiB (mostly
spatial gain and defect tables after the colour calibration), so they are decoded on
demand: CamfStream::fill extends CamfStream::decoded as far as needed.
Implementations§
Auto Trait Implementations§
impl<'a> Forget for CamfStream<'a>
impl<'a> Freeze for CamfStream<'a>
impl<'a> RefUnwindSafe for CamfStream<'a>
impl<'a> Send for CamfStream<'a>
impl<'a> Sync for CamfStream<'a>
impl<'a> Unpin for CamfStream<'a>
impl<'a> UnsafeUnpin for CamfStream<'a>
impl<'a> UnwindSafe for CamfStream<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more