1. set "recording-hint" property to camerasrc element 81/42581/2 accepted/tizen/mobile/20150702.045103 accepted/tizen/tv/20150702.035941 accepted/tizen/wearable/20150702.040005 submit/tizen/20150701.131745
authorJeongmo Yang <jm80.yang@samsung.com>
Tue, 30 Jun 2015 09:08:11 +0000 (18:08 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Tue, 30 Jun 2015 09:11:34 +0000 (18:11 +0900)
2. add "AudioDevice" field for unsupported audio device

Change-Id: I872b06d956bbff2442621752881b72be5c17318b
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/libmm-camcorder.spec
src/include/mm_camcorder_platform.h
src/mm_camcorder_attribute.c
src/mm_camcorder_configure.c
src/mm_camcorder_internal.c
src/mm_camcorder_platform.c
src/mm_camcorder_videorec.c

index d1ec7d2..a0f9331 100644 (file)
@@ -2,7 +2,7 @@
 
 Name:       libmm-camcorder
 Summary:    Camera and recorder library
-Version:    0.10.2
+Version:    0.10.3
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index de2c8c1..c2196e6 100644 (file)
@@ -230,7 +230,7 @@ int _mmcamcorder_get_fps_array_by_resolution(MMHandleType handle, int width, int
 
 int _mmcamcorder_set_converted_value(MMHandleType handle, _MMCamcorderEnumConvert *convert);
 int _mmcamcorder_init_convert_table(MMHandleType handle);
-int _mmcamcorder_init_attr_from_configure(MMHandleType handle);
+int _mmcamcorder_init_attr_from_configure(MMHandleType handle, int type);
 
 int _mmcamcorder_convert_brightness(int mslVal);
 int _mmcamcorder_convert_whitebalance(int mslVal);
index 2b020c6..d0740e8 100644 (file)
@@ -153,9 +153,9 @@ _mmcamcorder_alloc_attribute( MMHandleType handle, MMCamPreset *info )
                        MMF_VALUE_TYPE_INT,
                        MM_ATTRS_FLAG_RW,
                        {(void*)MM_AUDIO_DEVICE_MIC},
-                       MM_ATTRS_VALID_TYPE_INT_RANGE,
-                       {.int_min = 0},
-                       {.int_max = (MM_AUDIO_DEVICE_NUM-1)},
+                       MM_ATTRS_VALID_TYPE_INT_ARRAY,
+                       {NULL},
+                       {0},
                        NULL,
                },
                {
index 04fa7cf..d8f31c4 100644 (file)
@@ -622,6 +622,7 @@ void _mmcamcorder_conf_init(MMHandleType handle, int type, camera_conf** configu
 
        /* [AudioInput] matching table */
        static conf_info_table conf_main_audio_input_table[] = {
+               { "AudioDevice",          CONFIGURE_VALUE_INT_ARRAY, {NULL} },
                { "AudiosrcElement",      CONFIGURE_VALUE_ELEMENT, {&_audiosrc_element_default} },
                { "AudiomodemsrcElement", CONFIGURE_VALUE_ELEMENT, {&_audiomodemsrc_element_default} },
        };
index efd0781..5407f37 100644 (file)
@@ -341,11 +341,15 @@ int _mmcamcorder_create(MMHandleType *handle, MMCamPreset *info)
                        ret = _mmcamcorder_init_convert_table((MMHandleType)hcamcorder);
                        if (ret != MM_ERROR_NONE) {
                                _mmcam_dbg_warn("converting table initialize error!!");
+                               ret = MM_ERROR_CAMCORDER_INTERNAL;
+                               goto _ERR_AFTER_ASM_REGISTER;
                        }
 
-                       ret = _mmcamcorder_init_attr_from_configure((MMHandleType)hcamcorder);
+                       ret = _mmcamcorder_init_attr_from_configure((MMHandleType)hcamcorder, info->videodev_type);
                        if (ret != MM_ERROR_NONE) {
                                _mmcam_dbg_warn("converting table initialize error!!");
+                               ret = MM_ERROR_CAMCORDER_INTERNAL;
+                               goto _ERR_AFTER_ASM_REGISTER;
                        }
 
                        /* Get device info, recommend preview fmt and display rotation from INI */
@@ -433,6 +437,8 @@ int _mmcamcorder_create(MMHandleType *handle, MMCamPreset *info)
                                _mmcam_dbg_err("Set %s FAILED.", err_attr_name);
                                free(err_attr_name);
                                err_attr_name = NULL;
+                               ret = MM_ERROR_CAMCORDER_INTERNAL;
+                               goto _ERR_AFTER_ASM_REGISTER;
                        }
 
                        /* Get default value of brightness */
@@ -443,6 +449,8 @@ int _mmcamcorder_create(MMHandleType *handle, MMCamPreset *info)
                                _mmcam_dbg_err("Get brightness FAILED.");
                                free(err_attr_name);
                                err_attr_name = NULL;
+                               ret = MM_ERROR_CAMCORDER_INTERNAL;
+                               goto _ERR_AFTER_ASM_REGISTER;
                        }
                        _mmcam_dbg_log("Default brightness : %d", hcamcorder->brightness_default);
                } else {
@@ -461,6 +469,15 @@ int _mmcamcorder_create(MMHandleType *handle, MMCamPreset *info)
                        _mmcam_dbg_err("Set %s FAILED.", err_attr_name);
                        free(err_attr_name);
                        err_attr_name = NULL;
+                       ret = MM_ERROR_CAMCORDER_INTERNAL;
+                       goto _ERR_AFTER_ASM_REGISTER;
+               }
+
+               ret = _mmcamcorder_init_attr_from_configure((MMHandleType)hcamcorder, info->videodev_type);
+               if (ret != MM_ERROR_NONE) {
+                       _mmcam_dbg_warn("init attribute from configure error : 0x%x", ret);
+                       ret = MM_ERROR_CAMCORDER_INTERNAL;
+                       goto _ERR_AFTER_ASM_REGISTER;
                }
        }
 
