• Aaron Levinson's avatar
    avutil/hwcontext_dxva2: Don't improperly free IDirect3DSurface9 objects · f125c54b
    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: default avatarAaron Levinson <alevinsn@aracnet.com>
    Reviewed-by: default avatarwm4 <nfxjfg@googlemail.com>
    Reviewed-by: default avatarSteven Liu <lingjiujianke@gmail.com>
    Reviewed-by: default avatarMark Thompson <sw@jkqxz.net>
    (cherry picked from commit 0c1c5146)
    f125c54b