This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit bbe7883218a311f212f189ddc9ad89d2d46f1585
Author: yaojingwei <[email protected]>
AuthorDate: Mon Nov 17 15:40:15 2025 +0800

    v4l2_cap: add V4L2_PIX_FMT_ENTROPY support
    
    Add the V4L2_PIX_FMT_ENTROPY pixel format, with its imgdata and
    imgsensor counterparts, for private entropy-encoded streams. Like JPEG,
    it takes its buffer size from sizeimage when one is set. Without one,
    JPEG and ENTROPY buffers are width * height bytes instead of two bytes
    per pixel.
    
    Signed-off-by: yaojingwei <[email protected]>
---
 drivers/video/v4l2_cap.c        | 17 +++++++++++++++--
 include/nuttx/video/imgdata.h   |  1 +
 include/nuttx/video/imgsensor.h |  1 +
 include/sys/videoio.h           |  1 +
 4 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/drivers/video/v4l2_cap.c b/drivers/video/v4l2_cap.c
index ff0bf92abd4..f86c27b1afe 100644
--- a/drivers/video/v4l2_cap.c
+++ b/drivers/video/v4l2_cap.c
@@ -665,6 +665,10 @@ static void convert_to_imgdatafmt(FAR video_format_t 
*video,
         data->pixelformat = IMGDATA_PIX_FMT_JPEG;
         break;
 
+      case V4L2_PIX_FMT_ENTROPY:
+        data->pixelformat = IMGDATA_PIX_FMT_ENTROPY;
+        break;
+
       default: /* V4L2_PIX_FMT_JPEG_WITH_SUBIMG */
         data->pixelformat = IMGDATA_PIX_FMT_JPEG_WITH_SUBIMG;
         break;
@@ -708,6 +712,10 @@ static void convert_to_imgsensorfmt(FAR video_format_t 
*video,
         sensor->pixelformat = IMGSENSOR_PIX_FMT_JPEG;
         break;
 
+      case V4L2_PIX_FMT_ENTROPY:
+        sensor->pixelformat = IMGSENSOR_PIX_FMT_ENTROPY;
+        break;
+
       default: /* V4L2_PIX_FMT_JPEG_WITH_SUBIMG */
         sensor->pixelformat = IMGSENSOR_PIX_FMT_JPEG_WITH_SUBIMG;
         break;
@@ -1342,7 +1350,9 @@ static size_t get_bufsize(FAR video_format_t *vf)
   uint32_t height = vf->height;
   size_t ret = width * height;
 
-  if (vf->sizeimage > 0 && vf->pixelformat == V4L2_PIX_FMT_JPEG)
+  if (vf->sizeimage > 0 &&
+      (vf->pixelformat == V4L2_PIX_FMT_JPEG ||
+       vf->pixelformat == V4L2_PIX_FMT_ENTROPY))
     {
       return vf->sizeimage;
     }
@@ -1356,9 +1366,11 @@ static size_t get_bufsize(FAR video_format_t *vf)
       case V4L2_PIX_FMT_UYVY:
       case V4L2_PIX_FMT_RGB565:
       case V4L2_PIX_FMT_RGB565X:
-      case V4L2_PIX_FMT_JPEG:
       default:
         return ret * 2;
+      case V4L2_PIX_FMT_JPEG:
+      case V4L2_PIX_FMT_ENTROPY:
+        return ret;
     }
 }
 
@@ -2623,6 +2635,7 @@ static int capture_try_fmt(FAR struct file *filep,
       case V4L2_PIX_FMT_RGB565:
       case V4L2_PIX_FMT_RGB565X:
       case V4L2_PIX_FMT_JPEG:
+      case V4L2_PIX_FMT_ENTROPY:
       case V4L2_PIX_FMT_JPEG_WITH_SUBIMG:
         nr_fmt = 1;
         vf[CAPTURE_FMT_MAIN].width       = fmt->fmt.pix.width;
diff --git a/include/nuttx/video/imgdata.h b/include/nuttx/video/imgdata.h
index 9791ba5ec06..3bfcc7ba157 100644
--- a/include/nuttx/video/imgdata.h
+++ b/include/nuttx/video/imgdata.h
@@ -49,6 +49,7 @@
 #define IMGDATA_PIX_FMT_YUV420P          (7)
 #define IMGDATA_PIX_FMT_NV12             (8)
 #define IMGDATA_PIX_FMT_RGB565X          (9)
+#define IMGDATA_PIX_FMT_ENTROPY          (10)
 
 /* Method access helper macros */
 
diff --git a/include/nuttx/video/imgsensor.h b/include/nuttx/video/imgsensor.h
index 3b35394b002..266db07f4a8 100644
--- a/include/nuttx/video/imgsensor.h
+++ b/include/nuttx/video/imgsensor.h
@@ -125,6 +125,7 @@
 #define IMGSENSOR_PIX_FMT_YUV420P          (7)
 #define IMGSENSOR_PIX_FMT_NV12             (8)
 #define IMGSENSOR_PIX_FMT_RGB565X          (9)
+#define IMGSENSOR_PIX_FMT_ENTROPY          (10)
 
 /* Method access helper macros */
 
diff --git a/include/sys/videoio.h b/include/sys/videoio.h
index a398199cc7e..7c99fb31ab7 100644
--- a/include/sys/videoio.h
+++ b/include/sys/videoio.h
@@ -215,6 +215,7 @@ extern "C"
 #define V4L2_PIX_FMT_VP8      v4l2_fourcc('V', 'P', '8', '0')
 #define V4L2_PIX_FMT_VP9      v4l2_fourcc('V', 'P', '9', '0')
 #define V4L2_PIX_FMT_HEVC     v4l2_fourcc('H', 'E', 'V', 'C')
+#define V4L2_PIX_FMT_ENTROPY  v4l2_fourcc('E', 'N', 'T', 'R')
 
 /* JPEG + sub image */
 

Reply via email to