From: Jeongmo Yang Date: Tue, 11 Feb 2025 07:57:08 +0000 (+0900) Subject: Update X-Git-Tag: accepted/tizen/unified/20250610.081745~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6f514739ea78e9fcc4571a2617d77ae15f9564a2;p=platform%2Fhal%2Fbackend%2Fcodec-v4l2.git Update - Add extra settings for capture(output) when S_FMT. - Change buffer numbers for input and output. Signed-off-by: Jeongmo Yang --- diff --git a/src/hal_backend_codec_v4l2.c b/src/hal_backend_codec_v4l2.c index 9e23454..67d284f 100644 --- a/src/hal_backend_codec_v4l2.c +++ b/src/hal_backend_codec_v4l2.c @@ -623,6 +623,23 @@ static int __codec_v4l2_s_fmt(codec_hal_buffer_control_s *buffer_control, int de v4l2_fmt.fmt.pix_mp.height = codec_config->resolution.height; v4l2_fmt.fmt.pix_mp.pixelformat = fourcc; v4l2_fmt.fmt.pix_mp.num_planes = num_planes; + + if (V4L2_TYPE_IS_CAPTURE (codec_config->buf_type)) { + if (codec_config->resolution.width <= 720 && + codec_config->resolution.height <= 576) { + /* SD */ + v4l2_fmt.fmt.pix_mp.colorspace = V4L2_COLORSPACE_SMPTE170M; + v4l2_fmt.fmt.pix_mp.ycbcr_enc = V4L2_YCBCR_ENC_601; + } else { + /* HD */ + v4l2_fmt.fmt.pix_mp.colorspace = V4L2_COLORSPACE_REC709; + v4l2_fmt.fmt.pix_mp.ycbcr_enc = V4L2_YCBCR_ENC_709; + } + + v4l2_fmt.fmt.pix_mp.quantization = V4L2_QUANTIZATION_LIM_RANGE; + v4l2_fmt.fmt.pix_mp.xfer_func = V4L2_XFER_FUNC_709; + v4l2_fmt.fmt.pix_mp.flags |= V4L2_PIX_FMT_FLAG_SET_CSC; + } } else { v4l2_fmt.fmt.pix.width = codec_config->resolution.width; v4l2_fmt.fmt.pix.height = codec_config->resolution.height; @@ -1945,13 +1962,13 @@ int codec_v4l2_start(void *codec_handle, hal_codec_message_cb callback, void *us return HAL_CODEC_ERROR_INVALID_STATE; } - ret = __codec_v4l2_start_stream(handle, &handle->buffer_control[CODEC_HAL_BUFFER_CONTROL_TYPE_INPUT], BUFFER_MIN); + ret = __codec_v4l2_start_stream(handle, &handle->buffer_control[CODEC_HAL_BUFFER_CONTROL_TYPE_INPUT], BUFFER_NUM_INPUT); if (ret != HAL_CODEC_ERROR_NONE) { LOGE("[input] __codec_start_stream failed[0x%x]", ret); return ret; } - ret = __codec_v4l2_start_stream(handle, &handle->buffer_control[CODEC_HAL_BUFFER_CONTROL_TYPE_OUTPUT], BUFFER_MIN); + ret = __codec_v4l2_start_stream(handle, &handle->buffer_control[CODEC_HAL_BUFFER_CONTROL_TYPE_OUTPUT], BUFFER_NUM_OUTPUT); if (ret != HAL_CODEC_ERROR_NONE) { LOGE("[output] __codec_start_stream failed[0x%x]", ret); return ret; diff --git a/src/hal_backend_codec_v4l2_private.h b/src/hal_backend_codec_v4l2_private.h index d9e2218..9bb1882 100644 --- a/src/hal_backend_codec_v4l2_private.h +++ b/src/hal_backend_codec_v4l2_private.h @@ -29,8 +29,10 @@ #define CODEC_HAL_INITIAL_INDEX -1 #define CODEC_HAL_INITIAL_FD -1 -#define BUFFER_MIN 8 +#define BUFFER_MIN 2 #define BUFFER_MAX 16 +#define BUFFER_NUM_INPUT 4 +#define BUFFER_NUM_OUTPUT 8 #define V4L2_PLANES_MAX 4