• Aaron Levinson's avatar
    avutil/hwcontext_dxva2: Don't improperly free IDirect3DSurface9 objects · 0c1c5146
    Aaron Levinson authored
    Add dxva2_pool_release_dummy() and use it in call to
    av_buffer_create() in dxva2_pool_alloc().
    
    Prior to this change, av_buffer_create() was called with NULL for the
    third argument, which indicates that av_buffer_default_free() should
    be used to free the buffer's data.  Eventually, it gets to
    buffer_pool_free() and calls buf->free() on a surface object (which is
    av_buffer_default_free()).
    
    This can result in a crash when the debug version of the C-runtime is
    used on Windows.  While it doesn't appear to result in a crash when
    the release version of the C-runtime is used on Windows, it likely
    results in memory corruption, since av_free() is being called on
    memory that was allocated using
    IDirectXVideoAccelerationService::CreateSurface().
    Signed-off-by: 's avatarAaron Levinson <alevinsn@aracnet.com>
    Reviewed-by: 's avatarwm4 <nfxjfg@googlemail.com>
    Reviewed-by: 's avatarSteven Liu <lingjiujianke@gmail.com>
    Reviewed-by: 's avatarMark Thompson <sw@jkqxz.net>
    0c1c5146
hwcontext_dxva2.c 18.1 KB