summaryrefslogtreecommitdiff
path: root/libavutil/hwcontext_dxva2.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-08-24 09:24:49 +0200
committerAnton Khirnov <anton@khirnov.net>2016-08-31 08:22:52 +0200
commitf01f7a7846529b7c3ef343f117eaa2c0a1457af0 (patch)
treed28dc15833e4bb79b0998c9e2e28fae2b84296a3 /libavutil/hwcontext_dxva2.c
parentd7bc52bf456deba0f32d9fe5c288ec441f1ebef5 (diff)
hwcontext_dxva2: use the special UC copy for downloading frames
Diffstat (limited to 'libavutil/hwcontext_dxva2.c')
-rw-r--r--libavutil/hwcontext_dxva2.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libavutil/hwcontext_dxva2.c b/libavutil/hwcontext_dxva2.c
index f66c0fa740..da89453802 100644
--- a/libavutil/hwcontext_dxva2.c
+++ b/libavutil/hwcontext_dxva2.c
@@ -277,8 +277,13 @@ static int dxva2_transfer_data(AVHWFramesContext *ctx, AVFrame *dst,
(uint8_t*)LockedRect.pBits, surf_linesize);
if (download) {
- av_image_copy(dst->data, dst->linesize, surf_data, surf_linesize,
- ctx->sw_format, src->width, src->height);
+ ptrdiff_t src_linesize1[4], dst_linesize1[4];
+ for (i = 0; i < 4; i++) {
+ dst_linesize1[i] = dst->linesize[i];
+ src_linesize1[i] = surf_linesize[i];
+ }
+ av_image_copy_uc_from(dst->data, dst_linesize1, surf_data, src_linesize1,
+ ctx->sw_format, src->width, src->height);
} else {
av_image_copy(surf_data, surf_linesize, src->data, src->linesize,
ctx->sw_format, src->width, src->height);