[Spice-devel] [PATCH 1/4] channel-display-gst: Prefer playbin3 to playbin

Frediano Ziglio freddy77 at gmail.com
Fri Sep 15 15:35:42 UTC 2023


Il giorno ven 15 set 2023 alle ore 01:33 Vivek Kasireddy
<vivek.kasireddy at intel.com> ha scritto:
>
> From: Jin Chung Teng <jin.chung.teng at intel.com>
>
> If playbin3 is available (checked in Gstreamer registry), it
> makes sense to prefer it given the major improvements and
> features it offers including the capability to handle higher
> bitrates.
>
> Cc: Frediano Ziglio <freddy77 at gmail.com>
> Cc: Dongwon Kim <dongwon.kim at intel.com>
> Cc: Hazwan Arif Mazlan <hazwan.arif.mazlan at intel.com>
> Signed-off-by: Jin Chung Teng <jin.chung.teng at intel.com>
> Signed-off-by: Vivek Kasireddy <vivek.kasireddy at intel.com>
> ---
>  src/channel-display-gst.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/src/channel-display-gst.c b/src/channel-display-gst.c
> index 36db3a3..3f46a65 100644
> --- a/src/channel-display-gst.c
> +++ b/src/channel-display-gst.c
> @@ -496,10 +496,13 @@ static gboolean create_pipeline(SpiceGstDecoder *decoder)
>      SpiceGstPlayFlags flags;
>      GstCaps *caps;
>
> -    playbin = gst_element_factory_make("playbin", "playbin");
> +    playbin = gst_element_factory_make("playbin3", "playbin3");
>      if (playbin == NULL) {
> -        spice_warning("error upon creation of 'playbin' element");
> -        return FALSE;
> +        playbin = gst_element_factory_make("playbin", "playbin");
> +        if (playbin == NULL) {
> +            spice_warning("error upon creation of 'playbin' element");
> +            return FALSE;
> +        }
>      }
>
>      /* Passing the pipeline to widget, try to get window handle and

Why not cache the check, something like

     SpiceGstPlayFlags flags;
     GstCaps *caps;
     static bool playbin3_supported = true;

-    playbin = gst_element_factory_make("play
bin", "playbin");
+    playbin = playbin3_supported ?
gst_element_factory_make("playbin3", "playbin3") : NULL;
     if (playbin == NULL) {
-        spice_warning("error upon creation of 'playbin' element");
-        return FALSE;
+        playbin3_supported = false;
+        playbin = gst_element_factory_make("playbin", "playbin");
+        if (playbin == NULL) {
+            spice_warning("error upon creation of 'playbin' element");
+            return FALSE;
+        }
     }

     /* Passing the pipeline to widget, try to get window handle and

Frediano


More information about the Spice-devel mailing list