1049e185fSopenharmony_ci/*
2049e185fSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3049e185fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4049e185fSopenharmony_ci * you may not use this file except in compliance with the License.
5049e185fSopenharmony_ci * You may obtain a copy of the License at
6049e185fSopenharmony_ci *
7049e185fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8049e185fSopenharmony_ci *
9049e185fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10049e185fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11049e185fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12049e185fSopenharmony_ci * See the License for the specific language governing permissions and
13049e185fSopenharmony_ci * limitations under the License.
14049e185fSopenharmony_ci */
15049e185fSopenharmony_ci
16049e185fSopenharmony_ci#ifndef AWCOMMON_H
17049e185fSopenharmony_ci#define AWCOMMON_H
18049e185fSopenharmony_ci
19049e185fSopenharmony_ci#include <string>
20049e185fSopenharmony_ci#include "window.h"
21049e185fSopenharmony_ci#include "recorder.h"
22049e185fSopenharmony_cinamespace OHOS {
23049e185fSopenharmony_cinamespace Media {
24049e185fSopenharmony_ci#define CHECK_INSTANCE_AND_RETURN_RET(cond, ret, ...)           \
25049e185fSopenharmony_ci    do {                                                        \
26049e185fSopenharmony_ci        if (cond == nullptr) {                                  \
27049e185fSopenharmony_ci            cout << cond << "is nullptr" << endl;               \
28049e185fSopenharmony_ci            return ret;                                         \
29049e185fSopenharmony_ci        }                                                       \
30049e185fSopenharmony_ci    } while (0)
31049e185fSopenharmony_ci
32049e185fSopenharmony_ci#define CHECK_BOOL_AND_RETURN_RET(cond, ret, ...)               \
33049e185fSopenharmony_ci    do {                                                        \
34049e185fSopenharmony_ci        if (!(cond)) {                                          \
35049e185fSopenharmony_ci            return ret;                                         \
36049e185fSopenharmony_ci        }                                                       \
37049e185fSopenharmony_ci    } while (0)
38049e185fSopenharmony_ci
39049e185fSopenharmony_ci#define CHECK_STATE_AND_RETURN_RET(cond, ret, ...)              \
40049e185fSopenharmony_ci    do {                                                        \
41049e185fSopenharmony_ci        if (cond != 0) {                                        \
42049e185fSopenharmony_ci            return ret;                                         \
43049e185fSopenharmony_ci        }                                                       \
44049e185fSopenharmony_ci    } while (0)
45049e185fSopenharmony_cinamespace PlayerTestParam {
46049e185fSopenharmony_ci    int32_t WriteDataToFile(const std::string &path, const std::uint8_t *data, std::size_t size);
47049e185fSopenharmony_ci    int32_t ProduceRandomNumberCrypt(void);
48049e185fSopenharmony_ci} // namespace PlayerTestParam
49049e185fSopenharmony_cinamespace RecorderTestParam {
50049e185fSopenharmony_ci    struct VideoRecorderConfig_ {
51049e185fSopenharmony_ci        int32_t audioSourceId = 0;
52049e185fSopenharmony_ci        int32_t videoSourceId = 0;
53049e185fSopenharmony_ci        int32_t dataSourceId = 0;
54049e185fSopenharmony_ci        int32_t audioEncodingBitRate = 48000;
55049e185fSopenharmony_ci        int32_t channelCount = 2;
56049e185fSopenharmony_ci        int32_t duration = 60;
57049e185fSopenharmony_ci        int32_t width = 1280;
58049e185fSopenharmony_ci        int32_t height = 720;
59049e185fSopenharmony_ci        int32_t frameRate = 30;
60049e185fSopenharmony_ci        int32_t videoEncodingBitRate = 48000;
61049e185fSopenharmony_ci        int32_t sampleRate = 48000;
62049e185fSopenharmony_ci        double captureFps = 30;
63049e185fSopenharmony_ci        int32_t outputFd = 0;
64049e185fSopenharmony_ci        AudioCodecFormat audioFormat = AAC_LC;
65049e185fSopenharmony_ci        AudioSourceType aSource = AUDIO_MIC;
66049e185fSopenharmony_ci        DataSourceType dataType = METADATA;
67049e185fSopenharmony_ci        OutputFormatType outPutFormat = FORMAT_MPEG_4;
68049e185fSopenharmony_ci        VideoSourceType vSource = VIDEO_SOURCE_SURFACE_YUV;
69049e185fSopenharmony_ci        VideoCodecFormat videoFormat = MPEG4;
70049e185fSopenharmony_ci    };
71049e185fSopenharmony_ci    struct AudioRecorderConfig_ {
72049e185fSopenharmony_ci        int32_t outputFd = 0;
73049e185fSopenharmony_ci        int32_t audioSourceId = 0;
74049e185fSopenharmony_ci        int32_t audioEncodingBitRate = 48000;
75049e185fSopenharmony_ci        int32_t channelCount = 2;
76049e185fSopenharmony_ci        int32_t duration = 60;
77049e185fSopenharmony_ci        int32_t sampleRate = 48000;
78049e185fSopenharmony_ci        AudioCodecFormat audioFormat = AAC_LC;
79049e185fSopenharmony_ci        AudioSourceType inputSource = AUDIO_MIC;
80049e185fSopenharmony_ci        OutputFormatType outPutFormat = FORMAT_M4A;
81049e185fSopenharmony_ci    };
82049e185fSopenharmony_ci} // namespace RecorderTestParam
83049e185fSopenharmony_ci} // namespace Media
84049e185fSopenharmony_ci} // namespace OHOS
85049e185fSopenharmony_ci
86049e185fSopenharmony_ci#endif