]> git.nihav.org Git - nihav.git/blobdiff - nihav-core/src/frame.rs
core: preparation work for introducing options
[nihav.git] / nihav-core / src / frame.rs
index 47d60850a5e0a487a725c4a0071c4c1fd7e4e10d..badc7f8c0a542a3a64b60e860cd5490b72404344 100644 (file)
@@ -857,15 +857,41 @@ pub const DUMMY_CODEC_INFO: NACodecInfo = NACodecInfo {
                                 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)]
+#[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.
@@ -1216,6 +1242,11 @@ impl NAPacket {
     pub fn get_buffer(&self) -> NABufferRef<Vec<u8>> { self.buffer.clone() }
     /// Adds side data for a packet.
     pub fn add_side_data(&mut self, side_data: NASideData) { self.side_data.push(side_data); }
+    /// Assigns packet to a new stream.
+    pub fn reassign(&mut self, str: NAStreamRef, ts: NATimeInfo) {
+        self.stream = str;
+        self.ts = ts;
+    }
 }
 
 impl Drop for NAPacket {