}
+bool legacy_camera_is_supported_media_packet_preview_internal_cb(camera_h camera)
+{
+ int ret = MM_ERROR_NONE;
+ int supported = false;
+ camera_s *handle = (camera_s *)camera;
+
+ camera_return_val_if_fail(handle, false);
+
+ ret = mm_camcorder_get_attributes(handle->mm_handle, NULL,
+ MMCAM_SUPPORT_MEDIA_PACKET_PREVIEW_INTERNAL_CB, &supported,
+ NULL);
+ set_last_result(__convert_camera_error_code(__func__, ret));
+ if (ret != MM_ERROR_NONE) {
+ CAM_LOG_ERROR("MMCAM_SUPPORT_MEDIA_PACKET_PREVIEW_CB get failed");
+ return false;
+ }
+
+ CAM_LOG_INFO("support media packet preview internal callback[%d]", supported);
+
+ return supported;
+}
+
+
bool legacy_camera_is_supported_extra_preview(camera_h camera)
{
int ret = MM_ERROR_NONE;
}
+int legacy_camera_set_preview_cb_flag(camera_h camera, bool enable, int flag)
+{
+ int ret = MM_ERROR_NONE;
+ camera_s *handle = (camera_s *)camera;
+
+ camera_return_val_if_fail(handle, CAMERA_ERROR_INVALID_PARAMETER);
+
+ CAM_LOG_INFO("enable[%d],flag[0x%x]", enable, flag);
+
+ ret = mm_camcorder_set_video_stream_callback_flag(handle->mm_handle, (gboolean)enable, flag);
+
+ return __convert_camera_error_code(__func__, ret);
+}
+
+
int legacy_camera_get_log_level(void)
{
return mm_camcorder_get_log_level();
MUSE_CAMERA_API_SUPPORT_EXTRA_PREVIEW,
MUSE_CAMERA_API_SET_EXTRA_PREVIEW_DEVICE,
MUSE_CAMERA_API_REQUEST_CODEC_CONFIG,
+ MUSE_CAMERA_API_SUPPORT_MEDIA_PACKET_PREVIEW_INTERNAL_CB,
+ MUSE_CAMERA_API_SET_MEDIA_PACKET_PREVIEW_INTERNAL_CB, /* 175 */
+ MUSE_CAMERA_API_UNSET_MEDIA_PACKET_PREVIEW_INTERNAL_CB,
MUSE_CAMERA_API_ATTR_SET_SATURATION,
- MUSE_CAMERA_API_ATTR_GET_SATURATION, /* 175 */
+ MUSE_CAMERA_API_ATTR_GET_SATURATION,
MUSE_CAMERA_API_ATTR_GET_SATURATION_RANGE,
- MUSE_CAMERA_API_ATTR_SET_SHARPNESS,
+ MUSE_CAMERA_API_ATTR_SET_SHARPNESS, /* 180 */
MUSE_CAMERA_API_ATTR_GET_SHARPNESS,
MUSE_CAMERA_API_ATTR_GET_SHARPNESS_RANGE,
- MUSE_CAMERA_API_ATTR_SET_GAIN, /* 180 */
+ MUSE_CAMERA_API_ATTR_SET_GAIN,
MUSE_CAMERA_API_ATTR_GET_GAIN,
- MUSE_CAMERA_API_ATTR_GET_GAIN_RANGE,
+ MUSE_CAMERA_API_ATTR_GET_GAIN_RANGE, /* 185 */
MUSE_CAMERA_API_ATTR_GET_GAIN_STEP,
MUSE_CAMERA_API_ATTR_SET_WHITEBALANCE_TEMPERATURE,
- MUSE_CAMERA_API_ATTR_GET_WHITEBALANCE_TEMPERATURE, /* 185 */
+ MUSE_CAMERA_API_ATTR_GET_WHITEBALANCE_TEMPERATURE,
MUSE_CAMERA_API_ATTR_GET_WHITEBALANCE_TEMPERATURE_RANGE,
- MUSE_CAMERA_API_ATTR_GET_WHITEBALANCE_TEMPERATURE_STEP,
+ MUSE_CAMERA_API_ATTR_GET_WHITEBALANCE_TEMPERATURE_STEP, /* 190 */
MUSE_CAMERA_API_FORCE_STOP, /* This is not used for client. */
MUSE_CAMERA_API_MAX
} muse_camera_api_e;
MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_PTZ_TYPE,
MUSE_CAMERA_EVENT_TYPE_INTERRUPT_STARTED,
MUSE_CAMERA_EVENT_TYPE_EXTRA_PREVIEW,
- MUSE_CAMERA_EVENT_TYPE_NUM /* 30 */
+ MUSE_CAMERA_EVENT_TYPE_MEDIA_PACKET_PREVIEW_INTERNAL, /* 30 */
+ MUSE_CAMERA_EVENT_TYPE_NUM
} muse_camera_event_e;
/**
case MUSE_CAMERA_API_UNSET_MEDIA_PACKET_PREVIEW_CB:
ret = __camera_dispatcher_unset_preview_cb_flag(muse_camera, PREVIEW_CB_TYPE_MEDIA_PACKET);
break;
+ case MUSE_CAMERA_API_SET_MEDIA_PACKET_PREVIEW_INTERNAL_CB:
+ ret = __camera_dispatcher_set_preview_cb_flag(muse_camera, PREVIEW_CB_TYPE_MEDIA_PACKET_INTERNAL);
+ break;
+ case MUSE_CAMERA_API_UNSET_MEDIA_PACKET_PREVIEW_INTERNAL_CB:
+ ret = __camera_dispatcher_unset_preview_cb_flag(muse_camera, PREVIEW_CB_TYPE_MEDIA_PACKET_INTERNAL);
+ break;
case MUSE_CAMERA_API_SET_MEDIA_BRIDGE:
ret = __camera_dispatcher_set_preview_cb_flag(muse_camera, PREVIEW_CB_TYPE_MEDIA_BRIDGE);
break;
}
if (ret == CAMERA_ERROR_NONE) {
- if (!CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_EXTRA) && flag == PREVIEW_CB_TYPE_EXTRA)
- legacy_camera_enable_extra_preview(muse_camera->camera_handle, true);
+ if (flag == PREVIEW_CB_TYPE_MEDIA_PACKET_INTERNAL) {
+ ret = legacy_camera_set_preview_cb_flag(muse_camera->camera_handle,
+ true, MM_CAMCORDER_VIDEO_STREAM_CALLBACK_FLAG_INTERNAL);
+ } else {
+ ret = legacy_camera_set_preview_cb_flag(muse_camera->camera_handle,
+ true, MM_CAMCORDER_VIDEO_STREAM_CALLBACK_FLAG_NORMAL);
- SET_PREVIEW_CB_TYPE(muse_camera, flag);
+ if (!CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_EXTRA) && flag == PREVIEW_CB_TYPE_EXTRA)
+ ret |= legacy_camera_enable_extra_preview(muse_camera->camera_handle, true);
+ }
+
+ if (ret == CAMERA_ERROR_NONE)
+ SET_PREVIEW_CB_TYPE(muse_camera, flag);
}
return ret;
if (muse_camera->preview_cb_flag == PREVIEW_CB_TYPE_NONE) {
CAM_LOG_INFO("nothing to do");
- return ret;
+ return CAMERA_ERROR_NONE;
}
- CAM_LOG_INFO("current flag[0x%x] - unset[0x%x]",
+ CAM_LOG_INFO("current flag[0x%08x] - unset[0x%08x]",
muse_camera->preview_cb_flag, flag);
/* backup current flag */
old_flag = muse_camera->preview_cb_flag;
- /* disable extra preview */
if (CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_EXTRA) && flag == PREVIEW_CB_TYPE_EXTRA) {
CAM_LOG_INFO("disable extra preview");
+ ret = legacy_camera_enable_extra_preview(muse_camera->camera_handle, false);
+ if (ret != CAMERA_ERROR_NONE) {
+ CAM_LOG_ERROR("disable extra preview failed[0x%x]", ret);
+ return ret;
+ }
- legacy_camera_enable_extra_preview(muse_camera->camera_handle, false);
is_extra_preview_disabled = TRUE;
}
UNSET_PREVIEW_CB_TYPE(muse_camera, flag);
- if (muse_camera->preview_cb_flag == PREVIEW_CB_TYPE_NONE) {
- CAM_LOG_INFO("unset preview cb");
+ if (flag == PREVIEW_CB_TYPE_MEDIA_PACKET_INTERNAL) {
+ ret = legacy_camera_set_preview_cb_flag(muse_camera->camera_handle,
+ false, MM_CAMCORDER_VIDEO_STREAM_CALLBACK_FLAG_INTERNAL);
+ if (ret != CAMERA_ERROR_NONE)
+ CAM_LOG_ERROR("remove INTERNAL flag failed");
+ } else if (!CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_NORMAL) &&
+ !CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_EVAS) &&
+ !CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_MEDIA_PACKET) &&
+ !CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_MEDIA_BRIDGE) &&
+ !CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_EXTRA)) {
+ ret = legacy_camera_set_preview_cb_flag(muse_camera->camera_handle,
+ false, MM_CAMCORDER_VIDEO_STREAM_CALLBACK_FLAG_NORMAL);
+ if (ret != CAMERA_ERROR_NONE)
+ CAM_LOG_ERROR("remove NORMAL flag failed");
+ }
+ if (muse_camera->preview_cb_flag == PREVIEW_CB_TYPE_NONE) {
ret = legacy_camera_unset_preview_cb(muse_camera->camera_handle);
if (ret != CAMERA_ERROR_NONE) {
CAM_LOG_ERROR("unset preview cb failed[0x%x]", ret);
return MUSE_CAMERA_ERROR_NONE;
}
+int camera_dispatcher_is_supported_media_packet_preview_internal_cb(muse_module_h module)
+{
+ bool supported = false;
+ muse_camera_handle_s *muse_camera = NULL;
+ muse_camera_api_e api = MUSE_CAMERA_API_SUPPORT_MEDIA_PACKET_PREVIEW_INTERNAL_CB;
+ muse_camera_api_class_e class = MUSE_CAMERA_API_CLASS_IMMEDIATE;
+
+ muse_camera = (muse_camera_handle_s *)muse_server_ipc_get_handle(module);
+
+ CAM_LOG_INFO("handle[%p]", muse_camera);
+
+ supported = legacy_camera_is_supported_media_packet_preview_internal_cb(muse_camera->camera_handle);
+
+ CAM_LOG_INFO("supported[%d]", supported);
+
+ muse_camera_msg_return(api, class, (int)supported, module);
+
+ return MUSE_CAMERA_ERROR_NONE;
+}
+
int camera_dispatcher_is_supported_extra_preview(muse_module_h module)
{
bool supported = false;
return MUSE_CAMERA_ERROR_NONE;
}
+int camera_dispatcher_set_media_packet_preview_internal_cb(muse_module_h module)
+{
+ muse_camera_handle_s *muse_camera = NULL;
+
+ muse_camera = (muse_camera_handle_s *)muse_server_ipc_get_handle(module);
+
+ CAM_LOG_INFO("handle[%p]", muse_camera);
+
+ _camera_task_add_job(muse_camera, MUSE_CAMERA_API_SET_MEDIA_PACKET_PREVIEW_INTERNAL_CB,
+ MUSE_CAMERA_API_CLASS_IMMEDIATE, 0);
+
+ return MUSE_CAMERA_ERROR_NONE;
+}
+
+int camera_dispatcher_unset_media_packet_preview_internal_cb(muse_module_h module)
+{
+ muse_camera_handle_s *muse_camera = NULL;
+
+ muse_camera = (muse_camera_handle_s *)muse_server_ipc_get_handle(module);
+
+ CAM_LOG_INFO("handle[%p]", muse_camera);
+
+ _camera_task_add_job(muse_camera, MUSE_CAMERA_API_UNSET_MEDIA_PACKET_PREVIEW_INTERNAL_CB,
+ MUSE_CAMERA_API_CLASS_IMMEDIATE, 0);
+
+ return MUSE_CAMERA_ERROR_NONE;
+}
+
int camera_dispatcher_set_state_changed_cb(muse_module_h module)
{
int ret = CAMERA_ERROR_NONE;
camera_dispatcher_is_supported_extra_preview, /* MUSE_CAMERA_API_SUPPORT_EXTRA_PREVIEW, */
camera_dispatcher_set_extra_preview_device, /* MUSE_CAMERA_API_SET_EXTRA_PREVIEW_DEVICE */
camera_dispatcher_request_codec_config, /* MUSE_CAMERA_API_REQUEST_CODEC_CONFIG */
+ camera_dispatcher_is_supported_media_packet_preview_internal_cb, /* MUSE_CAMERA_API_SUPPORT_MEDIA_PACKET_PREVIEW_INTERNAL_CB */
+ camera_dispatcher_set_media_packet_preview_internal_cb, /* MUSE_CAMERA_API_SET_MEDIA_PACKET_PREVIEW_CB */
+ camera_dispatcher_unset_media_packet_preview_internal_cb, /* MUSE_CAMERA_API_UNSET_MEDIA_PACKET_PREVIEW_CB */
camera_dispatcher_attr_set_saturation, /* MUSE_CAMERA_API_ATTR_SET_SATURATION */
camera_dispatcher_attr_get_saturation, /* MUSE_CAMERA_API_ATTR_GET_SATURATION */
camera_dispatcher_attr_get_saturation_range, /* MUSE_CAMERA_API_ATTR_GET_SATURATION_RANGE */