1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 /**
17 * @addtogroup Audio
18 * @{
19 *
20 * @brief Test audio-related APIs, including custom data types and functions for loading drivers,
21 * accessing a driver ADM interface lib.
22 *
23 * @since 1.0
24 * @version 1.0
25 */
26
27 /**
28 * @file audio_lib_common.h
29 *
30 * @brief Declares APIs for operations related to the audio ADM interface lib.
31 *
32 * @since 1.0
33 * @version 1.0
34 */
35
36 #include "audio_lib_common.h"
37
38 using namespace std;
39
40 namespace HMOS {
41 namespace Audio {
InitRenderFramepara(struct AudioFrameRenderMode & frameRenderMode)42 int32_t InitRenderFramepara(struct AudioFrameRenderMode& frameRenderMode)
43 {
44 InitAttrs(frameRenderMode.attrs);
45 frameRenderMode.frames = AUDIO_FORMAT_PCM_16_BIT;
46 frameRenderMode.mode = AUDIO_CHANNEL_BOTH_RIGHT;
47 frameRenderMode.periodSize = G_PERIODSIZE;
48 frameRenderMode.periodCount = G_PERIODCOUNT;
49 frameRenderMode.byteRate = G_BYTERATE;
50 frameRenderMode.bufferFrameSize = G_BUFFERFRAMESIZE;
51 frameRenderMode.bufferSize = G_BUFFERSIZE1;
52 frameRenderMode.buffer = NULL;
53 frameRenderMode.silenceThreshold = frameRenderMode.periodSize * frameRenderMode.periodCount;
54 frameRenderMode.silenceSize = G_SILENCETHRESHOLE;
55 frameRenderMode.startThreshold = frameRenderMode.periodSize;
56 frameRenderMode.stopThreshold = frameRenderMode.periodSize * frameRenderMode.periodCount;
57 return HDF_SUCCESS;
58 }
59
InitHwCaptureFramepara(struct AudioFrameCaptureMode & frameCaptureMode)60 int32_t InitHwCaptureFramepara(struct AudioFrameCaptureMode& frameCaptureMode)
61 {
62 InitAttrs(frameCaptureMode.attrs);
63 frameCaptureMode.mode = AUDIO_CHANNEL_BOTH_RIGHT;
64 frameCaptureMode.byteRate = G_BYTERATE;
65 frameCaptureMode.periodSize = G_PERIODSIZE;
66 frameCaptureMode.periodCount = G_PERIODCOUNT;
67 frameCaptureMode.startThreshold = frameCaptureMode.periodSize;
68 frameCaptureMode.stopThreshold = frameCaptureMode.periodSize * frameCaptureMode.periodCount;
69 frameCaptureMode.silenceThreshold = frameCaptureMode.periodSize * frameCaptureMode.periodCount;
70 frameCaptureMode.silenceSize = G_SILENCETHRESHOLE;
71 frameCaptureMode.buffer = NULL;
72 frameCaptureMode.bufferFrameSize = G_BUFFERFRAMESIZE;
73 frameCaptureMode.bufferSize = G_BUFFERSIZE1;
74 return HDF_SUCCESS;
75 }
76
InitHwRenderMode(struct AudioHwRenderMode & renderMode)77 int32_t InitHwRenderMode(struct AudioHwRenderMode& renderMode)
78 {
79 renderMode.hwInfo.card = AUDIO_SERVICE_IN;
80 renderMode.hwInfo.portDescript.dir = PORT_OUT;
81 renderMode.hwInfo.portDescript.portId = G_PORTID;
82 renderMode.hwInfo.portDescript.portName = "AOP";
83 renderMode.hwInfo.deviceDescript.portId = G_PORTID;
84 renderMode.hwInfo.deviceDescript.pins = PIN_OUT_SPEAKER;
85 renderMode.hwInfo.deviceDescript.desc = nullptr;
86 return HDF_SUCCESS;
87 }
88
InitHwCaptureMode(struct AudioHwCaptureMode & captureMode)89 int32_t InitHwCaptureMode(struct AudioHwCaptureMode& captureMode)
90 {
91 captureMode.hwInfo.card = AUDIO_SERVICE_IN;
92 captureMode.hwInfo.portDescript.dir = PORT_IN;
93 captureMode.hwInfo.portDescript.portId = 0;
94 captureMode.hwInfo.portDescript.portName = "AIP";
95 captureMode.hwInfo.deviceDescript.portId = 0;
96 captureMode.hwInfo.deviceDescript.pins = PIN_IN_MIC;
97 captureMode.hwInfo.deviceDescript.desc = nullptr;
98 return HDF_SUCCESS;
99 }
100
InitHwRender(struct AudioHwRender * & hwRender,const std::string adapterNameCase)101 uint32_t InitHwRender(struct AudioHwRender *&hwRender, const std::string adapterNameCase)
102 {
103 int ret = -1;
104 if (hwRender == nullptr) {
105 return HDF_FAILURE;
106 }
107 if (InitHwRenderMode(hwRender->renderParam.renderMode) ||
108 InitRenderFramepara(hwRender->renderParam.frameRenderMode)) {
109 return HDF_FAILURE;
110 }
111 hwRender->renderParam.renderMode.hwInfo.card = AUDIO_SERVICE_IN;
112 ret = strcpy_s(hwRender->renderParam.renderMode.hwInfo.adapterName,
113 NAME_LEN, adapterNameCase.c_str());
114 if (ret < 0) {
115 return HDF_FAILURE;
116 }
117 return HDF_SUCCESS;
118 }
119
InitHwCapture(struct AudioHwCapture * & hwCapture,const std::string adapterNameCase)120 uint32_t InitHwCapture(struct AudioHwCapture *&hwCapture, const std::string adapterNameCase)
121 {
122 int ret = -1;
123 if (hwCapture == nullptr) {
124 return HDF_FAILURE;
125 }
126 if (InitHwCaptureMode(hwCapture->captureParam.captureMode) ||
127 InitHwCaptureFramepara(hwCapture->captureParam.frameCaptureMode)) {
128 return HDF_FAILURE;
129 }
130 ret = strcpy_s(hwCapture->captureParam.captureMode.hwInfo.adapterName,
131 NAME_LEN, adapterNameCase.c_str());
132 if (ret < 0) {
133 return HDF_FAILURE;
134 }
135 return HDF_SUCCESS;
136 }
137 }
138 }