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 #include "audio_common_test.h"
17 #include "audio_internal.h"
18
19 namespace comfun {
InitPort(struct AudioPort & portIndex)20 int32_t InitPort(struct AudioPort &portIndex)
21 {
22 portIndex.dir = PORT_OUT;
23 portIndex.portId = 1;
24 portIndex.portName = "usb";
25 return HDF_SUCCESS;
26 }
27
InitHwRender(struct AudioHwRender & hwRender,const struct AudioDeviceDescriptor & desc,const struct AudioSampleAttributes & attrs)28 int32_t InitHwRender(struct AudioHwRender &hwRender,
29 const struct AudioDeviceDescriptor &desc, const struct AudioSampleAttributes &attrs)
30 {
31 hwRender.renderParam.renderMode.hwInfo.deviceDescript = desc;
32 hwRender.renderParam.frameRenderMode.attrs = attrs;
33 hwRender.renderParam.renderMode.ctlParam.audioGain.gainMax = 15; // gainMax 15
34 hwRender.renderParam.renderMode.ctlParam.audioGain.gainMin = 0;
35 hwRender.renderParam.frameRenderMode.frames = 0;
36 hwRender.renderParam.frameRenderMode.time.tvNSec = 0;
37 hwRender.renderParam.frameRenderMode.time.tvSec = 0;
38 hwRender.renderParam.frameRenderMode.byteRate = DEFAULT_RENDER_SAMPLING_RATE;
39 hwRender.renderParam.frameRenderMode.periodSize = DEEP_BUFFER_RENDER_PERIOD_SIZE;
40 hwRender.renderParam.frameRenderMode.periodCount = DEEP_BUFFER_RENDER_PERIOD_COUNT;
41 hwRender.renderParam.frameRenderMode.attrs.period = attrs.period;
42 hwRender.renderParam.frameRenderMode.attrs.frameSize = attrs.frameSize;
43 hwRender.renderParam.frameRenderMode.attrs.startThreshold = attrs.startThreshold;
44 hwRender.renderParam.frameRenderMode.attrs.stopThreshold = attrs.stopThreshold;
45 hwRender.renderParam.frameRenderMode.attrs.silenceThreshold = attrs.silenceThreshold;
46 hwRender.renderParam.frameRenderMode.attrs.isBigEndian = attrs.isBigEndian;
47 hwRender.renderParam.frameRenderMode.attrs.isSignedData = attrs.isSignedData;
48 return HDF_SUCCESS;
49 }
50
InitHwCapture(struct AudioHwCapture & hwCapture,const struct AudioDeviceDescriptor & desc,const struct AudioSampleAttributes & attrs)51 int32_t InitHwCapture(struct AudioHwCapture &hwCapture, const struct AudioDeviceDescriptor &desc,
52 const struct AudioSampleAttributes &attrs)
53 {
54 hwCapture.captureParam.captureMode.hwInfo.deviceDescript = desc;
55 hwCapture.captureParam.frameCaptureMode.attrs = attrs;
56 hwCapture.captureParam.captureMode.ctlParam.audioGain.gainMax = 15; // gainMax 15
57 hwCapture.captureParam.captureMode.ctlParam.audioGain.gainMin = 0;
58 hwCapture.captureParam.frameCaptureMode.frames = 0;
59 hwCapture.captureParam.frameCaptureMode.time.tvNSec = 0;
60 hwCapture.captureParam.frameCaptureMode.time.tvSec = 0;
61 hwCapture.captureParam.frameCaptureMode.byteRate = DEFAULT_RENDER_SAMPLING_RATE;
62 hwCapture.captureParam.frameCaptureMode.periodSize = DEEP_BUFFER_RENDER_PERIOD_SIZE;
63 hwCapture.captureParam.frameCaptureMode.periodCount = DEEP_BUFFER_RENDER_PERIOD_COUNT;
64 hwCapture.captureParam.frameCaptureMode.attrs.period = attrs.period;
65 hwCapture.captureParam.frameCaptureMode.attrs.frameSize = attrs.frameSize;
66 hwCapture.captureParam.frameCaptureMode.attrs.startThreshold = attrs.startThreshold;
67 hwCapture.captureParam.frameCaptureMode.attrs.stopThreshold = attrs.stopThreshold;
68 hwCapture.captureParam.frameCaptureMode.attrs.silenceThreshold = attrs.silenceThreshold;
69 hwCapture.captureParam.frameCaptureMode.attrs.isBigEndian = attrs.isBigEndian;
70 hwCapture.captureParam.frameCaptureMode.attrs.isSignedData = attrs.isSignedData;
71 return HDF_SUCCESS;
72 }
73
InitAttrsCommon(struct AudioSampleAttributes & attrs)74 void InitAttrsCommon(struct AudioSampleAttributes &attrs)
75 {
76 /* Initialization of audio parameters for playback */
77 attrs.format = AUDIO_FORMAT_PCM_16_BIT;
78 attrs.channelCount = AUDIO_CHANNELCOUNT;
79 attrs.sampleRate = AUDIO_SAMPLE_RATE_48K;
80 attrs.interleaved = 0;
81 attrs.type = AUDIO_IN_MEDIA;
82 attrs.period = DEEP_BUFFER_RENDER_PERIOD_SIZE;
83 /* PERIOD_SIZE * 16 * attrs.channelCount / 8 */
84 attrs.frameSize = 16 * attrs.channelCount / 8;
85 attrs.isBigEndian = false;
86 attrs.isSignedData = true;
87 /* DEEP_BUFFER_RENDER_PERIOD_SIZE / (16 * attrs->channelCount / 8) */
88 attrs.startThreshold = DEEP_BUFFER_RENDER_PERIOD_SIZE / (16 * attrs.channelCount / 8);
89 attrs.stopThreshold = INT_32_MAX;
90 }
91
InitAttrs(struct AudioSampleAttributes & attrs)92 int32_t InitAttrs(struct AudioSampleAttributes &attrs)
93 {
94 InitAttrsCommon(attrs);
95 attrs.silenceThreshold = 0;
96 return HDF_SUCCESS;
97 }
98
InitDevDesc(struct AudioDeviceDescriptor & devDesc)99 int32_t InitDevDesc(struct AudioDeviceDescriptor &devDesc)
100 {
101 /* Initialization of audio parameters for playback */
102 devDesc.portId = 0;
103 devDesc.pins = PIN_OUT_SPEAKER;
104 devDesc.desc = NULL;
105 return HDF_SUCCESS;
106 }
107
InitAttrsCapture(struct AudioSampleAttributes & attrs)108 int32_t InitAttrsCapture(struct AudioSampleAttributes &attrs)
109 {
110 InitAttrsCommon(attrs);
111 /* 16 * 1024 */
112 attrs.silenceThreshold = 16 * 1024;
113 return HDF_SUCCESS;
114 }
115
InitDevDescCapture(struct AudioDeviceDescriptor & devDesc)116 int32_t InitDevDescCapture(struct AudioDeviceDescriptor &devDesc)
117 {
118 /* Initialization of audio parameters for playback */
119 devDesc.portId = 0;
120 devDesc.pins = PIN_IN_MIC;
121 devDesc.desc = NULL;
122 return HDF_SUCCESS;
123 }
124
AudioRenderCallbackUtTest(enum AudioCallbackType type,void * reserved,void * cookie)125 int32_t AudioRenderCallbackUtTest(enum AudioCallbackType type, void *reserved, void *cookie)
126 {
127 (void)reserved;
128 (void)cookie;
129 switch (type) {
130 case AUDIO_NONBLOCK_WRITE_COMPELETED:
131 return HDF_SUCCESS;
132 case AUDIO_RENDER_FULL:
133 return HDF_SUCCESS;
134 case AUDIO_FLUSH_COMPLETED:
135 return HDF_SUCCESS;
136 case AUDIO_ERROR_OCCUR:
137 return HDF_FAILURE;
138 case AUDIO_DRAIN_COMPELETED:
139 return HDF_FAILURE;
140 default:
141 return HDF_FAILURE;
142 }
143 return HDF_FAILURE;
144 }
145 }