lavc/qsvenc: set base address for V plane
The SDK checks Data.V when using system memory for VP9 encoding. This fixed the error below: $ ffmpeg -qsv_device /dev/dri/renderD129 -f lavfi -i yuvtestsrc -c:v vp9_qsv -f null - [vp9_qsv @ 0x55b8387cbe90] Error during encoding: NULL pointer (-2) Video encoding failed Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
This commit is contained in:
parent
a428949775
commit
0d82613b7d
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue