From 0fbbe6279985267e02db655250b4388da972dafe Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Mon, 11 Apr 2022 13:02:21 +0200 Subject: [PATCH] Expose h264 and jpeg options --- cmd/camera_stream.c | 2 ++ device/camera/camera.c | 31 +++++++++++++++++-------------- device/camera/camera.h | 8 ++++++++ 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/cmd/camera_stream.c b/cmd/camera_stream.c index 33d0fd3..74f47b1 100644 --- a/cmd/camera_stream.c +++ b/cmd/camera_stream.c @@ -80,6 +80,8 @@ option_t all_options[] = { DEFINE_OPTION_PTR(camera, options, list), DEFINE_OPTION_PTR(camera, isp.options, list), + DEFINE_OPTION_PTR(camera, jpeg.options, list), + DEFINE_OPTION_PTR(camera, h264.options, list), DEFINE_OPTION(http, port, uint), DEFINE_OPTION(http, maxcons, uint), diff --git a/device/camera/camera.c b/device/camera/camera.c index 3df2720..5ba0296 100644 --- a/device/camera/camera.c +++ b/device/camera/camera.c @@ -120,20 +120,7 @@ error: int camera_set_params(camera_t *camera) { - device_set_fps(camera->camera, camera->options.fps); - device_set_option_list(camera->camera, camera->options.options); - device_set_option_list(camera->isp_srgb, camera->options.isp.options); - - // DEVICE_SET_OPTION(camera->camera, EXPOSURE, 2684); - // DEVICE_SET_OPTION(camera->camera, ANALOGUE_GAIN, 938); - // DEVICE_SET_OPTION(camera->camera, DIGITAL_GAIN, 512); - // DEVICE_SET_OPTION(camera->camera, VBLANK, 1636); - // DEVICE_SET_OPTION(camera->camera, HBLANK, 6906); - - // DEVICE_SET_OPTION(camera->isp_srgb, RED_BALANCE, 2120); - // DEVICE_SET_OPTION(camera->isp_srgb, BLUE_BALANCE, 1472); - // DEVICE_SET_OPTION(camera->isp_srgb, DIGITAL_GAIN, 1007); - + // Set some defaults device_set_option_string(camera->codec_jpeg, "compression_quality", "80"); device_set_option_string(camera->codec_h264, "video_bitrate_mode", "0"); @@ -144,6 +131,22 @@ int camera_set_params(camera_t *camera) device_set_option_string(camera->codec_h264, "h264_profile", "4"); device_set_option_string(camera->codec_h264, "h264_minimum_qp_value", "16"); device_set_option_string(camera->codec_h264, "h264_maximum_qp_value", "32"); + + device_set_fps(camera->camera, camera->options.fps); + device_set_option_list(camera->camera, camera->options.options); + device_set_option_list(camera->isp_srgb, camera->options.isp.options); + device_set_option_list(camera->codec_h264, camera->options.h264.options); + device_set_option_list(camera->codec_jpeg, camera->options.jpeg.options); + + // DEVICE_SET_OPTION(camera->camera, EXPOSURE, 2684); + // DEVICE_SET_OPTION(camera->camera, ANALOGUE_GAIN, 938); + // DEVICE_SET_OPTION(camera->camera, DIGITAL_GAIN, 512); + // DEVICE_SET_OPTION(camera->camera, VBLANK, 1636); + // DEVICE_SET_OPTION(camera->camera, HBLANK, 6906); + + // DEVICE_SET_OPTION(camera->isp_srgb, RED_BALANCE, 2120); + // DEVICE_SET_OPTION(camera->isp_srgb, BLUE_BALANCE, 1472); + // DEVICE_SET_OPTION(camera->isp_srgb, DIGITAL_GAIN, 1007); return 0; } diff --git a/device/camera/camera.h b/device/camera/camera.h index e499868..259cf33 100644 --- a/device/camera/camera.h +++ b/device/camera/camera.h @@ -28,6 +28,14 @@ typedef struct camera_options_s { struct { char options[CAMERA_OPTIONS_LENGTH]; } isp; + + struct { + char options[CAMERA_OPTIONS_LENGTH]; + } jpeg; + + struct { + char options[CAMERA_OPTIONS_LENGTH]; + } h264; } camera_options_t; typedef struct camera_s {