[vlc-devel] [PATCH] avcodec: disable frame multithreading with dxva2

Felix Abecassis felix.abecassis at gmail.com
Mon Aug 25 12:17:41 CEST 2014


2014-08-22 22:50 GMT+02:00 Rémi Denis-Courmont <remi at remlab.net>:
> Le vendredi 22 août 2014, 19:39:50 Felix Abecassis a écrit :
>> Fix #11930, #11693
>> ---
>>  modules/codec/avcodec/video.c | 14 ++++++++++++++
>>  1 file changed, 14 insertions(+)
>>
>> diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
>> index d1fa89b..aacd2f9 100644
>> --- a/modules/codec/avcodec/video.c
>> +++ b/modules/codec/avcodec/video.c
>> @@ -347,6 +347,20 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext
>> *p_context, # endif
>>      }
>>
>> +    /* Workaround: frame multithreading is not compatible with
>> +     * DXVA2. When a frame is being copied to host memory, the frame
>> +     * is locked and cannot be used as a reference frame
>> +     * simultaneously and thus decoding fails for some frames. This
>> +     * causes major image corruption. */
>> +# if defined(_WIN32)
>> +    const char *avcodec_hw = var_InheritString( p_dec, "avcodec-hw" );
>> +    if( avcodec_hw == NULL || !strcmp( avcodec_hw, "dxva2" ) )
>
> So, hmm, what happens if it's "dxva2,any", "foobar,dxva2,none" or
> "superduperdxva2" ?
>
> Also, leaks.
>

Thanks, fixed and pushed.



-- 
Félix Abecassis
http://felix.abecassis.me



More information about the vlc-devel mailing list