Autoplugging

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Autoplugging

Tony Houghton
I want to write a video player that supports as many formats as
possible but, unlike totem etc, supports vdpau and/or vaapi. I could
hardwire code paths to choose suitable demuxers for mkv, mp4 etc but
what about formats I don't think of in advance?

The manual's chapter on autoplugging basically says the information in
it is inaccurate and outdated and one should just use playbin or
decodebin, but I don't think you can use vdpau or vaapi with those. Even
if the information didn't have that disclaimer, it's distinctly lacking
in implementation details.

Are there any docs buried in the SCM or design documentation that would
help me?
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Autoplugging

Tony Houghton
Can anyone help?

On Wed, 15 Jun 2011 13:29:18 +0100
Tony Houghton <[hidden email]> wrote:

> I want to write a video player that supports as many formats as
> possible but, unlike totem etc, supports vdpau and/or vaapi. I could
> hardwire code paths to choose suitable demuxers for mkv, mp4 etc but
> what about formats I don't think of in advance?
>
> The manual's chapter on autoplugging basically says the information in
> it is inaccurate and outdated and one should just use playbin or
> decodebin, but I don't think you can use vdpau or vaapi with those. Even
> if the information didn't have that disclaimer, it's distinctly lacking
> in implementation details.
>
> Are there any docs buried in the SCM or design documentation that would
> help me?
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Autoplugging

Stefan Sauer
In reply to this post by Tony Houghton
Hi,

On 06/15/11 14:29, Tony Houghton wrote:

> I want to write a video player that supports as many formats as
> possible but, unlike totem etc, supports vdpau and/or vaapi. I could
> hardwire code paths to choose suitable demuxers for mkv, mp4 etc but
> what about formats I don't think of in advance?
>
> The manual's chapter on autoplugging basically says the information in
> it is inaccurate and outdated and one should just use playbin or
> decodebin, but I don't think you can use vdpau or vaapi with those. Even
> if the information didn't have that disclaimer, it's distinctly lacking
> in implementation details.

