diff --git a/gst-libs/gst/video/gstvideoencoder.c b/gst-libs/gst/video/gstvideoencoder.c index dc5998974f..400be26ef6 100644 --- a/gst-libs/gst/video/gstvideoencoder.c +++ b/gst-libs/gst/video/gstvideoencoder.c @@ -2297,7 +2297,9 @@ gst_video_encoder_finish_frame (GstVideoEncoder * encoder, discont = FALSE; } + GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder); gst_pad_push (encoder->srcpad, gst_buffer_ref (tmpbuf)); + GST_VIDEO_ENCODER_STREAM_LOCK (encoder); } priv->new_headers = FALSE; } @@ -2335,8 +2337,11 @@ gst_video_encoder_finish_frame (GstVideoEncoder * encoder, gst_video_encoder_release_frame (encoder, frame); frame = NULL; - if (ret == GST_FLOW_OK) + if (ret == GST_FLOW_OK) { + GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder); ret = gst_pad_push (encoder->srcpad, buffer); + GST_VIDEO_ENCODER_STREAM_LOCK (encoder); + } done: /* handed out */