From cde6185963dfc4751812714c9fa21cf3ac201e5b Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Mon, 11 Apr 2022 21:07:04 +0200 Subject: [PATCH] Make `buffer_list_t *device_open_buffer_list_output` --- device/camera/camera_decoder.c | 6 +++--- device/camera/camera_direct.c | 15 +++++++++------ device/camera/camera_isp.c | 10 +++++----- device/camera/camera_legacy_isp.c | 6 +++--- device/device.c | 10 +++------- device/device.h | 2 +- 6 files changed, 24 insertions(+), 25 deletions(-) diff --git a/device/camera/camera_decoder.c b/device/camera/camera_decoder.c index 639559f..d1d4e73 100644 --- a/device/camera/camera_decoder.c +++ b/device/camera/camera_decoder.c @@ -16,7 +16,7 @@ int camera_configure_decoder(camera_t *camera, buffer_list_t *camera_src) camera->decoder = device_v4l2_open("DECODER", "/dev/video10"); - if (device_open_buffer_list_output(camera->decoder, src) < 0) { + if (!device_open_buffer_list_output(camera->decoder, src)) { return -1; } @@ -33,7 +33,7 @@ int camera_configure_decoder(camera_t *camera, buffer_list_t *camera_src) if (camera_src->fmt.format != V4L2_PIX_FMT_MJPEG && camera_src->fmt.format != V4L2_PIX_FMT_JPEG) { camera->codec_jpeg = device_v4l2_open("JPEG", "/dev/video31"); - if (device_open_buffer_list_output(camera->codec_jpeg, src) < 0 || + if (!device_open_buffer_list_output(camera->codec_jpeg, src) || device_open_buffer_list_capture(camera->codec_jpeg, src, 1.0, V4L2_PIX_FMT_JPEG, true) < 0) { return -1; } @@ -42,7 +42,7 @@ int camera_configure_decoder(camera_t *camera, buffer_list_t *camera_src) if (camera_src->fmt.format != V4L2_PIX_FMT_H264) { camera->codec_h264 = device_v4l2_open("H264", "/dev/video11"); - if (device_open_buffer_list_output(camera->codec_h264, src) < 0 || + if (!device_open_buffer_list_output(camera->codec_h264, src) || device_open_buffer_list_capture(camera->codec_h264, src, 1.0, V4L2_PIX_FMT_H264, true) < 0) { return -1; } diff --git a/device/camera/camera_direct.c b/device/camera/camera_direct.c index ce2c339..fdcabfd 100644 --- a/device/camera/camera_direct.c +++ b/device/camera/camera_direct.c @@ -14,19 +14,22 @@ int camera_configure_direct(camera_t *camera, buffer_list_t *src) camera->codec_jpeg = device_v4l2_open("JPEG", "/dev/video31"); camera->codec_h264 = device_v4l2_open("H264", "/dev/video11"); - if (device_open_buffer_list_output(camera->codec_jpeg, src) < 0 || - device_open_buffer_list_capture(camera->codec_jpeg, src, 1.0, V4L2_PIX_FMT_JPEG, true) < 0) { + buffer_list_t *jpeg_output = device_open_buffer_list_output(camera->codec_jpeg, src); + buffer_list_t *h264_output = device_open_buffer_list_output(camera->codec_h264, src); + if (!jpeg_output || !h264_output) { return -1; } - if (device_open_buffer_list_output(camera->codec_h264, src) < 0 || - device_open_buffer_list_capture(camera->codec_h264, src, 1.0, V4L2_PIX_FMT_H264, true) < 0) { + if (device_open_buffer_list_capture(camera->codec_jpeg, src, 1.0, V4L2_PIX_FMT_JPEG, true) < 0) { + return -1; + } + + if (device_open_buffer_list_capture(camera->codec_h264, src, 1.0, V4L2_PIX_FMT_H264, true) < 0) { return -1; } link_t *links = camera->links; - - *links++ = (link_t){ camera->camera->capture_list, { camera->codec_jpeg->output_list, camera->codec_h264->output_list } }; + *links++ = (link_t){ src, { jpeg_output, h264_output} }; *links++ = (link_t){ camera->codec_jpeg->capture_list, { }, { http_jpeg_capture, http_jpeg_needs_buffer } }; *links++ = (link_t){ camera->codec_h264->capture_list, { }, { http_h264_capture, http_h264_needs_buffer } }; return 0; diff --git a/device/camera/camera_isp.c b/device/camera/camera_isp.c index a1d62f8..85c27b2 100644 --- a/device/camera/camera_isp.c +++ b/device/camera/camera_isp.c @@ -18,7 +18,7 @@ int camera_configure_isp(camera_t *camera, buffer_list_t *src, float high_div, f camera->codec_jpeg = device_v4l2_open("JPEG", "/dev/video31"); camera->codec_h264 = device_v4l2_open("H264", "/dev/video11"); - if (device_open_buffer_list_output(camera->isp_srgb, src) < 0 || + if (!device_open_buffer_list_output(camera->isp_srgb, src) || device_open_buffer_list_capture(camera->isp_yuuv, camera->isp_srgb->output_list, high_div, V4L2_PIX_FMT_YUYV, true) < 0) { return -1; } @@ -30,12 +30,12 @@ int camera_configure_isp(camera_t *camera, buffer_list_t *src, float high_div, f src = camera->isp_yuuv->capture_list; - if (device_open_buffer_list_output(camera->codec_jpeg, src) < 0 || + if (!device_open_buffer_list_output(camera->codec_jpeg, src) || device_open_buffer_list_capture(camera->codec_jpeg, src, 1.0, V4L2_PIX_FMT_JPEG, true) < 0) { return -1; } - if (device_open_buffer_list_output(camera->codec_h264, src) < 0 || + if (!device_open_buffer_list_output(camera->codec_h264, src) || device_open_buffer_list_capture(camera->codec_h264, src, 1.0, V4L2_PIX_FMT_H264, true) < 0) { return -1; } @@ -60,12 +60,12 @@ int camera_configure_isp(camera_t *camera, buffer_list_t *src, float high_div, f camera->isp_yuuv_lowres->output_device = camera->isp_srgb; src = camera->isp_yuuv_lowres->capture_list; - if (device_open_buffer_list_output(camera->codec_jpeg_lowres, src) < 0 || + if (!device_open_buffer_list_output(camera->codec_jpeg_lowres, src) || device_open_buffer_list_capture(camera->codec_jpeg_lowres, src, 1.0, V4L2_PIX_FMT_JPEG, true) < 0) { return -1; } - if (device_open_buffer_list_output(camera->codec_h264_lowres, src) < 0 || + if (!device_open_buffer_list_output(camera->codec_h264_lowres, src) || device_open_buffer_list_capture(camera->codec_h264_lowres, src, 1.0, V4L2_PIX_FMT_H264, true) < 0) { return -1; } diff --git a/device/camera/camera_legacy_isp.c b/device/camera/camera_legacy_isp.c index 3451e61..f4f9142 100644 --- a/device/camera/camera_legacy_isp.c +++ b/device/camera/camera_legacy_isp.c @@ -27,19 +27,19 @@ int camera_configure_legacy_isp(camera_t *camera, buffer_list_t *src, float div) camera->codec_jpeg = device_v4l2_open("JPEG", "/dev/video31"); camera->codec_h264 = device_v4l2_open("H264", "/dev/video11"); - if (device_open_buffer_list_output(camera->legacy_isp, src) < 0 || + if (!device_open_buffer_list_output(camera->legacy_isp, src) || device_open_buffer_list_capture(camera->legacy_isp, src, div, V4L2_PIX_FMT_YUYV, true) < 0) { return -1; } src = camera->legacy_isp->capture_list; - if (device_open_buffer_list_output(camera->codec_jpeg, src) < 0 || + if (!device_open_buffer_list_output(camera->codec_jpeg, src) || device_open_buffer_list_capture(camera->codec_jpeg, src, 1.0, V4L2_PIX_FMT_JPEG, true) < 0) { return -1; } - if (device_open_buffer_list_output(camera->codec_h264, src) < 0 || + if (!device_open_buffer_list_output(camera->codec_h264, src) || device_open_buffer_list_capture(camera->codec_h264, src, 1.0, V4L2_PIX_FMT_H264, true) < 0) { return -1; } diff --git a/device/device.c b/device/device.c index 5ce29a7..8dffc77 100644 --- a/device/device.c +++ b/device/device.c @@ -96,17 +96,13 @@ error: return NULL; } -int device_open_buffer_list_output(device_t *dev, buffer_list_t *capture_list) +buffer_list_t *device_open_buffer_list_output(device_t *dev, buffer_list_t *capture_list) { - if (device_open_buffer_list(dev, false, + return device_open_buffer_list(dev, false, capture_list->fmt.width, capture_list->fmt.height, capture_list->fmt.format, capture_list->fmt.bytesperline, capture_list->nbufs, - capture_list->dev->opts.allow_dma ? !capture_list->do_mmap : true)) { - return 0; - } - - return -1; + capture_list->dev->opts.allow_dma ? !capture_list->do_mmap : true); } int device_open_buffer_list_capture(device_t *dev, buffer_list_t *output_list, float div, unsigned format, bool do_mmap) diff --git a/device/device.h b/device/device.h index 9eff7ff..b8379d3 100644 --- a/device/device.h +++ b/device/device.h @@ -55,7 +55,7 @@ device_t *device_open(const char *name, const char *path, device_hw_t *hw); void device_close(device_t *dev); buffer_list_t *device_open_buffer_list(device_t *dev, bool do_capture, unsigned width, unsigned height, unsigned format, unsigned bytesperline, int nbufs, bool do_mmap); -int device_open_buffer_list_output(device_t *dev, buffer_list_t *capture_list); +buffer_list_t *device_open_buffer_list_output(device_t *dev, buffer_list_t *capture_list); int device_open_buffer_list_capture(device_t *dev, buffer_list_t *output_list, float div, unsigned format, bool do_mmap); int device_consume_event(device_t *dev);