Just read the docs anyway including docs/design/*.txt. Autoplugging is
not magic, just use signals to get notified about new pads, check the
caps and search the registry for compatible elements. Sort the elements
by rank and ignore those with rank=0.

It might be better in the long run to figure whats the issue with
playbin2 and vaapi/vdpau and make sure we can fix it in 0.10 or at least
in 0.11/1.0.

Stefan

> Are there any docs buried in the SCM or design documentation that would
> help me?
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Autoplugging

Tony Houghton
On Fri, 17 Jun 2011 18:43:33 +0200
Stefan Kost <[hidden email]> wrote:

> On 06/15/11 14:29, Tony Houghton wrote:
> >
> > The manual's chapter on autoplugging basically says the information in
> > it is inaccurate and outdated and one should just use playbin or
> > decodebin, but I don't think you can use vdpau or vaapi with those. Even
> > if the information didn't have that disclaimer, it's distinctly lacking
> > in implementation details.
>
> Just read the docs anyway including docs/design/*.txt. Autoplugging is
> not magic, just use signals to get notified about new pads, check the
> caps and search the registry for compatible elements. Sort the elements
> by rank and ignore those with rank=0.

Thanks, it's the bit about searching the registry I wasn't clear on.

> It might be better in the long run to figure whats the issue with
> playbin2 and vaapi/vdpau and make sure we can fix it in 0.10 or at least
> in 0.11/1.0.

I think they have a very low priority by default, so perhaps an
application can enable them in playbin(2) simply by reregistering them
with a high priority? If it's as simple as that it would be nice if
totem could support it.
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Autoplugging

Tim-Philipp Müller-2
In reply to this post by Stefan Sauer
On Fri, 2011-06-17 at 18:43 +0200, Stefan Kost wrote:

> Just read the docs anyway including docs/design/*.txt. Autoplugging is
> not magic, just use signals to get notified about new pads, check the
> caps and search the registry for compatible elements. Sort the elements
> by rank and ignore those with rank=0.

No need for that. Uridecodebin can do all that for you if you give ranks
to the appropriate decoders. See e.g. the "autoplug-sort",
"autoplug-select" and "autoplug-continue" signals, but (depending on the
ranks set) just adding the right vaapi/vdpau caps to uridecodebin's
"caps" property might suffice. Then you just need to link it to the
right kind of videosink.

With playbin(2), it's all still a bit awkward though (there's a reason
totem doesn't support it yet).


> It might be better in the long run to figure whats the issue with
> playbin2 and vaapi/vdpau and make sure we can fix it in 0.10 or at least
> in 0.11/1.0.

I think this can be fixed in 0.10, and I expect this to be tackled in
next few months, for what it's worth :)

 Cheers
  -Tim



_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Autoplugging

Jin-2
In reply to this post by Tony Houghton
Try compiling gstreamer core with --enable-gst-debug=yes flag, set
GST_DEBUG="*:4" in your environment, and launch gst-launch -v playbin2
uri=file://(filepath)

It will spew out whole bunch of debug messages including the bit where
decodebin tries to match the caps of the given video to what gstelementfactory
has.

I recently had issues with gstreamer not picking up a codec that it can
already handle, and implemented workaround for it (for myself).

see this thread for some clues as to how you may approach your issue..

http://gstreamer-devel.966125.n4.nabble.com/don-t-know-how-to-handle-video-x-
gst-fourcc-dvhp-td3518937.html

disclaimer: I'm a total newbie in gstreamer world, and the above solution is
what I was able to come up with. I cannot guarantee that it is correct, but it
works in my case, though.

On Friday 17 June 2011 1:03:33 pm Tony Houghton wrote:

> On Fri, 17 Jun 2011 18:43:33 +0200
>
> Stefan Kost <[hidden email]> wrote:
> > On 06/15/11 14:29, Tony Houghton wrote:
> > > The manual's chapter on autoplugging basically says the information in
> > > it is inaccurate and outdated and one should just use playbin or
> > > decodebin, but I don't think you can use vdpau or vaapi with those.
> > > Even if the information didn't have that disclaimer, it's distinctly
> > > lacking in implementation details.
> >
> > Just read the docs anyway including docs/design/*.txt. Autoplugging is
> > not magic, just use signals to get notified about new pads, check the
> > caps and search the registry for compatible elements. Sort the elements
> > by rank and ignore those with rank=0.
>
> Thanks, it's the bit about searching the registry I wasn't clear on.
>
> > It might be better in the long run to figure whats the issue with
> > playbin2 and vaapi/vdpau and make sure we can fix it in 0.10 or at least
> > in 0.11/1.0.
>
> I think they have a very low priority by default, so perhaps an
> application can enable them in playbin(2) simply by reregistering them
> with a high priority? If it's as simple as that it would be nice if
> totem could support it.
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>

--
Jin
Soho VFX
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Autoplugging

Tony Houghton
In reply to this post by Tim-Philipp Müller-2
On Fri, 17 Jun 2011 18:11:34 +0100
Tim-Philipp Müller <[hidden email]> wrote:

> On Fri, 2011-06-17 at 18:43 +0200, Stefan Kost wrote:
>
> > Just read the docs anyway including docs/design/*.txt. Autoplugging is
> > not magic, just use signals to get notified about new pads, check the
> > caps and search the registry for compatible elements. Sort the elements
> > by rank and ignore those with rank=0.
>
> No need for that. Uridecodebin can do all that for you if you give ranks
> to the appropriate decoders. See e.g. the "autoplug-sort",
> "autoplug-select" and "autoplug-continue" signals, but (depending on the
> ranks set) just adding the right vaapi/vdpau caps to uridecodebin's
> "caps" property might suffice. Then you just need to link it to the
> right kind of videosink.

I think I'll be able to use uridecodebin and/or decodebin2 in this way.
Part of the the problem in my quest for documentation is that most of
the information for decodebin2 is missing from the page in the Debian
package. It looks as if there was a bug when the docs were generated.
And I still don't know how I'd search the registry for compatible
elements, but hopefully I won't need to.
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel