mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 17:20:36 +00:00
omxvideoenc: start src thread in handle_frame()
Makes the code simpler as we no longer need to restart the thread in gst_omx_video_enc_flush() and It's more symetric which the omxvideodec implementation. I'm also going to move the enabling of the OMX component in handle_frame() and the src pad thread needs to be started after it. https://bugzilla.gnome.org/show_bug.cgi?id=785967
This commit is contained in:
parent
7916bd53ab
commit
90da3c665e
1 changed files with 10 additions and 7 deletions
|
@ -395,6 +395,8 @@ gst_omx_video_enc_close (GstVideoEncoder * encoder)
|
||||||
gst_omx_component_free (self->enc);
|
gst_omx_component_free (self->enc);
|
||||||
self->enc = NULL;
|
self->enc = NULL;
|
||||||
|
|
||||||
|
self->started = FALSE;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1284,12 +1286,7 @@ gst_omx_video_enc_set_format (GstVideoEncoder * encoder,
|
||||||
if (!gst_omx_video_enc_enable (self))
|
if (!gst_omx_video_enc_enable (self))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* Start the srcpad loop again */
|
|
||||||
GST_DEBUG_OBJECT (self, "Starting task again");
|
|
||||||
self->downstream_flow_ret = GST_FLOW_OK;
|
self->downstream_flow_ret = GST_FLOW_OK;
|
||||||
gst_pad_start_task (GST_VIDEO_ENCODER_SRC_PAD (self),
|
|
||||||
(GstTaskFunction) gst_omx_video_enc_loop, self, NULL);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1323,8 +1320,8 @@ gst_omx_video_enc_flush (GstVideoEncoder * encoder)
|
||||||
/* Start the srcpad loop again */
|
/* Start the srcpad loop again */
|
||||||
self->last_upstream_ts = 0;
|
self->last_upstream_ts = 0;
|
||||||
self->downstream_flow_ret = GST_FLOW_OK;
|
self->downstream_flow_ret = GST_FLOW_OK;
|
||||||
gst_pad_start_task (GST_VIDEO_ENCODER_SRC_PAD (self),
|
self->started = FALSE;
|
||||||
(GstTaskFunction) gst_omx_video_enc_loop, encoder, NULL);
|
GST_DEBUG_OBJECT (self, "Flush finished");
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1521,6 +1518,12 @@ gst_omx_video_enc_handle_frame (GstVideoEncoder * encoder,
|
||||||
return self->downstream_flow_ret;
|
return self->downstream_flow_ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!self->started) {
|
||||||
|
GST_DEBUG_OBJECT (self, "Starting task");
|
||||||
|
gst_pad_start_task (GST_VIDEO_ENCODER_SRC_PAD (self),
|
||||||
|
(GstTaskFunction) gst_omx_video_enc_loop, self, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
port = self->enc_in_port;
|
port = self->enc_in_port;
|
||||||
|
|
||||||
while (acq_ret != GST_OMX_ACQUIRE_BUFFER_OK) {
|
while (acq_ret != GST_OMX_ACQUIRE_BUFFER_OK) {
|
||||||
|
|
Loading…
Reference in a new issue