[Spice-devel] [client v3 4/4] streaming: Create the pipeline at the same time as the GStreamer decoder

Victor Toso lists at victortoso.com
Fri Aug 12 12:38:49 UTC 2016


Hi,

On Thu, Aug 11, 2016 at 12:22:24PM +0200, Francois Gouget wrote:
> This lets create_gstreamer_decoder() fail if it cannot create the
> pipeline it needs, allowing the caller to try fallbacks.
> This also means the pipeline has the same lifetime as the decoder which
> makes it possible to remove a check in queue_frame().

Great,

>
> Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
> ---
>  src/channel-display-gst.c | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/src/channel-display-gst.c b/src/channel-display-gst.c
> index c752639..647afc1 100644
> --- a/src/channel-display-gst.c
> +++ b/src/channel-display-gst.c
> @@ -407,11 +407,6 @@ static void spice_gst_decoder_queue_frame(VideoDecoder *video_decoder,
>          return;
>      }
>  
> -    if (!decoder->pipeline && !create_pipeline(decoder)) {
> -        stream_dropped_frame_on_playback(decoder->base.stream);
> -        return;
> -    }
> -
>      /* ref() the frame_msg for the buffer */
>      spice_msg_in_ref(frame_msg);
>      GstBuffer *buffer = gst_buffer_new_wrapped_full(GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS,
> @@ -463,6 +458,12 @@ VideoDecoder* create_gstreamer_decoder(int codec_type, display_stream *stream)
>          g_mutex_init(&decoder->queues_mutex);
>          decoder->decoding_queue = g_queue_new();
>          decoder->display_queue = g_queue_new();
> +
> +        if (!create_pipeline(decoder))
> +        {

Opening brace should be in the line above

> +            decoder->base.destroy((VideoDecoder*)decoder);
> +            decoder = NULL;
> +        }

I'll do the change and push the series. Many thanks!

Acked-by: Victor Toso <victortoso at redhat.com>

>      }
>  
>      return (VideoDecoder*)decoder;
> @@ -475,7 +476,7 @@ gboolean gstvideo_has_codec(int codec_type)
>  
>      VideoDecoder *decoder = create_gstreamer_decoder(codec_type, NULL);
>      if (decoder) {
> -        has_codec = create_pipeline((SpiceGstDecoder*)decoder);
> +        has_codec = TRUE;
>          decoder->destroy(decoder);
>      }
>  
> -- 
> 2.8.1
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list