Fix Svace issue
[platform/core/multimedia/libmm-camcorder.git] / src / mm_camcorder_stillshot.c
index 85a5202..a9b41ea 100644 (file)
 #include <libexif/exif-utils.h>
 #include <libexif/exif-data.h>
 
+#ifdef _MMCAMCORDER_CAMERA_BOOST_SUPPORT
+#include "mm_camcorder_boost.h"
+#endif /* _MMCAMCORDER_CAMERA_BOOST_SUPPORT */
+
+
 /*---------------------------------------------------------------------------------------
 |    GLOBAL VARIABLE DEFINITIONS for internal                                          |
 ---------------------------------------------------------------------------------------*/
@@ -69,7 +74,9 @@ static int __mmcamcorder_capture_mode_init_image_pad(MMHandleType handle);
 static int __mmcamcorder_capture_mode_deinit_encodebin(MMHandleType handle);
 
 static int __mmcamcorder_extra_preview_mode_init_camera_control(mmf_camcorder_t *hcamcorder);
+static int __mmcamcorder_extra_preview_mode_deinit_camera_control(mmf_camcorder_t *hcamcorder);
 static int __mmcamcorder_extra_preview_mode_init_pipeline(MMHandleType handle, MMCamcorderExtraPreviewMode mode);
+static int __mmcamcorder_extra_preview_mode_deinit_pipeline(MMHandleType handle, MMCamcorderExtraPreviewMode mode);
 
 static int __mmcamcorder_set_exif_basic_info(MMHandleType handle, int image_width, int image_height);
 static int __mmcamcorder_update_exif_info(MMHandleType handle, void *imagedata, int imgln);
@@ -124,16 +131,16 @@ static int __mmcamcorder_capture_mode_init_encodebin(MMHandleType handle)
        /* add element and encodesink bin to encode main pipeline */
        gst_bin_add_many(GST_BIN(sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst),
                sc->encode_element[_MMCAMCORDER_ENCSINK_SRC].gst,
-               sc->encode_element[_MMCAMCORDER_ENCSINK_FILT].gst,
+               sc->encode_element[_MMCAMCORDER_ENCSINK_CAPS].gst,
                sc->encode_element[_MMCAMCORDER_ENCSINK_BIN].gst,
                NULL);
 
        /* Link each element : appsrc - capsfilter - encodesink bin */
        srcpad = gst_element_get_static_pad(sc->encode_element[_MMCAMCORDER_ENCSINK_SRC].gst, "src");
-       sinkpad = gst_element_get_static_pad(sc->encode_element[_MMCAMCORDER_ENCSINK_FILT].gst, "sink");
+       sinkpad = gst_element_get_static_pad(sc->encode_element[_MMCAMCORDER_ENCSINK_CAPS].gst, "sink");
        _MM_GST_PAD_LINK_UNREF(srcpad, sinkpad, err, pipeline_creation_error);
 
-       srcpad = gst_element_get_static_pad(sc->encode_element[_MMCAMCORDER_ENCSINK_FILT].gst, "src");
+       srcpad = gst_element_get_static_pad(sc->encode_element[_MMCAMCORDER_ENCSINK_CAPS].gst, "src");
        sinkpad = gst_element_get_static_pad(sc->encode_element[_MMCAMCORDER_ENCSINK_BIN].gst, "image_sink0");
        _MM_GST_PAD_LINK_UNREF(srcpad, sinkpad, err, pipeline_creation_error);
 
@@ -205,8 +212,8 @@ static int __mmcamcorder_capture_mode_init_image_pad(MMHandleType handle)
                return err;
        }
 
-       _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSRC_CAP_FILT, "capsfilter", "videosrc_cap_filt", element_list, err);
-       _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSRC_CAP_SINK, "fakesink", "videosrc_cap_sink", element_list, err);
+       _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSRC_CAP_CAPS, "capsfilter", "vsrc_c_c", element_list, err);
+       _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSRC_CAP_SINK, "fakesink", "vsrc_c_s", element_list, err);
 
        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_CAP_SINK].gst, "sync", TRUE);
        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_CAP_SINK].gst, "async", FALSE);
