tizen 2.3 release
[adaptation/ap_samsung/audio-hal-e4x12.git] / tizen-audio.c
old mode 100644 (file)
new mode 100755 (executable)
index 6e1c3ce..db1638a
@@ -3,8 +3,6 @@
  *
  * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
  *
- * Contact: Hyunseok Lee <hs7388.lee@samsung.com>
- *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -30,7 +28,7 @@ int audio_get_revision (void)
     return AUDIO_REVISION;
 }
 
-audio_return_t audio_init (void **userdata)
+audio_return_t audio_init (void **userdata, void *platform_data)
 {
     audio_mgr_t *am;
     audio_return_t ret = AUDIO_RET_OK;
@@ -39,6 +37,8 @@ audio_return_t audio_init (void **userdata)
         AUDIO_LOG_ERROR("am malloc failed");
         return AUDIO_ERR_RESOURCE;
     }
+    am->platform_data = platform_data;
+    memset(&am->cb_intf, 0, sizeof(audio_cb_interface_t));
     if (AUDIO_IS_ERROR((ret = _audio_session_init(am)))) {
         AUDIO_LOG_ERROR("session init failed");
         goto error_exit;
@@ -51,6 +51,10 @@ audio_return_t audio_init (void **userdata)
         AUDIO_LOG_ERROR("stream init failed");
         goto error_exit;
     }
+    if (AUDIO_IS_ERROR((ret = _audio_ucm_init(am)))) {
+        AUDIO_LOG_ERROR("ucm init failed");
+        goto error_exit;
+    }
     if (AUDIO_IS_ERROR((ret = _audio_util_init(am)))) {
         AUDIO_LOG_ERROR("mixer init failed");
         goto error_exit;
@@ -74,6 +78,7 @@ audio_return_t audio_deinit (void **userdata)
         _audio_session_deinit(am);
         _audio_device_deinit(am);
         _audio_stream_deinit(am);
+        _audio_ucm_deinit(am);
         _audio_util_deinit(am);
         free(am);
         *userdata = NULL;
@@ -82,32 +87,19 @@ audio_return_t audio_deinit (void **userdata)
     return AUDIO_RET_OK;
 }
 
+/* this function is only called from audio tuning app for updating volume */
 audio_return_t audio_reset (void **userdata)
 {
     audio_mgr_t *am = (audio_mgr_t *)*userdata;
     audio_return_t ret = AUDIO_RET_OK;
 
     if (am) {
-        _audio_device_deinit(am);
         _audio_stream_deinit(am);
-        _audio_util_deinit(am);
 
-        if (AUDIO_IS_ERROR((ret = _audio_session_init(am)))) {
-            AUDIO_LOG_ERROR("session init failed");
-            goto error_exit;
-        }
-        if (AUDIO_IS_ERROR((ret = _audio_device_init(am)))) {
-            AUDIO_LOG_ERROR("device init failed");
-            goto error_exit;
-        }
         if (AUDIO_IS_ERROR((ret = _audio_stream_init(am)))) {
             AUDIO_LOG_ERROR("stream init failed");
             goto error_exit;
         }
-        if (AUDIO_IS_ERROR((ret = _audio_util_init(am)))) {
-            AUDIO_LOG_ERROR("mixer init failed");
-            goto error_exit;
-        }
     }
 
     return AUDIO_RET_OK;
@@ -119,3 +111,15 @@ error_exit:
 
     return ret;
 }
+
+audio_return_t audio_set_callback (void *userdata, audio_cb_interface_t *cb_interface)
+{
+    audio_mgr_t *am = (audio_mgr_t *)userdata;
+
+    if (am) {
+        memcpy(&am->cb_intf, cb_interface, sizeof(audio_cb_interface_t));
+        return AUDIO_RET_OK;
+    } else {
+        return AUDIO_ERR_PARAMETER;
+    }
+}