Skip to main content

LtcParser

Struct LtcParser 

Source
pub struct LtcParser {
    pub fps: u8,
    pub default_drop_frame: bool,
}
Expand description

Parses raw LTC bit streams into LtcFrame values.

§Example

use oximedia_timecode::ltc_parser::{LtcBit, LtcParser};

let parser = LtcParser::new(30, false);
// Build a minimal 80-bit all-zero LTC word (plus sync word)
let mut bits = vec![LtcBit::Zero; 64];
// Append sync word: 0011 1111 1111 1101  (LS bit first)
let sync: [u8; 16] = [0,0,1,1, 1,1,1,1, 1,1,1,1, 1,1,0,1];
bits.extend(sync.iter().map(|&b| LtcBit::from(b)));
let frames = parser.decode_bits(&bits);
assert_eq!(frames.len(), 1);

Fields§

§fps: u8

Nominal frames-per-second (30 for NTSC, 25 for PAL, etc.)

§default_drop_frame: bool

Whether drop-frame mode should be assumed when not encoded.

Implementations§

Source§

impl LtcParser

Source

pub fn new(fps: u8, default_drop_frame: bool) -> Self

Create a new parser.

fps should be 24, 25, or 30. default_drop_frame sets the drop-frame assumption for streams that do not encode the flag.

Source

pub fn decode_bits(&self, bits: &[LtcBit]) -> Vec<LtcFrame>

Scan a slice of bits for valid LTC frames and return all decoded frames.

The function searches for the 16-bit sync word at the end of each candidate 80-bit window.

Source

pub fn decode_frame( &self, bits: &[LtcBit], offset: usize, ) -> Result<LtcFrame, TimecodeError>

Decode a single 80-bit LTC word starting at offset.

Source

pub fn check_sync(&self, bits: &[LtcBit], offset: usize) -> bool

Return true if the 16 bits at offset match the LTC sync word.

Source

pub fn encode_frame(&self, tc: &Timecode) -> Vec<LtcBit>

Encode a Timecode into an 80-bit LTC word (returned as Vec<LtcBit>).

This is the inverse of decode_frame and is useful for round-trip tests.

Trait Implementations§

Source§

impl Clone for LtcParser

Source§

fn clone(&self) -> LtcParser

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LtcParser

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.