index fd27eed..23bbfe9 100644 (file)
@@ -221,6 +221,18 @@ _MMCamcorderEnumConvert _mmcamcorder_enum_conv_detect_mode =
  * For detail information, refer below documents.
  *
  */
+static _MMCamcorderInfoConverting      g_audio_info[] = {
+       {
+               CONFIGURE_TYPE_MAIN,
+               CONFIGURE_CATEGORY_MAIN_AUDIO_INPUT,
+               MM_CAM_AUDIO_DEVICE,
+               MM_CAMCORDER_ATTR_NONE,
+               "AudioDevice",
+               MM_CAMCONVERT_TYPE_INT_ARRAY,
+               NULL,
+       }
+};
+
 static _MMCamcorderInfoConverting      g_display_info[] = {
        {
                CONFIGURE_TYPE_MAIN,
@@ -826,7 +838,7 @@ __mmcamcorder_get_valid_array(int * original_array, int original_count, int ** v
 }
 
 
-int _mmcamcorder_init_attr_from_configure(MMHandleType handle)
+int _mmcamcorder_init_attr_from_configure(MMHandleType handle, int type)
 {
        mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
        _MMCamcorderInfoConverting *info = NULL;
@@ -836,28 +848,43 @@ int _mmcamcorder_init_attr_from_configure(MMHandleType handle)
 
        mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
 
-       _mmcam_dbg_log("");
+       _mmcam_dbg_log("type : %d", type);
 
-       /* Initialize attribute related to camera control */
-       info = hcamcorder->caminfo_convert;
-       table_size = sizeof(g_caminfo_convert) / sizeof(_MMCamcorderInfoConverting);
-       ret = __mmcamcorder_set_info_to_attr( handle, info, table_size );
-       if( ret != MM_ERROR_NONE )
-       {
-               _mmcam_dbg_err( "ret : %x", ret );
-               return ret;
+       if (type != MM_VIDEO_DEVICE_NONE) {
+               /* Initialize attribute related to camera control */
+               info = hcamcorder->caminfo_convert;
+               table_size = sizeof(g_caminfo_convert) / sizeof(_MMCamcorderInfoConverting);
+               ret = __mmcamcorder_set_info_to_attr(handle, info, table_size);
+               if (ret != MM_ERROR_NONE) {
+                       _mmcam_dbg_err("camera info set error : 0x%x", ret);
+                       return ret;
+               }
+
+               /* Initialize attribute related to display */
+               info = g_display_info;
+               table_size = sizeof(g_display_info) / sizeof(_MMCamcorderInfoConverting);
+               ret = __mmcamcorder_set_info_to_attr(handle, info, table_size);
+               if (ret != MM_ERROR_NONE) {
+                       _mmcam_dbg_err("display info set error : 0x%x", ret);
+                       return ret;
+               }
        }
 
-       /* Initialize attribute related to display */
-       info = g_display_info;
-       table_size = sizeof(g_display_info) / sizeof(_MMCamcorderInfoConverting);
-       ret = __mmcamcorder_set_info_to_attr( handle, info, table_size );
+       /* Initialize attribute related to audio */
+       info = g_audio_info;
+       table_size = sizeof(g_audio_info) / sizeof(_MMCamcorderInfoConverting);
+       ret = __mmcamcorder_set_info_to_attr(handle, info, table_size);
+       if (ret != MM_ERROR_NONE) {
+               _mmcam_dbg_err("audio info set error : 0x%x", ret);
+               return ret;
+       }
 
-       _mmcam_dbg_log( "result: %x", ret );
+       _mmcam_dbg_log("done");
 
        return ret;
 }
 
+
 static int
 __mmcamcorder_set_info_to_attr( MMHandleType handle, _MMCamcorderInfoConverting *info, int table_size )
 {
index de054ed..c20df6f 100644 (file)
@@ -634,6 +634,9 @@ int _mmcamcorder_video_command(MMHandleType handle, int command)
                                info->restart_preview = TRUE;
                        }
 
+                       /* set recording hint */
+                       MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "recording-hint", TRUE);
+
                        if (info->restart_preview) {
                                /* stop preview and set new size */
                                _mmcam_dbg_log("restart preview");
@@ -710,10 +713,10 @@ int _mmcamcorder_video_command(MMHandleType handle, int command)
                                CameraControl =  GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst);
                                if (CameraControl) {
                                        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", TRUE);
-#ifdef LATEST_CAMERA_CONTROL
+
                                        _mmcam_dbg_log("GST_CAMERA_CONTROL_RECORD_COMMAND_START");
                                        gst_camera_control_set_record_command(CameraControl, GST_CAMERA_CONTROL_RECORD_COMMAND_START);
-#endif /* LATEST_CAMERA_CONTROL */
+
                                        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", FALSE);
                                } else {
                                        _mmcam_dbg_err("could not get camera control");
@@ -761,10 +764,10 @@ int _mmcamcorder_video_command(MMHandleType handle, int command)
                                        CameraControl = GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst);
                                        if (CameraControl) {
                                                MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", TRUE);
-#ifdef LATEST_CAMERA_CONTROL
+
                                                _mmcam_dbg_log("GST_CAMERA_CONTROL_RECORD_COMMAND_STOP");
                                                gst_camera_control_set_record_command(CameraControl, GST_CAMERA_CONTROL_RECORD_COMMAND_STOP);
-#endif /* LATEST_CAMERA_CONTROL */
+
                                                MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", FALSE);
                                        } else {
                                                _mmcam_dbg_err("failed to get camera control");
@@ -893,15 +896,18 @@ int _mmcamcorder_video_command(MMHandleType handle, int command)
                        goto _ERR_CAMCORDER_VIDEO_COMMAND;
                }
 
+               /* set recording hint */
+               MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "recording-hint", FALSE);
+
                /* stop video stream */
                if (info->record_dual_stream) {
                        CameraControl = GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst);
                        if (CameraControl) {
                                MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", TRUE);
-#ifdef LATEST_CAMERA_CONTROL
+
                                _mmcam_dbg_log("GST_CAMERA_CONTROL_RECORD_COMMAND_STOP");
                                gst_camera_control_set_record_command(CameraControl, GST_CAMERA_CONTROL_RECORD_COMMAND_STOP);
-#endif /* LATEST_CAMERA_CONTROL */
+
                                MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", FALSE);
                        } else {
                                _mmcam_dbg_err("failed to get camera control");
@@ -1096,15 +1102,18 @@ int _mmcamcorder_video_handle_eos(MMHandleType handle)
                _mmcam_dbg_warn("_MMCamcorder_CMD_COMMIT:__mmcamcorder_remove_recorder_pipeline failed. error[%x]", ret);
        }
 
+       /* set recording hint */
+       MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "recording-hint", FALSE);
+
        /* stop video stream */
        if (info->record_dual_stream) {
                GstCameraControl *control = GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst);
                if (control) {
                        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", TRUE);
-#ifdef LATEST_CAMERA_CONTROL
+
                        _mmcam_dbg_log("GST_CAMERA_CONTROL_RECORD_COMMAND_STOP");
                        gst_camera_control_set_record_command(control, GST_CAMERA_CONTROL_RECORD_COMMAND_STOP);
-#endif /* LATEST_CAMERA_CONTROL */
+
                        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", FALSE);
                } else {
                        _mmcam_dbg_err("failed to get camera control");