mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-03 16:09:39 +00:00
[MOVED FROM GST-P-FARSIGHT] Rename next_ts into expected_ts, make sure all buffers have a duration
20080403005728-3e2dc-8245ce1bfeebebfb8f75073253b3c0e3c4b5f596.gz
This commit is contained in:
parent
56757b3ae2
commit
1e7eeda115
1 changed files with 17 additions and 12 deletions
|
@ -84,7 +84,7 @@ typedef struct _GstLiveAdderPadPrivate
|
||||||
GstSegment segment;
|
GstSegment segment;
|
||||||
gboolean eos;
|
gboolean eos;
|
||||||
|
|
||||||
GstClockTime next_timestamp;
|
GstClockTime expected_timestamp;
|
||||||
|
|
||||||
} GstLiveAdderPadPrivate;
|
} GstLiveAdderPadPrivate;
|
||||||
|
|
||||||
|
@ -818,23 +818,28 @@ gst_live_live_adder_chain (GstPad *pad, GstBuffer *buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Just see if we receive invalid timestamp/durations */
|
/* Just see if we receive invalid timestamp/durations */
|
||||||
if (GST_CLOCK_TIME_IS_VALID (padprivate->next_timestamp) &&
|
if (GST_CLOCK_TIME_IS_VALID (padprivate->expected_timestamp) &&
|
||||||
!GST_BUFFER_FLAG_IS_SET(buffer, GST_BUFFER_FLAG_DISCONT) &&
|
!GST_BUFFER_FLAG_IS_SET(buffer, GST_BUFFER_FLAG_DISCONT) &&
|
||||||
GST_BUFFER_TIMESTAMP(buffer) != padprivate->next_timestamp)
|
GST_BUFFER_TIMESTAMP(buffer) != padprivate->expected_timestamp)
|
||||||
GST_ERROR_OBJECT (adder,
|
GST_ERROR_OBJECT (adder,
|
||||||
"Timestamp discontinuity without the DISCONT flag set"
|
"Timestamp discontinuity without the DISCONT flag set"
|
||||||
" (expected %" GST_TIME_FORMAT ", got %" GST_TIME_FORMAT")",
|
" (expected %" GST_TIME_FORMAT ", got %" GST_TIME_FORMAT")",
|
||||||
GST_TIME_ARGS (padprivate->next_timestamp),
|
GST_TIME_ARGS (padprivate->expected_timestamp),
|
||||||
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)));
|
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)));
|
||||||
|
|
||||||
if ( GST_BUFFER_DURATION_IS_VALID(buffer))
|
|
||||||
padprivate->next_timestamp = GST_BUFFER_TIMESTAMP (buffer) +
|
|
||||||
GST_BUFFER_DURATION (buffer);
|
|
||||||
else
|
|
||||||
padprivate->next_timestamp = GST_CLOCK_TIME_NONE;
|
|
||||||
|
|
||||||
buffer = gst_buffer_make_metadata_writable (buffer);
|
buffer = gst_buffer_make_metadata_writable (buffer);
|
||||||
|
|
||||||
|
/* If there is no duration, lets set one */
|
||||||
|
if (!GST_BUFFER_DURATION_IS_VALID (buffer)) {
|
||||||
|
GST_BUFFER_DURATION (buffer) =
|
||||||
|
gst_audio_duration_from_pad_buffer (pad, buffer);
|
||||||
|
padprivate->expected_timestamp = GST_CLOCK_TIME_NONE;
|
||||||
|
} else {
|
||||||
|
padprivate->expected_timestamp = GST_BUFFER_TIMESTAMP (buffer) +
|
||||||
|
GST_BUFFER_DURATION (buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Lets clip the buffer to the segment (so we don't have to worry about
|
* Lets clip the buffer to the segment (so we don't have to worry about
|
||||||
* cliping afterwards).
|
* cliping afterwards).
|
||||||
|
@ -1220,7 +1225,7 @@ gst_live_adder_request_new_pad (GstElement * element, GstPadTemplate * templ,
|
||||||
|
|
||||||
gst_segment_init (&padprivate->segment, GST_FORMAT_UNDEFINED);
|
gst_segment_init (&padprivate->segment, GST_FORMAT_UNDEFINED);
|
||||||
padprivate->eos = FALSE;
|
padprivate->eos = FALSE;
|
||||||
padprivate->next_timestamp = GST_CLOCK_TIME_NONE;
|
padprivate->expected_timestamp = GST_CLOCK_TIME_NONE;
|
||||||
|
|
||||||
gst_pad_set_element_private (newpad, padprivate);
|
gst_pad_set_element_private (newpad, padprivate);
|
||||||
|
|
||||||
|
@ -1285,7 +1290,7 @@ reset_pad_private (gpointer data, gpointer user_data)
|
||||||
|
|
||||||
gst_segment_init (&padprivate->segment, GST_FORMAT_UNDEFINED);
|
gst_segment_init (&padprivate->segment, GST_FORMAT_UNDEFINED);
|
||||||
|
|
||||||
padprivate->next_timestamp = GST_CLOCK_TIME_NONE;
|
padprivate->expected_timestamp = GST_CLOCK_TIME_NONE;
|
||||||
padprivate->eos = FALSE;
|
padprivate->eos = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue