shell-recorder-src: use timestamping from basesrc
Use the do-timestamp feature of basesrc to place the correct timestamp on each outgoing buffer.
This commit is contained in:
parent
f76dd4d6b2
commit
43ae3b8140
@ -14,9 +14,6 @@ struct _ShellRecorderSrc
|
|||||||
GMutex mutex_data;
|
GMutex mutex_data;
|
||||||
GMutex *mutex;
|
GMutex *mutex;
|
||||||
|
|
||||||
GstClock *clock;
|
|
||||||
GstClockTime last_frame_time;
|
|
||||||
|
|
||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
GAsyncQueue *queue;
|
GAsyncQueue *queue;
|
||||||
gboolean closed;
|
gboolean closed;
|
||||||
@ -45,9 +42,7 @@ shell_recorder_src_init (ShellRecorderSrc *src)
|
|||||||
{
|
{
|
||||||
gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
|
gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
|
||||||
gst_base_src_set_live (GST_BASE_SRC (src), TRUE);
|
gst_base_src_set_live (GST_BASE_SRC (src), TRUE);
|
||||||
|
gst_base_src_set_do_timestamp (GST_BASE_SRC (src), TRUE);
|
||||||
src->clock = gst_system_clock_obtain ();
|
|
||||||
src->last_frame_time = 0;
|
|
||||||
|
|
||||||
src->queue = g_async_queue_new ();
|
src->queue = g_async_queue_new ();
|
||||||
src->mutex = &src->mutex_data;
|
src->mutex = &src->mutex_data;
|
||||||
@ -113,9 +108,6 @@ shell_recorder_src_create (GstPushSrc *push_src,
|
|||||||
|
|
||||||
buffer = g_async_queue_pop (src->queue);
|
buffer = g_async_queue_pop (src->queue);
|
||||||
|
|
||||||
if (src->last_frame_time == 0)
|
|
||||||
src->last_frame_time = gst_clock_get_time (GST_CLOCK (src->clock));
|
|
||||||
|
|
||||||
if (buffer == RECORDER_QUEUE_END)
|
if (buffer == RECORDER_QUEUE_END)
|
||||||
{
|
{
|
||||||
/* Returning UNEXPECTED here will cause a EOS message to be sent */
|
/* Returning UNEXPECTED here will cause a EOS message to be sent */
|
||||||
@ -127,9 +119,6 @@ shell_recorder_src_create (GstPushSrc *push_src,
|
|||||||
- (int)(gst_buffer_get_size(buffer) / 1024));
|
- (int)(gst_buffer_get_size(buffer) / 1024));
|
||||||
|
|
||||||
*buffer_out = buffer;
|
*buffer_out = buffer;
|
||||||
GST_BUFFER_DURATION(*buffer_out) = GST_CLOCK_DIFF (src->last_frame_time, gst_clock_get_time (GST_CLOCK (src->clock)));
|
|
||||||
|
|
||||||
src->last_frame_time = gst_clock_get_time (GST_CLOCK (src->clock));
|
|
||||||
|
|
||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
}
|
}
|
||||||
@ -171,8 +160,6 @@ shell_recorder_src_finalize (GObject *object)
|
|||||||
|
|
||||||
g_mutex_clear (src->mutex);
|
g_mutex_clear (src->mutex);
|
||||||
|
|
||||||
gst_object_unref (src->clock);
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (shell_recorder_src_parent_class)->finalize (object);
|
G_OBJECT_CLASS (shell_recorder_src_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user