mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2025-02-13 03:15:25 +00:00
mux/{mp4, fmp4}: Hard depend on feature v1_18
Else --no-default-features was failing to compile. v1_18 is needed to for the aggregator code. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1008>
This commit is contained in:
parent
bfe62488f4
commit
b8d2d98027
4 changed files with 92 additions and 200 deletions
|
@ -10,11 +10,11 @@ rust-version = "1.63"
|
|||
|
||||
[dependencies]
|
||||
anyhow = "1"
|
||||
gst = { package = "gstreamer", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19.1" }
|
||||
gst-base = { package = "gstreamer-base", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19" }
|
||||
gst-audio = { package = "gstreamer-audio", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19" }
|
||||
gst-video = { package = "gstreamer-video", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19" }
|
||||
gst-pbutils = { package = "gstreamer-pbutils", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19" }
|
||||
gst = { package = "gstreamer", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19.1", features = ["v1_18"] }
|
||||
gst-base = { package = "gstreamer-base", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19", features = ["v1_18"] }
|
||||
gst-audio = { package = "gstreamer-audio", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19", features = ["v1_18"] }
|
||||
gst-video = { package = "gstreamer-video", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19", features = ["v1_18"] }
|
||||
gst-pbutils = { package = "gstreamer-pbutils", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19", features = ["v1_18"] }
|
||||
once_cell = "1.0"
|
||||
|
||||
[lib]
|
||||
|
@ -33,11 +33,10 @@ chrono = "0.4"
|
|||
gst-plugin-version-helper = { version = "0.7", path="../../version-helper" }
|
||||
|
||||
[features]
|
||||
default = ["v1_18"]
|
||||
default = []
|
||||
static = []
|
||||
capi = []
|
||||
v1_18 = ["gst-video/v1_18"]
|
||||
doc = ["gst/v1_18"]
|
||||
doc = []
|
||||
|
||||
[package.metadata.capi]
|
||||
min_version = "0.8.0"
|
||||
|
|
|
@ -82,34 +82,26 @@ fn cmaf_brands_from_caps(caps: &gst::CapsRef, compatible_brands: &mut Vec<&'stat
|
|||
&& level <= ("3", "1")
|
||||
&& fps <= gst::Fraction::new(60, 1)
|
||||
{
|
||||
#[cfg(feature = "v1_18")]
|
||||
if let Some(colorimetry) =
|
||||
colorimetry.and_then(|c| c.parse::<gst_video::VideoColorimetry>().ok())
|
||||
{
|
||||
if let Some(colorimetry) = colorimetry
|
||||
.and_then(|c| c.parse::<gst_video::VideoColorimetry>().ok())
|
||||
{
|
||||
if matches!(
|
||||
colorimetry.primaries(),
|
||||
gst_video::VideoColorPrimaries::Bt709
|
||||
| gst_video::VideoColorPrimaries::Bt470bg
|
||||
| gst_video::VideoColorPrimaries::Smpte170m
|
||||
) && matches!(
|
||||
colorimetry.transfer(),
|
||||
gst_video::VideoTransferFunction::Bt709
|
||||
| gst_video::VideoTransferFunction::Bt601
|
||||
) && matches!(
|
||||
colorimetry.matrix(),
|
||||
gst_video::VideoColorMatrix::Bt709
|
||||
| gst_video::VideoColorMatrix::Bt601
|
||||
) {
|
||||
compatible_brands.push(b"cfsd");
|
||||
}
|
||||
} else {
|
||||
// Assume it's OK
|
||||
if matches!(
|
||||
colorimetry.primaries(),
|
||||
gst_video::VideoColorPrimaries::Bt709
|
||||
| gst_video::VideoColorPrimaries::Bt470bg
|
||||
| gst_video::VideoColorPrimaries::Smpte170m
|
||||
) && matches!(
|
||||
colorimetry.transfer(),
|
||||
gst_video::VideoTransferFunction::Bt709
|
||||
| gst_video::VideoTransferFunction::Bt601
|
||||
) && matches!(
|
||||
colorimetry.matrix(),
|
||||
gst_video::VideoColorMatrix::Bt709
|
||||
| gst_video::VideoColorMatrix::Bt601
|
||||
) {
|
||||
compatible_brands.push(b"cfsd");
|
||||
}
|
||||
}
|
||||
#[cfg(not(feature = "v1_18"))]
|
||||
{
|
||||
} else {
|
||||
// Assume it's OK
|
||||
compatible_brands.push(b"cfsd");
|
||||
}
|
||||
|
@ -118,30 +110,22 @@ fn cmaf_brands_from_caps(caps: &gst::CapsRef, compatible_brands: &mut Vec<&'stat
|
|||
&& level <= ("4", "0")
|
||||
&& fps <= gst::Fraction::new(60, 1)
|
||||
{
|
||||
#[cfg(feature = "v1_18")]
|
||||
if let Some(colorimetry) =
|
||||
colorimetry.and_then(|c| c.parse::<gst_video::VideoColorimetry>().ok())
|
||||
{
|
||||
if let Some(colorimetry) = colorimetry
|
||||
.and_then(|c| c.parse::<gst_video::VideoColorimetry>().ok())
|
||||
{
|
||||
if matches!(
|
||||
colorimetry.primaries(),
|
||||
gst_video::VideoColorPrimaries::Bt709
|
||||
) && matches!(
|
||||
colorimetry.transfer(),
|
||||
gst_video::VideoTransferFunction::Bt709
|
||||
) && matches!(
|
||||
colorimetry.matrix(),
|
||||
gst_video::VideoColorMatrix::Bt709
|
||||
) {
|
||||
compatible_brands.push(b"cfhd");
|
||||
}
|
||||
} else {
|
||||
// Assume it's OK
|
||||
if matches!(
|
||||
colorimetry.primaries(),
|
||||
gst_video::VideoColorPrimaries::Bt709
|
||||
) && matches!(
|
||||
colorimetry.transfer(),
|
||||
gst_video::VideoTransferFunction::Bt709
|
||||
) && matches!(
|
||||
colorimetry.matrix(),
|
||||
gst_video::VideoColorMatrix::Bt709
|
||||
) {
|
||||
compatible_brands.push(b"cfhd");
|
||||
}
|
||||
}
|
||||
#[cfg(not(feature = "v1_18"))]
|
||||
{
|
||||
} else {
|
||||
// Assume it's OK
|
||||
compatible_brands.push(b"cfhd");
|
||||
}
|
||||
|
@ -271,7 +255,6 @@ fn cmaf_brands_from_caps(caps: &gst::CapsRef, compatible_brands: &mut Vec<&'stat
|
|||
&& level <= ("5", "1")
|
||||
&& fps <= gst::Fraction::new(60, 1)
|
||||
{
|
||||
#[cfg(feature = "v1_18")]
|
||||
if let Some(colorimetry) =
|
||||
colorimetry.and_then(|c| c.parse::<gst_video::VideoColorimetry>().ok())
|
||||
{
|
||||
|
@ -318,11 +301,6 @@ fn cmaf_brands_from_caps(caps: &gst::CapsRef, compatible_brands: &mut Vec<&'stat
|
|||
compatible_brands.push(b"cud1");
|
||||
}
|
||||
}
|
||||
#[cfg(not(feature = "v1_18"))]
|
||||
{
|
||||
// Assume it's OK
|
||||
compatible_brands.push(b"cud1");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1109,50 +1087,11 @@ fn write_visual_sample_entry(
|
|||
write_box(v, b"colr", move |v| {
|
||||
v.extend(b"nclx");
|
||||
let (primaries, transfer, matrix) = {
|
||||
#[cfg(feature = "v1_18")]
|
||||
{
|
||||
(
|
||||
(colorimetry.primaries().to_iso() as u16),
|
||||
(colorimetry.transfer().to_iso() as u16),
|
||||
(colorimetry.matrix().to_iso() as u16),
|
||||
)
|
||||
}
|
||||
#[cfg(not(feature = "v1_18"))]
|
||||
{
|
||||
let primaries = match colorimetry.primaries() {
|
||||
gst_video::VideoColorPrimaries::Bt709 => 1u16,
|
||||
gst_video::VideoColorPrimaries::Bt470m => 4u16,
|
||||
gst_video::VideoColorPrimaries::Bt470bg => 5u16,
|
||||
gst_video::VideoColorPrimaries::Smpte170m => 6u16,
|
||||
gst_video::VideoColorPrimaries::Smpte240m => 7u16,
|
||||
gst_video::VideoColorPrimaries::Film => 8u16,
|
||||
gst_video::VideoColorPrimaries::Bt2020 => 9u16,
|
||||
_ => 2,
|
||||
};
|
||||
let transfer = match colorimetry.transfer() {
|
||||
gst_video::VideoTransferFunction::Bt709 => 1u16,
|
||||
gst_video::VideoTransferFunction::Gamma22 => 4u16,
|
||||
gst_video::VideoTransferFunction::Gamma28 => 5u16,
|
||||
gst_video::VideoTransferFunction::Smpte240m => 7u16,
|
||||
gst_video::VideoTransferFunction::Gamma10 => 8u16,
|
||||
gst_video::VideoTransferFunction::Log100 => 9u16,
|
||||
gst_video::VideoTransferFunction::Log316 => 10u16,
|
||||
gst_video::VideoTransferFunction::Srgb => 13u16,
|
||||
gst_video::VideoTransferFunction::Bt202012 => 15u16,
|
||||
_ => 2,
|
||||
};
|
||||
let matrix = match colorimetry.matrix() {
|
||||
gst_video::VideoColorMatrix::Rgb => 0u16,
|
||||
gst_video::VideoColorMatrix::Bt709 => 1u16,
|
||||
gst_video::VideoColorMatrix::Fcc => 4u16,
|
||||
gst_video::VideoColorMatrix::Bt601 => 6u16,
|
||||
gst_video::VideoColorMatrix::Smpte240m => 7u16,
|
||||
gst_video::VideoColorMatrix::Bt2020 => 9u16,
|
||||
_ => 2,
|
||||
};
|
||||
|
||||
(primaries, transfer, matrix)
|
||||
}
|
||||
(
|
||||
(colorimetry.primaries().to_iso() as u16),
|
||||
(colorimetry.transfer().to_iso() as u16),
|
||||
(colorimetry.matrix().to_iso() as u16),
|
||||
)
|
||||
};
|
||||
|
||||
let full_range = match colorimetry.range() {
|
||||
|
@ -1170,29 +1109,26 @@ fn write_visual_sample_entry(
|
|||
})?;
|
||||
}
|
||||
|
||||
#[cfg(feature = "v1_18")]
|
||||
{
|
||||
if let Ok(cll) = gst_video::VideoContentLightLevel::from_caps(&stream.caps) {
|
||||
write_box(v, b"clli", move |v| {
|
||||
v.extend((cll.max_content_light_level() as u16).to_be_bytes());
|
||||
v.extend((cll.max_frame_average_light_level() as u16).to_be_bytes());
|
||||
Ok(())
|
||||
})?;
|
||||
}
|
||||
if let Ok(cll) = gst_video::VideoContentLightLevel::from_caps(&stream.caps) {
|
||||
write_box(v, b"clli", move |v| {
|
||||
v.extend((cll.max_content_light_level() as u16).to_be_bytes());
|
||||
v.extend((cll.max_frame_average_light_level() as u16).to_be_bytes());
|
||||
Ok(())
|
||||
})?;
|
||||
}
|
||||
|
||||
if let Ok(mastering) = gst_video::VideoMasteringDisplayInfo::from_caps(&stream.caps) {
|
||||
write_box(v, b"mdcv", move |v| {
|
||||
for primary in mastering.display_primaries() {
|
||||
v.extend(primary.x.to_be_bytes());
|
||||
v.extend(primary.y.to_be_bytes());
|
||||
}
|
||||
v.extend(mastering.white_point().x.to_be_bytes());
|
||||
v.extend(mastering.white_point().y.to_be_bytes());
|
||||
v.extend(mastering.max_display_mastering_luminance().to_be_bytes());
|
||||
v.extend(mastering.max_display_mastering_luminance().to_be_bytes());
|
||||
Ok(())
|
||||
})?;
|
||||
}
|
||||
if let Ok(mastering) = gst_video::VideoMasteringDisplayInfo::from_caps(&stream.caps) {
|
||||
write_box(v, b"mdcv", move |v| {
|
||||
for primary in mastering.display_primaries() {
|
||||
v.extend(primary.x.to_be_bytes());
|
||||
v.extend(primary.y.to_be_bytes());
|
||||
}
|
||||
v.extend(mastering.white_point().x.to_be_bytes());
|
||||
v.extend(mastering.white_point().y.to_be_bytes());
|
||||
v.extend(mastering.max_display_mastering_luminance().to_be_bytes());
|
||||
v.extend(mastering.max_display_mastering_luminance().to_be_bytes());
|
||||
Ok(())
|
||||
})?;
|
||||
}
|
||||
|
||||
// Write fiel box for codecs that require it
|
||||
|
|
|
@ -10,11 +10,11 @@ rust-version = "1.63"
|
|||
|
||||
[dependencies]
|
||||
anyhow = "1"
|
||||
gst = { package = "gstreamer", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19.1" }
|
||||
gst-base = { package = "gstreamer-base", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19" }
|
||||
gst-audio = { package = "gstreamer-audio", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19" }
|
||||
gst-video = { package = "gstreamer-video", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19" }
|
||||
gst-pbutils = { package = "gstreamer-pbutils", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19" }
|
||||
gst = { package = "gstreamer", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19.1", features = ["v1_18"] }
|
||||
gst-base = { package = "gstreamer-base", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19", features = ["v1_18"] }
|
||||
gst-audio = { package = "gstreamer-audio", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19", features = ["v1_18"] }
|
||||
gst-video = { package = "gstreamer-video", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19", features = ["v1_18"] }
|
||||
gst-pbutils = { package = "gstreamer-pbutils", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", branch = "0.19", version = "0.19", features = ["v1_18"] }
|
||||
once_cell = "1.0"
|
||||
|
||||
[lib]
|
||||
|
@ -30,11 +30,10 @@ url = "2"
|
|||
gst-plugin-version-helper = { version = "0.7", path="../../version-helper" }
|
||||
|
||||
[features]
|
||||
default = ["v1_18"]
|
||||
default = []
|
||||
static = []
|
||||
capi = []
|
||||
v1_18 = ["gst-video/v1_18"]
|
||||
doc = ["gst/v1_18"]
|
||||
doc = []
|
||||
|
||||
[package.metadata.capi]
|
||||
min_version = "0.8.0"
|
||||
|
|
|
@ -904,50 +904,11 @@ fn write_visual_sample_entry(
|
|||
write_box(v, b"colr", move |v| {
|
||||
v.extend(b"nclx");
|
||||
let (primaries, transfer, matrix) = {
|
||||
#[cfg(feature = "v1_18")]
|
||||
{
|
||||
(
|
||||
(colorimetry.primaries().to_iso() as u16),
|
||||
(colorimetry.transfer().to_iso() as u16),
|
||||
(colorimetry.matrix().to_iso() as u16),
|
||||
)
|
||||
}
|
||||
#[cfg(not(feature = "v1_18"))]
|
||||
{
|
||||
let primaries = match colorimetry.primaries() {
|
||||
gst_video::VideoColorPrimaries::Bt709 => 1u16,
|
||||
gst_video::VideoColorPrimaries::Bt470m => 4u16,
|
||||
gst_video::VideoColorPrimaries::Bt470bg => 5u16,
|
||||
gst_video::VideoColorPrimaries::Smpte170m => 6u16,
|
||||
gst_video::VideoColorPrimaries::Smpte240m => 7u16,
|
||||
gst_video::VideoColorPrimaries::Film => 8u16,
|
||||
gst_video::VideoColorPrimaries::Bt2020 => 9u16,
|
||||
_ => 2,
|
||||
};
|
||||
let transfer = match colorimetry.transfer() {
|
||||
gst_video::VideoTransferFunction::Bt709 => 1u16,
|
||||
gst_video::VideoTransferFunction::Gamma22 => 4u16,
|
||||
gst_video::VideoTransferFunction::Gamma28 => 5u16,
|
||||
gst_video::VideoTransferFunction::Smpte240m => 7u16,
|
||||
gst_video::VideoTransferFunction::Gamma10 => 8u16,
|
||||
gst_video::VideoTransferFunction::Log100 => 9u16,
|
||||
gst_video::VideoTransferFunction::Log316 => 10u16,
|
||||
gst_video::VideoTransferFunction::Srgb => 13u16,
|
||||
gst_video::VideoTransferFunction::Bt202012 => 15u16,
|
||||
_ => 2,
|
||||
};
|
||||
let matrix = match colorimetry.matrix() {
|
||||
gst_video::VideoColorMatrix::Rgb => 0u16,
|
||||
gst_video::VideoColorMatrix::Bt709 => 1u16,
|
||||
gst_video::VideoColorMatrix::Fcc => 4u16,
|
||||
gst_video::VideoColorMatrix::Bt601 => 6u16,
|
||||
gst_video::VideoColorMatrix::Smpte240m => 7u16,
|
||||
gst_video::VideoColorMatrix::Bt2020 => 9u16,
|
||||
_ => 2,
|
||||
};
|
||||
|
||||
(primaries, transfer, matrix)
|
||||
}
|
||||
(
|
||||
(colorimetry.primaries().to_iso() as u16),
|
||||
(colorimetry.transfer().to_iso() as u16),
|
||||
(colorimetry.matrix().to_iso() as u16),
|
||||
)
|
||||
};
|
||||
|
||||
let full_range = match colorimetry.range() {
|
||||
|
@ -965,29 +926,26 @@ fn write_visual_sample_entry(
|
|||
})?;
|
||||
}
|
||||
|
||||
#[cfg(feature = "v1_18")]
|
||||
{
|
||||
if let Ok(cll) = gst_video::VideoContentLightLevel::from_caps(&stream.caps) {
|
||||
write_box(v, b"clli", move |v| {
|
||||
v.extend((cll.max_content_light_level() as u16).to_be_bytes());
|
||||
v.extend((cll.max_frame_average_light_level() as u16).to_be_bytes());
|
||||
Ok(())
|
||||
})?;
|
||||
}
|
||||
if let Ok(cll) = gst_video::VideoContentLightLevel::from_caps(&stream.caps) {
|
||||
write_box(v, b"clli", move |v| {
|
||||
v.extend((cll.max_content_light_level() as u16).to_be_bytes());
|
||||
v.extend((cll.max_frame_average_light_level() as u16).to_be_bytes());
|
||||
Ok(())
|
||||
})?;
|
||||
}
|
||||
|
||||
if let Ok(mastering) = gst_video::VideoMasteringDisplayInfo::from_caps(&stream.caps) {
|
||||
write_box(v, b"mdcv", move |v| {
|
||||
for primary in mastering.display_primaries() {
|
||||
v.extend(primary.x.to_be_bytes());
|
||||
v.extend(primary.y.to_be_bytes());
|
||||
}
|
||||
v.extend(mastering.white_point().x.to_be_bytes());
|
||||
v.extend(mastering.white_point().y.to_be_bytes());
|
||||
v.extend(mastering.max_display_mastering_luminance().to_be_bytes());
|
||||
v.extend(mastering.max_display_mastering_luminance().to_be_bytes());
|
||||
Ok(())
|
||||
})?;
|
||||
}
|
||||
if let Ok(mastering) = gst_video::VideoMasteringDisplayInfo::from_caps(&stream.caps) {
|
||||
write_box(v, b"mdcv", move |v| {
|
||||
for primary in mastering.display_primaries() {
|
||||
v.extend(primary.x.to_be_bytes());
|
||||
v.extend(primary.y.to_be_bytes());
|
||||
}
|
||||
v.extend(mastering.white_point().x.to_be_bytes());
|
||||
v.extend(mastering.white_point().y.to_be_bytes());
|
||||
v.extend(mastering.max_display_mastering_luminance().to_be_bytes());
|
||||
v.extend(mastering.max_display_mastering_luminance().to_be_bytes());
|
||||
Ok(())
|
||||
})?;
|
||||
}
|
||||
|
||||
// Write fiel box for codecs that require it
|
||||
|
|
Loading…
Reference in a new issue