[vlc-devel] Decoder/Display implementation selection
Steve Lhomme
robux4 at ycbcr.xyz
Thu Jul 4 08:23:26 CEST 2019
Hi,
While I'm working on the push implementation it has become clear that
there's a growing issue of how the user is going to select the
implementation it wants.
Right now the user can select the display module and the avcodec-hw
module. Now we're adding a "decoder device" to the mix. Once one is
picked, the avcodec-hw should be the matching one, otherwise extra
conversions will be needed. But what if the picked one is not possible ?
Fallback to software ? Meaning the decoder device is forgotten ? Meaning
the display module won't get it ? When rendering externally that could
be a problem as the decoder device already picked the information about
the external renderer, which must be matched when rendering in the
display module.
There's also the question of the NVDecoder which a GSoC student is
working on. It's not a avcodec-hw module but should be able to be picked
by the user in the list of HW decoders. It could be coupled with a
"decoder device" if that's what the user will select in the future,
instead of the "avcodec-hw" module. If that's the case we should be able
to make the switch soon, I have "decoder device" for D3D11 and
DXVA2/D3D9 ready to be merged, the others already exist in master.
That means it would replace the "avcodec-hw" selection. Should this
parameter go away and the HW decoder picked is only the one
corresponding to the "decoder device" ? And fallback to software if none
is found. But still carrying the original decoder device in the video
context up to the display ? (see the external rendering coherence issue
above)
The default behavior should not be an issue. It could select the decoder
device based on the OS and if the implementation is available. It's bit
heavier than the current ffmpeg VLD flavor selection as we need to open
system resources to know if the HW acceleration is available (and yet we
don't know exactly the codec/profile needed). On the other hand right
now we open a whole display module and then check the VLD flavor works.
So it would probably be done faster anyway.
The display selection should not change. If the HW decoder doesn't match
the display selected by the user (or automatically selected) some
conversion should be done. If the mix is not possible too bad.
More information about the vlc-devel
mailing list