@@ -230,7 +237,7 @@ static int __mmcamcorder_capture_mode_init_image_pad(MMHandleType handle)
                caps_string = NULL;
        }
 
-       MMCAMCORDER_G_OBJECT_SET_POINTER(sc->element[_MMCAMCORDER_VIDEOSRC_CAP_FILT].gst, "caps", caps);
+       MMCAMCORDER_G_OBJECT_SET_POINTER(sc->element[_MMCAMCORDER_VIDEOSRC_CAP_CAPS].gst, "caps", caps);
        gst_caps_unref(caps);
 
        /* add elements to main pipeline */
@@ -242,7 +249,7 @@ static int __mmcamcorder_capture_mode_init_image_pad(MMHandleType handle)
 
        /* link elements */
        if (!gst_element_link_pads(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "image_%u",
-               sc->element[_MMCAMCORDER_VIDEOSRC_CAP_FILT].gst, "sink")) {
+               sc->element[_MMCAMCORDER_VIDEOSRC_CAP_CAPS].gst, "sink")) {
                MMCAM_LOG_ERROR("capture pad link failed");
                err = MM_ERROR_CAMCORDER_GST_LINK;
                goto pipeline_creation_error;
@@ -265,7 +272,7 @@ static int __mmcamcorder_capture_mode_init_image_pad(MMHandleType handle)
        return MM_ERROR_NONE;
 
 pipeline_creation_error:
-       _MMCAMCORDER_ELEMENT_REMOVE(sc->element, _MMCAMCORDER_VIDEOSRC_CAP_FILT);
+       _MMCAMCORDER_ELEMENT_REMOVE(sc->element, _MMCAMCORDER_VIDEOSRC_CAP_CAPS);
        _MMCAMCORDER_ELEMENT_REMOVE(sc->element, _MMCAMCORDER_VIDEOSRC_CAP_SINK);
 
        if (element_list) {
@@ -306,20 +313,15 @@ static int __mmcamcorder_extra_preview_mode_init_camera_control(mmf_camcorder_t
 
        mmf_return_val_if_fail(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
 
-       MMCAM_LOG_INFO("connect extra preview stream signal to _MMCAMCORDER_VIDEOSRC_SRC");
-
-       MMCAMCORDER_SIGNAL_CONNECT(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst,
-               _MMCAMCORDER_HANDLER_EXTRA_PREVIEW, "extra-preview-stream-cb",
-               G_CALLBACK(__mmcamcorder_extra_preview_stream_cb),
-               hcamcorder);
-
        control = GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst);
        if (!control) {
                MMCAM_LOG_ERROR("no camera control");
                return MM_ERROR_CAMCORDER_NOT_SUPPORTED;
        }
 
-       for (i = 0 ; i < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_NUM ; i++) {
+       MMCAM_LOG_INFO("connect extra preview stream signal and enable extra preview");
+
+       for (i = 0 ; i < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_MAX ; i++) {
                e_fmt = &hcamcorder->extra_preview.format[i];
 
                if (e_fmt->need_to_set_format) {
@@ -347,6 +349,45 @@ static int __mmcamcorder_extra_preview_mode_init_camera_control(mmf_camcorder_t
                }
        }
 
+       MMCAMCORDER_SIGNAL_CONNECT(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst,
+               _MMCAMCORDER_HANDLER_EXTRA_PREVIEW, "extra-preview-stream-cb",
+               G_CALLBACK(__mmcamcorder_extra_preview_stream_cb),
+               hcamcorder);
+
+       MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "extra-preview", TRUE);
+
+       MMCAM_LOG_INFO("done");
+
+       return MM_ERROR_NONE;
+}
+
+
+static int __mmcamcorder_extra_preview_mode_deinit_camera_control(mmf_camcorder_t *hcamcorder)
+{
+       _MMCamcorderSubContext *sc = NULL;
+       GstCameraControl *control = NULL;
+
+       mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
+
+       sc = MMF_CAMCORDER_SUBCONTEXT(hcamcorder);
+       mmf_return_val_if_fail(sc && sc->element, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
+
+       mmf_return_val_if_fail(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
+
+       control = GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst);
+       if (!control) {
+               MMCAM_LOG_ERROR("no camera control");
+               return MM_ERROR_CAMCORDER_NOT_SUPPORTED;
+       }
+
+       MMCAM_LOG_INFO("disable extra preview and disconnect extra preview stream signal");
+
+       MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "extra-preview", FALSE);
+
+       _mmcamcorder_disconnect_signal((MMHandleType)hcamcorder, _MMCAMCORDER_HANDLER_EXTRA_PREVIEW);
+
+       MMCAM_LOG_INFO("done");
+
        return MM_ERROR_NONE;
 }
 
@@ -387,18 +428,19 @@ static int __mmcamcorder_extra_preview_mode_init_pipeline(MMHandleType handle, M
 
        if (mode == MM_CAMCORDER_EXTRA_PREVIEW_MODE_PIPELINE_ELEMENT) {
                _mmcamcorder_conf_get_element_and_name(handle,
-                       CONFIGURE_CATEGORY_MAIN_VIDEO_INPUT, "VideosrcElement",
+                       hcamcorder->conf_main, CONFIGURE_CATEGORY_MAIN_VIDEO_INPUT, "VideosrcElement",
                        &videosrc_element, &videosrc_name);
 
-               _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSRC_EXT_SRC, videosrc_name, "videosrc_ext_src", element_list, err);
+               _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSRC_EXT_SRC, videosrc_name, "vsrc_e_src", element_list, err);
 
+               MMCAMCORDER_G_OBJECT_SET_POINTER(sc->element[_MMCAMCORDER_VIDEOSRC_EXT_SRC].gst, "hal-name", NULL);
                MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_EXT_SRC].gst, "camera-id", hcamcorder->extra_preview.camera_id[0]);
 
                _mmcamcorder_conf_set_value_element_property(sc->element[_MMCAMCORDER_VIDEOSRC_EXT_SRC].gst, videosrc_element);
        }
 
