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