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 AWCOMMON_H
17#define AWCOMMON_H
18
19#include <string>
20#include "window.h"
21#include "recorder.h"
22namespace OHOS {
23namespace Media {
24#define CHECK_INSTANCE_AND_RETURN_RET(cond, ret, ...)           \
25    do {                                                        \
26        if (cond == nullptr) {                                  \
27            cout << cond << "is nullptr" << endl;               \
28            return ret;                                         \
29        }                                                       \
30    } while (0)
31
32#define CHECK_BOOL_AND_RETURN_RET(cond, ret, ...)               \
33    do {                                                        \
34        if (!(cond)) {                                          \
35            return ret;                                         \
36        }                                                       \
37    } while (0)
38
39#define CHECK_STATE_AND_RETURN_RET(cond, ret, ...)              \
40    do {                                                        \
41        if (cond != 0) {                                        \
42            return ret;                                         \
43        }                                                       \
44    } while (0)
45namespace PlayerTestParam {
46    int32_t WriteDataToFile(const std::string &path, const std::uint8_t *data, std::size_t size);
47    int32_t ProduceRandomNumberCrypt(void);
48} // namespace PlayerTestParam
49namespace RecorderTestParam {
50    struct VideoRecorderConfig_ {
51        int32_t audioSourceId = 0;
52        int32_t videoSourceId = 0;
53        int32_t dataSourceId = 0;
54        int32_t audioEncodingBitRate = 48000;
55        int32_t channelCount = 2;
56        int32_t duration = 60;
57        int32_t width = 1280;
58        int32_t height = 720;
59        int32_t frameRate = 30;
60        int32_t videoEncodingBitRate = 48000;
61        int32_t sampleRate = 48000;
62        double captureFps = 30;
63        int32_t outputFd = 0;
64        AudioCodecFormat audioFormat = AAC_LC;
65        AudioSourceType aSource = AUDIO_MIC;
66        DataSourceType dataType = METADATA;
67        OutputFormatType outPutFormat = FORMAT_MPEG_4;
68        VideoSourceType vSource = VIDEO_SOURCE_SURFACE_YUV;
69        VideoCodecFormat videoFormat = MPEG4;
70    };
71    struct AudioRecorderConfig_ {
72        int32_t outputFd = 0;
73        int32_t audioSourceId = 0;
74        int32_t audioEncodingBitRate = 48000;
75        int32_t channelCount = 2;
76        int32_t duration = 60;
77        int32_t sampleRate = 48000;
78        AudioCodecFormat audioFormat = AAC_LC;
79        AudioSourceType inputSource = AUDIO_MIC;
80        OutputFormatType outPutFormat = FORMAT_M4A;
81    };
82} // namespace RecorderTestParam
83} // namespace Media
84} // namespace OHOS
85
86#endif