mirror of https://git.ffmpeg.org/ffmpeg.git
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.PitchLow = qf->frame->linesize[0];
|
||||||
qf->surface.Data.Y = qf->frame->data[0];
|
qf->surface.Data.Y = qf->frame->data[0];
|
||||||
qf->surface.Data.UV = qf->frame->data[1];
|
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});
|
qf->surface.Data.TimeStamp = av_rescale_q(frame->pts, q->avctx->time_base, (AVRational){1, 90000});
|
||||||
|
|
||||||
*new_frame = qf;
|
*new_frame = qf;
|
||||||
|
|
Loading…
Reference in New Issue