-       _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSRC_EXT_FILT, "capsfilter", "videosrc_ext_filt", element_list, err);
-       _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSRC_EXT_SINK, "fakesink", "videosrc_ext_sink", element_list, err);
+       _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSRC_EXT_CAPS, "capsfilter", "vsrc_e_c", element_list, err);
+       _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSRC_EXT_SINK, "fakesink", "vsrc_e_sink", element_list, err);
 
        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_EXT_SINK].gst, "sync", TRUE);
        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_EXT_SINK].gst, "async", FALSE);
@@ -414,7 +456,7 @@ static int __mmcamcorder_extra_preview_mode_init_pipeline(MMHandleType handle, M
                goto pipeline_creation_error;
        }
 
-       MMCAMCORDER_G_OBJECT_SET_POINTER(sc->element[_MMCAMCORDER_VIDEOSRC_EXT_FILT].gst, "caps", caps);
+       MMCAMCORDER_G_OBJECT_SET_POINTER(sc->element[_MMCAMCORDER_VIDEOSRC_EXT_CAPS].gst, "caps", caps);
        gst_caps_unref(caps);
 
        /* add elements to main pipeline */
@@ -427,7 +469,7 @@ static int __mmcamcorder_extra_preview_mode_init_pipeline(MMHandleType handle, M
        /* link elements */
        if (mode == MM_CAMCORDER_EXTRA_PREVIEW_MODE_PIPELINE_SRCPAD) {
                if (!gst_element_link_pads(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "video_%u",
-                       sc->element[_MMCAMCORDER_VIDEOSRC_EXT_FILT].gst, "sink")) {
+                       sc->element[_MMCAMCORDER_VIDEOSRC_EXT_CAPS].gst, "sink")) {
                        MMCAM_LOG_ERROR("pad for extra preview link failed");
                        err = MM_ERROR_CAMCORDER_GST_LINK;
                        goto pipeline_creation_error;
@@ -451,7 +493,7 @@ static int __mmcamcorder_extra_preview_mode_init_pipeline(MMHandleType handle, M
        return MM_ERROR_NONE;
 
 pipeline_creation_error:
-       _MMCAMCORDER_ELEMENT_REMOVE(sc->element, _MMCAMCORDER_VIDEOSRC_EXT_FILT);
+       _MMCAMCORDER_ELEMENT_REMOVE(sc->element, _MMCAMCORDER_VIDEOSRC_EXT_CAPS);
        _MMCAMCORDER_ELEMENT_REMOVE(sc->element, _MMCAMCORDER_VIDEOSRC_EXT_SINK);
 
        if (element_list) {
@@ -463,13 +505,19 @@ pipeline_creation_error:
 }
 
 
+static int __mmcamcorder_extra_preview_mode_deinit_pipeline(MMHandleType handle, MMCamcorderExtraPreviewMode mode)
+{
+       /* TODO */
+       return MM_ERROR_NONE;
+}
+
+
 int _mmcamcorder_initialize_extra_preview_mode(MMHandleType handle)
 {
        mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
 
        mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
-       mmf_return_val_if_fail(hcamcorder->extra_preview.is_supported, MM_ERROR_NONE);
-       mmf_return_val_if_fail(hcamcorder->extra_preview.is_enabled, MM_ERROR_NONE);
+       mmf_return_val_if_fail(hcamcorder->extra_preview.is_supported, MM_ERROR_CAMCORDER_NOT_SUPPORTED);
 
        switch (hcamcorder->extra_preview.mode) {
        case MM_CAMCORDER_EXTRA_PREVIEW_MODE_CAMERA_CONTROL:
@@ -484,6 +532,26 @@ int _mmcamcorder_initialize_extra_preview_mode(MMHandleType handle)
 }
 
 
+int _mmcamcorder_deinitialize_extra_preview_mode(MMHandleType handle)
+{
+       mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
+
+       mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
+       mmf_return_val_if_fail(hcamcorder->extra_preview.is_supported, MM_ERROR_CAMCORDER_NOT_SUPPORTED);
+
+       switch (hcamcorder->extra_preview.mode) {
+       case MM_CAMCORDER_EXTRA_PREVIEW_MODE_CAMERA_CONTROL:
+               return __mmcamcorder_extra_preview_mode_deinit_camera_control(handle);
+       case MM_CAMCORDER_EXTRA_PREVIEW_MODE_PIPELINE_SRCPAD:
+       case MM_CAMCORDER_EXTRA_PREVIEW_MODE_PIPELINE_ELEMENT:
+               return __mmcamcorder_extra_preview_mode_deinit_pipeline(handle, hcamcorder->extra_preview.mode);
+       default:
+               MMCAM_LOG_ERROR("unknown extra preview mode[%d]", hcamcorder->extra_preview.mode);
+               return MM_ERROR_CAMCORDER_INTERNAL;
+       }
+}
+
+
 static int __mmcamcorder_capture_mode_deinit_encodebin(MMHandleType handle)
 {
        int ret = MM_ERROR_NONE;
@@ -1141,6 +1209,10 @@ static int __mmcamcorder_image_cmd_preview_start(MMHandleType handle)
 
                        MMCAM_LOG_INFO("sound status %d", info->sound_status);
                }
+
+#ifdef _MMCAMCORDER_CAMERA_BOOST_SUPPORT
+               _mmcamcorder_start_boosting();
+#endif /* _MMCAMCORDER_CAMERA_BOOST_SUPPORT */
        }
 
 cmd_error:
@@ -1261,6 +1333,11 @@ int _mmcamcorder_video_capture_command(MMHandleType handle, int command)
                break;
        case _MMCamcorder_CMD_PREVIEW_STOP:
                ret = __mmcamcorder_image_cmd_preview_stop(handle);
+
+#ifdef _MMCAMCORDER_CAMERA_BOOST_SUPPORT
+               _mmcamcorder_stop_boosting();
+#endif /*_MMCAMCORDER_CAMERA_BOOST_SUPPORT */
+
                break;
        case _MMCamcorder_CMD_RECORD:
        case _MMCamcorder_CMD_PAUSE:
@@ -1392,7 +1469,11 @@ static void __mmcamcorder_get_capture_data_from_buffer(MMCamcorderCaptureDataTyp
 
        memset(&mapinfo, 0x0, sizeof(GstMapInfo));
 
-       gst_buffer_map(gst_sample_get_buffer(sample), &mapinfo, GST_MAP_READ);
+       if (!gst_buffer_map(gst_sample_get_buffer(sample), &mapinfo, GST_MAP_READ)) {
+               MMCAM_LOG_ERROR("map failed : buffer[%p]", gst_sample_get_buffer(sample));
+               goto GET_FAILED;
+       }
+
        capture_data->data = mapinfo.data;
        capture_data->format = pixtype;
        gst_structure_get(structure,
@@ -1845,10 +1926,8 @@ static void __mmcamcorder_image_capture_cb(GstElement *element, GstSample *sampl
                        ret = __mmcamcorder_update_exif_info((MMHandleType)hcamcorder, dest.data, dest.length);
                }
 
-               if (ret != MM_ERROR_NONE) {
+               if (ret != MM_ERROR_NONE)
                        MMCAM_LOG_WARNING("Failed set_exif_basic_info [%x], but keep going...", ret);
-                       ret = MM_ERROR_NONE;
-               }
        }
 
        /* get attribute item for EXIF data */
@@ -1923,6 +2002,7 @@ _CAPTURE_CB_EXIF_DONE:
 
        /* Set capture count */
        count = ++(info->capture_send_count);
+       info->next_shot_time = GST_BUFFER_PTS(gst_sample_get_buffer(sample1)) + (GST_MSECOND * info->interval);
        send_captured_message = TRUE;
 
 err_release_exif:
@@ -2080,18 +2160,29 @@ static gboolean __mmcamcorder_handoff_callback_capture(GstElement *fakesink, Gst
 {
        mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(u_data);
        _MMCamcorderSubContext *sc = NULL;
+       _MMCamcorderImageInfo *info = NULL;
 
        mmf_return_val_if_fail(hcamcorder, FALSE);
+       mmf_return_val_if_fail(buffer, FALSE);
 
        sc = MMF_CAMCORDER_SUBCONTEXT(hcamcorder);
        mmf_return_val_if_fail(sc && sc->element, FALSE);
 
        MMCAM_LOG_INFO("");
 
+       info = sc->info_image;
+
+       if (info->capture_send_count > 0 && info->next_shot_time > GST_BUFFER_PTS(buffer)) {
+               MMCAM_LOG_INFO("next capture time[%"GST_TIME_FORMAT"], but buffer[%"GST_TIME_FORMAT"]",
+                       GST_TIME_ARGS(info->next_shot_time), GST_TIME_ARGS(GST_BUFFER_PTS(buffer)));
+               return TRUE;
+       }
+
        /* FIXME. How could you get a thumbnail? */
        __mmcamcorder_image_capture_cb(fakesink, gst_sample_new(buffer, gst_pad_get_current_caps(pad), NULL, NULL), NULL, NULL, u_data);
 
-       if (sc->encode_element[_MMCAMCORDER_ENCSINK_ENCBIN].gst) {
+       if ((info->capture_send_count == info->count || info->capturing == FALSE) &&
+               sc->encode_element[_MMCAMCORDER_ENCSINK_ENCBIN].gst) {
                MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst, "signal-handoffs", FALSE);
                MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_ENCBIN].gst, "block", TRUE);
                sc->info_video->push_encoding_buffer = PUSH_ENCODING_BUFFER_STOP;
@@ -3232,7 +3323,7 @@ int _mmcamcorder_set_extra_preview_device_type(MMHandleType handle, int stream_i
        mmf_return_val_if_fail(hcamcorder->extra_preview.is_supported, MM_ERROR_CAMCORDER_NOT_SUPPORTED);
        mmf_return_val_if_fail(hcamcorder->extra_preview.mode == MM_CAMCORDER_EXTRA_PREVIEW_MODE_PIPELINE_ELEMENT,
                MM_ERROR_CAMCORDER_NOT_SUPPORTED);
-       mmf_return_val_if_fail(stream_id >= 0 && stream_id < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_NUM,
+       mmf_return_val_if_fail(stream_id >= 0 && stream_id < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_MAX,
                MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
        mmf_return_val_if_fail(device_type > MM_VIDEO_DEVICE_NONE && device_type < MM_VIDEO_DEVICE_NUM
                , MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
@@ -3265,7 +3356,7 @@ int _mmcamcorder_set_extra_preview_stream_format(MMHandleType handle, int stream
 
        mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
        mmf_return_val_if_fail(hcamcorder->extra_preview.is_supported, MM_ERROR_CAMCORDER_NOT_SUPPORTED);
-       mmf_return_val_if_fail(stream_id >= 0 && stream_id < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_NUM,
+       mmf_return_val_if_fail(stream_id >= 0 && stream_id < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_MAX,
                MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
        mmf_return_val_if_fail(pixel_format > MM_PIXEL_FORMAT_INVALID && pixel_format < MM_PIXEL_FORMAT_NUM,
                MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
@@ -3355,7 +3446,7 @@ int _mmcamcorder_set_extra_preview_bitrate(MMHandleType handle, int stream_id, i
 
        mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
        mmf_return_val_if_fail(hcamcorder->extra_preview.is_supported, MM_ERROR_CAMCORDER_NOT_SUPPORTED);
-       mmf_return_val_if_fail(stream_id >= 0 && stream_id < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_NUM,
+       mmf_return_val_if_fail(stream_id >= 0 && stream_id < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_MAX,
                MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
        mmf_return_val_if_fail(bitrate > 0, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
 
@@ -3393,7 +3484,7 @@ int _mmcamcorder_get_extra_preview_bitrate(MMHandleType handle, int stream_id, i
 
        mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
        mmf_return_val_if_fail(hcamcorder->extra_preview.is_supported, MM_ERROR_CAMCORDER_NOT_SUPPORTED);
-       mmf_return_val_if_fail(stream_id >= 0 && stream_id < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_NUM,
+       mmf_return_val_if_fail(stream_id >= 0 && stream_id < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_MAX,
                MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
        mmf_return_val_if_fail(bitrate, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
 
@@ -3430,7 +3521,7 @@ int _mmcamcorder_set_extra_preview_gop_interval(MMHandleType handle, int stream_
 
        mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
        mmf_return_val_if_fail(hcamcorder->extra_preview.is_supported, MM_ERROR_CAMCORDER_NOT_SUPPORTED);
-       mmf_return_val_if_fail(stream_id >= 0 && stream_id < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_NUM,
+       mmf_return_val_if_fail(stream_id >= 0 && stream_id < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_MAX,
                MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
 
        mm_camcorder_get_state(handle, &current_state);
@@ -3467,7 +3558,7 @@ int _mmcamcorder_get_extra_preview_gop_interval(MMHandleType handle, int stream_
 
        mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
        mmf_return_val_if_fail(hcamcorder->extra_preview.is_supported, MM_ERROR_CAMCORDER_NOT_SUPPORTED);
-       mmf_return_val_if_fail(stream_id >= 0 && stream_id < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_NUM,
+       mmf_return_val_if_fail(stream_id >= 0 && stream_id < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_MAX,
                MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
        mmf_return_val_if_fail(interval, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);