mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2024-06-10 10:19:23 +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/588>
This commit is contained in:
parent
821c23e202
commit
a84eeeb240
|
@ -10,11 +10,11 @@ rust-version = "1.63"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
gst = { package = "gstreamer", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
|
gst = { package = "gstreamer", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", features = ["v1_18"] }
|
||||||
gst-base = { package = "gstreamer-base", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
|
gst-base = { package = "gstreamer-base", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", features = ["v1_18"] }
|
||||||
gst-audio = { package = "gstreamer-audio", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
|
gst-audio = { package = "gstreamer-audio", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", features = ["v1_18"] }
|
||||||
gst-video = { package = "gstreamer-video", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
|
gst-video = { package = "gstreamer-video", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", features = ["v1_18"] }
|
||||||
gst-pbutils = { package = "gstreamer-pbutils", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
|
gst-pbutils = { package = "gstreamer-pbutils", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", features = ["v1_18"] }
|
||||||
once_cell = "1.0"
|
once_cell = "1.0"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
|
@ -33,11 +33,10 @@ chrono = "0.4"
|
||||||
gst-plugin-version-helper = { path="../../version-helper" }
|
gst-plugin-version-helper = { path="../../version-helper" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["v1_18"]
|
default = []
|
||||||
static = []
|
static = []
|
||||||
capi = []
|
capi = []
|
||||||
v1_18 = ["gst-video/v1_18"]
|
doc = []
|
||||||
doc = ["gst/v1_18"]
|
|
||||||
|
|
||||||
[package.metadata.capi]
|
[package.metadata.capi]
|
||||||
min_version = "0.8.0"
|
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")
|
&& level <= ("3", "1")
|
||||||
&& fps <= gst::Fraction::new(60, 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
|
if matches!(
|
||||||
.and_then(|c| c.parse::<gst_video::VideoColorimetry>().ok())
|
colorimetry.primaries(),
|
||||||
{
|
gst_video::VideoColorPrimaries::Bt709
|
||||||
if matches!(
|
| gst_video::VideoColorPrimaries::Bt470bg
|
||||||
colorimetry.primaries(),
|
| gst_video::VideoColorPrimaries::Smpte170m
|
||||||
gst_video::VideoColorPrimaries::Bt709
|
) && matches!(
|
||||||
| gst_video::VideoColorPrimaries::Bt470bg
|
colorimetry.transfer(),
|
||||||
| gst_video::VideoColorPrimaries::Smpte170m
|
gst_video::VideoTransferFunction::Bt709
|
||||||
) && matches!(
|
| gst_video::VideoTransferFunction::Bt601
|
||||||
colorimetry.transfer(),
|
) && matches!(
|
||||||
gst_video::VideoTransferFunction::Bt709
|
colorimetry.matrix(),
|
||||||
| gst_video::VideoTransferFunction::Bt601
|
gst_video::VideoColorMatrix::Bt709
|
||||||
) && matches!(
|
| gst_video::VideoColorMatrix::Bt601
|
||||||
colorimetry.matrix(),
|
) {
|
||||||
gst_video::VideoColorMatrix::Bt709
|
|
||||||
| gst_video::VideoColorMatrix::Bt601
|
|
||||||
) {
|
|
||||||
compatible_brands.push(b"cfsd");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Assume it's OK
|
|
||||||
compatible_brands.push(b"cfsd");
|
compatible_brands.push(b"cfsd");
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
#[cfg(not(feature = "v1_18"))]
|
|
||||||
{
|
|
||||||
// Assume it's OK
|
// Assume it's OK
|
||||||
compatible_brands.push(b"cfsd");
|
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")
|
&& level <= ("4", "0")
|
||||||
&& fps <= gst::Fraction::new(60, 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
|
if matches!(
|
||||||
.and_then(|c| c.parse::<gst_video::VideoColorimetry>().ok())
|
colorimetry.primaries(),
|
||||||
{
|
gst_video::VideoColorPrimaries::Bt709
|
||||||
if matches!(
|
) && matches!(
|
||||||
colorimetry.primaries(),
|
colorimetry.transfer(),
|
||||||
gst_video::VideoColorPrimaries::Bt709
|
gst_video::VideoTransferFunction::Bt709
|
||||||
) && matches!(
|
) && matches!(
|
||||||
colorimetry.transfer(),
|
colorimetry.matrix(),
|
||||||
gst_video::VideoTransferFunction::Bt709
|
gst_video::VideoColorMatrix::Bt709
|
||||||
) && matches!(
|
) {
|
||||||
colorimetry.matrix(),
|
|
||||||
gst_video::VideoColorMatrix::Bt709
|
|
||||||
) {
|
|
||||||
compatible_brands.push(b"cfhd");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Assume it's OK
|
|
||||||
compatible_brands.push(b"cfhd");
|
compatible_brands.push(b"cfhd");
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
#[cfg(not(feature = "v1_18"))]
|
|
||||||
{
|
|
||||||
// Assume it's OK
|
// Assume it's OK
|
||||||
compatible_brands.push(b"cfhd");
|
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")
|
&& level <= ("5", "1")
|
||||||
&& fps <= gst::Fraction::new(60, 1)
|
&& fps <= gst::Fraction::new(60, 1)
|
||||||
{
|
{
|
||||||
#[cfg(feature = "v1_18")]
|
|
||||||
if let Some(colorimetry) =
|
if let Some(colorimetry) =
|
||||||
colorimetry.and_then(|c| c.parse::<gst_video::VideoColorimetry>().ok())
|
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");
|
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| {
|
write_box(v, b"colr", move |v| {
|
||||||
v.extend(b"nclx");
|
v.extend(b"nclx");
|
||||||
let (primaries, transfer, matrix) = {
|
let (primaries, transfer, matrix) = {
|
||||||
#[cfg(feature = "v1_18")]
|
(
|
||||||
{
|
(colorimetry.primaries().to_iso() as u16),
|
||||||
(
|
(colorimetry.transfer().to_iso() as u16),
|
||||||
(colorimetry.primaries().to_iso() as u16),
|
(colorimetry.matrix().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)
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
let full_range = match colorimetry.range() {
|
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| {
|
||||||
if let Ok(cll) = gst_video::VideoContentLightLevel::from_caps(&stream.caps) {
|
v.extend((cll.max_content_light_level() as u16).to_be_bytes());
|
||||||
write_box(v, b"clli", move |v| {
|
v.extend((cll.max_frame_average_light_level() as u16).to_be_bytes());
|
||||||
v.extend((cll.max_content_light_level() as u16).to_be_bytes());
|
Ok(())
|
||||||
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) {
|
if let Ok(mastering) = gst_video::VideoMasteringDisplayInfo::from_caps(&stream.caps) {
|
||||||
write_box(v, b"mdcv", move |v| {
|
write_box(v, b"mdcv", move |v| {
|
||||||
for primary in mastering.display_primaries() {
|
for primary in mastering.display_primaries() {
|
||||||
v.extend(primary.x.to_be_bytes());
|
v.extend(primary.x.to_be_bytes());
|
||||||
v.extend(primary.y.to_be_bytes());
|
v.extend(primary.y.to_be_bytes());
|
||||||
}
|
}
|
||||||
v.extend(mastering.white_point().x.to_be_bytes());
|
v.extend(mastering.white_point().x.to_be_bytes());
|
||||||
v.extend(mastering.white_point().y.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());
|
||||||
v.extend(mastering.max_display_mastering_luminance().to_be_bytes());
|
v.extend(mastering.max_display_mastering_luminance().to_be_bytes());
|
||||||
Ok(())
|
Ok(())
|
||||||
})?;
|
})?;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write fiel box for codecs that require it
|
// Write fiel box for codecs that require it
|
||||||
|
|
|
@ -10,11 +10,11 @@ rust-version = "1.63"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
gst = { package = "gstreamer", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
|
gst = { package = "gstreamer", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", features = ["v1_18"] }
|
||||||
gst-base = { package = "gstreamer-base", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
|
gst-base = { package = "gstreamer-base", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", features = ["v1_18"] }
|
||||||
gst-audio = { package = "gstreamer-audio", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
|
gst-audio = { package = "gstreamer-audio", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", features = ["v1_18"] }
|
||||||
gst-video = { package = "gstreamer-video", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
|
gst-video = { package = "gstreamer-video", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", features = ["v1_18"] }
|
||||||
gst-pbutils = { package = "gstreamer-pbutils", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
|
gst-pbutils = { package = "gstreamer-pbutils", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", features = ["v1_18"] }
|
||||||
once_cell = "1.0"
|
once_cell = "1.0"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
|
@ -30,11 +30,10 @@ url = "2"
|
||||||
gst-plugin-version-helper = { path="../../version-helper" }
|
gst-plugin-version-helper = { path="../../version-helper" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["v1_18"]
|
default = []
|
||||||
static = []
|
static = []
|
||||||
capi = []
|
capi = []
|
||||||
v1_18 = ["gst-video/v1_18"]
|
doc = []
|
||||||
doc = ["gst/v1_18"]
|
|
||||||
|
|
||||||
[package.metadata.capi]
|
[package.metadata.capi]
|
||||||
min_version = "0.8.0"
|
min_version = "0.8.0"
|
||||||
|
|
|
@ -904,50 +904,11 @@ fn write_visual_sample_entry(
|
||||||
write_box(v, b"colr", move |v| {
|
write_box(v, b"colr", move |v| {
|
||||||
v.extend(b"nclx");
|
v.extend(b"nclx");
|
||||||
let (primaries, transfer, matrix) = {
|
let (primaries, transfer, matrix) = {
|
||||||
#[cfg(feature = "v1_18")]
|
(
|
||||||
{
|
(colorimetry.primaries().to_iso() as u16),
|
||||||
(
|
(colorimetry.transfer().to_iso() as u16),
|
||||||
(colorimetry.primaries().to_iso() as u16),
|
(colorimetry.matrix().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)
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
let full_range = match colorimetry.range() {
|
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| {
|
||||||
if let Ok(cll) = gst_video::VideoContentLightLevel::from_caps(&stream.caps) {
|
v.extend((cll.max_content_light_level() as u16).to_be_bytes());
|
||||||
write_box(v, b"clli", move |v| {
|
v.extend((cll.max_frame_average_light_level() as u16).to_be_bytes());
|
||||||
v.extend((cll.max_content_light_level() as u16).to_be_bytes());
|
Ok(())
|
||||||
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) {
|
if let Ok(mastering) = gst_video::VideoMasteringDisplayInfo::from_caps(&stream.caps) {
|
||||||
write_box(v, b"mdcv", move |v| {
|
write_box(v, b"mdcv", move |v| {
|
||||||
for primary in mastering.display_primaries() {
|
for primary in mastering.display_primaries() {
|
||||||
v.extend(primary.x.to_be_bytes());
|
v.extend(primary.x.to_be_bytes());
|
||||||
v.extend(primary.y.to_be_bytes());
|
v.extend(primary.y.to_be_bytes());
|
||||||
}
|
}
|
||||||
v.extend(mastering.white_point().x.to_be_bytes());
|
v.extend(mastering.white_point().x.to_be_bytes());
|
||||||
v.extend(mastering.white_point().y.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());
|
||||||
v.extend(mastering.max_display_mastering_luminance().to_be_bytes());
|
v.extend(mastering.max_display_mastering_luminance().to_be_bytes());
|
||||||
Ok(())
|
Ok(())
|
||||||
})?;
|
})?;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write fiel box for codecs that require it
|
// Write fiel box for codecs that require it
|
||||||
|
|
Loading…
Reference in a new issue