1 /*
2 * Copyright (c) 2022-2022 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_type_translate.h"
17 #include <map>
18 #include <utility>
19 #include "common/status.h"
20 #include "audio_errors.h"
21 #include "errors.h"
22
23 namespace {
24 using namespace OHOS;
25 const std::pair<AudioStandard::AudioSamplingRate, int32_t> g_auSampleRateMap[] = {
26 {AudioStandard::SAMPLE_RATE_8000, 8000},
27 {AudioStandard::SAMPLE_RATE_11025, 11025},
28 {AudioStandard::SAMPLE_RATE_12000, 12000},
29 {AudioStandard::SAMPLE_RATE_16000, 16000},
30 {AudioStandard::SAMPLE_RATE_22050, 22050},
31 {AudioStandard::SAMPLE_RATE_24000, 24000},
32 {AudioStandard::SAMPLE_RATE_32000, 32000},
33 {AudioStandard::SAMPLE_RATE_44100, 44100},
34 {AudioStandard::SAMPLE_RATE_48000, 48000},
35 {AudioStandard::SAMPLE_RATE_64000, 64000},
36 {AudioStandard::SAMPLE_RATE_96000, 96000},
37 };
38 const std::pair<AudioStandard::AudioSampleFormat, Media::Plugins::AudioSampleFormat> g_aduFmtMap[] = {
39 {AudioStandard::SAMPLE_U8, Media::Plugins::AudioSampleFormat::SAMPLE_U8},
40 {AudioStandard::SAMPLE_S16LE, Media::Plugins::AudioSampleFormat::SAMPLE_S16LE},
41 {AudioStandard::SAMPLE_S24LE, Media::Plugins::AudioSampleFormat::SAMPLE_S24LE},
42 {AudioStandard::SAMPLE_S32LE, Media::Plugins::AudioSampleFormat::SAMPLE_S32LE}
43 };
44 const std::pair<AudioStandard::AudioChannel, int32_t> g_auChannelsMap[] = {
45 {AudioStandard::MONO, 1},
46 {AudioStandard::STEREO, 2},
47 };
48 }
49
50 namespace OHOS {
51 namespace Media {
52 namespace AudioCaptureModule {
53
SampleRateNum2Enum(int32_t numVal,OHOS::AudioStandard::AudioSamplingRate & enumVal)54 bool SampleRateNum2Enum(int32_t numVal, OHOS::AudioStandard::AudioSamplingRate &enumVal)
55 {
56 for (const auto& item : g_auSampleRateMap) {
57 if (item.second == numVal) {
58 enumVal = item.first;
59 return true;
60 }
61 }
62 return false;
63 }
64
ModuleFmt2SampleFmt(Plugins::AudioSampleFormat pFmt,OHOS::AudioStandard::AudioSampleFormat & aFmt)65 bool ModuleFmt2SampleFmt(Plugins::AudioSampleFormat pFmt, OHOS::AudioStandard::AudioSampleFormat &aFmt)
66 {
67 for (const auto& item : g_aduFmtMap) {
68 if (item.second == pFmt) {
69 aFmt = item.first;
70 return true;
71 }
72 }
73 return false;
74 }
75
ChannelNumNum2Enum(int32_t numVal,OHOS::AudioStandard::AudioChannel & enumVal)76 bool ChannelNumNum2Enum(int32_t numVal, OHOS::AudioStandard::AudioChannel &enumVal)
77 {
78 for (const auto& item : g_auChannelsMap) {
79 if (item.second == numVal) {
80 enumVal = item.first;
81 return true;
82 }
83 }
84 return false;
85 }
86
Error2Status(int32_t err)87 Status Error2Status(int32_t err)
88 {
89 const static std::unordered_map<int32_t, Status> transMap = {
90 {OHOS::AudioStandard::SUCCESS, Status::OK},
91 {OHOS::ERR_OK, Status::OK},
92 {OHOS::ERR_INVALID_OPERATION, Status::ERROR_WRONG_STATE},
93 {OHOS::ERR_NO_MEMORY, Status::ERROR_NO_MEMORY},
94 {OHOS::ERR_INVALID_VALUE, Status::ERROR_INVALID_PARAMETER},
95 {OHOS::ERR_NAME_NOT_FOUND, Status::ERROR_NOT_EXISTED},
96 {OHOS::ERR_PERMISSION_DENIED, Status::ERROR_PERMISSION_DENIED},
97 {OHOS::ERR_ENOUGH_DATA, Status::ERROR_NOT_ENOUGH_DATA},
98 {OHOS::ERR_WOULD_BLOCK, Status::ERROR_AGAIN},
99 {OHOS::ERR_TIMED_OUT, Status::ERROR_TIMED_OUT},
100 {OHOS::ERR_ALREADY_EXISTS, Status::ERROR_UNKNOWN},
101 {OHOS::ERR_DEAD_OBJECT, Status::ERROR_UNKNOWN},
102 {OHOS::ERR_NO_INIT, Status::ERROR_UNKNOWN},
103 {OHOS::ERR_OVERFLOW, Status::ERROR_UNKNOWN},
104 };
105 if (transMap.count(err) != 0) {
106 return transMap.at(err);
107 }
108 return Status::ERROR_UNKNOWN;
109 }
110 } // namespace AudioCaptureModule
111 } // namespace Media
112 } // namespace OHOS