[Spice-devel] [spice-gtk v1] display-gst: Improve h264 elements filtering

Victor Toso victortoso at redhat.com
Wed Jul 19 09:34:14 UTC 2017


Hi,

On Thu, Jul 13, 2017 at 02:33:48PM +0200, Victor Toso wrote:
> From: Victor Toso <me at victortoso.com>
>
> This patch fixes the avdec_h264 element not being present on
> gstvideo_has_codec() which get all decoder elements from GstRegistry
> and filter them on our GstCaps in order to get the ones for given
> codec.
>
> The issue is around the filtering. The current GstCaps for h264 is not
> consider a subset of avdec_h264's capabilites and that will fiter this
> element out of the list.
>
> The proposed solution for that is to set `subsetonly` parameter from
> gst_element_factory_list_filter() to false.
>
> While at it, the cap "stream-format=byte-stream" is less useful now
> because it isn't needed to play the stream - see 6fe88871240c53b8
>
> In my system, our debug shows:
> .. gstvideo_debug_available_decoders: From 228 video decoder elements,
> - 4 can handle caps   image/jpeg: jpegdec, nvdec, avdec_mjpeg, vaapijpegdec
> - 3 can handle caps  video/x-vp8: vaapidecodebin, vp8dec, avdec_vp8
> - 4 can handle caps video/x-h264: vaapidecodebin, avdec_h264, nvdec, vaapih264dec
> - 3 can handle caps  video/x-vp9: vaapidecodebin, vp9dec, avdec_vp9
>
> Signed-off-by: Victor Toso <victortoso at redhat.com>

I consider this one a blocker to the release as a client that had only
the avdec_h264 decoder for h264, would be able to decode h264 streams
but without this patch it can't as we will not find any available
decoder due wrong filtering which will disable the capability for h264
decoding.

Any comments?

> ---
>  src/channel-display-gst.c  | 2 +-
>  src/channel-display-priv.h | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/channel-display-gst.c b/src/channel-display-gst.c
> index 20d236a..1bd7df1 100644
> --- a/src/channel-display-gst.c
> +++ b/src/channel-display-gst.c
> @@ -647,7 +647,7 @@ gboolean gstvideo_has_codec(int codec_type)
>      }
>  
>      caps = gst_caps_from_string(gst_opts[codec_type].dec_caps);
> -    codec_decoders = gst_element_factory_list_filter(all_decoders, caps, GST_PAD_SINK, TRUE);
> +    codec_decoders = gst_element_factory_list_filter(all_decoders, caps, GST_PAD_SINK, FALSE);
>      gst_caps_unref(caps);
>  
>      if (codec_decoders == NULL) {
> diff --git a/src/channel-display-priv.h b/src/channel-display-priv.h
> index 04cb4d1..9bfd4ac 100644
> --- a/src/channel-display-priv.h
> +++ b/src/channel-display-priv.h
> @@ -181,7 +181,7 @@ static const struct {
>       * (hardcoded in spice-server), let's add it here to avoid the warning.
>       */
>      { SPICE_DISPLAY_CAP_CODEC_H264, "h264",
> -      "h264parse ! avdec_h264", "video/x-h264,stream-format=byte-stream" },
> +      "h264parse ! avdec_h264", "video/x-h264" },
>  
>      /* SPICE_VIDEO_CODEC_TYPE_VP9 */
>      { SPICE_DISPLAY_CAP_CODEC_VP9, "vp9",
> -- 
> 2.13.0
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170719/508e99cf/attachment.sig>


More information about the Spice-devel mailing list