1
0
Fork 0
mirror of https://github.com/sile/hls_m3u8.git synced 2024-11-25 08:31:00 +00:00

internalized DecimalResolution #9

This commit is contained in:
Luro02 2019-09-15 10:51:04 +02:00
parent 3acf67df6a
commit 6ffbe50322
4 changed files with 47 additions and 8 deletions

View file

@ -13,22 +13,37 @@ use crate::Error;
/// ///
/// [4.3.4.3. EXT-X-I-FRAME-STREAM-INF]: https://tools.ietf.org/html/rfc8216#section-4.3.4.3 /// [4.3.4.3. EXT-X-I-FRAME-STREAM-INF]: https://tools.ietf.org/html/rfc8216#section-4.3.4.3
#[derive(Getters, Setters, MutGetters, Debug, Clone, PartialEq, Eq, Hash)] #[derive(Getters, Setters, MutGetters, Debug, Clone, PartialEq, Eq, Hash)]
#[get = "pub"]
#[set = "pub"]
#[get_mut = "pub"]
pub struct ExtXIFrameStreamInf { pub struct ExtXIFrameStreamInf {
#[get = "pub"]
#[set = "pub"]
#[get_mut = "pub"]
/// The URI, that identifies the associated media playlist. /// The URI, that identifies the associated media playlist.
uri: String, uri: String,
#[get = "pub"]
#[set = "pub"]
#[get_mut = "pub"]
/// The peak segment bit rate of the variant stream. /// The peak segment bit rate of the variant stream.
bandwidth: u64, bandwidth: u64,
#[get = "pub"]
#[set = "pub"]
#[get_mut = "pub"]
/// The average segment bit rate of the variant stream. /// The average segment bit rate of the variant stream.
average_bandwidth: Option<u64>, average_bandwidth: Option<u64>,
#[get = "pub"]
#[set = "pub"]
#[get_mut = "pub"]
/// A string that represents the list of codec types contained the variant stream. /// A string that represents the list of codec types contained the variant stream.
codecs: Option<String>, codecs: Option<String>,
/// The optimal pixel resolution at which to display all the video in the variant stream. /// The optimal pixel resolution at which to display all the video in the variant stream.
resolution: Option<DecimalResolution>, resolution: Option<DecimalResolution>,
#[get = "pub"]
#[set = "pub"]
#[get_mut = "pub"]
/// The HDCP level of the variant stream. /// The HDCP level of the variant stream.
hdcp_level: Option<HdcpLevel>, hdcp_level: Option<HdcpLevel>,
#[get = "pub"]
#[set = "pub"]
#[get_mut = "pub"]
/// The group identifier for the video in the variant stream. /// The group identifier for the video in the variant stream.
video: Option<String>, video: Option<String>,
} }
@ -49,6 +64,25 @@ impl ExtXIFrameStreamInf {
} }
} }
/// The optimal pixel resolution at which to display all the video in the variant stream.
pub fn resolution(&self) -> Option<(usize, usize)> {
if let Some(res) = &self.resolution {
Some((res.width(), res.height()))
} else {
None
}
}
/// Sets the optimal pixel resolution at which to display all the video in the variant stream.
pub fn set_resolution(&mut self, width: usize, height: usize) -> &mut Self {
if let Some(res) = &mut self.resolution {
res.set_width(width);
res.set_height(height);
} else {
self.resolution = Some(DecimalResolution::new(width, height));
}
self
}
/// Returns the protocol compatibility version that this tag requires. /// Returns the protocol compatibility version that this tag requires.
pub const fn requires_version(&self) -> ProtocolVersion { pub const fn requires_version(&self) -> ProtocolVersion {
ProtocolVersion::V1 ProtocolVersion::V1

View file

@ -67,9 +67,14 @@ impl ExtXStreamInf {
self.codecs.as_ref() self.codecs.as_ref()
} }
/// Returns the optimal pixel resolution at which to display all the video in the variant stream. /// Returns the optimal pixel resolution at which to display all the video in the variant
pub const fn resolution(&self) -> Option<DecimalResolution> { /// stream.
self.resolution pub fn resolution(&self) -> Option<(usize, usize)> {
if let Some(res) = &self.resolution {
Some((res.width(), res.height()))
} else {
None
}
} }
/// Returns the maximum frame rate for all the video in the variant stream. /// Returns the maximum frame rate for all the video in the variant stream.

View file

@ -9,7 +9,7 @@ use crate::Error;
/// ///
/// [4.2. Attribute Lists]: https://tools.ietf.org/html/rfc8216#section-4.2 /// [4.2. Attribute Lists]: https://tools.ietf.org/html/rfc8216#section-4.2
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct DecimalResolution { pub(crate) struct DecimalResolution {
width: usize, width: usize,
height: usize, height: usize,
} }

View file

@ -18,7 +18,7 @@ mod single_line_string;
pub use byte_range::*; pub use byte_range::*;
pub use closed_captions::*; pub use closed_captions::*;
pub use decimal_floating_point::*; pub use decimal_floating_point::*;
pub use decimal_resolution::*; pub(crate) use decimal_resolution::*;
pub use decryption_key::*; pub use decryption_key::*;
pub use encryption_method::*; pub use encryption_method::*;
pub use hdcp_level::*; pub use hdcp_level::*;