X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-core%2Fsrc%2Fcodecs%2Fmod.rs;h=1482a61f67ae5ca1ea64a1ea95e8d556aece90ee;hb=b6b2edf658c6399daa8f6a6b782d9ede5c3dd68c;hp=1072fc40ca2ad0d4b3952a2dad07950c879cd1e3;hpb=1ebf572dc8cdbf6e1440d90295b3e69eb76339df;p=nihav.git diff --git a/nihav-core/src/codecs/mod.rs b/nihav-core/src/codecs/mod.rs index 1072fc4..1482a61 100644 --- a/nihav-core/src/codecs/mod.rs +++ b/nihav-core/src/codecs/mod.rs @@ -210,6 +210,13 @@ pub const ENC_MODE_CBR: u64 = 1 << 0; /// Encoding parameter flag to force constant framerate mode. pub const ENC_MODE_CFR: u64 = 1 << 1; +/// Encoder supports constant bitrate mode. +pub const ENC_CAPS_CBR: u64 = 1 << 0; +/// Encoder supports skip frames. +pub const ENC_CAPS_SKIPFRAME: u64 = 1 << 1; +/// Encoder supports mid-stream parameters change. +pub const ENC_CAPS_PARAMCHANGE: u64 = 1 << 2; + /// Encoding parameters. #[derive(Clone,Copy,PartialEq)] pub struct EncodeParameters { @@ -219,7 +226,7 @@ pub struct EncodeParameters { pub tb_num: u32, /// Time base denominator. Ignored for audio. pub tb_den: u32, - /// Bitrate in kilobits per second. + /// Bitrate in bits per second. pub bitrate: u32, /// A collection of various boolean encoder settings like CBR mode. /// @@ -300,6 +307,10 @@ pub trait NAEncoder: NAOptionHandler { /// // convert input into format defined in target_params, feed to the encoder, ... /// ``` fn negotiate_format(&self, encinfo: &EncodeParameters) -> EncoderResult; + /// Queries encoder capabilities. + /// + /// See `ENC_CAPS_*` for examples. + fn get_capabilities(&self) -> u64; /// Initialises the encoder. fn init(&mut self, stream_id: u32, encinfo: EncodeParameters) -> EncoderResult; /// Takes a single frame for encoding. @@ -374,6 +385,8 @@ pub trait NAPacketiser { fn get_packet(&mut self, stream: NAStreamRef) -> DecoderResult>; /// Resets the internal buffer. fn reset(&mut self); + /// Tells how much data is left in the internal buffer. + fn bytes_left(&self) -> usize; } /// Decoder information used during creating a packetiser for requested codec.