2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 #include <muse_recorder.h>
23 #include <muse_recorder_msg.h>
24 #include <muse_core_ipc.h>
25 #include <recorder_private.h>
27 #include <muse_core.h>
28 #include <muse_core_msg_json.h>
29 #include <mm_camcorder_client.h>
35 #define LOG_TAG "TIZEN_N_RECORDER"
38 static int _recorder_import_tbm_key(tbm_bufmgr bufmgr, unsigned int tbm_key, tbm_bo *bo, tbm_bo_handle *bo_handle)
41 tbm_bo_handle tmp_bo_handle = {NULL, };
43 if (bufmgr == NULL || bo == NULL || bo_handle == NULL || tbm_key == 0) {
44 LOGE("invalid parameter - bufmgr %p, bo %p, bo_handle %p, key %d",
45 bufmgr, bo, bo_handle, tbm_key);
49 tmp_bo = tbm_bo_import(bufmgr, tbm_key);
51 LOGE("bo import failed - bufmgr %p, key %d", bufmgr, tbm_key);
55 tmp_bo_handle = tbm_bo_map(tmp_bo, TBM_DEVICE_CPU, TBM_OPTION_READ);
56 if (tmp_bo_handle.ptr == NULL) {
57 LOGE("bo map failed %p", tmp_bo);
63 /* set bo and bo_handle */
65 *bo_handle = tmp_bo_handle;
70 static void _recorder_release_imported_bo(tbm_bo *bo)
72 if (bo == NULL || *bo == NULL) {
84 static void _client_user_callback(callback_cb_info_s * cb_info, muse_recorder_event_e event)
86 char *recvMsg = cb_info->recvMsg;
87 LOGD("get event %d", event);
90 case MUSE_RECORDER_EVENT_TYPE_STATE_CHANGE:
96 muse_recorder_msg_get(previous, recvMsg);
97 muse_recorder_msg_get(current, recvMsg);
98 muse_recorder_msg_get(by_policy, recvMsg);
100 ((recorder_state_changed_cb)cb_info->user_cb[event])((recorder_state_e)previous,
101 (recorder_state_e)current,
103 cb_info->user_data[event]);
106 case MUSE_RECORDER_EVENT_TYPE_RECORDING_LIMITED:
110 muse_recorder_msg_get(type, recvMsg);
112 ((recorder_recording_limit_reached_cb)cb_info->user_cb[event])((recorder_recording_limit_type_e)type,
113 cb_info->user_data[event]);
116 case MUSE_RECORDER_EVENT_TYPE_RECORDING_STATUS:
118 int64_t cb_elapsed_time = 0;
119 int64_t cb_file_size = 0;
121 muse_recorder_msg_get(cb_elapsed_time, recvMsg);
122 muse_recorder_msg_get(cb_file_size, recvMsg);
124 ((recorder_recording_status_cb)cb_info->user_cb[event])((unsigned long long)cb_elapsed_time,
125 (unsigned long long)cb_file_size,
126 cb_info->user_data[event]);
129 case MUSE_RECORDER_EVENT_TYPE_INTERRUPTED:
135 muse_recorder_msg_get(policy, recvMsg);
136 muse_recorder_msg_get(previous, recvMsg);
137 muse_recorder_msg_get(current, recvMsg);
139 ((recorder_interrupted_cb)cb_info->user_cb[event])((recorder_policy_e)policy,
140 (recorder_state_e)previous,
141 (recorder_state_e)current,
142 cb_info->user_data[event]);
145 case MUSE_RECORDER_EVENT_TYPE_AUDIO_STREAM:
153 tbm_bo_handle bo_handle = {.ptr = NULL};
155 muse_recorder_msg_get(tbm_key, recvMsg);
161 if (!_recorder_import_tbm_key(cb_info->bufmgr, tbm_key, &bo, &bo_handle)) {
162 LOGE("tbm key %d import failed", tbm_key);
166 muse_recorder_msg_get(size, recvMsg);
167 muse_recorder_msg_get(format, recvMsg);
168 muse_recorder_msg_get(channel, recvMsg);
169 muse_recorder_msg_get(timestamp, recvMsg);
171 ((recorder_audio_stream_cb)cb_info->user_cb[event])((void *)bo_handle.ptr,
173 (audio_sample_type_e)format,
175 (unsigned int)timestamp,
176 cb_info->user_data[event]);
178 /* release imported bo */
179 _recorder_release_imported_bo(&bo);
182 muse_recorder_msg_send1_no_return(MUSE_RECORDER_API_RETURN_BUFFER,
183 cb_info->fd, cb_info,
187 case MUSE_RECORDER_EVENT_TYPE_ERROR:
190 int current_state = 0;
192 muse_recorder_msg_get(error, recvMsg);
193 muse_recorder_msg_get(current_state, recvMsg);
195 ((recorder_error_cb)cb_info->user_cb[event])((recorder_error_e)error,
196 (recorder_state_e)current_state,
197 cb_info->user_data[event]);
200 case MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_AUDIO_ENCODER:
204 muse_recorder_msg_get(codec, recvMsg);
206 ((recorder_supported_audio_encoder_cb)cb_info->user_cb[event])((recorder_audio_codec_e)codec,
207 cb_info->user_data[event]);
210 case MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_FILE_FORMAT:
214 muse_recorder_msg_get(format, recvMsg);
216 ((recorder_supported_file_format_cb)cb_info->user_cb[event])((recorder_file_format_e)format,
217 cb_info->user_data[event]);
220 case MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_VIDEO_ENCODER:
224 muse_recorder_msg_get(codec, recvMsg);
226 ((recorder_supported_video_encoder_cb)cb_info->user_cb[event])((recorder_video_codec_e)codec,
227 cb_info->user_data[event]);
230 case MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_VIDEO_RESOLUTION:
235 muse_recorder_msg_get(width, recvMsg);
236 muse_recorder_msg_get(height, recvMsg);
238 ((recorder_supported_video_resolution_cb)cb_info->user_cb[event])(width, height,
239 cb_info->user_data[event]);
244 LOGE("Unknonw event");
250 static void *_client_cb_handler(gpointer data)
258 callback_cb_info_s *cb_info = data;
259 char *recvMsg = NULL;
260 char **parseStr = NULL;
262 if (cb_info == NULL) {
263 LOGE("cb_info NULL");
267 parseStr = (char **)malloc(sizeof(char *) * RECORDER_PARSE_STRING_SIZE);
268 if (parseStr == NULL) {
269 LOGE("parseStr malloc failed");
273 for (i = 0 ; i < RECORDER_PARSE_STRING_SIZE ; i++) {
274 parseStr[i] = (char *)malloc(sizeof(char) * MUSE_RECORDER_MSG_MAX_LENGTH);
275 if (parseStr[i] == NULL) {
276 LOGE("parseStr[%d] malloc failed", i);
277 goto CB_HANDLER_EXIT;
281 recvMsg = cb_info->recvMsg;
283 while (g_atomic_int_get(&cb_info->running)) {
284 ret = muse_core_ipc_recv_msg(cb_info->fd, recvMsg);
293 LOGD("recvMSg : %s, length : %d", recvMsg, ret);
295 /* Need to split the combined entering msgs.
296 This module supports up to 5 combined msgs. */
297 for (str_pos = 0; str_pos < ret; str_pos++) {
298 if(recvMsg[str_pos] == '}') {
299 memset(parseStr[num_token], 0x0, sizeof(char) * MUSE_RECORDER_MSG_MAX_LENGTH);
300 strncpy(&(parseStr[num_token][0]), recvMsg + prev_pos, str_pos - prev_pos + 1);
301 LOGD("splitted msg : %s, Index : %d", &(parseStr[num_token][0]), num_token);
302 prev_pos = str_pos+1;
307 LOGD("num_token : %d", num_token);
309 /* Re-construct to the useful single msg. */
310 for (i = 0 ; i < num_token ; i++) {
311 if (i >= RECORDER_PARSE_STRING_SIZE) {
312 LOGE("invalid index %d", i);
316 if (muse_recorder_msg_get(api, &(parseStr[i][0]))) {
317 if(api < MUSE_RECORDER_API_MAX){
318 LOGD("api : %d, wait ends.", api);
320 g_mutex_lock(&(cb_info->pMutex[api]));
322 /* The api msgs should be distinguished from the event msg. */
323 memset(cb_info->recvApiMsg, 0, strlen(cb_info->recvApiMsg));
324 strcpy(cb_info->recvApiMsg, &(parseStr[i][0]));
326 LOGD("cb_info->recvApiMsg : %s", cb_info->recvApiMsg);
328 cb_info->activating[api] = 1;
330 if (api == MUSE_RECORDER_API_CREATE) {
331 if (muse_recorder_msg_get(ret, cb_info->recvApiMsg)) {
332 if (ret != RECORDER_ERROR_NONE) {
333 g_atomic_int_set(&cb_info->running, 0);
334 LOGE("recorder create error 0x%x. close client cb handler", ret);
337 LOGE("failed to get api return");
339 } else if (api == MUSE_RECORDER_API_DESTROY) {
340 if (muse_recorder_msg_get(ret, cb_info->recvApiMsg)) {
341 if (ret == RECORDER_ERROR_NONE) {
342 g_atomic_int_set(&cb_info->running, 0);
343 LOGD("recorder destroy done. close client cb handler");
346 LOGE("failed to get api return");
350 g_cond_signal(&(cb_info->pCond[api]));
351 g_mutex_unlock(&(cb_info->pMutex[api]));
352 } else if (api == MUSE_RECORDER_CB_EVENT) {
355 if (muse_recorder_msg_get(event, &(parseStr[i][0]))) {
356 LOGD("go callback : %d", event);
357 _client_user_callback(cb_info, event);
361 LOGD("muse_recorder_msg_get FAIL");
366 LOGD("client cb exit");
370 for (i = 0 ; i < RECORDER_PARSE_STRING_SIZE ; i++) {
384 static callback_cb_info_s *_client_callback_new(gint sockfd)
386 callback_cb_info_s *cb_info = NULL;
387 GCond *recorder_cond = NULL;
388 GMutex *recorder_mutex = NULL;
389 gint *recorder_activ = NULL;
390 g_return_val_if_fail(sockfd > 0, NULL);
392 cb_info = g_new0(callback_cb_info_s, 1);
393 if (cb_info == NULL) {
394 LOGE("cb_info_s alloc failed");
395 goto _ERR_RECORDER_EXIT;
398 recorder_cond = g_new0(GCond, MUSE_RECORDER_API_MAX);
399 if (recorder_cond == NULL) {
400 LOGE("recorder_cond alloc failed");
401 goto _ERR_RECORDER_EXIT;
403 recorder_mutex = g_new0(GMutex, MUSE_RECORDER_API_MAX);
404 if (recorder_mutex == NULL) {
405 LOGE("recorder_mutex alloc failed");
406 goto _ERR_RECORDER_EXIT;
408 recorder_activ = g_new0(gint, MUSE_RECORDER_API_MAX);
409 if (recorder_activ == NULL) {
410 LOGE("recorder_activ alloc failed");
411 goto _ERR_RECORDER_EXIT;
414 g_atomic_int_set(&cb_info->running, 1);
415 cb_info->fd = sockfd;
416 cb_info->pCond = recorder_cond;
417 cb_info->pMutex = recorder_mutex;
418 cb_info->activating = recorder_activ;
419 cb_info->thread = g_thread_try_new("callback_thread",
423 if (cb_info->thread == NULL) {
424 LOGE("thread create failed");
425 goto _ERR_RECORDER_EXIT;
436 g_free(recorder_cond);
437 recorder_cond = NULL;
439 if (recorder_mutex) {
440 g_free(recorder_mutex);
441 recorder_mutex = NULL;
443 if (recorder_activ) {
444 g_free(recorder_activ);
445 recorder_activ = NULL;
451 static int client_wait_for_cb_return(muse_recorder_api_e api, callback_cb_info_s *cb_info, int time_out)
453 int ret = RECORDER_ERROR_NONE;
456 LOGD("Enter api : %d", api);
457 g_mutex_lock(&(cb_info->pMutex[api]));
459 end_time = g_get_monotonic_time() + time_out * G_TIME_SPAN_SECOND;
460 if (cb_info->activating[api] != 1) {
461 if (g_cond_wait_until(&(cb_info->pCond[api]), &(cb_info->pMutex[api]), end_time)) {
462 LOGD("cb_info->recvApiMsg : %s", cb_info->recvApiMsg);
463 if (!muse_recorder_msg_get(ret, cb_info->recvApiMsg)) {
464 ret = RECORDER_ERROR_INVALID_OPERATION;
466 LOGD("API %d passed successfully", api);
469 ret = RECORDER_ERROR_INVALID_OPERATION;
472 LOGD("condition is already checked for the api : %d.", api);
473 cb_info->activating[api] = 0;
474 if (!muse_recorder_msg_get(ret, cb_info->recvApiMsg)) {
475 ret = RECORDER_ERROR_INVALID_OPERATION;
477 LOGD("Already checked condition, Wait passed, ret : 0x%x", ret);
480 g_mutex_unlock(&(cb_info->pMutex[api]));
481 LOGD("ret of api %d : 0x%x", api, ret);
485 static void _client_callback_destroy(callback_cb_info_s * cb_info)
487 g_return_if_fail(cb_info != NULL);
489 LOGD("destroy thread %p", cb_info->thread);
491 g_thread_join(cb_info->thread);
492 g_thread_unref(cb_info->thread);
494 if (cb_info->pCond) {
495 g_free(cb_info->pCond);
496 cb_info->pCond = NULL;
498 if (cb_info->pMutex) {
499 g_free(cb_info->pMutex);
500 cb_info->pMutex = NULL;
509 static int _recorder_create_common(recorder_h *recorder, muse_recorder_type_e type, camera_h camera)
511 int ret = RECORDER_ERROR_NONE;
512 int destroy_ret = RECORDER_ERROR_NONE;
514 char *send_msg = NULL;
515 char *root_directory = NULL;
516 intptr_t camera_handle = 0;
518 tbm_bufmgr bufmgr = NULL;
519 recorder_cli_s *pc = NULL;
521 LOGD("Enter - type %d", type);
523 if (recorder == NULL) {
524 LOGE("NULL pointer for recorder handle");
525 return RECORDER_ERROR_INVALID_PARAMETER;
528 if (type == MUSE_RECORDER_TYPE_VIDEO && camera == NULL) {
529 LOGE("NULL pointer for camera handle on video recorder mode");
530 return RECORDER_ERROR_INVALID_PARAMETER;
533 bufmgr = tbm_bufmgr_init(-1);
534 if (bufmgr == NULL) {
535 LOGE("get tbm bufmgr failed");
536 return RECORDER_ERROR_INVALID_OPERATION;
539 pc = g_new0(recorder_cli_s, 1);
541 ret = RECORDER_ERROR_OUT_OF_MEMORY;
542 goto _ERR_RECORDER_EXIT;
545 sock_fd = muse_core_client_new();
547 LOGE("muse_core_client_new failed - returned fd %d", sock_fd);
548 ret = RECORDER_ERROR_INVALID_OPERATION;
549 goto _ERR_RECORDER_EXIT;
552 if (type == MUSE_RECORDER_TYPE_AUDIO) {
553 send_msg = muse_core_msg_json_factory_new(MUSE_RECORDER_API_CREATE,
554 MUSE_TYPE_INT, "module", MUSE_RECORDER,
555 MUSE_TYPE_INT, PARAM_RECORDER_TYPE, MUSE_RECORDER_TYPE_AUDIO,
556 MUSE_TYPE_INT, "pid", getpid(),
559 camera_handle = (intptr_t)((camera_cli_s *)camera)->remote_handle;
560 send_msg = muse_core_msg_json_factory_new(MUSE_RECORDER_API_CREATE,
561 MUSE_TYPE_INT, "module", MUSE_RECORDER,
562 MUSE_TYPE_INT, PARAM_RECORDER_TYPE, MUSE_RECORDER_TYPE_VIDEO,
563 MUSE_TYPE_POINTER, "camera_handle", camera_handle,
567 LOGD("sock_fd : %d, msg : %s", sock_fd, send_msg);
569 muse_core_ipc_send_msg(sock_fd, send_msg);
570 muse_core_msg_json_factory_free(send_msg);
572 pc->cb_info = _client_callback_new(sock_fd);
573 if (pc->cb_info == NULL) {
574 ret = RECORDER_ERROR_OUT_OF_MEMORY;
575 goto _ERR_RECORDER_EXIT;
578 ret = client_wait_for_cb_return(MUSE_RECORDER_API_CREATE, pc->cb_info, CALLBACK_TIME_OUT);
579 if (ret == RECORDER_ERROR_NONE) {
580 muse_recorder_msg_get_pointer(handle, pc->cb_info->recvMsg);
582 LOGE("Receiving Handle Failed!!");
583 goto _ERR_RECORDER_EXIT;
586 if (mm_camcorder_client_get_root_directory(&root_directory) != MM_ERROR_NONE ||
587 root_directory == NULL) {
588 LOGE("failed to get root directory of internal storage");
589 ret = RECORDER_ERROR_INVALID_OPERATION;
590 goto _ERR_RECORDER_AFTER_CREATE;
593 LOGD("set root directory [%s]", root_directory);
595 muse_recorder_msg_send1(MUSE_RECORDER_API_ATTR_SET_ROOT_DIRECTORY,
596 sock_fd, pc->cb_info, ret, STRING, root_directory);
597 if (ret != RECORDER_ERROR_NONE) {
598 LOGE("failed to set root directory %s", root_directory);
599 ret = RECORDER_ERROR_INVALID_OPERATION;
600 goto _ERR_RECORDER_AFTER_CREATE;
603 free(root_directory);
604 root_directory = NULL;
606 pc->remote_handle = handle;
607 pc->cb_info->bufmgr = bufmgr;
609 LOGD("recorder[type %d] %p create success : remote handle 0x%x",
610 type, pc, pc->remote_handle);
612 *recorder = (recorder_h) pc;
614 goto _ERR_RECORDER_EXIT;
619 return RECORDER_ERROR_NONE;
621 _ERR_RECORDER_AFTER_CREATE:
622 muse_recorder_msg_send(MUSE_RECORDER_API_DESTROY, sock_fd, pc->cb_info, destroy_ret);
623 LOGE("destroy return 0x%x", destroy_ret);
626 tbm_bufmgr_deinit(bufmgr);
629 if (root_directory) {
630 free(root_directory);
631 root_directory = NULL;
636 _client_callback_destroy(pc->cb_info);
646 int recorder_create_videorecorder(camera_h camera, recorder_h *recorder)
648 return _recorder_create_common(recorder, MUSE_RECORDER_TYPE_VIDEO, camera);
652 int recorder_create_audiorecorder(recorder_h *recorder)
654 return _recorder_create_common(recorder, MUSE_RECORDER_TYPE_AUDIO, NULL);
657 int recorder_get_state(recorder_h recorder, recorder_state_e *state)
659 if (recorder == NULL) {
660 LOGE("NULL pointer handle");
661 return RECORDER_ERROR_INVALID_PARAMETER;
664 LOGE("NULL pointer state");
665 return RECORDER_ERROR_INVALID_PARAMETER;
668 int ret = RECORDER_ERROR_NONE;
670 recorder_cli_s *pc = (recorder_cli_s *)recorder;
671 muse_recorder_api_e api = MUSE_RECORDER_API_GET_STATE;
673 if (pc->cb_info == NULL) {
674 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
675 return RECORDER_ERROR_INVALID_PARAMETER;
677 sock_fd = pc->cb_info->fd;
680 LOGD("Enter, remote_handle : %x", pc->remote_handle);
682 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
684 if (ret == RECORDER_ERROR_NONE) {
685 muse_recorder_msg_get(get_state, pc->cb_info->recvMsg);
686 *state = (recorder_state_e)get_state;
689 LOGD("ret : 0x%x, get_state : %d", ret, get_state);
695 int recorder_destroy(recorder_h recorder)
697 if (recorder == NULL) {
698 LOGE("NULL pointer handle");
699 return RECORDER_ERROR_INVALID_PARAMETER;
701 int ret = RECORDER_ERROR_NONE;
702 muse_recorder_api_e api = MUSE_RECORDER_API_DESTROY;
703 recorder_cli_s *pc = (recorder_cli_s *)recorder;
705 if (pc->cb_info == NULL) {
706 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
707 return RECORDER_ERROR_INVALID_PARAMETER;
709 sock_fd = pc->cb_info->fd;
714 return RECORDER_ERROR_INVALID_OPERATION;
715 } else if (pc->cb_info == NULL) {
716 return RECORDER_ERROR_INVALID_OPERATION;
719 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
720 _client_callback_destroy(pc->cb_info);
723 LOGD("ret : 0x%x", ret);
728 int recorder_prepare(recorder_h recorder)
730 if (recorder == NULL) {
731 LOGE("NULL pointer handle");
732 return RECORDER_ERROR_INVALID_PARAMETER;
735 int ret = RECORDER_ERROR_NONE;
736 muse_recorder_api_e api = MUSE_RECORDER_API_PREPARE;
737 recorder_cli_s *pc = (recorder_cli_s *)recorder;
739 if (pc->cb_info == NULL) {
740 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
741 return RECORDER_ERROR_INVALID_PARAMETER;
743 sock_fd = pc->cb_info->fd;
747 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
749 LOGD("ret : 0x%x", ret);
755 int recorder_unprepare(recorder_h recorder)
757 if (recorder == NULL) {
758 LOGE("NULL pointer handle");
759 return RECORDER_ERROR_INVALID_PARAMETER;
761 int ret = RECORDER_ERROR_NONE;
762 muse_recorder_api_e api = MUSE_RECORDER_API_UNPREPARE;
763 recorder_cli_s *pc = (recorder_cli_s *)recorder;
765 if (pc->cb_info == NULL) {
766 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
767 return RECORDER_ERROR_INVALID_PARAMETER;
769 sock_fd = pc->cb_info->fd;
773 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
774 LOGD("ret : 0x%x", ret);
779 int recorder_start(recorder_h recorder)
781 if (recorder == NULL) {
782 LOGE("NULL pointer handle");
783 return RECORDER_ERROR_INVALID_PARAMETER;
785 int ret = RECORDER_ERROR_NONE;
786 muse_recorder_api_e api = MUSE_RECORDER_API_START;
787 recorder_cli_s *pc = (recorder_cli_s *)recorder;
789 if (pc->cb_info == NULL) {
790 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
791 return RECORDER_ERROR_INVALID_PARAMETER;
793 sock_fd = pc->cb_info->fd;
797 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
798 LOGD("ret : 0x%x", ret);
803 int recorder_pause(recorder_h recorder)
805 if (recorder == NULL) {
806 LOGE("NULL pointer handle");
807 return RECORDER_ERROR_INVALID_PARAMETER;
809 int ret = RECORDER_ERROR_NONE;
810 muse_recorder_api_e api = MUSE_RECORDER_API_PAUSE;
811 recorder_cli_s *pc = (recorder_cli_s *)recorder;
813 if (pc->cb_info == NULL) {
814 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
815 return RECORDER_ERROR_INVALID_PARAMETER;
817 sock_fd = pc->cb_info->fd;
821 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
822 LOGD("ret : 0x%x", ret);
827 int recorder_commit(recorder_h recorder)
829 if (recorder == NULL) {
830 LOGE("NULL pointer handle");
831 return RECORDER_ERROR_INVALID_PARAMETER;
833 int ret = RECORDER_ERROR_NONE;
834 muse_recorder_api_e api = MUSE_RECORDER_API_COMMIT;
835 recorder_cli_s *pc = (recorder_cli_s *)recorder;
837 if (pc->cb_info == NULL) {
838 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
839 return RECORDER_ERROR_INVALID_PARAMETER;
841 sock_fd = pc->cb_info->fd;
845 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
846 LOGD("ret : 0x%x", ret);
851 int recorder_cancel(recorder_h recorder)
853 if (recorder == NULL) {
854 LOGE("NULL pointer handle");
855 return RECORDER_ERROR_INVALID_PARAMETER;
857 int ret = RECORDER_ERROR_NONE;
858 muse_recorder_api_e api = MUSE_RECORDER_API_CANCEL;
859 recorder_cli_s *pc = (recorder_cli_s *)recorder;
861 if (pc->cb_info == NULL) {
862 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
863 return RECORDER_ERROR_INVALID_PARAMETER;
865 sock_fd = pc->cb_info->fd;
869 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
870 LOGD("ret : 0x%x", ret);
875 int recorder_set_video_resolution(recorder_h recorder, int width, int height)
877 if (recorder == NULL) {
878 LOGE("NULL pointer handle");
879 return RECORDER_ERROR_INVALID_PARAMETER;
881 int ret = RECORDER_ERROR_NONE;
882 muse_recorder_api_e api = MUSE_RECORDER_API_SET_VIDEO_RESOLUTION;
883 recorder_cli_s *pc = (recorder_cli_s *)recorder;
885 if (pc->cb_info == NULL) {
886 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
887 return RECORDER_ERROR_INVALID_PARAMETER;
889 sock_fd = pc->cb_info->fd;
893 muse_recorder_msg_send2(api,
899 LOGD("ret : 0x%x", ret);
904 int recorder_get_video_resolution(recorder_h recorder, int *width, int *height)
906 if (recorder == NULL) {
907 LOGE("NULL pointer handle");
908 return RECORDER_ERROR_INVALID_PARAMETER;
910 if (!width || !height) {
911 LOGE("NULL pointer width = [%p], height = [%p]", width, height);
912 return RECORDER_ERROR_INVALID_PARAMETER;
914 int ret = RECORDER_ERROR_NONE;
915 muse_recorder_api_e api = MUSE_RECORDER_API_GET_VIDEO_RESOLUTION;
916 recorder_cli_s *pc = (recorder_cli_s *)recorder;
918 if (pc->cb_info == NULL) {
919 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
920 return RECORDER_ERROR_INVALID_PARAMETER;
922 sock_fd = pc->cb_info->fd;
928 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
929 if (ret == RECORDER_ERROR_NONE) {
930 muse_recorder_msg_get(get_width, pc->cb_info->recvMsg);
931 muse_recorder_msg_get(get_height, pc->cb_info->recvMsg);
933 *height = get_height;
935 LOGD("ret : 0x%x", ret);
940 int recorder_foreach_supported_video_resolution(recorder_h recorder,
941 recorder_supported_video_resolution_cb foreach_cb, void *user_data)
943 if( recorder == NULL || foreach_cb == NULL){
944 LOGE("INVALID_PARAMETER(0x%08x)", RECORDER_ERROR_INVALID_PARAMETER);
945 return RECORDER_ERROR_INVALID_PARAMETER;
947 int ret = RECORDER_ERROR_NONE;
949 recorder_cli_s *pc = (recorder_cli_s *)recorder;
950 muse_recorder_api_e api = MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_RESOLUTION;
952 LOGD("Enter, handle :%x", pc->remote_handle);
955 if (pc->cb_info == NULL) {
956 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
957 return RECORDER_ERROR_INVALID_PARAMETER;
959 sock_fd = pc->cb_info->fd;
960 pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_VIDEO_RESOLUTION] = foreach_cb;
961 pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_VIDEO_RESOLUTION] = user_data;
963 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
964 LOGD("ret : 0x%x", ret);
969 int recorder_get_audio_level(recorder_h recorder, double *level)
971 if (recorder == NULL || level == NULL) {
972 LOGE("NULL pointer %p %p", recorder, level);
973 return RECORDER_ERROR_INVALID_PARAMETER;
976 int ret = RECORDER_ERROR_NONE;
977 muse_recorder_api_e api = MUSE_RECORDER_API_GET_AUDIO_LEVEL;
978 recorder_cli_s *pc = (recorder_cli_s *)recorder;
980 if (pc->cb_info == NULL) {
981 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
982 return RECORDER_ERROR_INVALID_PARAMETER;
984 sock_fd = pc->cb_info->fd;
989 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
990 if (ret == RECORDER_ERROR_NONE) {
991 muse_recorder_msg_get_double(get_level, pc->cb_info->recvMsg);
994 LOGD("ret : 0x%x", ret);
999 int recorder_set_filename(recorder_h recorder, const char *filename)
1001 if (recorder == NULL) {
1002 LOGE("handle is NULL");
1003 return RECORDER_ERROR_INVALID_PARAMETER;
1006 if (filename == NULL) {
1007 LOGE("filename is NULL");
1008 return RECORDER_ERROR_INVALID_PARAMETER;
1010 int ret = RECORDER_ERROR_NONE;
1011 muse_recorder_api_e api = MUSE_RECORDER_API_SET_FILENAME;
1012 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1014 if (pc->cb_info == NULL) {
1015 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1016 return RECORDER_ERROR_INVALID_PARAMETER;
1018 sock_fd = pc->cb_info->fd;
1022 muse_recorder_msg_send1(api, sock_fd, pc->cb_info, ret, STRING, filename);
1023 LOGD("ret : 0x%x", ret);
1028 int recorder_get_filename(recorder_h recorder, char **filename)
1030 if (recorder == NULL) {
1031 LOGE("handle is NULL");
1032 return RECORDER_ERROR_INVALID_PARAMETER;
1035 if (filename == NULL) {
1036 LOGE("filename is NULL");
1037 return RECORDER_ERROR_INVALID_PARAMETER;
1039 int ret = RECORDER_ERROR_NONE;
1040 muse_recorder_api_e api = MUSE_RECORDER_API_GET_FILENAME;
1041 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1043 if (pc->cb_info == NULL) {
1044 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1045 return RECORDER_ERROR_INVALID_PARAMETER;
1047 sock_fd = pc->cb_info->fd;
1048 char get_filename[MUSE_RECORDER_MSG_MAX_LENGTH] = {0,};
1052 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1054 if (ret == RECORDER_ERROR_NONE) {
1055 muse_recorder_msg_get_string(get_filename, pc->cb_info->recvMsg);
1056 *filename = strdup(get_filename);
1058 LOGD("ret : 0x%x, filename : %s", ret, *filename);
1063 int recorder_set_file_format(recorder_h recorder, recorder_file_format_e format)
1065 if (recorder == NULL) {
1066 LOGE("NULL pointer handle");
1067 return RECORDER_ERROR_INVALID_PARAMETER;
1069 if (format < RECORDER_FILE_FORMAT_3GP || format > RECORDER_FILE_FORMAT_OGG) {
1070 LOGE("invalid format %d", format);
1071 return RECORDER_ERROR_INVALID_PARAMETER;
1073 int ret = RECORDER_ERROR_NONE;
1074 muse_recorder_api_e api = MUSE_RECORDER_API_SET_FILE_FORMAT;
1075 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1077 if (pc->cb_info == NULL) {
1078 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1079 return RECORDER_ERROR_INVALID_PARAMETER;
1081 sock_fd = pc->cb_info->fd;
1082 int set_format = (int)format;
1084 LOGD("ENTER, set_format : %d", set_format);
1086 muse_recorder_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_format);
1087 LOGD("ret : 0x%x", ret);
1092 int recorder_get_file_format(recorder_h recorder, recorder_file_format_e *format)
1094 if (recorder == NULL) {
1095 LOGE("NULL pointer handle");
1096 return RECORDER_ERROR_INVALID_PARAMETER;
1098 if (format == NULL) {
1099 LOGE("NULL pointer data");
1100 return RECORDER_ERROR_INVALID_PARAMETER;
1102 int ret = RECORDER_ERROR_NONE;
1103 muse_recorder_api_e api = MUSE_RECORDER_API_GET_FILE_FORMAT;
1104 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1106 if (pc->cb_info == NULL) {
1107 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1108 return RECORDER_ERROR_INVALID_PARAMETER;
1110 sock_fd = pc->cb_info->fd;
1115 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1117 if (ret == RECORDER_ERROR_NONE) {
1118 muse_recorder_msg_get(get_format, pc->cb_info->recvMsg);
1119 LOGD("get_fileformat : %d", get_format);
1120 *format = (recorder_file_format_e)get_format;
1122 LOGD("ret : 0x%x", ret);
1127 int recorder_set_state_changed_cb(recorder_h recorder, recorder_state_changed_cb callback, void* user_data)
1129 if( recorder == NULL || callback == NULL){
1130 LOGE("INVALID_PARAMETER(0x%08x)", RECORDER_ERROR_INVALID_PARAMETER);
1131 return RECORDER_ERROR_INVALID_PARAMETER;
1133 int ret = RECORDER_ERROR_NONE;
1135 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1136 muse_recorder_api_e api = MUSE_RECORDER_API_SET_STATE_CHANGED_CB;
1138 LOGD("Enter, handle :%x", pc->remote_handle);
1141 if (pc->cb_info == NULL) {
1142 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1143 return RECORDER_ERROR_INVALID_PARAMETER;
1145 sock_fd = pc->cb_info->fd;
1146 pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_STATE_CHANGE] = callback;
1147 pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_STATE_CHANGE] = user_data;
1149 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1150 LOGD("ret : 0x%x", ret);
1155 int recorder_unset_state_changed_cb(recorder_h recorder)
1157 if (recorder == NULL) {
1158 LOGE("NULL pointer handle");
1159 return RECORDER_ERROR_INVALID_PARAMETER;
1161 int ret = RECORDER_ERROR_NONE;
1162 muse_recorder_api_e api = MUSE_RECORDER_API_UNSET_STATE_CHANGED_CB;
1163 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1165 if (pc->cb_info == NULL) {
1166 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1167 return RECORDER_ERROR_INVALID_PARAMETER;
1169 sock_fd = pc->cb_info->fd;
1173 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1174 LOGD("ret : 0x%x", ret);
1179 int recorder_set_interrupted_cb(recorder_h recorder, recorder_interrupted_cb callback, void *user_data)
1181 if( recorder == NULL || callback == NULL){
1182 LOGE("INVALID_PARAMETER(0x%08x)", RECORDER_ERROR_INVALID_PARAMETER);
1183 return RECORDER_ERROR_INVALID_PARAMETER;
1185 int ret = RECORDER_ERROR_NONE;
1187 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1188 muse_recorder_api_e api = MUSE_RECORDER_API_SET_INTERRUPTED_CB;
1190 LOGD("Enter, handle :%x", pc->remote_handle);
1193 if (pc->cb_info == NULL) {
1194 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1195 return RECORDER_ERROR_INVALID_PARAMETER;
1197 sock_fd = pc->cb_info->fd;
1198 pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_INTERRUPTED] = callback;
1199 pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_INTERRUPTED] = user_data;
1201 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1202 LOGD("ret : 0x%x", ret);
1207 int recorder_unset_interrupted_cb(recorder_h recorder)
1209 if (recorder == NULL) {
1210 LOGE("NULL pointer handle");
1211 return RECORDER_ERROR_INVALID_PARAMETER;
1213 int ret = RECORDER_ERROR_NONE;
1214 muse_recorder_api_e api = MUSE_RECORDER_API_UNSET_INTERRUPTED_CB;
1215 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1217 if (pc->cb_info == NULL) {
1218 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1219 return RECORDER_ERROR_INVALID_PARAMETER;
1221 sock_fd = pc->cb_info->fd;
1225 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1226 LOGD("ret : 0x%x", ret);
1231 int recorder_set_audio_stream_cb(recorder_h recorder, recorder_audio_stream_cb callback, void* user_data)
1233 if( recorder == NULL || callback == NULL){
1234 LOGE("INVALID_PARAMETER(0x%08x)", RECORDER_ERROR_INVALID_PARAMETER);
1235 return RECORDER_ERROR_INVALID_PARAMETER;
1237 int ret = RECORDER_ERROR_NONE;
1239 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1240 muse_recorder_api_e api = MUSE_RECORDER_API_SET_AUDIO_STREAM_CB;
1242 LOGD("Enter, handle :%x", pc->remote_handle);
1245 if (pc->cb_info == NULL) {
1246 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1247 return RECORDER_ERROR_INVALID_PARAMETER;
1249 sock_fd = pc->cb_info->fd;
1250 pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_AUDIO_STREAM] = callback;
1251 pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_AUDIO_STREAM] = user_data;
1253 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1254 LOGD("ret : 0x%x", ret);
1259 int recorder_unset_audio_stream_cb(recorder_h recorder)
1261 if (recorder == NULL) {
1262 LOGE("NULL pointer handle");
1263 return RECORDER_ERROR_INVALID_PARAMETER;
1265 int ret = RECORDER_ERROR_NONE;
1266 muse_recorder_api_e api = MUSE_RECORDER_API_UNSET_AUDIO_STREAM_CB;
1267 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1269 if (pc->cb_info == NULL) {
1270 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1271 return RECORDER_ERROR_INVALID_PARAMETER;
1273 sock_fd = pc->cb_info->fd;
1277 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1278 LOGD("ret : 0x%x", ret);
1283 int recorder_set_error_cb(recorder_h recorder, recorder_error_cb callback, void *user_data)
1285 if( recorder == NULL || callback == NULL){
1286 LOGE("INVALID_PARAMETER(0x%08x)", RECORDER_ERROR_INVALID_PARAMETER);
1287 return RECORDER_ERROR_INVALID_PARAMETER;
1289 int ret = RECORDER_ERROR_NONE;
1291 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1292 muse_recorder_api_e api = MUSE_RECORDER_API_SET_ERROR_CB;
1294 LOGD("Enter, handle :%x", pc->remote_handle);
1297 if (pc->cb_info == NULL) {
1298 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1299 return RECORDER_ERROR_INVALID_PARAMETER;
1301 sock_fd = pc->cb_info->fd;
1302 pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_ERROR] = callback;
1303 pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_ERROR] = user_data;
1305 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1306 LOGD("ret : 0x%x", ret);
1311 int recorder_unset_error_cb(recorder_h recorder)
1313 if (recorder == NULL) {
1314 LOGE("NULL pointer handle");
1315 return RECORDER_ERROR_INVALID_PARAMETER;
1317 int ret = RECORDER_ERROR_NONE;
1318 muse_recorder_api_e api = MUSE_RECORDER_API_UNSET_ERROR_CB;
1319 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1321 if (pc->cb_info == NULL) {
1322 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1323 return RECORDER_ERROR_INVALID_PARAMETER;
1325 sock_fd = pc->cb_info->fd;
1329 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1330 LOGD("ret : 0x%x", ret);
1335 int recorder_set_recording_status_cb(recorder_h recorder, recorder_recording_status_cb callback, void* user_data)
1337 if( recorder == NULL || callback == NULL){
1338 LOGE("INVALID_PARAMETER(0x%08x)", RECORDER_ERROR_INVALID_PARAMETER);
1339 return RECORDER_ERROR_INVALID_PARAMETER;
1341 int ret = RECORDER_ERROR_NONE;
1343 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1344 muse_recorder_api_e api = MUSE_RECORDER_API_SET_RECORDING_STATUS_CB;
1346 LOGD("Enter, handle :%x", pc->remote_handle);
1349 if (pc->cb_info == NULL) {
1350 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1351 return RECORDER_ERROR_INVALID_PARAMETER;
1353 sock_fd = pc->cb_info->fd;
1354 pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_RECORDING_STATUS] = callback;
1355 pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_RECORDING_STATUS] = user_data;
1357 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1358 LOGD("ret : 0x%x", ret);
1363 int recorder_unset_recording_status_cb(recorder_h recorder)
1365 if (recorder == NULL) {
1366 LOGE("NULL pointer handle");
1367 return RECORDER_ERROR_INVALID_PARAMETER;
1369 int ret = RECORDER_ERROR_NONE;
1370 muse_recorder_api_e api = MUSE_RECORDER_API_UNSET_RECORDING_STATUS_CB;
1371 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1373 if (pc->cb_info == NULL) {
1374 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1375 return RECORDER_ERROR_INVALID_PARAMETER;
1377 sock_fd = pc->cb_info->fd;
1381 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1382 LOGD("ret : 0x%x", ret);
1387 int recorder_set_recording_limit_reached_cb(recorder_h recorder, recorder_recording_limit_reached_cb callback, void* user_data)
1389 if( recorder == NULL || callback == NULL){
1390 LOGE("INVALID_PARAMETER(0x%08x)", RECORDER_ERROR_INVALID_PARAMETER);
1391 return RECORDER_ERROR_INVALID_PARAMETER;
1393 int ret = RECORDER_ERROR_NONE;
1395 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1396 muse_recorder_api_e api = MUSE_RECORDER_API_SET_RECORDING_LIMIT_REACHED_CB;
1398 LOGD("Enter, handle :%x", pc->remote_handle);
1401 if (pc->cb_info == NULL) {
1402 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1403 return RECORDER_ERROR_INVALID_PARAMETER;
1405 sock_fd = pc->cb_info->fd;
1406 pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_RECORDING_LIMITED] = callback;
1407 pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_RECORDING_LIMITED] = user_data;
1409 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1410 LOGD("ret : 0x%x", ret);
1415 int recorder_unset_recording_limit_reached_cb(recorder_h recorder)
1417 if (recorder == NULL) {
1418 LOGE("NULL pointer handle");
1419 return RECORDER_ERROR_INVALID_PARAMETER;
1421 int ret = RECORDER_ERROR_NONE;
1422 muse_recorder_api_e api = MUSE_RECORDER_API_UNSET_RECORDING_LIMIT_REACHED_CB;
1423 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1425 if (pc->cb_info == NULL) {
1426 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1427 return RECORDER_ERROR_INVALID_PARAMETER;
1429 sock_fd = pc->cb_info->fd;
1433 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1434 LOGD("ret : 0x%x", ret);
1439 int recorder_foreach_supported_file_format(recorder_h recorder, recorder_supported_file_format_cb foreach_cb, void *user_data)
1441 if( recorder == NULL || foreach_cb == NULL){
1442 LOGE("INVALID_PARAMETER(0x%08x)", RECORDER_ERROR_INVALID_PARAMETER);
1443 return RECORDER_ERROR_INVALID_PARAMETER;
1445 int ret = RECORDER_ERROR_NONE;
1447 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1448 muse_recorder_api_e api = MUSE_RECORDER_API_FOREACH_SUPPORTED_FILE_FORMAT;
1450 LOGD("Enter, handle :%x", pc->remote_handle);
1453 if (pc->cb_info == NULL) {
1454 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1455 return RECORDER_ERROR_INVALID_PARAMETER;
1457 sock_fd = pc->cb_info->fd;
1458 pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_FILE_FORMAT] = foreach_cb;
1459 pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_FILE_FORMAT] = user_data;
1461 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1462 LOGD("ret : 0x%x", ret);
1467 int recorder_attr_set_size_limit(recorder_h recorder, int kbyte)
1469 if (recorder == NULL) {
1470 LOGE("NULL pointer handle");
1471 return RECORDER_ERROR_INVALID_PARAMETER;
1473 int ret = RECORDER_ERROR_NONE;
1474 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_SET_SIZE_LIMIT;
1475 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1477 if (pc->cb_info == NULL) {
1478 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1479 return RECORDER_ERROR_INVALID_PARAMETER;
1481 sock_fd = pc->cb_info->fd;
1485 muse_recorder_msg_send1(api,
1490 LOGD("ret : 0x%x", ret);
1495 int recorder_attr_set_time_limit(recorder_h recorder, int second)
1497 if (recorder == NULL) {
1498 LOGE("NULL pointer handle");
1499 return RECORDER_ERROR_INVALID_PARAMETER;
1501 int ret = RECORDER_ERROR_NONE;
1502 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_SET_TIME_LIMIT;
1503 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1505 if (pc->cb_info == NULL) {
1506 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1507 return RECORDER_ERROR_INVALID_PARAMETER;
1509 sock_fd = pc->cb_info->fd;
1513 muse_recorder_msg_send1(api,
1518 LOGD("ret : 0x%x", ret);
1523 int recorder_attr_set_audio_device(recorder_h recorder, recorder_audio_device_e device)
1525 if (recorder == NULL) {
1526 LOGE("NULL pointer handle");
1527 return RECORDER_ERROR_INVALID_PARAMETER;
1529 int ret = RECORDER_ERROR_NONE;
1530 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_SET_AUDIO_DEVICE;
1531 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1533 if (pc->cb_info == NULL) {
1534 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1535 return RECORDER_ERROR_INVALID_PARAMETER;
1537 sock_fd = pc->cb_info->fd;
1538 int set_device = (int)device;
1542 muse_recorder_msg_send1(api,
1547 LOGD("ret : 0x%x", ret);
1552 int recorder_set_audio_encoder(recorder_h recorder, recorder_audio_codec_e codec)
1554 if (recorder == NULL) {
1555 LOGE("NULL pointer handle");
1556 return RECORDER_ERROR_INVALID_PARAMETER;
1558 if (codec != RECORDER_AUDIO_CODEC_DISABLE &&
1559 (codec < RECORDER_AUDIO_CODEC_AMR || codec > RECORDER_AUDIO_CODEC_PCM)) {
1560 LOGE("invalid parameter : codec %d", codec);
1561 return RECORDER_ERROR_INVALID_PARAMETER;
1563 int ret = RECORDER_ERROR_NONE;
1564 muse_recorder_api_e api = MUSE_RECORDER_API_SET_AUDIO_ENCODER;
1565 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1567 if (pc->cb_info == NULL) {
1568 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1569 return RECORDER_ERROR_INVALID_PARAMETER;
1571 sock_fd = pc->cb_info->fd;
1572 int set_codec = (int)codec;
1576 muse_recorder_msg_send1(api,
1581 LOGD("ret : 0x%x", ret);
1586 int recorder_get_audio_encoder(recorder_h recorder, recorder_audio_codec_e *codec)
1588 if (recorder == NULL) {
1589 LOGE("NULL pointer handle");
1590 return RECORDER_ERROR_INVALID_PARAMETER;
1592 if (codec == NULL) {
1593 LOGE("codec is NULL");
1594 return RECORDER_ERROR_INVALID_PARAMETER;
1596 int ret = RECORDER_ERROR_NONE;
1597 muse_recorder_api_e api = MUSE_RECORDER_API_GET_AUDIO_ENCODER;
1598 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1600 if (pc->cb_info == NULL) {
1601 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1602 return RECORDER_ERROR_INVALID_PARAMETER;
1604 sock_fd = pc->cb_info->fd;
1609 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1610 if (ret == RECORDER_ERROR_NONE) {
1611 muse_recorder_msg_get(get_codec, pc->cb_info->recvMsg);
1612 *codec = (recorder_audio_codec_e)get_codec;
1614 LOGD("ret : 0x%x", ret);
1619 int recorder_set_video_encoder(recorder_h recorder, recorder_video_codec_e codec)
1621 if (recorder == NULL) {
1622 LOGE("NULL pointer handle");
1623 return RECORDER_ERROR_INVALID_PARAMETER;
1625 if (codec < RECORDER_VIDEO_CODEC_H263 || codec > RECORDER_VIDEO_CODEC_THEORA) {
1626 LOGE("invalid codec %d", codec);
1627 return RECORDER_ERROR_INVALID_PARAMETER;
1629 int ret = RECORDER_ERROR_NONE;
1630 muse_recorder_api_e api = MUSE_RECORDER_API_SET_VIDEO_ENCODER;
1631 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1633 if (pc->cb_info == NULL) {
1634 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1635 return RECORDER_ERROR_INVALID_PARAMETER;
1637 sock_fd = pc->cb_info->fd;
1638 int set_codec = (int)codec;
1642 muse_recorder_msg_send1(api,
1647 LOGD("ret : 0x%x", ret);
1652 int recorder_get_video_encoder(recorder_h recorder, recorder_video_codec_e *codec)
1654 if (recorder == NULL) {
1655 LOGE("NULL pointer handle");
1656 return RECORDER_ERROR_INVALID_PARAMETER;
1658 if (codec == NULL) {
1659 LOGE("codec is NULL");
1660 return RECORDER_ERROR_INVALID_PARAMETER;
1662 int ret = RECORDER_ERROR_NONE;
1663 muse_recorder_api_e api = MUSE_RECORDER_API_GET_VIDEO_ENCODER;
1664 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1666 if (pc->cb_info == NULL) {
1667 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1668 return RECORDER_ERROR_INVALID_PARAMETER;
1670 sock_fd = pc->cb_info->fd;
1675 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1676 if (ret == RECORDER_ERROR_NONE) {
1677 muse_recorder_msg_get(get_codec, pc->cb_info->recvMsg);
1678 *codec = (recorder_audio_codec_e)get_codec;
1680 LOGD("ret : 0x%x", ret);
1685 int recorder_attr_set_audio_samplerate(recorder_h recorder, int samplerate)
1687 if (recorder == NULL) {
1688 LOGE("NULL pointer handle");
1689 return RECORDER_ERROR_INVALID_PARAMETER;
1691 if (samplerate < 1) {
1692 LOGE("invalid samplerate %d", samplerate);
1693 return RECORDER_ERROR_INVALID_PARAMETER;
1695 int ret = RECORDER_ERROR_NONE;
1696 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_SET_AUDIO_SAMPLERATE;
1697 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1699 if (pc->cb_info == NULL) {
1700 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1701 return RECORDER_ERROR_INVALID_PARAMETER;
1703 sock_fd = pc->cb_info->fd;
1705 LOGD("ENTER, samplerate : %d", samplerate);
1707 muse_recorder_msg_send1(api,
1712 LOGD("ret : 0x%x, samplerate : %d", ret, samplerate);
1717 int recorder_attr_set_audio_encoder_bitrate(recorder_h recorder, int bitrate)
1719 if (recorder == NULL) {
1720 LOGE("NULL pointer handle");
1721 return RECORDER_ERROR_INVALID_PARAMETER;
1724 LOGE("invalid bitrate %d", bitrate);
1725 return RECORDER_ERROR_INVALID_PARAMETER;
1727 int ret = RECORDER_ERROR_NONE;
1728 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_SET_AUDIO_ENCODER_BITRATE;
1729 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1731 if (pc->cb_info == NULL) {
1732 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1733 return RECORDER_ERROR_INVALID_PARAMETER;
1735 sock_fd = pc->cb_info->fd;
1739 muse_recorder_msg_send1(api,
1744 LOGD("ret : 0x%x", ret);
1749 int recorder_attr_set_video_encoder_bitrate(recorder_h recorder, int bitrate)
1751 if (recorder == NULL) {
1752 LOGE("NULL pointer handle");
1753 return RECORDER_ERROR_INVALID_PARAMETER;
1756 int ret = RECORDER_ERROR_NONE;
1757 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_SET_VIDEO_ENCODER_BITRATE;
1758 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1760 if (pc->cb_info == NULL) {
1761 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1762 return RECORDER_ERROR_INVALID_PARAMETER;
1764 sock_fd = pc->cb_info->fd;
1768 muse_recorder_msg_send1(api,
1773 LOGD("ret : 0x%x", ret);
1778 int recorder_attr_get_size_limit(recorder_h recorder, int *kbyte)
1780 if (recorder == NULL) {
1781 LOGE("NULL pointer handle");
1782 return RECORDER_ERROR_INVALID_PARAMETER;
1784 if (kbyte == NULL) {
1785 LOGE("NULL pointer kbyte");
1786 return RECORDER_ERROR_INVALID_PARAMETER;
1788 int ret = RECORDER_ERROR_NONE;
1789 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_GET_SIZE_LIMIT;
1790 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1792 if (pc->cb_info == NULL) {
1793 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1794 return RECORDER_ERROR_INVALID_PARAMETER;
1796 sock_fd = pc->cb_info->fd;
1801 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1802 if (ret == RECORDER_ERROR_NONE) {
1803 muse_recorder_msg_get(get_kbyte, pc->cb_info->recvMsg);
1806 LOGD("ret : 0x%x", ret);
1811 int recorder_attr_get_time_limit(recorder_h recorder, int *second)
1813 if (recorder == NULL) {
1814 LOGE("NULL pointer handle");
1815 return RECORDER_ERROR_INVALID_PARAMETER;
1817 if (second == NULL) {
1818 LOGE("NULL pointer second");
1819 return RECORDER_ERROR_INVALID_PARAMETER;
1821 int ret = RECORDER_ERROR_NONE;
1822 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_GET_TIME_LIMIT;
1823 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1825 if (pc->cb_info == NULL) {
1826 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1827 return RECORDER_ERROR_INVALID_PARAMETER;
1829 sock_fd = pc->cb_info->fd;
1834 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1835 if (ret == RECORDER_ERROR_NONE) {
1836 muse_recorder_msg_get(get_second, pc->cb_info->recvMsg);
1837 *second = get_second;
1839 LOGD("ret : 0x%x", ret);
1844 int recorder_attr_get_audio_device(recorder_h recorder, recorder_audio_device_e *device)
1846 if (recorder == NULL) {
1847 LOGE("NULL pointer handle");
1848 return RECORDER_ERROR_INVALID_PARAMETER;
1850 if (device == NULL) {
1851 LOGE("NULL pointer device");
1852 return RECORDER_ERROR_INVALID_PARAMETER;
1854 int ret = RECORDER_ERROR_NONE;
1855 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_GET_AUDIO_DEVICE;
1856 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1858 if (pc->cb_info == NULL) {
1859 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1860 return RECORDER_ERROR_INVALID_PARAMETER;
1862 sock_fd = pc->cb_info->fd;
1867 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1868 if (ret == RECORDER_ERROR_NONE) {
1869 muse_recorder_msg_get(get_device, pc->cb_info->recvMsg);
1870 *device = (recorder_audio_device_e)get_device;
1873 LOGD("ret : 0x%x", ret);
1878 int recorder_attr_get_audio_samplerate(recorder_h recorder, int *samplerate)
1880 if (recorder == NULL) {
1881 LOGE("NULL pointer handle");
1882 return RECORDER_ERROR_INVALID_PARAMETER;
1884 if (samplerate == NULL) {
1885 LOGE("NULL pointer handle");
1886 return RECORDER_ERROR_INVALID_PARAMETER;
1888 int ret = RECORDER_ERROR_NONE;
1889 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_GET_AUDIO_SAMPLERATE;
1890 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1892 if (pc->cb_info == NULL) {
1893 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1894 return RECORDER_ERROR_INVALID_PARAMETER;
1896 sock_fd = pc->cb_info->fd;
1901 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1902 if (ret == RECORDER_ERROR_NONE) {
1903 muse_recorder_msg_get(get_samplerate, pc->cb_info->recvMsg);
1904 *samplerate = get_samplerate;
1906 LOGD("ret : 0x%x, get_samplerate : %d", ret, get_samplerate);
1911 int recorder_attr_get_audio_encoder_bitrate(recorder_h recorder, int *bitrate)
1913 if (recorder == NULL) {
1914 LOGE("NULL pointer handle");
1915 return RECORDER_ERROR_INVALID_PARAMETER;
1917 if (bitrate == NULL) {
1918 LOGE("NULL pointer");
1919 return RECORDER_ERROR_INVALID_PARAMETER;
1921 int ret = RECORDER_ERROR_NONE;
1922 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_GET_AUDIO_ENCODER_BITRATE;
1923 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1925 if (pc->cb_info == NULL) {
1926 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1927 return RECORDER_ERROR_INVALID_PARAMETER;
1929 sock_fd = pc->cb_info->fd;
1931 pc->cb_info->activating[api] = 0;
1935 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1936 if (ret == RECORDER_ERROR_NONE) {
1937 muse_recorder_msg_get(get_bitrate, pc->cb_info->recvMsg);
1938 *bitrate = get_bitrate;
1940 LOGD("ret : 0x%x", ret);
1945 int recorder_attr_get_video_encoder_bitrate(recorder_h recorder, int *bitrate)
1947 if (recorder == NULL) {
1948 LOGE("NULL pointer handle");
1949 return RECORDER_ERROR_INVALID_PARAMETER;
1951 if (bitrate == NULL) {
1952 LOGE("NULL pointer");
1953 return RECORDER_ERROR_INVALID_PARAMETER;
1955 int ret = RECORDER_ERROR_NONE;
1956 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_GET_VIDEO_ENCODER_BITRATE;
1957 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1959 if (pc->cb_info == NULL) {
1960 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1961 return RECORDER_ERROR_INVALID_PARAMETER;
1963 sock_fd = pc->cb_info->fd;
1968 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
1969 if (ret == RECORDER_ERROR_NONE) {
1970 muse_recorder_msg_get(get_bitrate, pc->cb_info->recvMsg);
1971 *bitrate = get_bitrate;
1973 LOGD("ret : 0x%x", ret);
1978 int recorder_foreach_supported_audio_encoder(recorder_h recorder, recorder_supported_audio_encoder_cb foreach_cb, void *user_data)
1980 if( recorder == NULL || foreach_cb == NULL){
1981 LOGE("INVALID_PARAMETER(0x%08x)", RECORDER_ERROR_INVALID_PARAMETER);
1982 return RECORDER_ERROR_INVALID_PARAMETER;
1984 int ret = RECORDER_ERROR_NONE;
1986 recorder_cli_s *pc = (recorder_cli_s *)recorder;
1987 muse_recorder_api_e api = MUSE_RECORDER_API_FOREACH_SUPPORTED_AUDIO_ENCODER;
1989 LOGD("Enter, handle :%x", pc->remote_handle);
1992 if (pc->cb_info == NULL) {
1993 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
1994 return RECORDER_ERROR_INVALID_PARAMETER;
1996 sock_fd = pc->cb_info->fd;
1997 pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_AUDIO_ENCODER] = foreach_cb;
1998 pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_AUDIO_ENCODER] = user_data;
2000 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
2001 LOGD("ret : 0x%x", ret);
2006 int recorder_foreach_supported_video_encoder(recorder_h recorder, recorder_supported_video_encoder_cb foreach_cb, void *user_data)
2008 if( recorder == NULL || foreach_cb == NULL){
2009 LOGE("INVALID_PARAMETER(0x%08x)", RECORDER_ERROR_INVALID_PARAMETER);
2010 return RECORDER_ERROR_INVALID_PARAMETER;
2012 int ret = RECORDER_ERROR_NONE;
2014 recorder_cli_s *pc = (recorder_cli_s *)recorder;
2015 muse_recorder_api_e api = MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_ENCODER;
2017 LOGD("Enter, handle :%x", pc->remote_handle);
2020 if (pc->cb_info == NULL) {
2021 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
2022 return RECORDER_ERROR_INVALID_PARAMETER;
2024 sock_fd = pc->cb_info->fd;
2025 pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_VIDEO_ENCODER] = foreach_cb;
2026 pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_VIDEO_ENCODER] = user_data;
2028 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
2029 LOGD("ret : 0x%x", ret);
2034 int recorder_attr_set_mute(recorder_h recorder, bool enable)
2036 if (recorder == NULL) {
2037 LOGE("NULL pointer handle");
2038 return RECORDER_ERROR_INVALID_PARAMETER;
2040 int ret = RECORDER_ERROR_NONE;
2041 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_SET_MUTE;
2042 recorder_cli_s *pc = (recorder_cli_s *)recorder;
2044 if (pc->cb_info == NULL) {
2045 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
2046 return RECORDER_ERROR_INVALID_PARAMETER;
2048 sock_fd = pc->cb_info->fd;
2049 int set_enable = (int)enable;
2050 pc->cb_info->activating[api] = 0;
2054 muse_recorder_msg_send1(api,
2059 LOGD("ret : 0x%x", ret);
2064 bool recorder_attr_is_muted(recorder_h recorder)
2066 if (recorder == NULL) {
2067 LOGE("NULL pointer handle");
2070 int ret = RECORDER_ERROR_NONE;
2071 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_IS_MUTED;
2072 recorder_cli_s *pc = (recorder_cli_s *)recorder;
2074 if (pc->cb_info == NULL) {
2075 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
2076 return RECORDER_ERROR_INVALID_PARAMETER;
2078 sock_fd = pc->cb_info->fd;
2082 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
2083 LOGD("ret : 0x%x", ret);
2088 int recorder_attr_set_recording_motion_rate(recorder_h recorder, double rate)
2090 if (recorder == NULL) {
2091 LOGE("NULL pointer handle");
2092 return RECORDER_ERROR_INVALID_PARAMETER;
2094 int ret = RECORDER_ERROR_NONE;
2095 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_SET_RECORDING_MOTION_RATE;
2096 recorder_cli_s *pc = (recorder_cli_s *)recorder;
2098 if (pc->cb_info == NULL) {
2099 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
2100 return RECORDER_ERROR_INVALID_PARAMETER;
2102 sock_fd = pc->cb_info->fd;
2104 LOGD("ENTER - %.20lf", rate);
2106 muse_recorder_msg_send1(api,
2112 LOGD("ret : 0x%x", ret);
2118 int recorder_attr_get_recording_motion_rate(recorder_h recorder, double *rate)
2120 if (recorder == NULL) {
2121 LOGE("NULL pointer handle");
2122 return RECORDER_ERROR_INVALID_PARAMETER;
2125 LOGE("rate is NULL");
2126 return RECORDER_ERROR_INVALID_PARAMETER;
2128 int ret = RECORDER_ERROR_NONE;
2129 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_GET_RECORDING_MOTION_RATE;
2130 recorder_cli_s *pc = (recorder_cli_s *)recorder;
2132 if (pc->cb_info == NULL) {
2133 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
2134 return RECORDER_ERROR_INVALID_PARAMETER;
2136 sock_fd = pc->cb_info->fd;
2141 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
2142 if (ret == RECORDER_ERROR_NONE) {
2143 muse_recorder_msg_get_double(get_rate, pc->cb_info->recvMsg);
2146 LOGD("ret : 0x%x - rate %.20lf", ret, *rate);
2151 int recorder_attr_set_audio_channel(recorder_h recorder, int channel_count)
2153 if (recorder == NULL) {
2154 LOGE("NULL pointer handle");
2155 return RECORDER_ERROR_INVALID_PARAMETER;
2157 if (channel_count < 1) {
2158 LOGE("invalid channel %d", channel_count);
2159 return RECORDER_ERROR_INVALID_PARAMETER;
2161 int ret = RECORDER_ERROR_NONE;
2162 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_SET_AUDIO_CHANNEL;
2163 recorder_cli_s *pc = (recorder_cli_s *)recorder;
2165 if (pc->cb_info == NULL) {
2166 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
2167 return RECORDER_ERROR_INVALID_PARAMETER;
2169 sock_fd = pc->cb_info->fd;
2173 muse_recorder_msg_send1(api,
2177 INT, channel_count);
2178 LOGD("ret : 0x%x", ret);
2183 int recorder_attr_get_audio_channel(recorder_h recorder, int *channel_count)
2185 if (recorder == NULL) {
2186 LOGE("NULL pointer handle");
2187 return RECORDER_ERROR_INVALID_PARAMETER;
2189 if (channel_count == NULL) {
2190 LOGE("channel_count is NULL");
2191 return RECORDER_ERROR_INVALID_PARAMETER;
2193 int ret = RECORDER_ERROR_NONE;
2194 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_GET_AUDIO_CHANNEL;
2195 recorder_cli_s *pc = (recorder_cli_s *)recorder;
2197 if (pc->cb_info == NULL) {
2198 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
2199 return RECORDER_ERROR_INVALID_PARAMETER;
2201 sock_fd = pc->cb_info->fd;
2202 int get_channel_count;
2206 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
2207 if (ret == RECORDER_ERROR_NONE) {
2208 muse_recorder_msg_get(get_channel_count, pc->cb_info->recvMsg);
2209 *channel_count = get_channel_count;
2211 LOGD("ret : 0x%x", ret);
2216 int recorder_attr_set_orientation_tag(recorder_h recorder, recorder_rotation_e orientation)
2218 if (recorder == NULL) {
2219 LOGE("NULL pointer handle");
2220 return RECORDER_ERROR_INVALID_PARAMETER;
2222 if (orientation > RECORDER_ROTATION_270) {
2223 LOGE("invalid orientation %d", orientation);
2224 return RECORDER_ERROR_INVALID_PARAMETER;
2226 int ret = RECORDER_ERROR_NONE;
2227 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_SET_ORIENTATION_TAG;
2228 recorder_cli_s *pc = (recorder_cli_s *)recorder;
2230 if (pc->cb_info == NULL) {
2231 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
2232 return RECORDER_ERROR_INVALID_PARAMETER;
2234 sock_fd = pc->cb_info->fd;
2235 int set_orientation = (int)orientation;
2239 muse_recorder_msg_send1(api,
2243 INT, set_orientation);
2244 LOGD("ret : 0x%x", ret);
2249 int recorder_attr_get_orientation_tag(recorder_h recorder, recorder_rotation_e *orientation)
2251 if (recorder == NULL) {
2252 LOGE("NULL pointer handle");
2253 return RECORDER_ERROR_INVALID_PARAMETER;
2255 if (orientation == NULL) {
2256 LOGE("orientation is NULL");
2257 return RECORDER_ERROR_INVALID_PARAMETER;
2259 int ret = RECORDER_ERROR_NONE;
2260 muse_recorder_api_e api = MUSE_RECORDER_API_ATTR_GET_ORIENTATION_TAG;
2261 recorder_cli_s *pc = (recorder_cli_s *)recorder;
2263 if (pc->cb_info == NULL) {
2264 LOGE("INVALID_PARAMETER(0x%08x)",RECORDER_ERROR_INVALID_PARAMETER);
2265 return RECORDER_ERROR_INVALID_PARAMETER;
2267 sock_fd = pc->cb_info->fd;
2268 int get_orientation;
2272 muse_recorder_msg_send(api, sock_fd, pc->cb_info, ret);
2273 if (ret == RECORDER_ERROR_NONE) {
2274 muse_recorder_msg_get(get_orientation, pc->cb_info->recvMsg);
2275 *orientation = (recorder_rotation_e)get_orientation;
2277 LOGD("ret : 0x%x", ret);