[vlc-devel] [PATCH 1/2] nvdec: add chroma and depth fallback

Quentin Chateau quentin.chateau at deepskycorp.com
Tue Apr 7 10:10:25 CEST 2020


Hi,

I'm not sure how it is supposed to work, but in nvdec's case, the format 
we read while opening the decoder is only used to verify that the 
decoder will actually be able to decode the video. In any case, you can 
start the decoder and it will provide you with the actual video format 
once it started to decode. As Steve said, the issue is that if we start 
the decoder without verifying the format first, we may run into the 
situation where the decoder cannot actually decode the video, and we are 
stuck.

On 07/04/2020 09:48, Rémi Denis-Courmont wrote:
> Hi,
>
> I don't follow. Normally, you can't start any decoder if you don't 
> know the format. It's even so now that if the packetiser finds a 
> format change, we restart the decoder. That was specifically added (by 
> Thomas?) to address switching between software and hardware decoding.
>
> I don't see how you can even end up in the described situation, unless 
> the demuxer lies about the ES being packetised.
>
> Le 6 avril 2020 16:02:06 GMT+03:00, quentin.chateau at deepskycorp.com a 
> écrit :
>
>     From: Quentin Chateau <quentin.chateau at deepskycorp.com>
>
>     When the chroma and depth is unknown to the hxxx_helper,
>     fallback to the common 4:2:0 8bits format as initial value.
>     The decoder may change these values later on.
>     ------------------------------------------------------------------------
>       modules/hw/nvdec/nvdec.c | 20 ++++++++++++--------
>       1 file changed, 12 insertions(+), 8 deletions(-)
>
>     diff --git a/modules/hw/nvdec/nvdec.c b/modules/hw/nvdec/nvdec.c
>     index e3aeff2355..ca28522d32 100644
>     --- a/modules/hw/nvdec/nvdec.c
>     +++ b/modules/hw/nvdec/nvdec.c
>     @@ -923,15 +923,19 @@ static int OpenDecoder(vlc_object_t *p_this)
>           // try different output
>           if (p_sys->b_is_hxxx)
>           {
>     -        uint8_t i_chroma_idc, i_depth_chroma;
>     -        result = hxxx_helper_get_chroma_chroma(&p_sys->hh, &i_chroma_idc,
>     -                                            &i_depth_luma, &i_depth_chroma);
>     -        if (result != VLC_SUCCESS) {
>     -            if (p_sys->b_is_hxxx)
>     -                hxxx_helper_clean(&p_sys->hh);
>     -            return VLC_EGENERIC;
>     +        uint8_t hxxx_chroma_idc, hxxx_depth_chroma, hxxx_depth_luma;
>     +        result = hxxx_helper_get_chroma_chroma(&p_sys->hh, &hxxx_chroma_idc,
>     +                                            &hxxx_depth_luma, &hxxx_depth_chroma);
>     +        if (result == VLC_SUCCESS)
>     +        {
>     +            i_depth_luma = hxxx_depth_luma;
>     +            cudaChroma = MapChomaIDC(hxxx_chroma_idc);
>     +        }
>     +        else
>     +        {
>     +            cudaChroma = cudaVideoChromaFormat_420;
>     +            i_depth_luma = 8;
>               }
>     -        cudaChroma = MapChomaIDC(i_chroma_idc);
>       
>               unsigned i_w, i_h, i_vw, i_vh;
>               result = hxxx_helper_get_current_picture_size(&p_sys->hh, &i_w, &i_h, &i_vw, &i_vh);
>
>
> -- 
> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez 
> excuser ma brièveté.
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20200407/810c6577/attachment.html>


More information about the vlc-devel mailing list