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 */
 

Reply via email to