150a07fd2Sopenharmony_ci/*
250a07fd2Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
350a07fd2Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
450a07fd2Sopenharmony_ci * you may not use this file except in compliance with the License.
550a07fd2Sopenharmony_ci * You may obtain a copy of the License at
650a07fd2Sopenharmony_ci *
750a07fd2Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
850a07fd2Sopenharmony_ci *
950a07fd2Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1050a07fd2Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1150a07fd2Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1250a07fd2Sopenharmony_ci * See the License for the specific language governing permissions and
1350a07fd2Sopenharmony_ci * limitations under the License.
1450a07fd2Sopenharmony_ci */
1550a07fd2Sopenharmony_ci
1650a07fd2Sopenharmony_ci#ifndef OHOS_DAUDIO_AUDIO_PARAM_H
1750a07fd2Sopenharmony_ci#define OHOS_DAUDIO_AUDIO_PARAM_H
1850a07fd2Sopenharmony_ci
1950a07fd2Sopenharmony_ci#include <string>
2050a07fd2Sopenharmony_ci
2150a07fd2Sopenharmony_cinamespace OHOS {
2250a07fd2Sopenharmony_cinamespace DistributedHardware {
2350a07fd2Sopenharmony_citypedef enum {
2450a07fd2Sopenharmony_ci    SAMPLE_RATE_8000 = 8000,
2550a07fd2Sopenharmony_ci    SAMPLE_RATE_11025 = 11025,
2650a07fd2Sopenharmony_ci    SAMPLE_RATE_12000 = 12000,
2750a07fd2Sopenharmony_ci    SAMPLE_RATE_16000 = 16000,
2850a07fd2Sopenharmony_ci    SAMPLE_RATE_22050 = 22050,
2950a07fd2Sopenharmony_ci    SAMPLE_RATE_24000 = 24000,
3050a07fd2Sopenharmony_ci    SAMPLE_RATE_32000 = 32000,
3150a07fd2Sopenharmony_ci    SAMPLE_RATE_44100 = 44100,
3250a07fd2Sopenharmony_ci    SAMPLE_RATE_48000 = 48000,
3350a07fd2Sopenharmony_ci    SAMPLE_RATE_64000 = 64000,
3450a07fd2Sopenharmony_ci    SAMPLE_RATE_96000 = 96000
3550a07fd2Sopenharmony_ci} AudioSampleRate;
3650a07fd2Sopenharmony_ci
3750a07fd2Sopenharmony_citypedef enum {
3850a07fd2Sopenharmony_ci    SOURCE_TYPE_INVALID = -1,
3950a07fd2Sopenharmony_ci    SOURCE_TYPE_MIC,
4050a07fd2Sopenharmony_ci    SOURCE_TYPE_VOICE_CALL = 4,
4150a07fd2Sopenharmony_ci    SOURCE_TYPE_VOICE_COMMUNICATION = 7
4250a07fd2Sopenharmony_ci} SourceType;
4350a07fd2Sopenharmony_ci
4450a07fd2Sopenharmony_citypedef enum {
4550a07fd2Sopenharmony_ci    MONO = 1,
4650a07fd2Sopenharmony_ci    STEREO = 2
4750a07fd2Sopenharmony_ci} AudioChannel;
4850a07fd2Sopenharmony_ci
4950a07fd2Sopenharmony_citypedef enum {
5050a07fd2Sopenharmony_ci    SAMPLE_U8 = 0,
5150a07fd2Sopenharmony_ci    SAMPLE_S16LE = 1,
5250a07fd2Sopenharmony_ci    SAMPLE_S24LE = 2,
5350a07fd2Sopenharmony_ci    SAMPLE_S32LE = 3,
5450a07fd2Sopenharmony_ci    SAMPLE_F32LE = 4,
5550a07fd2Sopenharmony_ci    INVALID_WIDTH = -1
5650a07fd2Sopenharmony_ci} AudioSampleFormat;
5750a07fd2Sopenharmony_ci
5850a07fd2Sopenharmony_citypedef enum {
5950a07fd2Sopenharmony_ci    AUDIO_CODEC_AAC = 0,
6050a07fd2Sopenharmony_ci    AUDIO_CODEC_FLAC = 1
6150a07fd2Sopenharmony_ci} AudioCodecType;
6250a07fd2Sopenharmony_ci
6350a07fd2Sopenharmony_citypedef enum {
6450a07fd2Sopenharmony_ci    CONTENT_TYPE_UNKNOWN = 0,
6550a07fd2Sopenharmony_ci    CONTENT_TYPE_SPEECH = 1,
6650a07fd2Sopenharmony_ci    CONTENT_TYPE_MUSIC = 2,
6750a07fd2Sopenharmony_ci    CONTENT_TYPE_MOVIE = 3,
6850a07fd2Sopenharmony_ci    CONTENT_TYPE_SONIFICATION = 4,
6950a07fd2Sopenharmony_ci    CONTENT_TYPE_RINGTONE = 5
7050a07fd2Sopenharmony_ci} ContentType;
7150a07fd2Sopenharmony_ci
7250a07fd2Sopenharmony_citypedef enum {
7350a07fd2Sopenharmony_ci    STREAM_USAGE_UNKNOWN = 0,
7450a07fd2Sopenharmony_ci    STREAM_USAGE_MEDIA = 1,
7550a07fd2Sopenharmony_ci    STREAM_USAGE_VOICE_COMMUNICATION = 2,
7650a07fd2Sopenharmony_ci    STREAM_USAGE_VOICE_ASSISTANT = 4,
7750a07fd2Sopenharmony_ci    STREAM_USAGE_MMAP = 5,
7850a07fd2Sopenharmony_ci    STREAM_USAGE_NOTIFICATION_RINGTONE = 6
7950a07fd2Sopenharmony_ci} StreamUsage;
8050a07fd2Sopenharmony_ci
8150a07fd2Sopenharmony_citypedef enum {
8250a07fd2Sopenharmony_ci    NORMAL_MODE = 0,
8350a07fd2Sopenharmony_ci    MMAP_MODE = 1,
8450a07fd2Sopenharmony_ci} PortOperationMode;
8550a07fd2Sopenharmony_ci
8650a07fd2Sopenharmony_citypedef struct AudioCommonParam {
8750a07fd2Sopenharmony_ci    AudioSampleRate sampleRate = SAMPLE_RATE_8000;
8850a07fd2Sopenharmony_ci    AudioChannel channelMask = MONO;
8950a07fd2Sopenharmony_ci    AudioSampleFormat bitFormat = SAMPLE_U8;
9050a07fd2Sopenharmony_ci    AudioCodecType codecType = AUDIO_CODEC_AAC;
9150a07fd2Sopenharmony_ci    uint32_t frameSize = 0;
9250a07fd2Sopenharmony_ci} AudioCommonParam;
9350a07fd2Sopenharmony_ci
9450a07fd2Sopenharmony_citypedef struct AudioCaptureOptions {
9550a07fd2Sopenharmony_ci    SourceType sourceType = SOURCE_TYPE_INVALID;
9650a07fd2Sopenharmony_ci    PortOperationMode capturerFlags = NORMAL_MODE;
9750a07fd2Sopenharmony_ci} AudioCaptureOptions;
9850a07fd2Sopenharmony_ci
9950a07fd2Sopenharmony_citypedef struct AudioRenderOptions {
10050a07fd2Sopenharmony_ci    ContentType contentType = CONTENT_TYPE_UNKNOWN;
10150a07fd2Sopenharmony_ci    StreamUsage streamUsage = STREAM_USAGE_UNKNOWN;
10250a07fd2Sopenharmony_ci    PortOperationMode renderFlags = NORMAL_MODE;
10350a07fd2Sopenharmony_ci} AudioRenderOptions;
10450a07fd2Sopenharmony_ci
10550a07fd2Sopenharmony_citypedef struct AudioParamHDF {
10650a07fd2Sopenharmony_ci    AudioSampleRate sampleRate = SAMPLE_RATE_8000;
10750a07fd2Sopenharmony_ci    AudioChannel channelMask = MONO;
10850a07fd2Sopenharmony_ci    AudioSampleFormat bitFormat = SAMPLE_U8;
10950a07fd2Sopenharmony_ci    StreamUsage streamUsage = STREAM_USAGE_UNKNOWN;
11050a07fd2Sopenharmony_ci    uint32_t frameSize = 0;
11150a07fd2Sopenharmony_ci    uint32_t period = 0;
11250a07fd2Sopenharmony_ci    PortOperationMode renderFlags = NORMAL_MODE;
11350a07fd2Sopenharmony_ci    PortOperationMode capturerFlags = NORMAL_MODE;
11450a07fd2Sopenharmony_ci    std::string ext;
11550a07fd2Sopenharmony_ci} AudioParamHDF;
11650a07fd2Sopenharmony_ci
11750a07fd2Sopenharmony_citypedef struct {
11850a07fd2Sopenharmony_ci    AudioCommonParam comParam;
11950a07fd2Sopenharmony_ci    AudioCaptureOptions captureOpts;
12050a07fd2Sopenharmony_ci    AudioRenderOptions renderOpts;
12150a07fd2Sopenharmony_ci} AudioParam;
12250a07fd2Sopenharmony_ci
12350a07fd2Sopenharmony_citypedef enum {
12450a07fd2Sopenharmony_ci    STATE_UNKNOWN = -1,
12550a07fd2Sopenharmony_ci    STATE_CHANNEL_OPEN = 0,
12650a07fd2Sopenharmony_ci    STATE_CHANNEL_CLOSE = 1
12750a07fd2Sopenharmony_ci} STATE;
12850a07fd2Sopenharmony_ci
12950a07fd2Sopenharmony_citypedef enum {
13050a07fd2Sopenharmony_ci    CAP_UNKNOWN = 0,
13150a07fd2Sopenharmony_ci    CAP_SPK = 1,
13250a07fd2Sopenharmony_ci    CAP_MIC = 2,
13350a07fd2Sopenharmony_ci} PortCapType;
13450a07fd2Sopenharmony_ci
13550a07fd2Sopenharmony_citypedef struct {
13650a07fd2Sopenharmony_ci    int64_t tvSec;
13750a07fd2Sopenharmony_ci    int64_t tvNSec;
13850a07fd2Sopenharmony_ci} CurrentTimeHDF;
13950a07fd2Sopenharmony_ci
14050a07fd2Sopenharmony_citypedef enum {
14150a07fd2Sopenharmony_ci    REF,
14250a07fd2Sopenharmony_ci    MIC1,
14350a07fd2Sopenharmony_ci} StreamType;
14450a07fd2Sopenharmony_ci} // namespace DistributedHardware
14550a07fd2Sopenharmony_ci} // namespace OHOS
14650a07fd2Sopenharmony_ci#endif // OHOS_DAUDIO_AUDIO_PARAM_H
147