mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-11 09:55:36 +00:00
omxvideodec: populate the most downstream output port on reset
Make seeking work when using egl_render component https://bugzilla.gnome.org/show_bug.cgi?id=726038
This commit is contained in:
parent
100e9f998d
commit
777411c286
1 changed files with 19 additions and 5 deletions
|
@ -1944,6 +1944,7 @@ static gboolean
|
|||
gst_omx_video_dec_reset (GstVideoDecoder * decoder, gboolean hard)
|
||||
{
|
||||
GstOMXVideoDec *self;
|
||||
OMX_ERRORTYPE err = OMX_ErrorNone;
|
||||
|
||||
self = GST_OMX_VIDEO_DEC (decoder);
|
||||
|
||||
|
@ -1958,8 +1959,10 @@ gst_omx_video_dec_reset (GstVideoDecoder * decoder, gboolean hard)
|
|||
gst_omx_port_set_flushing (self->dec_out_port, 5 * GST_SECOND, TRUE);
|
||||
|
||||
#if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_EGL)
|
||||
gst_omx_port_set_flushing (self->egl_in_port, 5 * GST_SECOND, TRUE);
|
||||
gst_omx_port_set_flushing (self->egl_out_port, 5 * GST_SECOND, TRUE);
|
||||
if (self->eglimage) {
|
||||
gst_omx_port_set_flushing (self->egl_in_port, 5 * GST_SECOND, TRUE);
|
||||
gst_omx_port_set_flushing (self->egl_out_port, 5 * GST_SECOND, TRUE);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Wait until the srcpad loop is finished,
|
||||
|
@ -1972,13 +1975,24 @@ gst_omx_video_dec_reset (GstVideoDecoder * decoder, gboolean hard)
|
|||
|
||||
gst_omx_port_set_flushing (self->dec_in_port, 5 * GST_SECOND, FALSE);
|
||||
gst_omx_port_set_flushing (self->dec_out_port, 5 * GST_SECOND, FALSE);
|
||||
gst_omx_port_populate (self->dec_out_port);
|
||||
|
||||
#if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_EGL)
|
||||
gst_omx_port_set_flushing (self->egl_in_port, 5 * GST_SECOND, FALSE);
|
||||
gst_omx_port_set_flushing (self->egl_out_port, 5 * GST_SECOND, FALSE);
|
||||
if (self->eglimage) {
|
||||
gst_omx_port_set_flushing (self->egl_in_port, 5 * GST_SECOND, FALSE);
|
||||
gst_omx_port_set_flushing (self->egl_out_port, 5 * GST_SECOND, FALSE);
|
||||
err = gst_omx_port_populate (self->egl_out_port);
|
||||
} else {
|
||||
err = gst_omx_port_populate (self->dec_out_port);
|
||||
}
|
||||
#else
|
||||
err = gst_omx_port_populate (self->dec_out_port);
|
||||
#endif
|
||||
|
||||
if (err != OMX_ErrorNone) {
|
||||
GST_WARNING_OBJECT (self, "Failed to populate output port: %s (0x%08x)",
|
||||
gst_omx_error_to_string (err), err);
|
||||
}
|
||||
|
||||
/* Start the srcpad loop again */
|
||||
self->last_upstream_ts = 0;
|
||||
self->eos = FALSE;
|
||||
|
|
Loading…
Reference in a new issue