Skip to content
4 changes: 2 additions & 2 deletions arch/sim/src/sim/sim_decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ static int sim_decoder_process(sim_decoder_t *sim_decoder,

if (src_buf != NULL)
{
src_data = (uint8_t *)src_buf->m.userptr;
src_data = (uint8_t *)src_buf->m.vaddr;
src_size = src_buf->bytesused;
src_pts = src_buf->timestamp.tv_sec * 1000000 +
src_buf->timestamp.tv_usec;
Expand All @@ -423,7 +423,7 @@ static int sim_decoder_process(sim_decoder_t *sim_decoder,
}

ret = openh264_decoder_dequeue(sim_decoder->decoder,
(uint8_t *)dst_buf->m.userptr,
(uint8_t *)dst_buf->m.vaddr,
&dst_pts,
&dst_buf->bytesused);
if (ret == 0 && src_buf == NULL)
Expand Down
4 changes: 2 additions & 2 deletions arch/sim/src/sim/sim_encoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ static int sim_encoder_process(sim_encoder_t *sim_encoder,

if (src_buf != NULL)
{
src_data = (uint8_t *)src_buf->m.userptr;
src_data = (uint8_t *)src_buf->m.vaddr;
src_size = src_buf->bytesused;
src_pts = src_buf->timestamp.tv_sec * 1000000 +
src_buf->timestamp.tv_usec;
Expand All @@ -491,7 +491,7 @@ static int sim_encoder_process(sim_encoder_t *sim_encoder,
}

ret = x264_wrapper_dequeue(sim_encoder->encoder,
(uint8_t *)dst_buf->m.userptr,
(uint8_t *)dst_buf->m.vaddr,
&dst_buf->bytesused,
&dst_pts,
&dst_buf->flags);
Expand Down
24 changes: 23 additions & 1 deletion drivers/video/v4l2_cap.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ struct video_format_s
uint16_t width;
uint16_t height;
uint32_t pixelformat;
uint32_t sizeimage;
};

typedef struct video_format_s video_format_t;
Expand Down Expand Up @@ -659,6 +660,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;
Expand Down Expand Up @@ -698,6 +703,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;
Expand Down Expand Up @@ -1330,6 +1339,11 @@ static size_t get_bufsize(FAR video_format_t *vf)
uint32_t height = vf->height;
size_t ret = width * height;

if (vf->sizeimage)
{
return vf->sizeimage;
}

switch (vf->pixelformat)
{
case V4L2_PIX_FMT_NV12:
Expand All @@ -1338,9 +1352,11 @@ static size_t get_bufsize(FAR video_format_t *vf)
case V4L2_PIX_FMT_YUYV:
case V4L2_PIX_FMT_UYVY:
case V4L2_PIX_FMT_RGB565:
case V4L2_PIX_FMT_JPEG:
default:
return ret * 2;
case V4L2_PIX_FMT_JPEG:
case V4L2_PIX_FMT_ENTROPY:
return ret;
}
}

Expand Down Expand Up @@ -2482,6 +2498,7 @@ static int capture_g_fmt(FAR struct file *filep,
fmt->fmt.pix.width = type_inf->fmt[CAPTURE_FMT_MAIN].width;
fmt->fmt.pix.height = type_inf->fmt[CAPTURE_FMT_MAIN].height;
fmt->fmt.pix.pixelformat = type_inf->fmt[CAPTURE_FMT_MAIN].pixelformat;
fmt->fmt.pix.sizeimage = type_inf->fmt[CAPTURE_FMT_MAIN].sizeimage;

return OK;
}
Expand Down Expand Up @@ -2528,6 +2545,7 @@ static int capture_s_fmt(FAR struct file *filep,

type_inf->fmt[CAPTURE_FMT_SUB].width = fmt->fmt.pix.width;
type_inf->fmt[CAPTURE_FMT_SUB].height = fmt->fmt.pix.height;
type_inf->fmt[CAPTURE_FMT_SUB].sizeimage = fmt->fmt.pix.sizeimage;
type_inf->fmt[CAPTURE_FMT_SUB].pixelformat =
fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_SUBIMG_UYVY ?
V4L2_PIX_FMT_UYVY : V4L2_PIX_FMT_RGB565;
Expand All @@ -2537,6 +2555,7 @@ static int capture_s_fmt(FAR struct file *filep,
default:
type_inf->fmt[CAPTURE_FMT_MAIN].width = fmt->fmt.pix.width;
type_inf->fmt[CAPTURE_FMT_MAIN].height = fmt->fmt.pix.height;
type_inf->fmt[CAPTURE_FMT_MAIN].sizeimage = fmt->fmt.pix.sizeimage;
type_inf->fmt[CAPTURE_FMT_MAIN].pixelformat =
fmt->fmt.pix.pixelformat;
type_inf->nr_fmt = 1;
Expand Down Expand Up @@ -2590,6 +2609,7 @@ static int capture_try_fmt(FAR struct file *filep,
sizeof(video_format_t));
vf[CAPTURE_FMT_SUB].width = fmt->fmt.pix.width;
vf[CAPTURE_FMT_SUB].height = fmt->fmt.pix.height;
vf[CAPTURE_FMT_SUB].sizeimage = fmt->fmt.pix.sizeimage;
vf[CAPTURE_FMT_SUB].pixelformat =
fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_SUBIMG_UYVY ?
V4L2_PIX_FMT_UYVY : V4L2_PIX_FMT_RGB565;
Expand All @@ -2600,11 +2620,13 @@ static int capture_try_fmt(FAR struct file *filep,
case V4L2_PIX_FMT_UYVY:
case V4L2_PIX_FMT_RGB565:
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;
vf[CAPTURE_FMT_MAIN].height = fmt->fmt.pix.height;
vf[CAPTURE_FMT_MAIN].pixelformat = fmt->fmt.pix.pixelformat;
vf[CAPTURE_FMT_MAIN].sizeimage = fmt->fmt.pix.sizeimage;
break;

default:
Expand Down
Loading
Loading