mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2025-02-17 10:28:13 +00:00
Merge commit '9d7026574bbbe67d004a1c32911da75375692967'
* commit '9d7026574bbbe67d004a1c32911da75375692967': hwcontext_dxva2: fix handling of the mapping flags Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
This commit is contained in:
commit
fbfa72916c
@ -278,6 +278,7 @@ static int dxva2_map_frame(AVHWFramesContext *ctx, AVFrame *dst, const AVFrame *
|
||||
D3DLOCKED_RECT LockedRect;
|
||||
HRESULT hr;
|
||||
int i, err, nb_planes;
|
||||
int lock_flags = 0;
|
||||
|
||||
nb_planes = av_pix_fmt_count_planes(dst->format);
|
||||
|
||||
@ -287,8 +288,12 @@ static int dxva2_map_frame(AVHWFramesContext *ctx, AVFrame *dst, const AVFrame *
|
||||
return AVERROR_UNKNOWN;
|
||||
}
|
||||
|
||||
hr = IDirect3DSurface9_LockRect(surface, &LockedRect, NULL,
|
||||
flags & AV_HWFRAME_MAP_READ ? D3DLOCK_READONLY : D3DLOCK_DISCARD);
|
||||
if (!(flags & AV_HWFRAME_MAP_WRITE))
|
||||
lock_flags |= D3DLOCK_READONLY;
|
||||
if (flags & AV_HWFRAME_MAP_OVERWRITE)
|
||||
lock_flags |= D3DLOCK_DISCARD;
|
||||
|
||||
hr = IDirect3DSurface9_LockRect(surface, &LockedRect, NULL, lock_flags);
|
||||
if (FAILED(hr)) {
|
||||
av_log(ctx, AV_LOG_ERROR, "Unable to lock DXVA2 surface\n");
|
||||
return AVERROR_UNKNOWN;
|
||||
@ -334,7 +339,8 @@ static int dxva2_transfer_data(AVHWFramesContext *ctx, AVFrame *dst,
|
||||
map->format = dst->format;
|
||||
|
||||
ret = dxva2_map_frame(ctx, map, download ? src : dst,
|
||||
download ? AV_HWFRAME_MAP_READ : AV_HWFRAME_MAP_WRITE);
|
||||
download ? AV_HWFRAME_MAP_READ :
|
||||
AV_HWFRAME_MAP_WRITE | AV_HWFRAME_MAP_OVERWRITE);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user