-void _mmcamcorder_sound_focus_cb(int id, mm_sound_focus_type_e focus_type,
- mm_sound_focus_state_e focus_state, const char *reason_for_change,
- int option, const char *additional_info, void *user_data)
-{
- mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(user_data);
- int current_state = MM_CAMCORDER_STATE_NONE;
-
- mmf_return_if_fail((MMHandleType)hcamcorder);
-
- current_state = _mmcamcorder_get_state((MMHandleType)hcamcorder);
- if (current_state <= MM_CAMCORDER_STATE_NONE || current_state >= MM_CAMCORDER_STATE_NUM) {
- _mmcam_dbg_err("Abnormal state. Or null handle. (%p, %d)", hcamcorder, current_state);
- return;
- }
-
- _mmcam_dbg_warn("sound focus callback : focus state %d, reason %s",
- focus_state, reason_for_change ? reason_for_change : "N/A");
-
- if (hcamcorder->session_flags & MM_SESSION_OPTION_UNINTERRUPTIBLE) {
- _mmcam_dbg_warn("session flag is UNINTERRUPTIBLE. do nothing.");
- return;
- }
-
- _MMCAMCORDER_LOCK_ASM(hcamcorder);
-
- /* check the reason */
- if (!strncmp(reason_for_change, "ringtone-voip", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN) ||
- !strncmp(reason_for_change, "ringtone-call", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN) ||
- !strncmp(reason_for_change, "voip", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN) ||
- !strncmp(reason_for_change, "call-voice", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN)) {
- hcamcorder->interrupt_code = MM_MSG_CODE_INTERRUPTED_BY_CALL_START;
- } else if (!strncmp(reason_for_change, "alarm", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN)) {
- hcamcorder->interrupt_code = MM_MSG_CODE_INTERRUPTED_BY_ALARM_START;
- } else {
- hcamcorder->interrupt_code = MM_MSG_CODE_INTERRUPTED_BY_MEDIA;
- }
-
- if (focus_state == FOCUS_IS_RELEASED) {
- hcamcorder->acquired_focus &= ~focus_type;
-
- _mmcam_dbg_warn("FOCUS is released [type %d, remained focus %d] : Stop pipeline[state:%d]",
- focus_type, hcamcorder->acquired_focus, current_state);
-
- __mmcamcorder_force_stop(hcamcorder, _MMCAMCORDER_STATE_CHANGE_BY_FOCUS);
-
- _mmcam_dbg_warn("Finish opeartion. Pipeline is released");
- } else if (focus_state == FOCUS_IS_ACQUIRED) {
- _MMCamcorderMsgItem msg;
-
- hcamcorder->acquired_focus |= focus_type;
-
- _mmcam_dbg_warn("FOCUS is acquired [type %d, new focus %d]",
- focus_type, hcamcorder->acquired_focus);
-
- msg.id = MM_MESSAGE_READY_TO_RESUME;
- _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg);
-
- _mmcam_dbg_warn("Finish opeartion");
- } else {
- _mmcam_dbg_warn("unknown focus state %d", focus_state);
- }
-
- _MMCAMCORDER_UNLOCK_ASM(hcamcorder);
-
- _mmcam_dbg_warn("done");
-
- return;
-}
-
-
-void _mmcamcorder_sound_signal_callback(mm_sound_signal_name_t signal, int value, void *user_data)
-{
- mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(user_data);
-
- mmf_return_if_fail(hcamcorder);
-
- _mmcam_dbg_warn("sound signal %d - value %d", signal, value);
-
- _MMCAMCORDER_LOCK_ASM(hcamcorder);
-
- if (signal == MM_SOUND_SIGNAL_RELEASE_INTERNAL_FOCUS && value == 1) {
- _mmcam_dbg_warn("focus id %d, focus watch id %d",
- hcamcorder->sound_focus_id, hcamcorder->sound_focus_watch_id);
-
- /* unregister focus related callback */
- if (hcamcorder->sound_focus_id > 0) {
- if (hcamcorder->acquired_focus > 0) {
- mm_sound_release_focus(hcamcorder->sound_focus_id, hcamcorder->acquired_focus, NULL);
- _mmcam_dbg_warn("release acquired focus [focus %d] done", hcamcorder->acquired_focus);
- hcamcorder->acquired_focus = 0;
- }
-
- mm_sound_unregister_focus(hcamcorder->sound_focus_id);
- _mmcam_dbg_warn("unregister sound focus done");
- hcamcorder->sound_focus_id = 0;
- }
-
- if (hcamcorder->sound_focus_watch_id > 0) {
- mm_sound_unset_focus_watch_callback(hcamcorder->sound_focus_watch_id);
- _mmcam_dbg_warn("unset watch cb done");
- hcamcorder->sound_focus_watch_id = 0;
- }
- }
-
- /* reset flag not to run sound focus related code since now */
- hcamcorder->sound_focus_register = FALSE;
-
- _MMCAMCORDER_UNLOCK_ASM(hcamcorder);
-
- _mmcam_dbg_warn("done");
-
- return;
-}
-
-
-void _mmcamcorder_sound_focus_watch_cb(int id, mm_sound_focus_type_e focus_type, mm_sound_focus_state_e focus_state,
- const char *reason_for_change, const char *additional_info, void *user_data)
-{
- mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(user_data);
- int current_state = MM_CAMCORDER_STATE_NONE;
-
- mmf_return_if_fail(hcamcorder);
-
- current_state = _mmcamcorder_get_state((MMHandleType)hcamcorder);
- if (current_state <= MM_CAMCORDER_STATE_NONE ||
- current_state >= MM_CAMCORDER_STATE_NUM) {
- _mmcam_dbg_err("Abnormal state. Or null handle. (%p, %d)", hcamcorder, current_state);
- return;
- }
-
- _mmcam_dbg_warn("sound focus watch callback : id %d, focus state %d, reason %s",
- id, focus_state, reason_for_change ? reason_for_change : "N/A");
-
- if (hcamcorder->session_flags & MM_SESSION_OPTION_UNINTERRUPTIBLE) {
- _mmcam_dbg_warn("session flag is UNINTERRUPTIBLE. do nothing.");
- return;
- }
-
- _MMCAMCORDER_LOCK_ASM(hcamcorder);
-
- /* check the reason */
- if (!strncmp(reason_for_change, "ringtone-voip", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN) ||
- !strncmp(reason_for_change, "ringtone-call", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN) ||
- !strncmp(reason_for_change, "voip", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN) ||
- !strncmp(reason_for_change, "call-voice", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN)) {
- hcamcorder->interrupt_code = MM_MSG_CODE_INTERRUPTED_BY_CALL_START;
- } else if (!strncmp(reason_for_change, "alarm", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN)) {
- hcamcorder->interrupt_code = MM_MSG_CODE_INTERRUPTED_BY_ALARM_START;
- } else {
- hcamcorder->interrupt_code = MM_MSG_CODE_INTERRUPTED_BY_MEDIA;
- }
-
- if (focus_state == FOCUS_IS_RELEASED) {
- _MMCamcorderMsgItem msg;
-
- _mmcam_dbg_warn("other process's FOCUS is released");
-
- msg.id = MM_MESSAGE_READY_TO_RESUME;
- _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg);
-
- _mmcam_dbg_warn("Finish opeartion");
- } else if (focus_state == FOCUS_IS_ACQUIRED) {
- _mmcam_dbg_warn("other process's FOCUS is acquired : Stop pipeline[state:%d]", current_state);
-
- __mmcamcorder_force_stop(hcamcorder, _MMCAMCORDER_STATE_CHANGE_BY_FOCUS);
-
- _mmcam_dbg_warn("Finish opeartion. Pipeline is released");
- } else {
- _mmcam_dbg_warn("unknown focus state %d", focus_state);
- }
-
- _MMCAMCORDER_UNLOCK_ASM(hcamcorder);
-
- _mmcam_dbg_warn("done");
-
- return;
-}
-
-