This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push: new d8ca744052 drivers/video: video driver supports NV12 d8ca744052 is described below commit d8ca744052ad4fe159bbf3c3dc07eedcfa274c07 Author: yangsen5 <yangs...@xiaomi.com> AuthorDate: Tue Aug 1 16:34:58 2023 +0800 drivers/video: video driver supports NV12 Signed-off-by: yangsen5 <yangs...@xiaomi.com> --- arch/sim/src/sim/sim_camera.c | 4 ++++ drivers/video/video.c | 11 ++++++++++- include/nuttx/video/imgdata.h | 1 + include/nuttx/video/imgsensor.h | 1 + 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/arch/sim/src/sim/sim_camera.c b/arch/sim/src/sim/sim_camera.c index ce282e3cb2..ffd3dcc132 100644 --- a/arch/sim/src/sim/sim_camera.c +++ b/arch/sim/src/sim/sim_camera.c @@ -141,6 +141,10 @@ static uint32_t imgdata_fmt_to_v4l2(uint32_t pixelformat) uint32_t fourcc; switch (pixelformat) { + case IMGDATA_PIX_FMT_NV12: + fourcc = V4L2_PIX_FMT_NV12; + break; + case IMGDATA_PIX_FMT_YUV420P: fourcc = V4L2_PIX_FMT_YUV420; break; diff --git a/drivers/video/video.c b/drivers/video/video.c index 92a450a16b..dfb00ae54e 100644 --- a/drivers/video/video.c +++ b/drivers/video/video.c @@ -465,6 +465,10 @@ static void convert_to_imgdatafmt(FAR video_format_t *video, data->height = video->height; switch (video->pixelformat) { + case V4L2_PIX_FMT_NV12: + data->pixelformat = IMGDATA_PIX_FMT_NV12; + break; + case V4L2_PIX_FMT_YUV420: data->pixelformat = IMGDATA_PIX_FMT_YUV420P; break; @@ -500,6 +504,10 @@ static void convert_to_imgsensorfmt(FAR video_format_t *video, sensor->height = video->height; switch (video->pixelformat) { + case V4L2_PIX_FMT_NV12: + sensor->pixelformat = IMGSENSOR_PIX_FMT_NV12; + break; + case V4L2_PIX_FMT_YUV420: sensor->pixelformat = IMGSENSOR_PIX_FMT_YUV420P; break; @@ -1610,6 +1618,7 @@ static size_t get_bufsize(FAR video_format_t *vf) size_t ret = vf->width * vf->height; switch (vf->pixelformat) { + case V4L2_PIX_FMT_NV12: case V4L2_PIX_FMT_YUV420: return ret * 3 / 2; case V4L2_PIX_FMT_YUYV: @@ -1669,7 +1678,7 @@ static int video_try_fmt(FAR struct video_mng_s *priv, v4l2->fmt.pix.pixelformat == V4L2_PIX_FMT_SUBIMG_UYVY ? V4L2_PIX_FMT_UYVY : V4L2_PIX_FMT_RGB565; break; - + case V4L2_PIX_FMT_NV12: case V4L2_PIX_FMT_YUV420: case V4L2_PIX_FMT_YUYV: case V4L2_PIX_FMT_UYVY: diff --git a/include/nuttx/video/imgdata.h b/include/nuttx/video/imgdata.h index 3e5e3bbab3..105b97f6e1 100644 --- a/include/nuttx/video/imgdata.h +++ b/include/nuttx/video/imgdata.h @@ -45,6 +45,7 @@ #define IMGDATA_PIX_FMT_SUBIMG_RGB565 (5) #define IMGDATA_PIX_FMT_YUYV (6) #define IMGDATA_PIX_FMT_YUV420P (7) +#define IMGDATA_PIX_FMT_NV12 (8) /* Method access helper macros */ diff --git a/include/nuttx/video/imgsensor.h b/include/nuttx/video/imgsensor.h index 444c411cd6..36fa9baef1 100644 --- a/include/nuttx/video/imgsensor.h +++ b/include/nuttx/video/imgsensor.h @@ -121,6 +121,7 @@ #define IMGSENSOR_PIX_FMT_SUBIMG_RGB565 (5) #define IMGSENSOR_PIX_FMT_YUYV (6) #define IMGSENSOR_PIX_FMT_YUV420P (7) +#define IMGSENSOR_PIX_FMT_NV12 (8) /* Method access helper macros */