1da853ecaSopenharmony_ci/*
2da853ecaSopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd.
3da853ecaSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4da853ecaSopenharmony_ci * you may not use this file except in compliance with the License.
5da853ecaSopenharmony_ci * You may obtain a copy of the License at
6da853ecaSopenharmony_ci *
7da853ecaSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8da853ecaSopenharmony_ci *
9da853ecaSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10da853ecaSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11da853ecaSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12da853ecaSopenharmony_ci * See the License for the specific language governing permissions and
13da853ecaSopenharmony_ci * limitations under the License.
14da853ecaSopenharmony_ci */
15da853ecaSopenharmony_ci
16da853ecaSopenharmony_ci#include <string>
17da853ecaSopenharmony_ci#include "gtest/gtest.h"
18da853ecaSopenharmony_ci#include "AudioEncoderDemoCommon.h"
19da853ecaSopenharmony_ci
20da853ecaSopenharmony_ciusing namespace std;
21da853ecaSopenharmony_ciusing namespace testing::ext;
22da853ecaSopenharmony_ciusing namespace OHOS;
23da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec;
24da853ecaSopenharmony_ci
25da853ecaSopenharmony_ci
26da853ecaSopenharmony_cinamespace {
27da853ecaSopenharmony_ci    class NativeFunctionTest : public testing::Test {
28da853ecaSopenharmony_ci    public:
29da853ecaSopenharmony_ci        static void SetUpTestCase();
30da853ecaSopenharmony_ci        static void TearDownTestCase();
31da853ecaSopenharmony_ci        void SetUp() override;
32da853ecaSopenharmony_ci        void TearDown() override;
33da853ecaSopenharmony_ci    };
34da853ecaSopenharmony_ci
35da853ecaSopenharmony_ci    void NativeFunctionTest::SetUpTestCase() {}
36da853ecaSopenharmony_ci    void NativeFunctionTest::TearDownTestCase() {}
37da853ecaSopenharmony_ci    void NativeFunctionTest::SetUp() {}
38da853ecaSopenharmony_ci    void NativeFunctionTest::TearDown() {}
39da853ecaSopenharmony_ci
40da853ecaSopenharmony_ci    constexpr uint32_t DEFAULT_AAC_TYPE = 1;
41da853ecaSopenharmony_ci    constexpr int32_t CHANNEL_COUNT_AAC = 2;
42da853ecaSopenharmony_ci    constexpr int32_t SAMPLE_RATE_AAC = 16000;
43da853ecaSopenharmony_ci    constexpr int64_t BITS_RATE_AAC = 129000;
44da853ecaSopenharmony_ci    constexpr int32_t CHANNEL_COUNT_FLAC = 2;
45da853ecaSopenharmony_ci    constexpr int32_t SAMPLE_RATE_FLAC = 48000;
46da853ecaSopenharmony_ci    constexpr int64_t BITS_RATE_FLAC = 128000;
47da853ecaSopenharmony_ci    constexpr int32_t COMPLIANCE_LEVEL = -2;
48da853ecaSopenharmony_ci
49da853ecaSopenharmony_ci    constexpr int32_t CHANNEL_COUNT_MONO = 1;
50da853ecaSopenharmony_ci    constexpr int32_t CHANNEL_COUNT_STEREO = 2;
51da853ecaSopenharmony_ci    constexpr int32_t CHANNEL_COUNT_7POINT1 = 8;
52da853ecaSopenharmony_ci
53da853ecaSopenharmony_ci    int32_t testResult[16] = { -1 };
54da853ecaSopenharmony_ci
55da853ecaSopenharmony_ci    vector<string> SplitStringFully(const string& str, const string& separator)
56da853ecaSopenharmony_ci    {
57da853ecaSopenharmony_ci        vector<string> dest;
58da853ecaSopenharmony_ci        string substring;
59da853ecaSopenharmony_ci        string::size_type start = 0;
60da853ecaSopenharmony_ci        string::size_type index = str.find_first_of(separator, start);
61da853ecaSopenharmony_ci
62da853ecaSopenharmony_ci        while (index != string::npos) {
63da853ecaSopenharmony_ci            substring = str.substr(start, index - start);
64da853ecaSopenharmony_ci            dest.push_back(substring);
65da853ecaSopenharmony_ci            start = str.find_first_not_of(separator, index);
66da853ecaSopenharmony_ci            if (start == string::npos) {
67da853ecaSopenharmony_ci                return dest;
68da853ecaSopenharmony_ci            }
69da853ecaSopenharmony_ci
70da853ecaSopenharmony_ci            index = str.find_first_of(separator, start);
71da853ecaSopenharmony_ci        }
72da853ecaSopenharmony_ci        substring = str.substr(start);
73da853ecaSopenharmony_ci        dest.push_back(substring);
74da853ecaSopenharmony_ci
75da853ecaSopenharmony_ci        return dest;
76da853ecaSopenharmony_ci    }
77da853ecaSopenharmony_ci
78da853ecaSopenharmony_ci    bool compareFile(string file1, string file2)
79da853ecaSopenharmony_ci    {
80da853ecaSopenharmony_ci        string ans1, ans2;
81da853ecaSopenharmony_ci        int i;
82da853ecaSopenharmony_ci        (void)freopen(file1.c_str(), "r", stdin);
83da853ecaSopenharmony_ci        char c;
84da853ecaSopenharmony_ci        while (scanf_s("%c", &c, 1) != EOF) {
85da853ecaSopenharmony_ci            ans1 += c;
86da853ecaSopenharmony_ci        }
87da853ecaSopenharmony_ci        (void)fclose(stdin);
88da853ecaSopenharmony_ci
89da853ecaSopenharmony_ci        (void)freopen(file2.c_str(), "r", stdin);
90da853ecaSopenharmony_ci        while (scanf_s("%c", &c, 1) != EOF) {
91da853ecaSopenharmony_ci            ans2 += c;
92da853ecaSopenharmony_ci        }
93da853ecaSopenharmony_ci        (void)fclose(stdin);
94da853ecaSopenharmony_ci        if (ans1.size() != ans2.size()) {
95da853ecaSopenharmony_ci            return false;
96da853ecaSopenharmony_ci        }
97da853ecaSopenharmony_ci        for (i = 0; i < ans1.size(); i++) {
98da853ecaSopenharmony_ci            if (ans1[i] != ans2[i]) {
99da853ecaSopenharmony_ci                return false;
100da853ecaSopenharmony_ci            }
101da853ecaSopenharmony_ci        }
102da853ecaSopenharmony_ci        return true;
103da853ecaSopenharmony_ci    }
104da853ecaSopenharmony_ci
105da853ecaSopenharmony_ci    OH_AVFormat* getAVFormatByEncoder(string encoderName)
106da853ecaSopenharmony_ci    {
107da853ecaSopenharmony_ci        OH_AVFormat* format = OH_AVFormat_Create();
108da853ecaSopenharmony_ci        if (encoderName == "OH.Media.Codec.Encoder.Audio.AAC") {
109da853ecaSopenharmony_ci            OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, CHANNEL_COUNT_AAC);
110da853ecaSopenharmony_ci            OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, SAMPLE_RATE_AAC);
111da853ecaSopenharmony_ci            OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_F32LE);
112da853ecaSopenharmony_ci            OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_F32LE);
113da853ecaSopenharmony_ci            OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, STEREO);
114da853ecaSopenharmony_ci            OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
115da853ecaSopenharmony_ci            OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, BITS_RATE_AAC);
116da853ecaSopenharmony_ci        } else {
117da853ecaSopenharmony_ci            OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, CHANNEL_COUNT_FLAC);
118da853ecaSopenharmony_ci            OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, SAMPLE_RATE_FLAC);
119da853ecaSopenharmony_ci            OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_S16LE);
120da853ecaSopenharmony_ci            OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_S16LE);
121da853ecaSopenharmony_ci            OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, STEREO);
122da853ecaSopenharmony_ci            OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, BITS_RATE_FLAC);
123da853ecaSopenharmony_ci        }
124da853ecaSopenharmony_ci        return format;
125da853ecaSopenharmony_ci    }
126da853ecaSopenharmony_ci
127da853ecaSopenharmony_ci    void runEncode(string encoderName, string inputFile, string outputFile, int32_t threadId)
128da853ecaSopenharmony_ci    {
129da853ecaSopenharmony_ci        AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
130da853ecaSopenharmony_ci
131da853ecaSopenharmony_ci        OH_AVFormat* format = getAVFormatByEncoder(encoderName);
132da853ecaSopenharmony_ci
133da853ecaSopenharmony_ci        encoderDemo->NativeRunCase(inputFile, outputFile, encoderName.c_str(), format);
134da853ecaSopenharmony_ci
135da853ecaSopenharmony_ci        OH_AVFormat_Destroy(format);
136da853ecaSopenharmony_ci        delete encoderDemo;
137da853ecaSopenharmony_ci
138da853ecaSopenharmony_ci        testResult[threadId] = AV_ERR_OK;
139da853ecaSopenharmony_ci    }
140da853ecaSopenharmony_ci
141da853ecaSopenharmony_ci    OH_AVFormat* getAVFormatAAC(int32_t channelCount, int32_t sampleRate, int64_t bitrate)
142da853ecaSopenharmony_ci    {
143da853ecaSopenharmony_ci        OH_AVFormat* format = OH_AVFormat_Create();
144da853ecaSopenharmony_ci        OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, channelCount);
145da853ecaSopenharmony_ci        OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, sampleRate);
146da853ecaSopenharmony_ci        OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_F32LE);
147da853ecaSopenharmony_ci        OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_F32LE);
148da853ecaSopenharmony_ci
149da853ecaSopenharmony_ci        switch (channelCount) {
150da853ecaSopenharmony_ci            case CHANNEL_COUNT_MONO:
151da853ecaSopenharmony_ci                OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, MONO);
152da853ecaSopenharmony_ci                break;
153da853ecaSopenharmony_ci            case CHANNEL_COUNT_STEREO:
154da853ecaSopenharmony_ci                OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, STEREO);
155da853ecaSopenharmony_ci                break;
156da853ecaSopenharmony_ci            case CHANNEL_COUNT_7POINT1:
157da853ecaSopenharmony_ci                OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, CH_7POINT1);
158da853ecaSopenharmony_ci                break;
159da853ecaSopenharmony_ci            default:
160da853ecaSopenharmony_ci                OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, UNKNOWN_CHANNEL_LAYOUT);
161da853ecaSopenharmony_ci                break;
162da853ecaSopenharmony_ci        }
163da853ecaSopenharmony_ci
164da853ecaSopenharmony_ci        OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
165da853ecaSopenharmony_ci        OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, bitrate);
166da853ecaSopenharmony_ci
167da853ecaSopenharmony_ci        return format;
168da853ecaSopenharmony_ci    }
169da853ecaSopenharmony_ci
170da853ecaSopenharmony_ci
171da853ecaSopenharmony_ci    OH_AVFormat* getAVFormatFlac(int32_t channelCount, int32_t sampleRate, int32_t sampleFormat, int64_t bitrate)
172da853ecaSopenharmony_ci    {
173da853ecaSopenharmony_ci        OH_AVFormat* format = OH_AVFormat_Create();
174da853ecaSopenharmony_ci        OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, channelCount);
175da853ecaSopenharmony_ci        OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, sampleRate);
176da853ecaSopenharmony_ci        OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, sampleFormat);
177da853ecaSopenharmony_ci        OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, sampleFormat);
178da853ecaSopenharmony_ci
179da853ecaSopenharmony_ci        int32_t bitsPerSample;
180da853ecaSopenharmony_ci        if (sampleFormat == OH_BitsPerSample::SAMPLE_S16LE) {
181da853ecaSopenharmony_ci            bitsPerSample = S16_BITS_PER_SAMPLE;
182da853ecaSopenharmony_ci        } else {
183da853ecaSopenharmony_ci            bitsPerSample = S32_BITS_PER_SAMPLE;
184da853ecaSopenharmony_ci        }
185da853ecaSopenharmony_ci
186da853ecaSopenharmony_ci        int32_t inputBufSize;
187da853ecaSopenharmony_ci        switch (channelCount) {
188da853ecaSopenharmony_ci            case CHANNEL_COUNT_MONO:
189da853ecaSopenharmony_ci                OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, MONO);
190da853ecaSopenharmony_ci                inputBufSize = COMMON_FLAC_NUM * channelCount * bitsPerSample;
191da853ecaSopenharmony_ci                break;
192da853ecaSopenharmony_ci            case CHANNEL_COUNT_STEREO:
193da853ecaSopenharmony_ci                OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, STEREO);
194da853ecaSopenharmony_ci                inputBufSize = COMMON_FLAC_NUM * channelCount * bitsPerSample;
195da853ecaSopenharmony_ci                break;
196da853ecaSopenharmony_ci            case CHANNEL_COUNT_7POINT1:
197da853ecaSopenharmony_ci                OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, CH_7POINT1);
198da853ecaSopenharmony_ci                inputBufSize = COMMON_FLAC_NUM * channelCount * bitsPerSample;
199da853ecaSopenharmony_ci                break;
200da853ecaSopenharmony_ci            default:
201da853ecaSopenharmony_ci                OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, UNKNOWN_CHANNEL_LAYOUT);
202da853ecaSopenharmony_ci                inputBufSize = COMMON_FLAC_NUM * UNKNOWN_CHANNEL * bitsPerSample;
203da853ecaSopenharmony_ci                break;
204da853ecaSopenharmony_ci        }
205da853ecaSopenharmony_ci
206da853ecaSopenharmony_ci        OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, bitrate);
207da853ecaSopenharmony_ci        OH_AVFormat_SetIntValue(format, OH_MD_KEY_COMPLIANCE_LEVEL, COMPLIANCE_LEVEL);
208da853ecaSopenharmony_ci        OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, inputBufSize);
209da853ecaSopenharmony_ci
210da853ecaSopenharmony_ci        return format;
211da853ecaSopenharmony_ci    }
212da853ecaSopenharmony_ci}
213da853ecaSopenharmony_ci
214da853ecaSopenharmony_ci/**
215da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_001
216da853ecaSopenharmony_ci * @tc.name      : aac(different sample rate)
217da853ecaSopenharmony_ci * @tc.desc      : function check
218da853ecaSopenharmony_ci */
219da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_001, TestSize.Level2)
220da853ecaSopenharmony_ci{
221da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
222da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.AAC";
223da853ecaSopenharmony_ci
224da853ecaSopenharmony_ci    string fileList[] = {
225da853ecaSopenharmony_ci        "f32le_7350_2_dayuhaitang.pcm",
226da853ecaSopenharmony_ci        "f32le_16000_2_dayuhaitang.pcm",
227da853ecaSopenharmony_ci        "f32le_44100_2_dayuhaitang.pcm",
228da853ecaSopenharmony_ci        "f32le_48000_2_dayuhaitang.pcm",
229da853ecaSopenharmony_ci        "f32le_96000_2_dayuhaitang.pcm"
230da853ecaSopenharmony_ci    };
231da853ecaSopenharmony_ci
232da853ecaSopenharmony_ci    for (int i = 0; i < 5; i++)
233da853ecaSopenharmony_ci    {
234da853ecaSopenharmony_ci        vector<string> dest = SplitStringFully(fileList[i], "_");
235da853ecaSopenharmony_ci        if (dest.size() < 4) {
236da853ecaSopenharmony_ci            cout << "split error !!!" << endl;
237da853ecaSopenharmony_ci            return;
238da853ecaSopenharmony_ci        }
239da853ecaSopenharmony_ci        int32_t channelCount = stoi(dest[2]);
240da853ecaSopenharmony_ci        int32_t sampleRate = stoi(dest[1]);
241da853ecaSopenharmony_ci
242da853ecaSopenharmony_ci        cout << "channel count is " << channelCount << ", sample rate is " << sampleRate << endl;
243da853ecaSopenharmony_ci
244da853ecaSopenharmony_ci        OH_AVFormat* format = getAVFormatAAC(channelCount, sampleRate, BITS_RATE_AAC);
245da853ecaSopenharmony_ci        ASSERT_NE(nullptr, format);
246da853ecaSopenharmony_ci
247da853ecaSopenharmony_ci        string inputFile = fileList[i];
248da853ecaSopenharmony_ci        string outputFile = "FUNCTION_001_" + to_string(sampleRate) + ".aac";
249da853ecaSopenharmony_ci
250da853ecaSopenharmony_ci        encoderDemo->NativeRunCase(inputFile, outputFile, encoderName.c_str(), format);
251da853ecaSopenharmony_ci
252da853ecaSopenharmony_ci        OH_AVFormat_Destroy(format);
253da853ecaSopenharmony_ci    }
254da853ecaSopenharmony_ci    delete encoderDemo;
255da853ecaSopenharmony_ci}
256da853ecaSopenharmony_ci
257da853ecaSopenharmony_ci/**
258da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_002
259da853ecaSopenharmony_ci * @tc.name      : aac(different channel num)
260da853ecaSopenharmony_ci * @tc.desc      : function check
261da853ecaSopenharmony_ci */
262da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_002, TestSize.Level2)
263da853ecaSopenharmony_ci{
264da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
265da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.AAC";
266da853ecaSopenharmony_ci
267da853ecaSopenharmony_ci    string fileList[] = {
268da853ecaSopenharmony_ci        "f32le_7350_1_dayuhaitang.pcm",
269da853ecaSopenharmony_ci        "f32le_16000_2_dayuhaitang.pcm",
270da853ecaSopenharmony_ci        "f32le_96000_8_dayuhaitang.pcm"
271da853ecaSopenharmony_ci    };
272da853ecaSopenharmony_ci
273da853ecaSopenharmony_ci    for (int i = 0; i < 3; i++)
274da853ecaSopenharmony_ci    {
275da853ecaSopenharmony_ci        vector<string> dest = SplitStringFully(fileList[i], "_");
276da853ecaSopenharmony_ci        if (dest.size() < 4)
277da853ecaSopenharmony_ci        {
278da853ecaSopenharmony_ci            cout << "split error !!!" << endl;
279da853ecaSopenharmony_ci            return;
280da853ecaSopenharmony_ci        }
281da853ecaSopenharmony_ci        int32_t channelCount = stoi(dest[2]);
282da853ecaSopenharmony_ci        int32_t sampleRate = stoi(dest[1]);
283da853ecaSopenharmony_ci
284da853ecaSopenharmony_ci        cout << "channel count is " << channelCount << ", sample rate is " << sampleRate << endl;
285da853ecaSopenharmony_ci
286da853ecaSopenharmony_ci        OH_AVFormat* format = getAVFormatAAC(channelCount, sampleRate, BITS_RATE_AAC);
287da853ecaSopenharmony_ci        ASSERT_NE(nullptr, format);
288da853ecaSopenharmony_ci
289da853ecaSopenharmony_ci        string inputFile = fileList[i];
290da853ecaSopenharmony_ci        string outputFile = "FUNCTION_002_" + to_string(channelCount) + ".aac";
291da853ecaSopenharmony_ci
292da853ecaSopenharmony_ci        encoderDemo->NativeRunCase(inputFile, outputFile, encoderName.c_str(), format);
293da853ecaSopenharmony_ci
294da853ecaSopenharmony_ci        OH_AVFormat_Destroy(format);
295da853ecaSopenharmony_ci    }
296da853ecaSopenharmony_ci    delete encoderDemo;
297da853ecaSopenharmony_ci}
298da853ecaSopenharmony_ci
299da853ecaSopenharmony_ci
300da853ecaSopenharmony_ci/**
301da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_003
302da853ecaSopenharmony_ci * @tc.name      : aac(different bitrate)
303da853ecaSopenharmony_ci * @tc.desc      : function check
304da853ecaSopenharmony_ci */
305da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_003, TestSize.Level2)
306da853ecaSopenharmony_ci{
307da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
308da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.AAC";
309da853ecaSopenharmony_ci
310da853ecaSopenharmony_ci    long bitrateList[] = {32000L, 96000L, 128000L, 256000L, 300000L, 500000L};
311da853ecaSopenharmony_ci    string inputFile = "f32le_96000_2_dayuhaitang.pcm";
312da853ecaSopenharmony_ci
313da853ecaSopenharmony_ci    for (int i = 0; i < 6; i++)
314da853ecaSopenharmony_ci    {
315da853ecaSopenharmony_ci        vector<string> dest = SplitStringFully(inputFile, "_");
316da853ecaSopenharmony_ci        if (dest.size() < 4)
317da853ecaSopenharmony_ci        {
318da853ecaSopenharmony_ci            cout << "split error !!!" << endl;
319da853ecaSopenharmony_ci            return;
320da853ecaSopenharmony_ci        }
321da853ecaSopenharmony_ci        int32_t channelCount = stoi(dest[2]);
322da853ecaSopenharmony_ci        int32_t sampleRate = stoi(dest[1]);
323da853ecaSopenharmony_ci
324da853ecaSopenharmony_ci        cout << "channel count is " << channelCount << ", sample rate is " << sampleRate << endl;
325da853ecaSopenharmony_ci
326da853ecaSopenharmony_ci        OH_AVFormat* format = getAVFormatAAC(channelCount, sampleRate, bitrateList[i]);
327da853ecaSopenharmony_ci        ASSERT_NE(nullptr, format);
328da853ecaSopenharmony_ci
329da853ecaSopenharmony_ci        string outputFile = "FUNCTION_003_" + to_string(bitrateList[i]) + ".aac";
330da853ecaSopenharmony_ci
331da853ecaSopenharmony_ci        encoderDemo->NativeRunCase(inputFile, outputFile, encoderName.c_str(), format);
332da853ecaSopenharmony_ci
333da853ecaSopenharmony_ci        OH_AVFormat_Destroy(format);
334da853ecaSopenharmony_ci    }
335da853ecaSopenharmony_ci    delete encoderDemo;
336da853ecaSopenharmony_ci}
337da853ecaSopenharmony_ci
338da853ecaSopenharmony_ci
339da853ecaSopenharmony_ci/**
340da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_004
341da853ecaSopenharmony_ci * @tc.name      : flac(different sample rate)
342da853ecaSopenharmony_ci * @tc.desc      : function check
343da853ecaSopenharmony_ci */
344da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_004, TestSize.Level2)
345da853ecaSopenharmony_ci{
346da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
347da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.Flac";
348da853ecaSopenharmony_ci
349da853ecaSopenharmony_ci    string fileList[] = {
350da853ecaSopenharmony_ci        "s16_8000_2_dayuhaitang.pcm",
351da853ecaSopenharmony_ci        "s16_16000_2_dayuhaitang.pcm",
352da853ecaSopenharmony_ci        "s16_44100_2_dayuhaitang.pcm",
353da853ecaSopenharmony_ci        "s16_48000_2_dayuhaitang.pcm",
354da853ecaSopenharmony_ci        "s16_96000_2_dayuhaitang.pcm"
355da853ecaSopenharmony_ci    };
356da853ecaSopenharmony_ci
357da853ecaSopenharmony_ci    for (int i = 0; i < 5; i++)
358da853ecaSopenharmony_ci    {
359da853ecaSopenharmony_ci        vector<string> dest = SplitStringFully(fileList[i], "_");
360da853ecaSopenharmony_ci        if (dest.size() < 4)
361da853ecaSopenharmony_ci        {
362da853ecaSopenharmony_ci            cout << "split error !!!" << endl;
363da853ecaSopenharmony_ci            return;
364da853ecaSopenharmony_ci        }
365da853ecaSopenharmony_ci        int32_t channelCount = stoi(dest[2]);
366da853ecaSopenharmony_ci        int32_t sampleRate = stoi(dest[1]);
367da853ecaSopenharmony_ci
368da853ecaSopenharmony_ci        OH_AVFormat* format = getAVFormatFlac(channelCount, sampleRate, OH_BitsPerSample::SAMPLE_S16LE, BITS_RATE_FLAC);
369da853ecaSopenharmony_ci        ASSERT_NE(nullptr, format);
370da853ecaSopenharmony_ci
371da853ecaSopenharmony_ci        string inputFile = fileList[i];
372da853ecaSopenharmony_ci        string outputFile = "FUNCTION_004_" + to_string(sampleRate) + ".flac";
373da853ecaSopenharmony_ci
374da853ecaSopenharmony_ci        encoderDemo->NativeRunCase(inputFile, outputFile, encoderName.c_str(), format);
375da853ecaSopenharmony_ci
376da853ecaSopenharmony_ci        OH_AVFormat_Destroy(format);
377da853ecaSopenharmony_ci    }
378da853ecaSopenharmony_ci    delete encoderDemo;
379da853ecaSopenharmony_ci}
380da853ecaSopenharmony_ci
381da853ecaSopenharmony_ci
382da853ecaSopenharmony_ci/**
383da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_005
384da853ecaSopenharmony_ci * @tc.name      : flac(different sample format)
385da853ecaSopenharmony_ci * @tc.desc      : function check
386da853ecaSopenharmony_ci */
387da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_005, TestSize.Level2)
388da853ecaSopenharmony_ci{
389da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
390da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.Flac";
391da853ecaSopenharmony_ci
392da853ecaSopenharmony_ci    string fileList[] = {
393da853ecaSopenharmony_ci        "s32_8000_2_dayuhaitang.pcm",
394da853ecaSopenharmony_ci        "s32_16000_2_dayuhaitang.pcm",
395da853ecaSopenharmony_ci        "s32_44100_2_dayuhaitang.pcm",
396da853ecaSopenharmony_ci        "s32_48000_2_dayuhaitang.pcm",
397da853ecaSopenharmony_ci        "s32_96000_2_dayuhaitang.pcm"
398da853ecaSopenharmony_ci    };
399da853ecaSopenharmony_ci
400da853ecaSopenharmony_ci    long bitrate = 500000;
401da853ecaSopenharmony_ci
402da853ecaSopenharmony_ci    for (int i = 0; i < 5; i++)
403da853ecaSopenharmony_ci    {
404da853ecaSopenharmony_ci        vector<string> dest = SplitStringFully(fileList[i], "_");
405da853ecaSopenharmony_ci        if (dest.size() < 4) {
406da853ecaSopenharmony_ci            cout << "split error !!!" << endl;
407da853ecaSopenharmony_ci            return;
408da853ecaSopenharmony_ci        }
409da853ecaSopenharmony_ci        int32_t channelCount = stoi(dest[2]);
410da853ecaSopenharmony_ci        int32_t sampleRate = stoi(dest[1]);
411da853ecaSopenharmony_ci
412da853ecaSopenharmony_ci        int32_t sampleFormat;
413da853ecaSopenharmony_ci        if (dest[0] == "s16") {
414da853ecaSopenharmony_ci            sampleFormat = OH_BitsPerSample::SAMPLE_S16LE;
415da853ecaSopenharmony_ci        } else {
416da853ecaSopenharmony_ci            sampleFormat = OH_BitsPerSample::SAMPLE_S32LE;
417da853ecaSopenharmony_ci        }
418da853ecaSopenharmony_ci
419da853ecaSopenharmony_ci        OH_AVFormat* format = getAVFormatFlac(channelCount, sampleRate, sampleFormat, bitrate);
420da853ecaSopenharmony_ci        ASSERT_NE(nullptr, format);
421da853ecaSopenharmony_ci
422da853ecaSopenharmony_ci        string inputFile = fileList[i];
423da853ecaSopenharmony_ci        string outputFile = "FUNCTION_005_" + dest[0] + "_" + to_string(sampleRate) + ".flac";
424da853ecaSopenharmony_ci
425da853ecaSopenharmony_ci        encoderDemo->NativeRunCase(inputFile, outputFile, encoderName.c_str(), format);
426da853ecaSopenharmony_ci
427da853ecaSopenharmony_ci        OH_AVFormat_Destroy(format);
428da853ecaSopenharmony_ci    }
429da853ecaSopenharmony_ci    delete encoderDemo;
430da853ecaSopenharmony_ci}
431da853ecaSopenharmony_ci
432da853ecaSopenharmony_ci
433da853ecaSopenharmony_ci/**
434da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_006
435da853ecaSopenharmony_ci * @tc.name      : flac(different channel num)
436da853ecaSopenharmony_ci * @tc.desc      : function check
437da853ecaSopenharmony_ci */
438da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_006, TestSize.Level2)
439da853ecaSopenharmony_ci{
440da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
441da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.Flac";
442da853ecaSopenharmony_ci
443da853ecaSopenharmony_ci    string fileList[] = {
444da853ecaSopenharmony_ci        "s16_8000_1_dayuhaitang.pcm",
445da853ecaSopenharmony_ci        "s16_48000_1_dayuhaitang.pcm",
446da853ecaSopenharmony_ci        "s16_48000_2_dayuhaitang.pcm",
447da853ecaSopenharmony_ci        "s16_48000_8_dayuhaitang.pcm"
448da853ecaSopenharmony_ci    };
449da853ecaSopenharmony_ci
450da853ecaSopenharmony_ci    long bitrate = 500000;
451da853ecaSopenharmony_ci
452da853ecaSopenharmony_ci    for (int i = 0; i < 4; i++)
453da853ecaSopenharmony_ci    {
454da853ecaSopenharmony_ci        vector<string> dest = SplitStringFully(fileList[i], "_");
455da853ecaSopenharmony_ci        if (dest.size() < 4)
456da853ecaSopenharmony_ci        {
457da853ecaSopenharmony_ci            cout << "split error !!!" << endl;
458da853ecaSopenharmony_ci            return;
459da853ecaSopenharmony_ci        }
460da853ecaSopenharmony_ci        int32_t channelCount = stoi(dest[2]);
461da853ecaSopenharmony_ci        int32_t sampleRate = stoi(dest[1]);
462da853ecaSopenharmony_ci
463da853ecaSopenharmony_ci        int32_t sampleFormat;
464da853ecaSopenharmony_ci        if (dest[0] == "s16") {
465da853ecaSopenharmony_ci            sampleFormat = OH_BitsPerSample::SAMPLE_S16LE;
466da853ecaSopenharmony_ci        } else {
467da853ecaSopenharmony_ci            sampleFormat = OH_BitsPerSample::SAMPLE_S32LE;
468da853ecaSopenharmony_ci        }
469da853ecaSopenharmony_ci
470da853ecaSopenharmony_ci        OH_AVFormat* format = getAVFormatFlac(channelCount, sampleRate, sampleFormat, bitrate);
471da853ecaSopenharmony_ci        ASSERT_NE(nullptr, format);
472da853ecaSopenharmony_ci
473da853ecaSopenharmony_ci        string inputFile = fileList[i];
474da853ecaSopenharmony_ci        string outputFile = "FUNCTION_006_" + dest[0] + "_" + to_string(channelCount) + ".flac";
475da853ecaSopenharmony_ci
476da853ecaSopenharmony_ci        encoderDemo->NativeRunCase(inputFile, outputFile, encoderName.c_str(), format);
477da853ecaSopenharmony_ci
478da853ecaSopenharmony_ci        OH_AVFormat_Destroy(format);
479da853ecaSopenharmony_ci    }
480da853ecaSopenharmony_ci    delete encoderDemo;
481da853ecaSopenharmony_ci}
482da853ecaSopenharmony_ci
483da853ecaSopenharmony_ci/**
484da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_007
485da853ecaSopenharmony_ci * @tc.name      : Flush(AAC)
486da853ecaSopenharmony_ci * @tc.desc      : function check
487da853ecaSopenharmony_ci */
488da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_007, TestSize.Level2)
489da853ecaSopenharmony_ci{
490da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
491da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Encoder.Audio.AAC";
492da853ecaSopenharmony_ci
493da853ecaSopenharmony_ci    string inputFile = "f32le_16000_2_dayuhaitang.pcm";
494da853ecaSopenharmony_ci    string firstOutputFile = "FUNCTION_007_1.aac";
495da853ecaSopenharmony_ci    string secondOutputFile = "FUNCTION_007_2.aac";
496da853ecaSopenharmony_ci
497da853ecaSopenharmony_ci    OH_AVFormat* format = OH_AVFormat_Create();
498da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, 2);
499da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, 16000);
500da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_F32LE);
501da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_F32LE);
502da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, STEREO);
503da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
504da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, 129000);
505da853ecaSopenharmony_ci
506da853ecaSopenharmony_ci    encoderDemo->NativeRunCaseFlush(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format);
507da853ecaSopenharmony_ci
508da853ecaSopenharmony_ci    bool isSame = compareFile(firstOutputFile, secondOutputFile);
509da853ecaSopenharmony_ci    ASSERT_EQ(true, isSame);
510da853ecaSopenharmony_ci
511da853ecaSopenharmony_ci    OH_AVFormat_Destroy(format);
512da853ecaSopenharmony_ci    delete encoderDemo;
513da853ecaSopenharmony_ci}
514da853ecaSopenharmony_ci
515da853ecaSopenharmony_ci/**
516da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_008
517da853ecaSopenharmony_ci * @tc.name      : Flush(flac)
518da853ecaSopenharmony_ci * @tc.desc      : function check
519da853ecaSopenharmony_ci */
520da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_008, TestSize.Level2)
521da853ecaSopenharmony_ci{
522da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
523da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Encoder.Audio.Flac";
524da853ecaSopenharmony_ci
525da853ecaSopenharmony_ci    string inputFile = "s16_48000_2_dayuhaitang.pcm";
526da853ecaSopenharmony_ci    string firstOutputFile = "FUNCTION_008_1.flac";
527da853ecaSopenharmony_ci    string secondOutputFile = "FUNCTION_008_2.flac";
528da853ecaSopenharmony_ci
529da853ecaSopenharmony_ci    OH_AVFormat* format = OH_AVFormat_Create();
530da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, 2);
531da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, 48000);
532da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_S16LE);
533da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_S16LE);
534da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, STEREO);
535da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
536da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, 129000);
537da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE,
538da853ecaSopenharmony_ci        COMMON_FLAC_NUM * CHANNEL_COUNT_STEREO * S16_BITS_PER_SAMPLE);
539da853ecaSopenharmony_ci
540da853ecaSopenharmony_ci    encoderDemo->NativeRunCaseFlush(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format);
541da853ecaSopenharmony_ci
542da853ecaSopenharmony_ci    bool isSame = compareFile(firstOutputFile, secondOutputFile);
543da853ecaSopenharmony_ci    ASSERT_EQ(true, isSame);
544da853ecaSopenharmony_ci
545da853ecaSopenharmony_ci    OH_AVFormat_Destroy(format);
546da853ecaSopenharmony_ci    delete encoderDemo;
547da853ecaSopenharmony_ci}
548da853ecaSopenharmony_ci
549da853ecaSopenharmony_ci/**
550da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_009
551da853ecaSopenharmony_ci * @tc.name      : Reset(AAC)
552da853ecaSopenharmony_ci * @tc.desc      : function check
553da853ecaSopenharmony_ci */
554da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_009, TestSize.Level2)
555da853ecaSopenharmony_ci{
556da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
557da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Encoder.Audio.AAC";
558da853ecaSopenharmony_ci
559da853ecaSopenharmony_ci    string inputFile = "f32le_16000_2_dayuhaitang.pcm";
560da853ecaSopenharmony_ci    string firstOutputFile = "FUNCTION_009_1.aac";
561da853ecaSopenharmony_ci    string secondOutputFile = "FUNCTION_009_2.aac";
562da853ecaSopenharmony_ci
563da853ecaSopenharmony_ci    OH_AVFormat* format = OH_AVFormat_Create();
564da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, 2);
565da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, 16000);
566da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_F32LE);
567da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_F32LE);
568da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, STEREO);
569da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
570da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, 129000);
571da853ecaSopenharmony_ci
572da853ecaSopenharmony_ci    encoderDemo->NativeRunCaseReset(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format);
573da853ecaSopenharmony_ci
574da853ecaSopenharmony_ci    bool isSame = compareFile(firstOutputFile, secondOutputFile);
575da853ecaSopenharmony_ci    ASSERT_EQ(true, isSame);
576da853ecaSopenharmony_ci
577da853ecaSopenharmony_ci    OH_AVFormat_Destroy(format);
578da853ecaSopenharmony_ci    delete encoderDemo;
579da853ecaSopenharmony_ci}
580da853ecaSopenharmony_ci
581da853ecaSopenharmony_ci/**
582da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_010
583da853ecaSopenharmony_ci * @tc.name      : Reset(flac)
584da853ecaSopenharmony_ci * @tc.desc      : function check
585da853ecaSopenharmony_ci */
586da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_010, TestSize.Level2)
587da853ecaSopenharmony_ci{
588da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
589da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Encoder.Audio.Flac";
590da853ecaSopenharmony_ci
591da853ecaSopenharmony_ci    string inputFile = "s16_48000_2_dayuhaitang.pcm";
592da853ecaSopenharmony_ci    string firstOutputFile = "FUNCTION_010_1.flac";
593da853ecaSopenharmony_ci    string secondOutputFile = "FUNCTION_010_2.flac";
594da853ecaSopenharmony_ci
595da853ecaSopenharmony_ci    OH_AVFormat* format = OH_AVFormat_Create();
596da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, 2);
597da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, 48000);
598da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_S16LE);
599da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_S16LE);
600da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, STEREO);
601da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
602da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, 129000);
603da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE,
604da853ecaSopenharmony_ci        COMMON_FLAC_NUM * CHANNEL_COUNT_STEREO * S16_BITS_PER_SAMPLE);
605da853ecaSopenharmony_ci
606da853ecaSopenharmony_ci    encoderDemo->NativeRunCaseReset(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format);
607da853ecaSopenharmony_ci
608da853ecaSopenharmony_ci    bool isSame = compareFile(firstOutputFile, secondOutputFile);
609da853ecaSopenharmony_ci    ASSERT_EQ(true, isSame);
610da853ecaSopenharmony_ci
611da853ecaSopenharmony_ci    OH_AVFormat_Destroy(format);
612da853ecaSopenharmony_ci    delete encoderDemo;
613da853ecaSopenharmony_ci}
614da853ecaSopenharmony_ci
615da853ecaSopenharmony_ci
616da853ecaSopenharmony_ci/**
617da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_011
618da853ecaSopenharmony_ci * @tc.name      : OH_AudioEncoder_GetOutputDescription
619da853ecaSopenharmony_ci * @tc.desc      : function check
620da853ecaSopenharmony_ci */
621da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_011, TestSize.Level2)
622da853ecaSopenharmony_ci{
623da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
624da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.AAC";
625da853ecaSopenharmony_ci
626da853ecaSopenharmony_ci    string inputFile = "f32le_16000_2_dayuhaitang.pcm";
627da853ecaSopenharmony_ci    string outputFile = "FUNCTION_011.aac";
628da853ecaSopenharmony_ci
629da853ecaSopenharmony_ci    OH_AVFormat* format = OH_AVFormat_Create();
630da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, 2);
631da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, 16000);
632da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_F32LE);
633da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_F32LE);
634da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, STEREO);
635da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
636da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, 129000);
637da853ecaSopenharmony_ci
638da853ecaSopenharmony_ci    OH_AVFormat* formatGet = encoderDemo->NativeRunCaseGetOutputDescription(inputFile, outputFile, encoderName.c_str(),
639da853ecaSopenharmony_ci        format);
640da853ecaSopenharmony_ci    ASSERT_NE(nullptr, formatGet);
641da853ecaSopenharmony_ci
642da853ecaSopenharmony_ci    int32_t channelNum_Get;
643da853ecaSopenharmony_ci    int32_t sampleRate_Get;
644da853ecaSopenharmony_ci    int64_t bitrate_Get;
645da853ecaSopenharmony_ci    OH_AVFormat_GetIntValue(formatGet, OH_MD_KEY_AUD_CHANNEL_COUNT, &channelNum_Get);
646da853ecaSopenharmony_ci    OH_AVFormat_GetIntValue(formatGet, OH_MD_KEY_AUD_SAMPLE_RATE, &sampleRate_Get);
647da853ecaSopenharmony_ci    OH_AVFormat_GetLongValue(formatGet, OH_MD_KEY_BITRATE, &bitrate_Get);
648da853ecaSopenharmony_ci
649da853ecaSopenharmony_ci    const char* testStr = nullptr;
650da853ecaSopenharmony_ci    OH_AVFormat_GetStringValue(formatGet, OH_MD_KEY_CODEC_MIME, &testStr);
651da853ecaSopenharmony_ci
652da853ecaSopenharmony_ci    cout << "channel num is " << channelNum_Get << ", sample rate is " <<
653da853ecaSopenharmony_ci    sampleRate_Get << ", bitrate is " << bitrate_Get << endl;
654da853ecaSopenharmony_ci
655da853ecaSopenharmony_ci    cout << "OH_MD_KEY_CODEC_MIME is " << testStr << endl;
656da853ecaSopenharmony_ci
657da853ecaSopenharmony_ci    ASSERT_EQ(2, channelNum_Get);
658da853ecaSopenharmony_ci    ASSERT_EQ(16000, sampleRate_Get);
659da853ecaSopenharmony_ci    ASSERT_EQ(129000, bitrate_Get);
660da853ecaSopenharmony_ci
661da853ecaSopenharmony_ci    OH_AVFormat_Destroy(format);
662da853ecaSopenharmony_ci    OH_AVFormat_Destroy(formatGet);
663da853ecaSopenharmony_ci    delete encoderDemo;
664da853ecaSopenharmony_ci}
665da853ecaSopenharmony_ci
666da853ecaSopenharmony_ci/**
667da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_012
668da853ecaSopenharmony_ci * @tc.name      : AAC(thread)
669da853ecaSopenharmony_ci * @tc.desc      : Function test
670da853ecaSopenharmony_ci */
671da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_012, TestSize.Level2)
672da853ecaSopenharmony_ci{
673da853ecaSopenharmony_ci    vector<thread> threadVec;
674da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.AAC";
675da853ecaSopenharmony_ci
676da853ecaSopenharmony_ci    string inputFile = "f32le_16000_2_dayuhaitang.pcm";
677da853ecaSopenharmony_ci
678da853ecaSopenharmony_ci    for (int32_t i = 0; i < 16; i++)
679da853ecaSopenharmony_ci    {
680da853ecaSopenharmony_ci        string outputFile = "FUNCTION_012_" + to_string(i) + ".aac";
681da853ecaSopenharmony_ci        threadVec.push_back(thread(runEncode, encoderName, inputFile, outputFile, i));
682da853ecaSopenharmony_ci    }
683da853ecaSopenharmony_ci    for (uint32_t i = 0; i < threadVec.size(); i++)
684da853ecaSopenharmony_ci    {
685da853ecaSopenharmony_ci        threadVec[i].join();
686da853ecaSopenharmony_ci    }
687da853ecaSopenharmony_ci    for (int32_t i = 0; i < 16; i++)
688da853ecaSopenharmony_ci    {
689da853ecaSopenharmony_ci        ASSERT_EQ(AV_ERR_OK, testResult[i]);
690da853ecaSopenharmony_ci    }
691da853ecaSopenharmony_ci}
692da853ecaSopenharmony_ci
693da853ecaSopenharmony_ci/**
694da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_013
695da853ecaSopenharmony_ci * @tc.name      : flac(thread)
696da853ecaSopenharmony_ci * @tc.desc      : Function test
697da853ecaSopenharmony_ci */
698da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_013, TestSize.Level2)
699da853ecaSopenharmony_ci{
700da853ecaSopenharmony_ci    vector<thread> threadVec;
701da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.Flac";
702da853ecaSopenharmony_ci
703da853ecaSopenharmony_ci    string inputFile = "s16_48000_2_dayuhaitang.pcm";
704da853ecaSopenharmony_ci
705da853ecaSopenharmony_ci    for (int32_t i = 0; i < 16; i++)
706da853ecaSopenharmony_ci    {
707da853ecaSopenharmony_ci        string outputFile = "FUNCTION_013_" + to_string(i) + ".flac";
708da853ecaSopenharmony_ci        threadVec.push_back(thread(runEncode, encoderName, inputFile, outputFile, i));
709da853ecaSopenharmony_ci    }
710da853ecaSopenharmony_ci    for (uint32_t i = 0; i < threadVec.size(); i++)
711da853ecaSopenharmony_ci    {
712da853ecaSopenharmony_ci        threadVec[i].join();
713da853ecaSopenharmony_ci    }
714da853ecaSopenharmony_ci    for (int32_t i = 0; i < 16; i++)
715da853ecaSopenharmony_ci    {
716da853ecaSopenharmony_ci        ASSERT_EQ(AV_ERR_OK, testResult[i]);
717da853ecaSopenharmony_ci    }
718da853ecaSopenharmony_ci}
719da853ecaSopenharmony_ci
720da853ecaSopenharmony_ci/**
721da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_100
722da853ecaSopenharmony_ci * @tc.name      : AAC
723da853ecaSopenharmony_ci * @tc.desc      : function check
724da853ecaSopenharmony_ci */
725da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_100, TestSize.Level2)
726da853ecaSopenharmony_ci{
727da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
728da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.AAC";
729da853ecaSopenharmony_ci
730da853ecaSopenharmony_ci    string inputFile = "B_Bird_on_a_wire_1_f32.pcm";
731da853ecaSopenharmony_ci    string outputFile = "FUNCTION_100.aac";
732da853ecaSopenharmony_ci
733da853ecaSopenharmony_ci    OH_AVFormat* format = OH_AVFormat_Create();
734da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, 1);
735da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, 48000);
736da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_F32LE);
737da853ecaSopenharmony_ci
738da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_F32LE);
739da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, MONO);
740da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
741da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, 128000);
742da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, 48000);
743da853ecaSopenharmony_ci    ASSERT_NE(nullptr, format);
744da853ecaSopenharmony_ci
745da853ecaSopenharmony_ci    encoderDemo->NativeRunCasePerformance(inputFile, outputFile, encoderName.c_str(), format);
746da853ecaSopenharmony_ci
747da853ecaSopenharmony_ci    OH_AVFormat_Destroy(format);
748da853ecaSopenharmony_ci    delete encoderDemo;
749da853ecaSopenharmony_ci}
750da853ecaSopenharmony_ci
751da853ecaSopenharmony_ci/**
752da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_200
753da853ecaSopenharmony_ci * @tc.name      : FLAC
754da853ecaSopenharmony_ci * @tc.desc      : function check
755da853ecaSopenharmony_ci */
756da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_200, TestSize.Level2)
757da853ecaSopenharmony_ci{
758da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
759da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.Flac";
760da853ecaSopenharmony_ci
761da853ecaSopenharmony_ci    string inputFile = "B_Bird_on_a_wire_1_1.pcm";
762da853ecaSopenharmony_ci    string outputFile = "FUNCTION_200.flac";
763da853ecaSopenharmony_ci
764da853ecaSopenharmony_ci    OH_AVFormat* format = OH_AVFormat_Create();
765da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, 1);
766da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, 48000);
767da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_S16LE);
768da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_S16LE);
769da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, MONO);
770da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, 429000);
771da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_COMPLIANCE_LEVEL, -2);
772da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, 48000);
773da853ecaSopenharmony_ci    ASSERT_NE(nullptr, format);
774da853ecaSopenharmony_ci
775da853ecaSopenharmony_ci    encoderDemo->NativeRunCasePerformance(inputFile, outputFile, encoderName.c_str(), format);
776da853ecaSopenharmony_ci
777da853ecaSopenharmony_ci    OH_AVFormat_Destroy(format);
778da853ecaSopenharmony_ci    delete encoderDemo;
779da853ecaSopenharmony_ci}
780da853ecaSopenharmony_ci
781da853ecaSopenharmony_ci/**
782da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_201
783da853ecaSopenharmony_ci * @tc.name      : FLAC
784da853ecaSopenharmony_ci * @tc.desc      : function check
785da853ecaSopenharmony_ci */
786da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_201, TestSize.Level2)
787da853ecaSopenharmony_ci{
788da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
789da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.Flac";
790da853ecaSopenharmony_ci
791da853ecaSopenharmony_ci    string inputFile = "free_loss.pcm";
792da853ecaSopenharmony_ci    string outputFile = "FUNCTION_201.flac";
793da853ecaSopenharmony_ci
794da853ecaSopenharmony_ci    OH_AVFormat* format = OH_AVFormat_Create();
795da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, 1);
796da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, 48000);
797da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_S16LE);
798da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_S16LE);
799da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, MONO);
800da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, 613000);
801da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_COMPLIANCE_LEVEL, -2);
802da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, 48000);
803da853ecaSopenharmony_ci    ASSERT_NE(nullptr, format);
804da853ecaSopenharmony_ci
805da853ecaSopenharmony_ci    encoderDemo->NativeRunCasePerformance(inputFile, outputFile, encoderName.c_str(), format);
806da853ecaSopenharmony_ci
807da853ecaSopenharmony_ci    OH_AVFormat_Destroy(format);
808da853ecaSopenharmony_ci    delete encoderDemo;
809da853ecaSopenharmony_ci}
810da853ecaSopenharmony_ci
811da853ecaSopenharmony_ci/**
812da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_202
813da853ecaSopenharmony_ci * @tc.name      : FLAC
814da853ecaSopenharmony_ci * @tc.desc      : function check
815da853ecaSopenharmony_ci */
816da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_202, TestSize.Level2)
817da853ecaSopenharmony_ci{
818da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
819da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.Flac";
820da853ecaSopenharmony_ci
821da853ecaSopenharmony_ci    string inputFile = "B_Bird_on_a_wire_1_1.pcm";
822da853ecaSopenharmony_ci    string outputFile = "FUNCTION_202.dat";
823da853ecaSopenharmony_ci
824da853ecaSopenharmony_ci    OH_AVFormat* format = OH_AVFormat_Create();
825da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, 1);
826da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, 48000);
827da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_S16LE);
828da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_S16LE);
829da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, MONO);
830da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, 429000);
831da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_COMPLIANCE_LEVEL, -2);
832da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, 48000);
833da853ecaSopenharmony_ci    ASSERT_NE(nullptr, format);
834da853ecaSopenharmony_ci
835da853ecaSopenharmony_ci    encoderDemo->TestRunCase(inputFile, outputFile, encoderName.c_str(), format);
836da853ecaSopenharmony_ci
837da853ecaSopenharmony_ci    OH_AVFormat_Destroy(format);
838da853ecaSopenharmony_ci    delete encoderDemo;
839da853ecaSopenharmony_ci}
840da853ecaSopenharmony_ci
841da853ecaSopenharmony_ci/**
842da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_203
843da853ecaSopenharmony_ci * @tc.name      : FLAC
844da853ecaSopenharmony_ci * @tc.desc      : function check
845da853ecaSopenharmony_ci */
846da853ecaSopenharmony_ciHWTEST_F(NativeFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_203, TestSize.Level2)
847da853ecaSopenharmony_ci{
848da853ecaSopenharmony_ci    AudioEncoderDemo* encoderDemo = new AudioEncoderDemo();
849da853ecaSopenharmony_ci    string encoderName = "OH.Media.Codec.Encoder.Audio.Flac";
850da853ecaSopenharmony_ci
851da853ecaSopenharmony_ci    string inputFile = "free_loss.pcm";
852da853ecaSopenharmony_ci    string outputFile = "FUNCTION_203.dat";
853da853ecaSopenharmony_ci
854da853ecaSopenharmony_ci    OH_AVFormat* format = OH_AVFormat_Create();
855da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, 1);
856da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, 96000);
857da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITS_PER_CODED_SAMPLE, OH_BitsPerSample::SAMPLE_S16LE);
858da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, OH_BitsPerSample::SAMPLE_S16LE);
859da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_CHANNEL_LAYOUT, MONO);
860da853ecaSopenharmony_ci    OH_AVFormat_SetLongValue(format, OH_MD_KEY_BITRATE, 613000);
861da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_COMPLIANCE_LEVEL, -2);
862da853ecaSopenharmony_ci    OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, 16384);
863da853ecaSopenharmony_ci    ASSERT_NE(nullptr, format);
864da853ecaSopenharmony_ci
865da853ecaSopenharmony_ci    encoderDemo->TestRunCase(inputFile, outputFile, encoderName.c_str(), format);
866da853ecaSopenharmony_ci
867da853ecaSopenharmony_ci    OH_AVFormat_Destroy(format);
868da853ecaSopenharmony_ci    delete encoderDemo;
869da853ecaSopenharmony_ci}