mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
gst: fix fixation
Implement fixate for video and audio caps
This commit is contained in:
parent
4b72848a1a
commit
0dd41f5e40
2 changed files with 50 additions and 38 deletions
|
|
@ -136,28 +136,34 @@ gst_pinos_sink_sink_fixate (GstBaseSink * bsink, GstCaps * caps)
|
||||||
|
|
||||||
structure = gst_caps_get_structure (caps, 0);
|
structure = gst_caps_get_structure (caps, 0);
|
||||||
|
|
||||||
gst_structure_fixate_field_nearest_int (structure, "width", 320);
|
if (gst_structure_has_name (structure, "video/x-raw")) {
|
||||||
gst_structure_fixate_field_nearest_int (structure, "height", 240);
|
gst_structure_fixate_field_nearest_int (structure, "width", 320);
|
||||||
gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
|
gst_structure_fixate_field_nearest_int (structure, "height", 240);
|
||||||
|
gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
|
||||||
|
|
||||||
if (gst_structure_has_field (structure, "pixel-aspect-ratio"))
|
if (gst_structure_has_field (structure, "pixel-aspect-ratio"))
|
||||||
gst_structure_fixate_field_nearest_fraction (structure,
|
gst_structure_fixate_field_nearest_fraction (structure,
|
||||||
"pixel-aspect-ratio", 1, 1);
|
"pixel-aspect-ratio", 1, 1);
|
||||||
else
|
else
|
||||||
gst_structure_set (structure, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1,
|
gst_structure_set (structure, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (gst_structure_has_field (structure, "colorimetry"))
|
if (gst_structure_has_field (structure, "colorimetry"))
|
||||||
gst_structure_fixate_field_string (structure, "colorimetry", "bt601");
|
gst_structure_fixate_field_string (structure, "colorimetry", "bt601");
|
||||||
if (gst_structure_has_field (structure, "chroma-site"))
|
if (gst_structure_has_field (structure, "chroma-site"))
|
||||||
gst_structure_fixate_field_string (structure, "chroma-site", "mpeg2");
|
gst_structure_fixate_field_string (structure, "chroma-site", "mpeg2");
|
||||||
|
|
||||||
if (gst_structure_has_field (structure, "interlace-mode"))
|
if (gst_structure_has_field (structure, "interlace-mode"))
|
||||||
gst_structure_fixate_field_string (structure, "interlace-mode",
|
gst_structure_fixate_field_string (structure, "interlace-mode",
|
||||||
"progressive");
|
"progressive");
|
||||||
else
|
else
|
||||||
gst_structure_set (structure, "interlace-mode", G_TYPE_STRING,
|
gst_structure_set (structure, "interlace-mode", G_TYPE_STRING,
|
||||||
"progressive", NULL);
|
"progressive", NULL);
|
||||||
|
} else if (gst_structure_has_name (structure, "audio/x-raw")) {
|
||||||
|
gst_structure_fixate_field_string (structure, "format", "S16LE");
|
||||||
|
gst_structure_fixate_field_nearest_int (structure, "channels", 2);
|
||||||
|
gst_structure_fixate_field_nearest_int (structure, "rate", 44100);
|
||||||
|
}
|
||||||
|
|
||||||
caps = GST_BASE_SINK_CLASS (parent_class)->fixate (bsink, caps);
|
caps = GST_BASE_SINK_CLASS (parent_class)->fixate (bsink, caps);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -199,28 +199,34 @@ gst_pinos_src_src_fixate (GstBaseSrc * bsrc, GstCaps * caps)
|
||||||
|
|
||||||
structure = gst_caps_get_structure (caps, 0);
|
structure = gst_caps_get_structure (caps, 0);
|
||||||
|
|
||||||
gst_structure_fixate_field_nearest_int (structure, "width", 320);
|
if (gst_structure_has_name (structure, "video/x-raw")) {
|
||||||
gst_structure_fixate_field_nearest_int (structure, "height", 240);
|
gst_structure_fixate_field_nearest_int (structure, "width", 320);
|
||||||
gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
|
gst_structure_fixate_field_nearest_int (structure, "height", 240);
|
||||||
|
gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
|
||||||
|
|
||||||
if (gst_structure_has_field (structure, "pixel-aspect-ratio"))
|
if (gst_structure_has_field (structure, "pixel-aspect-ratio"))
|
||||||
gst_structure_fixate_field_nearest_fraction (structure,
|
gst_structure_fixate_field_nearest_fraction (structure,
|
||||||
"pixel-aspect-ratio", 1, 1);
|
"pixel-aspect-ratio", 1, 1);
|
||||||
else
|
else
|
||||||
gst_structure_set (structure, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1,
|
gst_structure_set (structure, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (gst_structure_has_field (structure, "colorimetry"))
|
if (gst_structure_has_field (structure, "colorimetry"))
|
||||||
gst_structure_fixate_field_string (structure, "colorimetry", "bt601");
|
gst_structure_fixate_field_string (structure, "colorimetry", "bt601");
|
||||||
if (gst_structure_has_field (structure, "chroma-site"))
|
if (gst_structure_has_field (structure, "chroma-site"))
|
||||||
gst_structure_fixate_field_string (structure, "chroma-site", "mpeg2");
|
gst_structure_fixate_field_string (structure, "chroma-site", "mpeg2");
|
||||||
|
|
||||||
if (gst_structure_has_field (structure, "interlace-mode"))
|
if (gst_structure_has_field (structure, "interlace-mode"))
|
||||||
gst_structure_fixate_field_string (structure, "interlace-mode",
|
gst_structure_fixate_field_string (structure, "interlace-mode",
|
||||||
"progressive");
|
"progressive");
|
||||||
else
|
else
|
||||||
gst_structure_set (structure, "interlace-mode", G_TYPE_STRING,
|
gst_structure_set (structure, "interlace-mode", G_TYPE_STRING,
|
||||||
"progressive", NULL);
|
"progressive", NULL);
|
||||||
|
} else if (gst_structure_has_name (structure, "audio/x-raw")) {
|
||||||
|
gst_structure_fixate_field_string (structure, "format", "S16LE");
|
||||||
|
gst_structure_fixate_field_nearest_int (structure, "channels", 2);
|
||||||
|
gst_structure_fixate_field_nearest_int (structure, "rate", 44100);
|
||||||
|
}
|
||||||
|
|
||||||
caps = GST_BASE_SRC_CLASS (parent_class)->fixate (bsrc, caps);
|
caps = GST_BASE_SRC_CLASS (parent_class)->fixate (bsrc, caps);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue