pbutils/encoding_profile: Add support for 1.18 single-segment API

This commit is contained in:
Sebastian Dröge 2021-10-24 18:15:53 +03:00
parent 7f0ca0011c
commit e95a75fdab

View file

@ -26,6 +26,9 @@ trait EncodingProfileBuilderCommon {
fn set_preset(&self, preset: Option<&str>); fn set_preset(&self, preset: Option<&str>);
fn set_preset_name(&self, preset_name: Option<&str>); fn set_preset_name(&self, preset_name: Option<&str>);
#[cfg(feature = "v1_18")]
fn set_single_segment(&self, single_segment: bool);
} }
impl<O: IsA<EncodingProfile>> EncodingProfileBuilderCommon for O { impl<O: IsA<EncodingProfile>> EncodingProfileBuilderCommon for O {
@ -103,6 +106,16 @@ impl<O: IsA<EncodingProfile>> EncodingProfileBuilderCommon for O {
); );
} }
} }
#[cfg(feature = "v1_18")]
fn set_single_segment(&self, single_segment: bool) {
unsafe {
ffi::gst_encoding_profile_set_single_segment(
self.as_ref().to_glib_none().0,
single_segment.into_glib(),
);
}
}
} }
// Split the trait as only the getter is public // Split the trait as only the getter is public
@ -269,6 +282,8 @@ struct EncodingProfileBuilderCommonData<'a> {
presence: u32, presence: u32,
allow_dynamic_output: bool, allow_dynamic_output: bool,
enabled: bool, enabled: bool,
#[cfg(feature = "v1_18")]
single_segment: bool,
} }
impl<'a> EncodingProfileBuilderCommonData<'a> { impl<'a> EncodingProfileBuilderCommonData<'a> {
@ -282,6 +297,8 @@ impl<'a> EncodingProfileBuilderCommonData<'a> {
presence: 0, presence: 0,
allow_dynamic_output: true, allow_dynamic_output: true,
enabled: true, enabled: true,
#[cfg(feature = "v1_18")]
single_segment: false,
} }
} }
} }
@ -295,6 +312,8 @@ pub trait EncodingProfileBuilder<'a>: Sized {
fn presence(self, presence: u32) -> Self; fn presence(self, presence: u32) -> Self;
fn allow_dynamic_output(self, allow: bool) -> Self; fn allow_dynamic_output(self, allow: bool) -> Self;
fn enabled(self, enabled: bool) -> Self; fn enabled(self, enabled: bool) -> Self;
#[cfg(feature = "v1_18")]
fn single_segment(self, single_segment: bool) -> Self;
} }
macro_rules! declare_encoding_profile_builder_common( macro_rules! declare_encoding_profile_builder_common(
@ -345,6 +364,12 @@ macro_rules! declare_encoding_profile_builder_common(
self.base.enabled = enabled; self.base.enabled = enabled;
self self
} }
#[cfg(feature = "v1_18")]
fn single_segment(mut self, single_segment: bool) -> $name<'a> {
self.base.single_segment = single_segment;
self
}
} }
} }
); );
@ -361,6 +386,10 @@ fn set_common_fields<T: EncodingProfileBuilderCommon>(
profile.set_allow_dynamic_output(base_data.allow_dynamic_output); profile.set_allow_dynamic_output(base_data.allow_dynamic_output);
profile.set_enabled(base_data.enabled); profile.set_enabled(base_data.enabled);
profile.set_presence(base_data.presence); profile.set_presence(base_data.presence);
#[cfg(feature = "v1_18")]
{
profile.set_single_segment(base_data.single_segment);
}
} }
#[derive(Debug)] #[derive(Debug)]