int camera_attr_get_focus_level_range(camera_h camera, int *min, int *max);
/**
+ * @internal
* @brief Sets the bitrate of extra preview.
* @since_tizen 6.5
* @param[in] camera The handle to the camera
int camera_attr_set_extra_preview_bitrate(camera_h camera, int stream_id, int bitrate);
/**
+ * @internal
* @brief Gets the bitrate of extra preview.
* @since_tizen 6.5
* @param[in] camera The handle to the camera
int camera_attr_get_extra_preview_bitrate(camera_h camera, int stream_id, int *bitrate);
/**
+ * @internal
+ * @brief Sets the GOP (Group Of Pictures) interval of extra preview.
+ * @since_tizen 6.5
+ * @remarks The recommended range is from 1,000 (1 second) to 600,000 (10 minutes). \n
+ * But, due to codec limitations, it may not apply.
+ * @param[in] camera The handle to the camera
+ * @param[in] stream_id The id of extra preview stream
+ * @param[in] interval The GOP interval of extra preview (millisecond)
+ * @return @c 0 on success, otherwise a negative error value
+ * @retval #CAMERA_ERROR_NONE Successful
+ * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
+ * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
+ * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
+ * @see camera_attr_get_extra_preview_gop_interval()
+ */
+int camera_attr_set_extra_preview_gop_interval(camera_h camera, int stream_id, int interval);
+
+/**
+ * @internal
+ * @brief Gets the GOP (Group Of Pictures) interval of extra preview.
+ * @since_tizen 6.5
+ * @param[in] camera The handle to the camera
+ * @param[in] stream_id The id of extra preview stream
+ * @param[out] interval The GOP interval of extra preview (millisecond)
+ * @return @c 0 on success, otherwise a negative error value
+ * @retval #CAMERA_ERROR_NONE Successful
+ * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
+ * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
+ * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
+ * @see camera_attr_set_extra_preview_gop_interval()
+ */
+int camera_attr_get_extra_preview_gop_interval(camera_h camera, int stream_id, int *interval);
+
+/**
* @}
*/
#ifdef __cplusplus
Name: capi-media-camera
Summary: A Camera API
-Version: 0.4.62
+Version: 0.4.63
Release: 0
Group: Multimedia/API
License: Apache-2.0
return CAMERA_ERROR_INVALID_PARAMETER;
}
- CAM_LOG_INFO("Enter - stream_id[%d],[%d,%dx%d,%d]",
+ CAM_LOG_INFO("Enter - stream[%d],[%d,%dx%d,%d]",
stream_id, pixel_format, width, height, fps);
msg = muse_core_msg_new(api,
return CAMERA_ERROR_INVALID_PARAMETER;
}
- CAM_LOG_INFO("Enter - stream_id[%d]", stream_id);
+ CAM_LOG_INFO("Enter - stream[%d]", stream_id);
CAMERA_MSG_PARAM_SET(param, INT, stream_id);
return CAMERA_ERROR_INVALID_PARAMETER;
}
- CAM_LOG_INFO("Enter - stream_id[%d], bitrate[%d]", stream_id, bitrate);
+ CAM_LOG_INFO("Enter - stream[%d], bitrate[%d]", stream_id, bitrate);
CAMERA_MSG_PARAM_SET(param0, INT, stream_id);
CAMERA_MSG_PARAM_SET(param1, INT, bitrate);
return CAMERA_ERROR_INVALID_PARAMETER;
}
- CAM_LOG_INFO("Enter - stream_id[%d]", stream_id);
+ CAM_LOG_INFO("Enter - stream[%d]", stream_id);
CAMERA_MSG_PARAM_SET(param, INT, stream_id);
return ret;
}
+
+int camera_attr_set_extra_preview_gop_interval(camera_h camera, int stream_id, int interval)
+{
+ int ret = CAMERA_ERROR_NONE;
+ camera_cli_s *pc = (camera_cli_s *)camera;
+ muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_EXTRA_PREVIEW_GOP_INTERVAL;
+ camera_msg_param param0;
+ camera_msg_param param1;
+
+ if (!pc || !pc->cb_info) {
+ CAM_LOG_ERROR("NULL handle");
+ return CAMERA_ERROR_INVALID_PARAMETER;
+ }
+
+ CAM_LOG_INFO("Enter - stream[%d], GOP interval[%d]", stream_id, interval);
+
+ CAMERA_MSG_PARAM_SET(param0, INT, stream_id);
+ CAMERA_MSG_PARAM_SET(param1, INT, interval);
+
+ _camera_msg_send_param2_int(api, pc->cb_info, &ret,
+ ¶m0, ¶m1, CAMERA_CB_TIMEOUT);
+
+ CAM_LOG_INFO("ret : 0x%x", ret);
+
+ return ret;
+}
+
+
+int camera_attr_get_extra_preview_gop_interval(camera_h camera, int stream_id, int *interval)
+{
+ int ret = CAMERA_ERROR_NONE;
+ camera_cli_s *pc = (camera_cli_s *)camera;
+ muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_EXTRA_PREVIEW_GOP_INTERVAL;
+ camera_msg_param param;
+
+ if (!pc || !pc->cb_info || !interval) {
+ CAM_LOG_ERROR("NULL pointer %p %p", pc, interval);
+ return CAMERA_ERROR_INVALID_PARAMETER;
+ }
+
+ CAM_LOG_INFO("Enter - stream[%d]", stream_id);
+
+ CAMERA_MSG_PARAM_SET(param, INT, stream_id);
+
+ _camera_msg_send_param1(api, pc->cb_info, &ret, ¶m, CAMERA_CB_TIMEOUT);
+
+ if (ret == CAMERA_ERROR_NONE) {
+ *interval = pc->cb_info->get_int[MUSE_CAMERA_GET_INT_EXTRA_PREVIEW_GOP_INTERVAL];
+ CAM_LOG_INFO("get GOP interval[%d] for stream[%d]", *interval, stream_id);
+ } else {
+ CAM_LOG_ERROR("get GOP interval failed for stream[%d] : 0x%x", stream_id, ret);
+ }
+
+ return ret;
+}
+
//LCOV_EXCL_STOP
g_print("\t 'F' Get facing direction of camera module\n");
g_print("\t 's' Extra preview stream format\n");
g_print("\t 'B' Extra preview bitrate\n");
+ g_print("\t 'V' Extra preview GOP interval\n");
g_print("\t >>>>>>>>>>>>>>>>>>>> [Display/Filter]\n");
g_print("\t 'v' Visible \n");
g_print("\t 'o' Output mode \n");
int pixel_format;
int fps;
int bitrate;
+ int interval;
switch (buf) {
/* Camera setting */
break;
case 'B': /* Setting > Set extra preview bitrate */
g_print("* Set extra preview bitrate\n");
+ g_print("\tstream_id : ");
+ err = scanf("%d", &stream_id);
+ flush_stdin();
+
+ err = camera_attr_get_extra_preview_bitrate(hcamcorder->camera, stream_id, &bitrate);
+ if (err != CAMERA_ERROR_NONE) {
+ g_print("\tFailed to get bitrate for stream_id[%d]\n", stream_id);
+ break;
+ }
- g_print("\tstream_id,bitrate : ");
- err = scanf("%d,%d", &stream_id, &bitrate);
+ g_print("\tCurrent bitrate[%d]bps for stream_id[%d]\n", bitrate, stream_id);
+
+ g_print("\tSet bitrate(bps) : ");
+ err = scanf("%d", &bitrate);
flush_stdin();
err = camera_attr_set_extra_preview_bitrate(hcamcorder->camera, stream_id, bitrate);
break;
}
- g_print("\tGet stream_id[%d],bitrate[%d]\n", stream_id, bitrate);
+ g_print("\tResult bitrate[%d]bps for stream_id[%d]\n", bitrate, stream_id);
+ break;
+ case 'V': /* Setting > Set extra preview GOP interval */
+ g_print("* Set extra preview GOP interval\n");
+ g_print("\tstream_id : ");
+ err = scanf("%d", &stream_id);
+ flush_stdin();
+
+ err = camera_attr_get_extra_preview_gop_interval(hcamcorder->camera, stream_id, &interval);
+ if (err != CAMERA_ERROR_NONE) {
+ g_print("\tFailed to get GOP interval for stream_id[%d]\n", stream_id);
+ break;
+ }
+
+ g_print("\tCurrent GOP interval[%d]bps for stream_id[%d]\n", interval, stream_id);
+
+ g_print("\tSet GOP interval(ms) : ");
+ err = scanf("%d", &interval);
+ flush_stdin();
+
+ err = camera_attr_set_extra_preview_gop_interval(hcamcorder->camera, stream_id, interval);
+ if (err != CAMERA_ERROR_NONE) {
+ g_print("* Set Error : 0x%x\n", err);
+ break;
+ }
+
+ interval = -1;
+
+ err = camera_attr_get_extra_preview_gop_interval(hcamcorder->camera, stream_id, &interval);
+ if (err != CAMERA_ERROR_NONE) {
+ g_print("* Get Error : 0x%x\n", err);
+ break;
+ }
+
+ g_print("\tResult GOP interval[%d]bps for stream_id[%d]\n", interval, stream_id);
break;
/* Display / Filter setting */
case 'v': /* Display visible */