1 /* 2 * Copyright (c) 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 #ifndef OHOS_DAUDIO_AUDIO_PARAM_H 17 #define OHOS_DAUDIO_AUDIO_PARAM_H 18 19 #include <string> 20 21 namespace OHOS { 22 namespace DistributedHardware { 23 typedef enum { 24 SAMPLE_RATE_8000 = 8000, 25 SAMPLE_RATE_11025 = 11025, 26 SAMPLE_RATE_12000 = 12000, 27 SAMPLE_RATE_16000 = 16000, 28 SAMPLE_RATE_22050 = 22050, 29 SAMPLE_RATE_24000 = 24000, 30 SAMPLE_RATE_32000 = 32000, 31 SAMPLE_RATE_44100 = 44100, 32 SAMPLE_RATE_48000 = 48000, 33 SAMPLE_RATE_64000 = 64000, 34 SAMPLE_RATE_96000 = 96000 35 } AudioSampleRate; 36 37 typedef enum { 38 SOURCE_TYPE_INVALID = -1, 39 SOURCE_TYPE_MIC, 40 SOURCE_TYPE_VOICE_CALL = 4, 41 SOURCE_TYPE_VOICE_COMMUNICATION = 7 42 } SourceType; 43 44 typedef enum { 45 MONO = 1, 46 STEREO = 2 47 } AudioChannel; 48 49 typedef enum { 50 SAMPLE_U8 = 0, 51 SAMPLE_S16LE = 1, 52 SAMPLE_S24LE = 2, 53 SAMPLE_S32LE = 3, 54 SAMPLE_F32LE = 4, 55 INVALID_WIDTH = -1 56 } AudioSampleFormat; 57 58 typedef enum { 59 AUDIO_CODEC_AAC = 0, 60 AUDIO_CODEC_FLAC = 1, 61 AUDIO_CODEC_AAC_EN = 2, 62 AUDIO_CODEC_OPUS = 3 63 } AudioCodecType; 64 65 typedef enum { 66 CONTENT_TYPE_UNKNOWN = 0, 67 CONTENT_TYPE_SPEECH = 1, 68 CONTENT_TYPE_MUSIC = 2, 69 CONTENT_TYPE_MOVIE = 3, 70 CONTENT_TYPE_SONIFICATION = 4, 71 CONTENT_TYPE_RINGTONE = 5 72 } ContentType; 73 74 typedef enum { 75 STREAM_USAGE_UNKNOWN = 0, 76 STREAM_USAGE_MEDIA = 1, 77 STREAM_USAGE_VOICE_COMMUNICATION = 2, 78 STREAM_USAGE_VOICE_ASSISTANT = 4, 79 STREAM_USAGE_MMAP = 5, 80 STREAM_USAGE_NOTIFICATION_RINGTONE = 6 81 } StreamUsage; 82 83 typedef enum { 84 NORMAL_MODE = 0, 85 MMAP_MODE = 1, 86 } PortOperationMode; 87 88 typedef struct AudioCommonParam { 89 AudioSampleRate sampleRate = SAMPLE_RATE_8000; 90 AudioChannel channelMask = MONO; 91 AudioSampleFormat bitFormat = SAMPLE_U8; 92 AudioCodecType codecType = AUDIO_CODEC_AAC; 93 uint32_t frameSize = 0; 94 } AudioCommonParam; 95 96 typedef struct AudioCaptureOptions { 97 SourceType sourceType = SOURCE_TYPE_INVALID; 98 PortOperationMode capturerFlags = NORMAL_MODE; 99 } AudioCaptureOptions; 100 101 typedef struct AudioRenderOptions { 102 ContentType contentType = CONTENT_TYPE_UNKNOWN; 103 StreamUsage streamUsage = STREAM_USAGE_UNKNOWN; 104 PortOperationMode renderFlags = NORMAL_MODE; 105 } AudioRenderOptions; 106 107 typedef struct AudioParamHDF { 108 AudioSampleRate sampleRate = SAMPLE_RATE_8000; 109 AudioChannel channelMask = MONO; 110 AudioSampleFormat bitFormat = SAMPLE_U8; 111 StreamUsage streamUsage = STREAM_USAGE_UNKNOWN; 112 uint32_t frameSize = 0; 113 uint32_t period = 0; 114 PortOperationMode renderFlags = NORMAL_MODE; 115 PortOperationMode capturerFlags = NORMAL_MODE; 116 std::string ext; 117 } AudioParamHDF; 118 119 typedef struct { 120 AudioCommonParam comParam; 121 AudioCaptureOptions captureOpts; 122 AudioRenderOptions renderOpts; 123 } AudioParam; 124 125 typedef enum { 126 STATE_UNKNOWN = -1, 127 STATE_CHANNEL_OPEN = 0, 128 STATE_CHANNEL_CLOSE = 1 129 } STATE; 130 131 typedef enum { 132 CAP_UNKNOWN = 0, 133 CAP_SPK = 1, 134 CAP_MIC = 2, 135 } PortCapType; 136 137 typedef struct { 138 int64_t tvSec; 139 int64_t tvNSec; 140 } CurrentTimeHDF; 141 142 typedef enum { 143 REF, 144 MIC1, 145 } StreamType; 146 } // namespace DistributedHardware 147 } // namespace OHOS 148 #endif // OHOS_DAUDIO_AUDIO_PARAM_H 149