vaapidecodebin: skips configuration once it's done
authorHyunjun Ko <zzoon@igalia.com>
Fri, 21 Apr 2017 09:05:48 +0000 (18:05 +0900)
committerVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Fri, 21 Apr 2017 09:48:16 +0000 (11:48 +0200)
Skips configuration of creation of vpp/capsfilter and link them once it's done.
Otherwise, it always fails when it's trying to re-start playback.

https://bugzilla.gnome.org/show_bug.cgi?id=781573

gst/vaapi/gstvaapidecodebin.c
gst/vaapi/gstvaapidecodebin.h

index 295c12b..2522b0a 100644 (file)
@@ -302,7 +302,7 @@ gst_vaapi_decode_bin_configure (GstVaapiDecodeBin * vaapidecbin)
       "max-size-buffers", vaapidecbin->max_size_buffers,
       "max-size-time", vaapidecbin->max_size_time, NULL);
 
-  if (vaapidecbin->disable_vpp)
+  if (vaapidecbin->disable_vpp || vaapidecbin->configured)
     return TRUE;
 
   GST_INFO_OBJECT (vaapidecbin, "enabling VPP");
@@ -357,6 +357,7 @@ gst_vaapi_decode_bin_configure (GstVaapiDecodeBin * vaapidecbin)
     goto error_link_pad;
 
   gst_object_unref (bin_srcpad);
+  vaapidecbin->configured = TRUE;
 
   return TRUE;
 
index 787d302..085a941 100644 (file)
@@ -54,6 +54,7 @@ typedef struct _GstVaapiDecodeBin {
   GstVaapiDeinterlaceMethod deinterlace_method;
   gboolean disable_vpp;
 
+  gboolean configured;
 } GstVaapiDecodeBin;
 
 typedef struct _GstVaapiDecodeBinClass {