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 41 } SourceType; 42 43 typedef enum { 44 MONO = 1, 45 STEREO = 2 46 } AudioChannel; 47 48 typedef enum { 49 SAMPLE_U8 = 0, 50 SAMPLE_S16LE = 1, 51 SAMPLE_S24LE = 2, 52 SAMPLE_S32LE = 3, 53 SAMPLE_F32LE = 4, 54 INVALID_WIDTH = -1 55 } AudioSampleFormat; 56 57 typedef enum { 58 AUDIO_CODEC_AAC = 0, 59 AUDIO_CODEC_FLAC = 1 60 } AudioCodecType; 61 62 typedef enum { 63 CONTENT_TYPE_UNKNOWN = 0, 64 CONTENT_TYPE_SPEECH = 1, 65 CONTENT_TYPE_MUSIC = 2, 66 CONTENT_TYPE_MOVIE = 3, 67 CONTENT_TYPE_SONIFICATION = 4, 68 CONTENT_TYPE_RINGTONE = 5 69 } ContentType; 70 71 typedef enum { 72 STREAM_USAGE_UNKNOWN = 0, 73 STREAM_USAGE_MEDIA = 1, 74 STREAM_USAGE_VOICE_COMMUNICATION = 2, 75 STREAM_USAGE_VOICE_ASSISTANT = 4, 76 STREAM_USAGE_MMAP = 5, 77 STREAM_USAGE_NOTIFICATION_RINGTONE = 6 78 } StreamUsage; 79 80 typedef enum { 81 NORMAL_MODE = 0, 82 MMAP_MODE = 1, 83 } PortOperationMode; 84 85 typedef struct AudioCommonParam { 86 AudioSampleRate sampleRate = SAMPLE_RATE_8000; 87 AudioChannel channelMask = MONO; 88 AudioSampleFormat bitFormat = SAMPLE_U8; 89 AudioCodecType codecType = AUDIO_CODEC_AAC; 90 uint32_t frameSize = 0; 91 } AudioCommonParam; 92 93 typedef struct AudioCaptureOptions { 94 SourceType sourceType = SOURCE_TYPE_INVALID; 95 PortOperationMode capturerFlags = NORMAL_MODE; 96 } AudioCaptureOptions; 97 98 typedef struct AudioRenderOptions { 99 ContentType contentType = CONTENT_TYPE_UNKNOWN; 100 StreamUsage streamUsage = STREAM_USAGE_UNKNOWN; 101 PortOperationMode renderFlags = NORMAL_MODE; 102 } AudioRenderOptions; 103 104 typedef struct AudioParamHDF { 105 AudioSampleRate sampleRate = SAMPLE_RATE_8000; 106 AudioChannel channelMask = MONO; 107 AudioSampleFormat bitFormat = SAMPLE_U8; 108 StreamUsage streamUsage = STREAM_USAGE_UNKNOWN; 109 uint32_t frameSize = 0; 110 uint32_t period = 0; 111 PortOperationMode renderFlags = NORMAL_MODE; 112 PortOperationMode capturerFlags = NORMAL_MODE; 113 std::string ext; 114 } AudioParamHDF; 115 116 typedef struct { 117 AudioCommonParam comParam; 118 AudioCaptureOptions captureOpts; 119 AudioRenderOptions renderOpts; 120 } AudioParam; 121 122 typedef enum { 123 STATE_UNKNOWN = -1, 124 STATE_CHANNEL_OPEN = 0, 125 STATE_CHANNEL_CLOSE = 1 126 } STATE; 127 128 typedef enum { 129 CAP_UNKNOWN = 0, 130 CAP_SPK = 1, 131 CAP_MIC = 2, 132 } PortCapType; 133 134 typedef struct { 135 int64_t tvSec; 136 int64_t tvNSec; 137 } CurrentTimeHDF; 138 } // namespace DistributedHardware 139 } // namespace OHOS 140 #endif // OHOS_DAUDIO_AUDIO_PARAM_H 141