[Spice-devel] [spice-gtk v1 3/4] channel-display-gst: improve check for decoder element

Victor Toso lists at victortoso.com
Wed Oct 19 15:49:29 UTC 2016


Hi,

On Wed, Oct 19, 2016 at 04:43:12PM +0200, Francois Gouget wrote:
> On Wed, 19 Oct 2016, Victor Toso wrote:
> [...]
> > > In a different context I have found that I can fnid dfbvideosink and
> > > even instantiate it. But it will refuse to switch to the READY state and
> > > is thus unusable. That makes sense since I was not using it in a Direct
> > > FB context.
> > 
> > Interesting. Was it possible to set a dfb context later on? Otherwise it
> > could be a bug, no?
> 
> I don't think that's a bug. The GStreamer documentation says:
> 
> * GST_STATE_NULL: this is the default state. No resources are allocated 
>   in this state, so, transitioning to it will free all resources. 
>   [...]
> 
> * GST_STATE_READY: in the ready state, an element has allocated all of 
>   its global resources, that is, resources that can be kept within 
>   streams. You can think about opening devices, allocating buffers and 
>   so on. However, the stream is not opened in this state, so the stream 
>   positions is automatically zero. If a stream was previously opened, it 
>   should be closed in this state, and position, properties and such 
>   should be reset. 
> 
> When the dfbvideosink is instantiated is is in the NULL state and since 
> no resource is allocated in this state it does not matter whether the 
> device is available or not. It's only when transitioning to the READY 
> state that it would try to open the relevant device and so that's where 
> it returns an error.

Right, thanks for clarifying.

> > > I expect hardware decoders will be even worse. For instance vaapidecode
> > > is likely to be present but may not work if you don't have an Intel
> > > card. Even if you can instantiate it, it may cause a VP8 pipeline caps
> > > negotiation to fail if your graphics does not support VP8.
> >
> > Yes, that's why I think we need a different approach for hardware
> > decoders.
>
> We will need code that can try the hardware decoder first and fallback 
> to the software one if it's not usable.

If I understand correctly what ceyusa said [0], the fact that we can
only find the vaapi hardware decoder element if hw supports it.

[0] https://lists.freedesktop.org/archives/spice-devel/2016-October/032825.html

> But I don't think this necessarily impacts gstvideo_has_codec() if
> implemented using create_gstreamer_decoder() whereas with your code it
> will necessarily be impacted.

Well, my point is simply why create the whole pipeline if we only need
to check if element is present. As I said above, it might even be enough
to check if we have hw decoding by adding vaapijpegdec, vaapih264dec,
and so on.

Once again, I don't really mind to drop this patch, I just want to
understand why it is error prone / not reliable.

  toso
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20161019/9ced9df9/attachment.sig>


More information about the Spice-devel mailing list