pub flipped: bool,
/// Picture pixel format.
pub format: NAPixelFormaton,
+ /// Declared bits per sample.
+ pub bits: u8,
}
impl NAVideoInfo {
/// Constructs a new `NAVideoInfo` instance.
pub fn new(w: usize, h: usize, flip: bool, fmt: NAPixelFormaton) -> Self {
- NAVideoInfo { width: w, height: h, flipped: flip, format: fmt }
+ let bits = fmt.get_total_depth();
+ NAVideoInfo { width: w, height: h, flipped: flip, format: fmt, bits }
}
/// Returns picture width.
pub fn get_width(&self) -> usize { self.width as usize }
pub fn get_chmap(&self) -> &NAChannelMap { &self.chmap }
/// Returns an immutable reference to the data.
pub fn get_data(&self) -> &Vec<T> { self.data.as_ref() }
+ /// Returns reference to the data.
+ pub fn get_data_ref(&self) -> NABufferRef<Vec<T>> { self.data.clone() }
/// Returns a mutable reference to the data.
pub fn get_data_mut(&mut self) -> Option<&mut Vec<T>> { self.data.as_mut() }
/// Clones current `NAAudioBuffer` into a new one.
properties: NACodecTypeInfo::None,
extradata: None };
-/// Option definition.
-#[derive(Debug)]
-pub struct NAOptionDefinition {
- /// Option name.
- pub name: &'static str,
- /// Option meaning.
- pub description: &'static str,
- /// Minimal value for the option (if applicable).
- pub min_value: Option<NAValue>,
- /// Maximum value for the option (if applicable).
- pub max_value: Option<NAValue>,
-}
-
-/// Option.
-#[derive(Clone,Debug,PartialEq)]
-pub struct NAOption {
- /// Option name.
- pub name: String,
- /// Option value.
- pub value: NAValue,
-}
-
-/// A list of accepted option values.
-#[derive(Debug,Clone,PartialEq)]
-pub enum NAValue {
- /// Empty value.
- None,
- /// Boolean value.
- Bool(bool),
- /// Integer value.
- Int(i32),
- /// Long integer value.
- Long(i64),
- /// Floating point value.
- Float(f32),
- /// String value.
- String(String),
- /// Binary data value.
- Data(Arc<Vec<u8>>),
-}
-
/// A list of recognized frame types.
#[derive(Debug,Clone,Copy,PartialEq)]
#[allow(dead_code)]
/// Converts time in given scale into timestamp in given base.
pub fn time_to_ts(time: u64, base: u64, tb_num: u32, tb_den: u32) -> u64 {
- let tb_num = tb_num as u64;
- let tb_den = tb_den as u64;
+ let tb_num = u64::from(tb_num);
+ let tb_den = u64::from(tb_den);
let tmp = time.checked_mul(tb_num);
if let Some(tmp) = tmp {
tmp / base / tb_den
}
/// Converts timestamp in given base into time in given scale.
pub fn ts_to_time(ts: u64, base: u64, tb_num: u32, tb_den: u32) -> u64 {
- let tb_num = tb_num as u64;
- let tb_den = tb_den as u64;
+ let tb_num = u64::from(tb_num);
+ let tb_den = u64::from(tb_den);
let tmp = ts.checked_mul(base);
if let Some(tmp) = tmp {
let tmp2 = tmp.checked_mul(tb_num);
// vec.resize(size, 0);
NAPacket { stream: str, ts, keyframe: kf, buffer: NABufferRef::new(vec), side_data: Vec::new() }
}
+ /// Constructs a new `NAPacket` instance reusing a buffer reference.
+ pub fn new_from_refbuf(str: NAStreamRef, ts: NATimeInfo, kf: bool, buffer: NABufferRef<Vec<u8>>) -> Self {
+ NAPacket { stream: str, ts, keyframe: kf, buffer, side_data: Vec::new() }
+ }
/// Returns information about the stream packet belongs to.
pub fn get_stream(&self) -> NAStreamRef { self.stream.clone() }
/// Returns packet timestamp.