Card and device arguments are added to pcm open API
[platform/adaptation/nexell/audio-hal-alc5658.git] / tizen-audio.c
1 /*
2  * audio-hal
3  *
4  * Copyright (c) 2015 - 2016 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19
20 #ifdef HAVE_CONFIG_H
21 #include <config.h>
22 #endif
23
24 #include "tizen-audio-internal.h"
25
26 audio_return_t audio_init(void **audio_handle)
27 {
28     audio_hal_t *ah;
29     audio_return_t ret = AUDIO_RET_OK;
30
31     AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
32
33     if (!(ah = malloc(sizeof(audio_hal_t)))) {
34         AUDIO_LOG_ERROR("failed to malloc()");
35         return AUDIO_ERR_RESOURCE;
36     }
37     if ((ret = _audio_volume_init(ah))) {
38         AUDIO_LOG_ERROR("failed to _audio_volume_init(), ret(0x%x)", ret);
39         goto error_exit;
40     }
41     if ((ret = _audio_routing_init(ah))) {
42         AUDIO_LOG_ERROR("failed to _audio_routing_init(), ret(0x%x)", ret);
43         goto error_exit;
44     }
45     if ((ret = _audio_stream_init(ah))) {
46         AUDIO_LOG_ERROR("failed to _audio_stream_init(), ret(0x%x)", ret);
47         goto error_exit;
48     }
49     if ((ret = _audio_pcm_init(ah))) {
50         AUDIO_LOG_ERROR("failed to _audio_pcm_init(), ret(0x%x)", ret);
51         goto error_exit;
52     }
53
54     *audio_handle = (void *)ah;
55     return AUDIO_RET_OK;
56
57 error_exit:
58     if (ah)
59         free(ah);
60
61     return ret;
62 }
63
64 audio_return_t audio_deinit(void *audio_handle)
65 {
66     audio_hal_t *ah = (audio_hal_t *)audio_handle;
67
68     AUDIO_RETURN_VAL_IF_FAIL(ah, AUDIO_ERR_PARAMETER);
69
70     _audio_volume_deinit(ah);
71     _audio_routing_deinit(ah);
72     _audio_stream_deinit(ah);
73     _audio_pcm_deinit(ah);
74     free(ah);
75     ah = NULL;
76
77     return AUDIO_RET_OK;
78 }