mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-27 21:20:41 +00:00
avcodec/v4l2_buffers: Add handling for NV21 and YUV420P
The single planar support was for NV12 only. Add NV21 and YUV420P support. Signed-off-by: Aman Gupta <aman@tmm1.net>
This commit is contained in:
parent
7bb6898b16
commit
d61cf1b1eb
@ -321,11 +321,20 @@ int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf)
|
||||
/* 1.1 fixup special cases */
|
||||
switch (avbuf->context->av_pix_fmt) {
|
||||
case AV_PIX_FMT_NV12:
|
||||
case AV_PIX_FMT_NV21:
|
||||
if (avbuf->num_planes > 1)
|
||||
break;
|
||||
frame->linesize[1] = avbuf->plane_info[0].bytesperline;
|
||||
frame->data[1] = frame->buf[0]->data + avbuf->plane_info[0].bytesperline * avbuf->context->format.fmt.pix_mp.height;
|
||||
break;
|
||||
case AV_PIX_FMT_YUV420P:
|
||||
if (avbuf->num_planes > 1)
|
||||
break;
|
||||
frame->linesize[1] = avbuf->plane_info[0].bytesperline >> 1;
|
||||
frame->linesize[2] = avbuf->plane_info[0].bytesperline >> 1;
|
||||
frame->data[1] = frame->buf[0]->data + avbuf->plane_info[0].bytesperline * avbuf->context->format.fmt.pix_mp.height;
|
||||
frame->data[2] = frame->data[1] + ((avbuf->plane_info[0].bytesperline * avbuf->context->format.fmt.pix_mp.height) >> 2);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user