mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 07:58:51 +00:00
mxfdemux: More granular interleaved content handling
An interleave of 500ms can be way too big for some downstream queueing elements. Instead use a smaller 100ms interleave and silence the various warnings about resyncing (it's normal) Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2434>
This commit is contained in:
parent
a4aa2af291
commit
b62e942718
2 changed files with 7 additions and 5 deletions
|
@ -213136,7 +213136,7 @@
|
||||||
"construct": false,
|
"construct": false,
|
||||||
"construct-only": false,
|
"construct-only": false,
|
||||||
"controllable": false,
|
"controllable": false,
|
||||||
"default": "500000000",
|
"default": "100000000",
|
||||||
"max": "18446744073709551615",
|
"max": "18446744073709551615",
|
||||||
"min": "100000000",
|
"min": "100000000",
|
||||||
"mutable": "null",
|
"mutable": "null",
|
||||||
|
|
|
@ -123,6 +123,8 @@ gst_mxf_demux_pad_init (GstMXFDemuxPad * pad)
|
||||||
pad->current_material_track_position = 0;
|
pad->current_material_track_position = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define DEFAULT_MAX_DRIFT 100 * GST_MSECOND
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
|
@ -2720,7 +2722,7 @@ gst_mxf_demux_handle_generic_container_essence_element (GstMXFDemux * demux,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!etrack) {
|
if (!etrack) {
|
||||||
GST_WARNING_OBJECT (demux,
|
GST_DEBUG_OBJECT (demux,
|
||||||
"No essence track for this essence element found");
|
"No essence track for this essence element found");
|
||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
}
|
}
|
||||||
|
@ -4233,7 +4235,7 @@ gst_mxf_demux_pull_and_handle_klv_packet (GstMXFDemux * demux)
|
||||||
guint64 offset;
|
guint64 offset;
|
||||||
gint64 position;
|
gint64 position;
|
||||||
|
|
||||||
GST_WARNING_OBJECT (demux,
|
GST_DEBUG_OBJECT (demux,
|
||||||
"Found synchronization issue -- trying to solve");
|
"Found synchronization issue -- trying to solve");
|
||||||
|
|
||||||
position = earliest->current_essence_track_position;
|
position = earliest->current_essence_track_position;
|
||||||
|
@ -6005,7 +6007,7 @@ gst_mxf_demux_class_init (GstMXFDemuxClass * klass)
|
||||||
g_object_class_install_property (gobject_class, PROP_MAX_DRIFT,
|
g_object_class_install_property (gobject_class, PROP_MAX_DRIFT,
|
||||||
g_param_spec_uint64 ("max-drift", "Maximum drift",
|
g_param_spec_uint64 ("max-drift", "Maximum drift",
|
||||||
"Maximum number of nanoseconds by which tracks can differ",
|
"Maximum number of nanoseconds by which tracks can differ",
|
||||||
100 * GST_MSECOND, G_MAXUINT64, 500 * GST_MSECOND,
|
100 * GST_MSECOND, G_MAXUINT64, DEFAULT_MAX_DRIFT,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class, PROP_STRUCTURE,
|
g_object_class_install_property (gobject_class, PROP_STRUCTURE,
|
||||||
|
@ -6043,7 +6045,7 @@ gst_mxf_demux_init (GstMXFDemux * demux)
|
||||||
|
|
||||||
gst_element_add_pad (GST_ELEMENT (demux), demux->sinkpad);
|
gst_element_add_pad (GST_ELEMENT (demux), demux->sinkpad);
|
||||||
|
|
||||||
demux->max_drift = 500 * GST_MSECOND;
|
demux->max_drift = DEFAULT_MAX_DRIFT;
|
||||||
|
|
||||||
demux->adapter = gst_adapter_new ();
|
demux->adapter = gst_adapter_new ();
|
||||||
demux->flowcombiner = gst_flow_combiner_new ();
|
demux->flowcombiner = gst_flow_combiner_new ();
|
||||||
|
|
Loading…
Reference in a new issue