[vlc-devel] [PATCH 1/2] vdpau: free the hwaccel_context allocated locally ourself

Steve Lhomme robux4 at ycbcr.xyz
Tue Jul 23 08:31:07 CEST 2019


On 2019-07-23 8:06, Rémi Denis-Courmont wrote:
> IIRC that does not work because FFmpeg could reallocate it.

I see no such thing in libavcodec/vdpau.c

The only reallocate there is on the hwaccel_context is the one done in 
av_vdpau_bind_context() which is not called internally, we're the ones 
calling it.

> Le 23 juillet 2019 08:57:44 GMT+03:00, Steve Lhomme <robux4 at ycbcr.xyz> a écrit :
>> ---
>> modules/hw/vdpau/avcodec.c | 8 +++++++-
>> 1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/modules/hw/vdpau/avcodec.c b/modules/hw/vdpau/avcodec.c
>> index 913e391562..49536e6d60 100644
>> --- a/modules/hw/vdpau/avcodec.c
>> +++ b/modules/hw/vdpau/avcodec.c
>> @@ -44,6 +44,7 @@ struct vlc_va_sys_t
>>      vdp_t *vdp;
>>      VdpDevice device;
>>      VdpChromaType type;
>> +    void *hwaccel_context;
>>      uint32_t width;
>>      uint32_t height;
>>      vlc_vdp_video_field_t *pool[];
>> @@ -124,7 +125,8 @@ static void Close(vlc_va_t *va, void **hwctx)
>>      for (unsigned i = 0; sys->pool[i] != NULL; i++)
>>          vlc_vdp_video_destroy(sys->pool[i]);
>>      vdp_release_x11(sys->vdp);
>> -    av_freep(hwctx);
>> +    if (sys->hwaccel_context)
>> +        av_free(sys->hwaccel_context);
>>      free(sys);
>> }
>>
>> @@ -172,6 +174,7 @@ static int Open(vlc_va_t *va, AVCodecContext
>> *avctx, enum PixelFormat pix_fmt,
>>      sys->type = type;
>>      sys->width = width;
>>      sys->height = height;
>> +    sys->hwaccel_context = NULL;
>>
>>      err = vdp_get_x11(NULL, -1, &sys->vdp, &sys->device);
>>      if (err != VDP_STATUS_OK)
>> @@ -189,6 +192,7 @@ static int Open(vlc_va_t *va, AVCodecContext
>> *avctx, enum PixelFormat pix_fmt,
>>
>>      if (av_vdpau_bind_context(avctx, sys->device, func, flags))
>>          goto error;
>> +    sys->hwaccel_context = avctx->hwaccel_context;
>>      va->sys = sys;
>>
>>      unsigned i = 0;
>> @@ -221,6 +225,8 @@ static int Open(vlc_va_t *va, AVCodecContext
>> *avctx, enum PixelFormat pix_fmt,
>>      return VLC_SUCCESS;
>>
>> error:
>> +    if (sys->hwaccel_context)
>> +        av_free(sys->hwaccel_context);
>>      vdp_release_x11(sys->vdp);
>>      free(sys);
>>      return VLC_EGENERIC;
>> -- 
>> 2.17.1
>>
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
> 
> -- 
> 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
> 


More information about the vlc-devel mailing list