mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
vaapiencode: call ensure_encoder() at start()
Currently, specific encoder is created during set_format(). This might lead to race condition when creating profiles with multiple encoders. This patch moves ensure_encoder() call to start() vmethod to ensure avoiding the race condition. https://bugzilla.gnome.org/show_bug.cgi?id=773546
This commit is contained in:
parent
4609f7fd5e
commit
6e6fbd1cbf
1 changed files with 7 additions and 2 deletions
|
@ -438,6 +438,12 @@ gst_vaapiencode_open (GstVideoEncoder * venc)
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gst_vaapiencode_start (GstVideoEncoder * venc)
|
||||||
|
{
|
||||||
|
return ensure_encoder (GST_VAAPIENCODE_CAST (venc));
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_vaapiencode_close (GstVideoEncoder * venc)
|
gst_vaapiencode_close (GstVideoEncoder * venc)
|
||||||
{
|
{
|
||||||
|
@ -473,8 +479,6 @@ gst_vaapiencode_set_format (GstVideoEncoder * venc, GstVideoCodecState * state)
|
||||||
|
|
||||||
g_return_val_if_fail (state->caps != NULL, FALSE);
|
g_return_val_if_fail (state->caps != NULL, FALSE);
|
||||||
|
|
||||||
if (!ensure_encoder (encode))
|
|
||||||
return FALSE;
|
|
||||||
if (!set_codec_state (encode, state))
|
if (!set_codec_state (encode, state))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
@ -713,6 +717,7 @@ gst_vaapiencode_class_init (GstVaapiEncodeClass * klass)
|
||||||
|
|
||||||
venc_class->open = GST_DEBUG_FUNCPTR (gst_vaapiencode_open);
|
venc_class->open = GST_DEBUG_FUNCPTR (gst_vaapiencode_open);
|
||||||
venc_class->close = GST_DEBUG_FUNCPTR (gst_vaapiencode_close);
|
venc_class->close = GST_DEBUG_FUNCPTR (gst_vaapiencode_close);
|
||||||
|
venc_class->start = GST_DEBUG_FUNCPTR (gst_vaapiencode_start);
|
||||||
venc_class->set_format = GST_DEBUG_FUNCPTR (gst_vaapiencode_set_format);
|
venc_class->set_format = GST_DEBUG_FUNCPTR (gst_vaapiencode_set_format);
|
||||||
venc_class->handle_frame = GST_DEBUG_FUNCPTR (gst_vaapiencode_handle_frame);
|
venc_class->handle_frame = GST_DEBUG_FUNCPTR (gst_vaapiencode_handle_frame);
|
||||||
venc_class->finish = GST_DEBUG_FUNCPTR (gst_vaapiencode_finish);
|
venc_class->finish = GST_DEBUG_FUNCPTR (gst_vaapiencode_finish);
|
||||||
|
|
Loading…
Reference in a new issue