summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/qsvenc.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index db6d397068..602436da63 100644
--- a/libavcodec/qsvenc.c
+++ b/libavcodec/qsvenc.c
@@ -1535,8 +1535,23 @@ static int submit_frame(QSVEncContext *q, const AVFrame *frame,
qf->surface.Data.PitchLow = qf->frame->linesize[0];
qf->surface.Data.Y = qf->frame->data[0];
qf->surface.Data.UV = qf->frame->data[1];
- }
+ /* The SDK checks Data.V when using system memory for VP9 encoding */
+ switch (frame->format) {
+ case AV_PIX_FMT_NV12:
+ qf->surface.Data.V = qf->surface.Data.UV + 1;
+ break;
+
+ case AV_PIX_FMT_P010:
+ qf->surface.Data.V = qf->surface.Data.UV + 2;
+ break;
+
+ default:
+ /* should not reach here */
+ av_assert0(0);
+ break;
+ }
+ }
qf->surface.Data.TimeStamp = av_rescale_q(frame->pts, q->avctx->time_base, (AVRational){1, 90000});
*new_frame = qf;