bool _mmcamcorder_commit_target_filename(MMHandleType handle, int attr_idx, const mmf_value_t *value)
{
- int ret = MM_ERROR_NONE;
int size = 0;
const char *filename = NULL;
- _MMCamcorderSubContext *sc = NULL;
- GstElement *encode_link = NULL;
- GstElement *encode_sink = NULL;
- GstElement *encode_pipeline = NULL;
mmf_return_val_if_fail(handle && value, FALSE);
- sc = MMF_CAMCORDER_SUBCONTEXT(handle);
- if (!sc)
- return TRUE;
-
/* get string */
filename = mmf_value_get_string(value, &size);
if (filename == NULL) {
return FALSE;
}
- if (sc->info_video) {
- SAFE_G_FREE(sc->info_video->filename);
- sc->info_video->filename = g_strdup(filename);
- if (sc->info_video->filename == NULL) {
- _mmcam_dbg_err("failed to strdup filename [%s]", filename);
- return FALSE;
- }
- }
-
- if (sc->encode_element && sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst) {
- encode_sink = sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst;
- encode_pipeline = sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst;
-
- _mmcam_dbg_log("file location set.[%s], current encode sink [%s]",
- filename, GST_OBJECT_NAME(gst_element_get_factory(encode_sink)));
-
- /* check whether it's filesink or not */
- if (strncmp(GST_OBJECT_NAME(gst_element_get_factory(encode_sink)), "filesink", strlen("filesink"))) {
- _mmcam_dbg_log("remove current sink and create filesink");
-
- /* remove fakesink and create/add filesink to encode pipeline */
- /* set NULL state */
- ret = _mmcamcorder_gst_set_state(handle, encode_sink, GST_STATE_NULL);
- if (ret != MM_ERROR_NONE) {
- _mmcam_dbg_err("failed to set NULL encoder sink");
- return FALSE;
- }
-
- /* remove encode sink - pads will be unlinked automatically in remove function */
- if (!gst_bin_remove(GST_BIN(encode_pipeline), encode_sink)) {
- _mmcam_dbg_err("failed to remove encode sink from pipeline");
- return FALSE;
- }
-
- _mmcam_dbg_log("remove done");
-
- /* create filesink */
- encode_sink = gst_element_factory_make("filesink", NULL);
- if (!encode_sink) {
- _mmcam_dbg_err("filesink creation failed");
- return FALSE;
- }
-
- sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst = encode_sink;
-
- /* set release notification callback */
- g_object_weak_ref(G_OBJECT(encode_sink), (GWeakNotify)_mmcamcorder_element_release_noti, sc);
-
- /* add to pipeline */
- if (!gst_bin_add(GST_BIN(encode_pipeline), encode_sink)) {
- _mmcam_dbg_err("failed to add filesink to encode pipeline");
- gst_object_unref(encode_sink);
- return FALSE;
- }
-
- /* link filesink */
- if (sc->encode_element[_MMCAMCORDER_ENCSINK_MUX].gst) {
- /* mux element is used */
- _mmcam_dbg_log("Link mux to encode_sink");
- encode_link = sc->encode_element[_MMCAMCORDER_ENCSINK_MUX].gst;
- } else {
- /* no mux element */
- _mmcam_dbg_log("Link audio encoder to encode_sink");
- encode_link = sc->encode_element[_MMCAMCORDER_ENCSINK_AENC].gst;
- }
-
- if (!_MM_GST_ELEMENT_LINK(encode_link, encode_sink)) {
- _mmcam_dbg_err("Link FAILED");
- return FALSE;
- }
-
- _mmcam_dbg_log("Link OK");
- }
-
- MMCAMCORDER_G_OBJECT_SET_POINTER(encode_sink, "location", filename);
- } else {
- _mmcam_dbg_log("element is not created yet. [%s] will be set later...", filename);
- }
+ _mmcam_dbg_log("set filename [%s]", filename);
return TRUE;
}
NULL);
}
}
-
- return TRUE;
} else {
- _mmcam_dbg_warn("videosink[%s] does not support display rect.", videosink_name);
- return FALSE;
+ _mmcam_dbg_warn("[%s] does not support display rect, but no error", videosink_name);
}
+
+ return TRUE;
}
new_pid = value->value.i_val;
- _mmcam_dbg_log("Commit : pid %d, current focus id %d, subscribe id %u",
+ _mmcam_dbg_warn("Commit : pid %d, current focus id %d, subscribe id %u",
new_pid, hcamcorder->sound_focus_id, hcamcorder->sound_focus_subscribe_id);
/* unregister sound focus and unsubscribe sound signal before set new one */
return FALSE;
}
- sc = MMF_CAMCORDER_SUBCONTEXT(handle);
- if (!sc || !sc->encode_element ||
- !sc->encode_element[_MMCAMCORDER_AUDIOSRC_SRC].gst) {
- _mmcam_dbg_log("audiosrc element is not initialized, it will be set later");
- return TRUE;
- }
-
mm_camcorder_get_attributes(handle, NULL,
MMCAM_SOUND_STREAM_INDEX, &stream_index,
NULL);
return FALSE;
}
- _mmcam_dbg_log("Commit : sound stream info - type %s, index %d", stream_type, stream_index);
+ /* unset watch callback if existed */
+ _mmcamcorder_sound_signal_callback(MM_SOUND_SIGNAL_RELEASE_INTERNAL_FOCUS, 1, (void *)handle);
+
+ sc = MMF_CAMCORDER_SUBCONTEXT(handle);
+ if (!sc || !sc->encode_element ||
+ !sc->encode_element[_MMCAMCORDER_AUDIOSRC_SRC].gst) {
+ _mmcam_dbg_warn("audiosrc element is not initialized, it will be set later");
+ return TRUE;
+ }
+
+ _mmcam_dbg_warn("Commit : sound stream info - type %s, index %d", stream_type, stream_index);
return _mmcamcorder_set_sound_stream_info(sc->encode_element[_MMCAMCORDER_AUDIOSRC_SRC].gst, stream_type, stream_index);
}
MM_CAM_CAMERA_WDR,
MM_CAM_FILTER_CONTRAST,
MM_CAM_FILTER_HUE,
- MM_CAM_STROBE_MODE,
MM_CAM_DETECT_MODE
};
mmf_return_val_if_fail(hcamcorder, FALSE);
- _mmcam_dbg_log("Set all attribute again.");
+ _mmcam_dbg_log("commit some attributes again");
attr = (mmf_attrs_t *)MMF_CAMCORDER_ATTRS(handle);
if (attr == NULL) {
}
+bool _mmcamcorder_set_attribute_to_camsensor2(MMHandleType handle)
+{
+ mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
+ mmf_attrs_t *attr = NULL;
+
+ unsigned int i = 0;
+ int ret = TRUE;
+ int attr_idxs[] = {
+ MM_CAM_STROBE_MODE
+ };
+
+ mmf_return_val_if_fail(hcamcorder, FALSE);
+
+ _mmcam_dbg_log("commit some attribute again[2]");
+
+ attr = (mmf_attrs_t *)MMF_CAMCORDER_ATTRS(handle);
+ if (attr == NULL) {
+ _mmcam_dbg_err("Get attribute handle failed.");
+ return FALSE;
+ } else {
+ _mmcam_dbg_log("attribute count(%d)", attr->count);
+
+ for (i = 0 ; i < ARRAY_SIZE(attr_idxs) ; i++) {
+ if (__mmcamcorder_attrs_is_supported((MMHandleType)attr, attr_idxs[i]))
+ mmf_attribute_set_modified(&(attr->items[attr_idxs[i]]));
+ }
+
+ if (mmf_attrs_commit((MMHandleType)attr) == -1)
+ ret = FALSE;
+ else
+ ret = TRUE;
+ }
+
+ _mmcam_dbg_log("Done.");
+
+ return ret;
+}
+
+
int _mmcamcorder_lock_readonly_attributes(MMHandleType handle)
{
mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);