Hi, On Thu, Jul 13, 2017 at 02:33:48PM +0200, Victor Toso wrote: > From: Victor Toso <me@xxxxxxxxxxxxxx> > > 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@xxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel