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);
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;
}
+ MMCAM_LOG_INFO("connect extra preview stream signal and enable extra preview");
+
for (i = 0 ; i < MM_CAMCORDER_EXTRA_PREVIEW_STREAM_NUM ; i++) {
e_fmt = &hcamcorder->extra_preview.format[i];
}
}
+ 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;
}
}
+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:
}
+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;