1da853ecaSopenharmony_ci/*
2da853ecaSopenharmony_ci * Copyright (C) 2023 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#include <string>
16da853ecaSopenharmony_ci#include <iostream>
17da853ecaSopenharmony_ci#include <unistd.h>
18da853ecaSopenharmony_ci#include "gtest/gtest.h"
19da853ecaSopenharmony_ci#include "AudioDecoderDemoCommon.h"
20da853ecaSopenharmony_ci#include "avcodec_errors.h"
21da853ecaSopenharmony_ci#include "avcodec_common.h"
22da853ecaSopenharmony_ci#include "media_description.h"
23da853ecaSopenharmony_ci#include "securec.h"
24da853ecaSopenharmony_ci
25da853ecaSopenharmony_ciusing namespace std;
26da853ecaSopenharmony_ciusing namespace testing::ext;
27da853ecaSopenharmony_ciusing namespace OHOS;
28da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec;
29da853ecaSopenharmony_ci
30da853ecaSopenharmony_ci
31da853ecaSopenharmony_cinamespace {
32da853ecaSopenharmony_ci    class InnerFunctionTest : public testing::Test {
33da853ecaSopenharmony_ci    public:
34da853ecaSopenharmony_ci        static void SetUpTestCase();
35da853ecaSopenharmony_ci        static void TearDownTestCase();
36da853ecaSopenharmony_ci        void SetUp() override;
37da853ecaSopenharmony_ci        void TearDown() override;
38da853ecaSopenharmony_ci    };
39da853ecaSopenharmony_ci
40da853ecaSopenharmony_ci    void InnerFunctionTest::SetUpTestCase() {}
41da853ecaSopenharmony_ci    void InnerFunctionTest::TearDownTestCase() {}
42da853ecaSopenharmony_ci    void InnerFunctionTest::SetUp() {}
43da853ecaSopenharmony_ci    void InnerFunctionTest::TearDown() {}
44da853ecaSopenharmony_ci
45da853ecaSopenharmony_ci    int32_t testResult[10] = { -1 };
46da853ecaSopenharmony_ci
47da853ecaSopenharmony_ci    bool compareFile(string file1, string file2)
48da853ecaSopenharmony_ci    {
49da853ecaSopenharmony_ci        string ans1, ans2;
50da853ecaSopenharmony_ci        int i;
51da853ecaSopenharmony_ci        (void)freopen(file1.c_str(), "r", stdin);
52da853ecaSopenharmony_ci        char c;
53da853ecaSopenharmony_ci        while (scanf_s("%c", &c, 1) != EOF) {
54da853ecaSopenharmony_ci            ans1 += c;
55da853ecaSopenharmony_ci        }
56da853ecaSopenharmony_ci        (void)fclose(stdin);
57da853ecaSopenharmony_ci
58da853ecaSopenharmony_ci        (void)freopen(file2.c_str(), "r", stdin);
59da853ecaSopenharmony_ci        while (scanf_s("%c", &c, 1) != EOF) {
60da853ecaSopenharmony_ci            ans2 += c;
61da853ecaSopenharmony_ci        }
62da853ecaSopenharmony_ci        (void)fclose(stdin);
63da853ecaSopenharmony_ci        if (ans1.size() != ans2.size()) {
64da853ecaSopenharmony_ci            return false;
65da853ecaSopenharmony_ci        }
66da853ecaSopenharmony_ci        for (i = 0; i < ans1.size(); i++) {
67da853ecaSopenharmony_ci            if (ans1[i] != ans2[i]) {
68da853ecaSopenharmony_ci                return false;
69da853ecaSopenharmony_ci            }
70da853ecaSopenharmony_ci        }
71da853ecaSopenharmony_ci        return true;
72da853ecaSopenharmony_ci    }
73da853ecaSopenharmony_ci
74da853ecaSopenharmony_ci    void runDecode(string decoderName, string inputFile, string outputFile, int32_t threadId)
75da853ecaSopenharmony_ci    {
76da853ecaSopenharmony_ci        AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
77da853ecaSopenharmony_ci
78da853ecaSopenharmony_ci        if (decoderName == "OH.Media.Codec.Decoder.Audio.AAC") {
79da853ecaSopenharmony_ci            Format format;
80da853ecaSopenharmony_ci            uint32_t CHANNEL_COUNT = 1;
81da853ecaSopenharmony_ci            uint32_t SAMPLE_RATE = 16100;
82da853ecaSopenharmony_ci            uint32_t BITS_RATE = 128000;
83da853ecaSopenharmony_ci            uint32_t DEFAULT_AAC_IS_ADTS = 1;
84da853ecaSopenharmony_ci            format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT);
85da853ecaSopenharmony_ci            format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE);
86da853ecaSopenharmony_ci            format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BITS_RATE);
87da853ecaSopenharmony_ci            format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_IS_ADTS);
88da853ecaSopenharmony_ci            decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
89da853ecaSopenharmony_ci        } else if (decoderName == "OH.Media.Codec.Decoder.Audio.Mpeg") {
90da853ecaSopenharmony_ci            Format format;
91da853ecaSopenharmony_ci            uint32_t CHANNEL_COUNT = 2;
92da853ecaSopenharmony_ci            uint32_t SAMPLE_RATE = 44100;
93da853ecaSopenharmony_ci            uint32_t BITS_RATE = 128000;
94da853ecaSopenharmony_ci            format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT);
95da853ecaSopenharmony_ci            format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE);
96da853ecaSopenharmony_ci            format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BITS_RATE);
97da853ecaSopenharmony_ci            decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
98da853ecaSopenharmony_ci        } else if (decoderName == "OH.Media.Codec.Decoder.Audio.Flac") {
99da853ecaSopenharmony_ci            Format format;
100da853ecaSopenharmony_ci            uint32_t CHANNEL_COUNT = 2;
101da853ecaSopenharmony_ci            uint32_t SAMPLE_RATE = 8000;
102da853ecaSopenharmony_ci            uint32_t BITS_RATE = 199000;
103da853ecaSopenharmony_ci            uint32_t BITS_PER_CODED_SAMPLE = 24;
104da853ecaSopenharmony_ci            format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT);
105da853ecaSopenharmony_ci            format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE);
106da853ecaSopenharmony_ci            format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BITS_RATE);
107da853ecaSopenharmony_ci            format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, BITS_PER_CODED_SAMPLE);
108da853ecaSopenharmony_ci            decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
109da853ecaSopenharmony_ci        } else {
110da853ecaSopenharmony_ci            Format format;
111da853ecaSopenharmony_ci            uint32_t CHANNEL_COUNT = 2;
112da853ecaSopenharmony_ci            uint32_t SAMPLE_RATE = 48000;
113da853ecaSopenharmony_ci            uint32_t BITS_RATE = 45000;
114da853ecaSopenharmony_ci            format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT);
115da853ecaSopenharmony_ci            format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE);
116da853ecaSopenharmony_ci            format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BITS_RATE);
117da853ecaSopenharmony_ci            decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
118da853ecaSopenharmony_ci        }
119da853ecaSopenharmony_ci        testResult[threadId] = AVCS_ERR_OK;
120da853ecaSopenharmony_ci        delete decoderDemo;
121da853ecaSopenharmony_ci    }
122da853ecaSopenharmony_ci}
123da853ecaSopenharmony_ci
124da853ecaSopenharmony_ci/**
125da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_001
126da853ecaSopenharmony_ci * @tc.name      : AAC different sample_rate
127da853ecaSopenharmony_ci * @tc.desc      : Function test
128da853ecaSopenharmony_ci */
129da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_001, TestSize.Level2)
130da853ecaSopenharmony_ci{
131da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
132da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
133da853ecaSopenharmony_ci
134da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.AAC";
135da853ecaSopenharmony_ci
136da853ecaSopenharmony_ci    int32_t sample_rate_List[] = {7350, 16000, 44100, 48000, 96000};
137da853ecaSopenharmony_ci
138da853ecaSopenharmony_ci    for (int i = 0; i < 5; i++)
139da853ecaSopenharmony_ci    {
140da853ecaSopenharmony_ci        Format format;
141da853ecaSopenharmony_ci        int32_t sample_rate = sample_rate_List[i];
142da853ecaSopenharmony_ci        cout << "sample_rate is: " << sample_rate << endl;
143da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1);
144da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate);
145da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000);
146da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1);
147da853ecaSopenharmony_ci
148da853ecaSopenharmony_ci        string inputFile = "fltp_128k_" + to_string(sample_rate) + "_1_dayuhaitang.aac";
149da853ecaSopenharmony_ci        string outputFile = "FUNCTION_001_" + to_string(sample_rate) + "_1_aac_output.pcm";
150da853ecaSopenharmony_ci
151da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
152da853ecaSopenharmony_ci    }
153da853ecaSopenharmony_ci    delete decoderDemo;
154da853ecaSopenharmony_ci}
155da853ecaSopenharmony_ci
156da853ecaSopenharmony_ci/**
157da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_002
158da853ecaSopenharmony_ci * @tc.name      : MP3 different sample_rate
159da853ecaSopenharmony_ci * @tc.desc      : Function test
160da853ecaSopenharmony_ci */
161da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_002, TestSize.Level2)
162da853ecaSopenharmony_ci{
163da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
164da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
165da853ecaSopenharmony_ci
166da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg";
167da853ecaSopenharmony_ci
168da853ecaSopenharmony_ci    int32_t sample_rate_List[] = {8000, 16000, 44100, 48000};
169da853ecaSopenharmony_ci
170da853ecaSopenharmony_ci    for (int i = 0; i < 4; i++)
171da853ecaSopenharmony_ci    {
172da853ecaSopenharmony_ci        Format format;
173da853ecaSopenharmony_ci        int32_t sample_rate = sample_rate_List[i];
174da853ecaSopenharmony_ci        cout << "sample_rate is: " << sample_rate << endl;
175da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
176da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate);
177da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 40000);
178da853ecaSopenharmony_ci
179da853ecaSopenharmony_ci        string inputFile = "fltp_40k_" + to_string(sample_rate) + "_2_dayuhaitang.mp3";;
180da853ecaSopenharmony_ci        string outputFile = "FUNCTION_002_" + to_string(sample_rate) + "_2_mp3_output.pcm";
181da853ecaSopenharmony_ci
182da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
183da853ecaSopenharmony_ci    }
184da853ecaSopenharmony_ci    delete decoderDemo;
185da853ecaSopenharmony_ci}
186da853ecaSopenharmony_ci
187da853ecaSopenharmony_ci/**
188da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_003
189da853ecaSopenharmony_ci * @tc.name      : vorbis sample_rate
190da853ecaSopenharmony_ci * @tc.desc      : Function test
191da853ecaSopenharmony_ci */
192da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_003, TestSize.Level2)
193da853ecaSopenharmony_ci{
194da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
195da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
196da853ecaSopenharmony_ci
197da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Vorbis";
198da853ecaSopenharmony_ci
199da853ecaSopenharmony_ci    int32_t sample_rate_List[] = {8000, 16000, 44100, 48000};
200da853ecaSopenharmony_ci
201da853ecaSopenharmony_ci    for (int i = 0; i < 4; i++)
202da853ecaSopenharmony_ci    {
203da853ecaSopenharmony_ci        Format format;
204da853ecaSopenharmony_ci        int32_t sample_rate = sample_rate_List[i];
205da853ecaSopenharmony_ci        cout << "sample_rate is: " << sample_rate << endl;
206da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
207da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate);
208da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 45000);
209da853ecaSopenharmony_ci
210da853ecaSopenharmony_ci        string inputFile = "fltp_45k_" + to_string(sample_rate) + "_2_dayuhaitang.ogg";
211da853ecaSopenharmony_ci        string outputFile = "FUNCTION_003_" + to_string(sample_rate) + "_2_vorbis_output.pcm";
212da853ecaSopenharmony_ci
213da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
214da853ecaSopenharmony_ci    }
215da853ecaSopenharmony_ci    delete decoderDemo;
216da853ecaSopenharmony_ci}
217da853ecaSopenharmony_ci
218da853ecaSopenharmony_ci/**
219da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_004
220da853ecaSopenharmony_ci * @tc.name      : flac different sample_rate
221da853ecaSopenharmony_ci * @tc.desc      : Function test
222da853ecaSopenharmony_ci */
223da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_004, TestSize.Level2)
224da853ecaSopenharmony_ci{
225da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
226da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
227da853ecaSopenharmony_ci
228da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Flac";
229da853ecaSopenharmony_ci
230da853ecaSopenharmony_ci    int32_t sample_rate_List[] = {8000, 16000, 44100, 48000, 192000};
231da853ecaSopenharmony_ci
232da853ecaSopenharmony_ci    for (int i = 0; i < 5; i++)
233da853ecaSopenharmony_ci    {
234da853ecaSopenharmony_ci        Format format;
235da853ecaSopenharmony_ci        int32_t sample_rate = sample_rate_List[i];
236da853ecaSopenharmony_ci        cout << "sample_rate is: " << sample_rate << endl;
237da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
238da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate);
239da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 199000);
240da853ecaSopenharmony_ci        format.PutIntValue("bits_per_coded_sample", 24);
241da853ecaSopenharmony_ci
242da853ecaSopenharmony_ci        string inputFile = "s16_" + to_string(sample_rate) + "_2_dayuhaitang.flac";;
243da853ecaSopenharmony_ci        string outputFile = "FUNCTION_004_" + to_string(sample_rate) + "_2_flac_output.pcm";
244da853ecaSopenharmony_ci
245da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
246da853ecaSopenharmony_ci    }
247da853ecaSopenharmony_ci    delete decoderDemo;
248da853ecaSopenharmony_ci}
249da853ecaSopenharmony_ci
250da853ecaSopenharmony_ci/**
251da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_005
252da853ecaSopenharmony_ci * @tc.name      : AAC different Channel_count
253da853ecaSopenharmony_ci * @tc.desc      : Function test
254da853ecaSopenharmony_ci */
255da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_005, TestSize.Level2)
256da853ecaSopenharmony_ci{
257da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
258da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
259da853ecaSopenharmony_ci
260da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.AAC";
261da853ecaSopenharmony_ci
262da853ecaSopenharmony_ci    int Channel_count_List[] = {1, 2, 8};
263da853ecaSopenharmony_ci
264da853ecaSopenharmony_ci    for (int i = 0; i < 3; i++)
265da853ecaSopenharmony_ci    {
266da853ecaSopenharmony_ci        Format format;
267da853ecaSopenharmony_ci        int Channel_count = Channel_count_List[i];
268da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, Channel_count);
269da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100);
270da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000);
271da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1);
272da853ecaSopenharmony_ci
273da853ecaSopenharmony_ci        string inputFile = "fltp_128k_44100_" + to_string(Channel_count) + "_dayuhaitang.aac";
274da853ecaSopenharmony_ci        string outputFile = "FUNCTION_005_44100_" + to_string(Channel_count) + "_aac_output.pcm";
275da853ecaSopenharmony_ci
276da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
277da853ecaSopenharmony_ci    }
278da853ecaSopenharmony_ci    delete decoderDemo;
279da853ecaSopenharmony_ci}
280da853ecaSopenharmony_ci
281da853ecaSopenharmony_ci
282da853ecaSopenharmony_ci/**
283da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_006
284da853ecaSopenharmony_ci * @tc.name      : mp3 different Channel_count
285da853ecaSopenharmony_ci * @tc.desc      : Function test
286da853ecaSopenharmony_ci */
287da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_006, TestSize.Level2)
288da853ecaSopenharmony_ci{
289da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
290da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
291da853ecaSopenharmony_ci
292da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg";
293da853ecaSopenharmony_ci
294da853ecaSopenharmony_ci    int Channel_count_List[] = {1, 2};
295da853ecaSopenharmony_ci
296da853ecaSopenharmony_ci    for (int i = 0; i < 2; i++)
297da853ecaSopenharmony_ci    {
298da853ecaSopenharmony_ci        Format format;
299da853ecaSopenharmony_ci        int Channel_count = Channel_count_List[i];
300da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, Channel_count);
301da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100);
302da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 320000);
303da853ecaSopenharmony_ci
304da853ecaSopenharmony_ci        string inputFile = "fltp_128k_44100_" + to_string(Channel_count) + "_dayuhaitang.mp3";
305da853ecaSopenharmony_ci        string outputFile = "FUNCTION_006_44100_" + to_string(Channel_count) + "_mp3_output.pcm";
306da853ecaSopenharmony_ci
307da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
308da853ecaSopenharmony_ci    }
309da853ecaSopenharmony_ci    delete decoderDemo;
310da853ecaSopenharmony_ci}
311da853ecaSopenharmony_ci
312da853ecaSopenharmony_ci
313da853ecaSopenharmony_ci/**
314da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_007
315da853ecaSopenharmony_ci * @tc.name      : flac different Channel_count
316da853ecaSopenharmony_ci * @tc.desc      : Function test
317da853ecaSopenharmony_ci */
318da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_007, TestSize.Level2)
319da853ecaSopenharmony_ci{
320da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
321da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
322da853ecaSopenharmony_ci
323da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Flac";
324da853ecaSopenharmony_ci
325da853ecaSopenharmony_ci    int Channel_count_List[] = {1, 2, 8};
326da853ecaSopenharmony_ci
327da853ecaSopenharmony_ci    for (int i = 0; i < 3; i++)
328da853ecaSopenharmony_ci    {
329da853ecaSopenharmony_ci        Format format;
330da853ecaSopenharmony_ci        int Channel_count = Channel_count_List[i];
331da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, Channel_count);
332da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000);
333da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 320000);
334da853ecaSopenharmony_ci        format.PutIntValue("bits_per_coded_sample", 24);
335da853ecaSopenharmony_ci
336da853ecaSopenharmony_ci        string inputFile = "s16_48000_" + to_string(Channel_count) + "_dayuhaitang.flac";
337da853ecaSopenharmony_ci        string outputFile = "FUNCTION_007_48000_" + to_string(Channel_count) + "_flac_output.pcm";
338da853ecaSopenharmony_ci
339da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
340da853ecaSopenharmony_ci    }
341da853ecaSopenharmony_ci    delete decoderDemo;
342da853ecaSopenharmony_ci}
343da853ecaSopenharmony_ci
344da853ecaSopenharmony_ci/**
345da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_008
346da853ecaSopenharmony_ci * @tc.name      : vorbis different Channel_count
347da853ecaSopenharmony_ci * @tc.desc      : Function test
348da853ecaSopenharmony_ci */
349da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_008, TestSize.Level2)
350da853ecaSopenharmony_ci{
351da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
352da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
353da853ecaSopenharmony_ci
354da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Vorbis";
355da853ecaSopenharmony_ci
356da853ecaSopenharmony_ci    int Channel_count_List[] = {1, 2};
357da853ecaSopenharmony_ci
358da853ecaSopenharmony_ci    for (int i = 0; i < 2; i++)
359da853ecaSopenharmony_ci    {
360da853ecaSopenharmony_ci        Format format;
361da853ecaSopenharmony_ci        int Channel_count = Channel_count_List[i];
362da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, Channel_count);
363da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000);
364da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000);
365da853ecaSopenharmony_ci        format.PutIntValue("bits_per_coded_sample", 4);
366da853ecaSopenharmony_ci
367da853ecaSopenharmony_ci        string inputFile = "fltp_128k_48000_" + to_string(Channel_count) + "_dayuhaitang.ogg";
368da853ecaSopenharmony_ci        string outputFile = "FUNCTION_008_48000_" + to_string(Channel_count) + "_vorbis_output.pcm";
369da853ecaSopenharmony_ci
370da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
371da853ecaSopenharmony_ci    }
372da853ecaSopenharmony_ci    delete decoderDemo;
373da853ecaSopenharmony_ci}
374da853ecaSopenharmony_ci
375da853ecaSopenharmony_ci/**
376da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_009
377da853ecaSopenharmony_ci * @tc.name      : AAC different bitrate
378da853ecaSopenharmony_ci * @tc.desc      : Function test
379da853ecaSopenharmony_ci */
380da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_009, TestSize.Level2)
381da853ecaSopenharmony_ci{
382da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
383da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
384da853ecaSopenharmony_ci
385da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.AAC";
386da853ecaSopenharmony_ci
387da853ecaSopenharmony_ci    int32_t bitrateList[] = {32000, 128000};
388da853ecaSopenharmony_ci    int32_t sample_rate_List[] = {16000, 44100};
389da853ecaSopenharmony_ci    string fileList[] = {"fltp_32k_16000_2_dayuhaitang.aac", "fltp_128k_44100_2_dayuhaitang.aac"};
390da853ecaSopenharmony_ci    for (int i = 0; i < 2; i++)
391da853ecaSopenharmony_ci    {
392da853ecaSopenharmony_ci        Format format;
393da853ecaSopenharmony_ci        int32_t bitrate = bitrateList[i];
394da853ecaSopenharmony_ci        int32_t sample_rate = sample_rate_List[i];
395da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
396da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate);
397da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, bitrate);
398da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1);
399da853ecaSopenharmony_ci
400da853ecaSopenharmony_ci        string inputFile = fileList[i];
401da853ecaSopenharmony_ci        string outputFile = "FUNCTION_009_16000_2_" + to_string(bitrate) + "_aac_output.pcm";
402da853ecaSopenharmony_ci
403da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
404da853ecaSopenharmony_ci    }
405da853ecaSopenharmony_ci    delete decoderDemo;
406da853ecaSopenharmony_ci}
407da853ecaSopenharmony_ci
408da853ecaSopenharmony_ci/**
409da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_010
410da853ecaSopenharmony_ci * @tc.name      : mp3 different bitrate
411da853ecaSopenharmony_ci * @tc.desc      : Function test
412da853ecaSopenharmony_ci */
413da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_010, TestSize.Level2)
414da853ecaSopenharmony_ci{
415da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
416da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
417da853ecaSopenharmony_ci
418da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg";
419da853ecaSopenharmony_ci
420da853ecaSopenharmony_ci    int32_t bitrateList[] = {40000, 128000, 320000};
421da853ecaSopenharmony_ci
422da853ecaSopenharmony_ci    for (int i = 0; i < 3; i++)
423da853ecaSopenharmony_ci    {
424da853ecaSopenharmony_ci        Format format;
425da853ecaSopenharmony_ci        int32_t bitrate = bitrateList[i];
426da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
427da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100);
428da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, bitrate);
429da853ecaSopenharmony_ci
430da853ecaSopenharmony_ci        string inputFile = "fltp_" + to_string((int)(bitrate/1000)) + "k_44100_2_dayuhaitang.mp3";
431da853ecaSopenharmony_ci        string outputFile = "FUNCTION_010_44100_2_" + to_string(bitrate) + "_mp3_output.pcm";
432da853ecaSopenharmony_ci
433da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
434da853ecaSopenharmony_ci    }
435da853ecaSopenharmony_ci    delete decoderDemo;
436da853ecaSopenharmony_ci}
437da853ecaSopenharmony_ci
438da853ecaSopenharmony_ci/**
439da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_011
440da853ecaSopenharmony_ci * @tc.name      : flac different bitrate
441da853ecaSopenharmony_ci * @tc.desc      : Function test
442da853ecaSopenharmony_ci */
443da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_011, TestSize.Level2)
444da853ecaSopenharmony_ci{
445da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
446da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
447da853ecaSopenharmony_ci
448da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Flac";
449da853ecaSopenharmony_ci
450da853ecaSopenharmony_ci    int32_t bitrateList[] = {195000, 780000};
451da853ecaSopenharmony_ci    int32_t sample_rate_List[] = {8000, 44100};
452da853ecaSopenharmony_ci    string fileList[] = {"s16_8000_2_dayuhaitang.flac", "s16_44100_2_dayuhaitang.flac"};
453da853ecaSopenharmony_ci    for (int i = 0; i < 2; i++)
454da853ecaSopenharmony_ci    {
455da853ecaSopenharmony_ci        Format format;
456da853ecaSopenharmony_ci        int32_t bitrate = bitrateList[i];
457da853ecaSopenharmony_ci        int32_t sample_rate = sample_rate_List[i];
458da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
459da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate);
460da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, bitrate);
461da853ecaSopenharmony_ci        format.PutIntValue("bits_per_coded_sample", 24);
462da853ecaSopenharmony_ci
463da853ecaSopenharmony_ci        string inputFile = fileList[i];
464da853ecaSopenharmony_ci        string outputFile = "FUNCTION_011_"+ to_string(sample_rate) +"_2_" + to_string(bitrate) + "_flac_output.pcm";
465da853ecaSopenharmony_ci
466da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
467da853ecaSopenharmony_ci    }
468da853ecaSopenharmony_ci    delete decoderDemo;
469da853ecaSopenharmony_ci}
470da853ecaSopenharmony_ci
471da853ecaSopenharmony_ci/**
472da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_012
473da853ecaSopenharmony_ci * @tc.name      : MP3 different sample_format
474da853ecaSopenharmony_ci * @tc.desc      : Function test
475da853ecaSopenharmony_ci */
476da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_012, TestSize.Level2)
477da853ecaSopenharmony_ci{
478da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
479da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
480da853ecaSopenharmony_ci
481da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg";
482da853ecaSopenharmony_ci
483da853ecaSopenharmony_ci    string SampleFormatList[] = {"fltp", "s16p"};
484da853ecaSopenharmony_ci    for (int j = 0; j < 2; j++) {
485da853ecaSopenharmony_ci        Format format;
486da853ecaSopenharmony_ci        int32_t sample_rate = 48000;
487da853ecaSopenharmony_ci        string SampleFormat = SampleFormatList[j];
488da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
489da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate);
490da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000);
491da853ecaSopenharmony_ci
492da853ecaSopenharmony_ci        string inputFile = SampleFormat + "_128k_"+to_string(sample_rate) + "_2_dayuhaitang.mp3";
493da853ecaSopenharmony_ci        string outputFile = "FUNCTION_012_" + SampleFormat + to_string(sample_rate) + "_2_" + "_mp3_output.pcm";
494da853ecaSopenharmony_ci
495da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
496da853ecaSopenharmony_ci    }
497da853ecaSopenharmony_ci
498da853ecaSopenharmony_ci    delete decoderDemo;
499da853ecaSopenharmony_ci}
500da853ecaSopenharmony_ci
501da853ecaSopenharmony_ci/**
502da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_013
503da853ecaSopenharmony_ci * @tc.name      : flac different sample_format
504da853ecaSopenharmony_ci * @tc.desc      : Function test
505da853ecaSopenharmony_ci */
506da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_013, TestSize.Level2)
507da853ecaSopenharmony_ci{
508da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
509da853ecaSopenharmony_ci    ASSERT_NE(nullptr, decoderDemo);
510da853ecaSopenharmony_ci
511da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Flac";
512da853ecaSopenharmony_ci
513da853ecaSopenharmony_ci    string SampleFormatList[] = {"s32", "s16"};
514da853ecaSopenharmony_ci
515da853ecaSopenharmony_ci    for (int j = 0; j < 2; j++) {
516da853ecaSopenharmony_ci        Format format;
517da853ecaSopenharmony_ci        int32_t sample_rate = 48000;
518da853ecaSopenharmony_ci        string SampleFormat = SampleFormatList[j];
519da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
520da853ecaSopenharmony_ci        format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate);
521da853ecaSopenharmony_ci        format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000);
522da853ecaSopenharmony_ci        format.PutIntValue("bits_per_coded_sample", 24);
523da853ecaSopenharmony_ci
524da853ecaSopenharmony_ci        string inputFile = SampleFormat + "_"+to_string(sample_rate) + "_2_dayuhaitang.flac";
525da853ecaSopenharmony_ci        string outputFile = "FUNCTION_013_" + SampleFormat + to_string(sample_rate) + "_2_" + "_flac_output.pcm";
526da853ecaSopenharmony_ci
527da853ecaSopenharmony_ci        decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format);
528da853ecaSopenharmony_ci    }
529da853ecaSopenharmony_ci    delete decoderDemo;
530da853ecaSopenharmony_ci}
531da853ecaSopenharmony_ci
532da853ecaSopenharmony_ci/**
533da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_014
534da853ecaSopenharmony_ci * @tc.name      : aac flush
535da853ecaSopenharmony_ci * @tc.desc      : Function test
536da853ecaSopenharmony_ci */
537da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_014, TestSize.Level2)
538da853ecaSopenharmony_ci{
539da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
540da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.AAC";
541da853ecaSopenharmony_ci
542da853ecaSopenharmony_ci    string inputFile = "fltp_128k_16000_1_dayuhaitang.aac";
543da853ecaSopenharmony_ci
544da853ecaSopenharmony_ci    Format format;
545da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1);
546da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 16000);
547da853ecaSopenharmony_ci    format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000);
548da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1);
549da853ecaSopenharmony_ci
550da853ecaSopenharmony_ci    string firstOutputFile = "FUNCTION_014_16000_1_aac_output_1_flush.pcm";
551da853ecaSopenharmony_ci    string secondOutputFile = "FUNCTION_014_16000_1_aac_output_2_flush.pcm";
552da853ecaSopenharmony_ci
553da853ecaSopenharmony_ci    decoderDemo->InnerRunCaseFlush(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format);
554da853ecaSopenharmony_ci
555da853ecaSopenharmony_ci    bool isSame = compareFile(firstOutputFile, secondOutputFile);
556da853ecaSopenharmony_ci    ASSERT_EQ(true, isSame);
557da853ecaSopenharmony_ci
558da853ecaSopenharmony_ci    delete decoderDemo;
559da853ecaSopenharmony_ci}
560da853ecaSopenharmony_ci
561da853ecaSopenharmony_ci/**
562da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_015
563da853ecaSopenharmony_ci * @tc.name      : MP3 flush
564da853ecaSopenharmony_ci * @tc.desc      : Function test
565da853ecaSopenharmony_ci */
566da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_015, TestSize.Level2)
567da853ecaSopenharmony_ci{
568da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
569da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg";
570da853ecaSopenharmony_ci
571da853ecaSopenharmony_ci    string inputFile = "fltp_128k_44100_2_dayuhaitang.mp3";
572da853ecaSopenharmony_ci    string firstOutputFile = "FUNCTION_015_1_flush.pcm";
573da853ecaSopenharmony_ci    string secondOutputFile = "FUNCTION_015_2_flush.pcm";
574da853ecaSopenharmony_ci
575da853ecaSopenharmony_ci    Format format;
576da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
577da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100);
578da853ecaSopenharmony_ci    format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000);
579da853ecaSopenharmony_ci
580da853ecaSopenharmony_ci    decoderDemo->InnerRunCaseFlush(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format);
581da853ecaSopenharmony_ci    bool isSame = compareFile(firstOutputFile, secondOutputFile);
582da853ecaSopenharmony_ci    ASSERT_EQ(true, isSame);
583da853ecaSopenharmony_ci    delete decoderDemo;
584da853ecaSopenharmony_ci}
585da853ecaSopenharmony_ci
586da853ecaSopenharmony_ci/**
587da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_016
588da853ecaSopenharmony_ci * @tc.name      : Flac flush
589da853ecaSopenharmony_ci * @tc.desc      : Function test
590da853ecaSopenharmony_ci */
591da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_016, TestSize.Level2)
592da853ecaSopenharmony_ci{
593da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
594da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Flac";
595da853ecaSopenharmony_ci
596da853ecaSopenharmony_ci    string inputFile = "s16_8000_2_dayuhaitang.flac";
597da853ecaSopenharmony_ci    string firstOutputFile = "FUNCTION_016_1_flush.pcm";
598da853ecaSopenharmony_ci    string secondOutputFile = "FUNCTION_016_2_flush.pcm";
599da853ecaSopenharmony_ci
600da853ecaSopenharmony_ci    Format format;
601da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
602da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 8000);
603da853ecaSopenharmony_ci    format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 40000);
604da853ecaSopenharmony_ci    format.PutIntValue("bits_per_coded_sample", 24);
605da853ecaSopenharmony_ci
606da853ecaSopenharmony_ci    decoderDemo->InnerRunCaseFlush(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format);
607da853ecaSopenharmony_ci    bool isSame = compareFile(firstOutputFile, secondOutputFile);
608da853ecaSopenharmony_ci    ASSERT_EQ(true, isSame);
609da853ecaSopenharmony_ci    delete decoderDemo;
610da853ecaSopenharmony_ci}
611da853ecaSopenharmony_ci
612da853ecaSopenharmony_ci/**
613da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_017
614da853ecaSopenharmony_ci * @tc.name      : Vorbis flush
615da853ecaSopenharmony_ci * @tc.desc      : Function test
616da853ecaSopenharmony_ci */
617da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_017, TestSize.Level2)
618da853ecaSopenharmony_ci{
619da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
620da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Vorbis";
621da853ecaSopenharmony_ci
622da853ecaSopenharmony_ci    string inputFile = "fltp_45k_8000_2_dayuhaitang.ogg";
623da853ecaSopenharmony_ci    string firstOutputFile = "FUNCTION_017_1_flush.pcm";
624da853ecaSopenharmony_ci    string secondOutputFile = "FUNCTION_017_2_flush.pcm";
625da853ecaSopenharmony_ci
626da853ecaSopenharmony_ci    Format format;
627da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
628da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 8000);
629da853ecaSopenharmony_ci    format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 45000);
630da853ecaSopenharmony_ci
631da853ecaSopenharmony_ci    decoderDemo->InnerRunCaseFlush(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format);
632da853ecaSopenharmony_ci    bool isSame = compareFile(firstOutputFile, secondOutputFile);
633da853ecaSopenharmony_ci    ASSERT_EQ(true, isSame);
634da853ecaSopenharmony_ci    delete decoderDemo;
635da853ecaSopenharmony_ci}
636da853ecaSopenharmony_ci
637da853ecaSopenharmony_ci/**
638da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_018
639da853ecaSopenharmony_ci * @tc.name      : aac reset
640da853ecaSopenharmony_ci * @tc.desc      : Function test
641da853ecaSopenharmony_ci */
642da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_018, TestSize.Level2)
643da853ecaSopenharmony_ci{
644da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
645da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.AAC";
646da853ecaSopenharmony_ci
647da853ecaSopenharmony_ci    Format format;
648da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1);
649da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 16000);
650da853ecaSopenharmony_ci    format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000);
651da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1);
652da853ecaSopenharmony_ci
653da853ecaSopenharmony_ci    string inputFile = "fltp_128k_16000_1_dayuhaitang.aac";
654da853ecaSopenharmony_ci    string firstOutputFile = "FUNCTION_018_16000_1_aac_output_1_reset.pcm";
655da853ecaSopenharmony_ci    string secondOutputFile = "FUNCTION_018_16000_1_aac_output_2_reset.pcm";
656da853ecaSopenharmony_ci
657da853ecaSopenharmony_ci    decoderDemo->InnerRunCaseReset(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format);
658da853ecaSopenharmony_ci    bool isSame = compareFile(firstOutputFile, secondOutputFile);
659da853ecaSopenharmony_ci    ASSERT_EQ(true, isSame);
660da853ecaSopenharmony_ci    delete decoderDemo;
661da853ecaSopenharmony_ci}
662da853ecaSopenharmony_ci
663da853ecaSopenharmony_ci/**
664da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_019
665da853ecaSopenharmony_ci * @tc.name      : mp3 reset
666da853ecaSopenharmony_ci * @tc.desc      : Function test
667da853ecaSopenharmony_ci */
668da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_019, TestSize.Level2)
669da853ecaSopenharmony_ci{
670da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
671da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg";
672da853ecaSopenharmony_ci
673da853ecaSopenharmony_ci    string inputFile = "fltp_128k_44100_2_dayuhaitang.mp3";
674da853ecaSopenharmony_ci    string firstOutputFile = "FUNCTION_019_1_reset.pcm";
675da853ecaSopenharmony_ci    string secondOutputFile = "FUNCTION_019_2_reset.pcm";
676da853ecaSopenharmony_ci
677da853ecaSopenharmony_ci    Format format;
678da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
679da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100);
680da853ecaSopenharmony_ci    format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000);
681da853ecaSopenharmony_ci
682da853ecaSopenharmony_ci    decoderDemo->InnerRunCaseReset(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format);
683da853ecaSopenharmony_ci    bool isSame = compareFile(firstOutputFile, secondOutputFile);
684da853ecaSopenharmony_ci    ASSERT_EQ(true, isSame);
685da853ecaSopenharmony_ci
686da853ecaSopenharmony_ci    delete decoderDemo;
687da853ecaSopenharmony_ci}
688da853ecaSopenharmony_ci
689da853ecaSopenharmony_ci/**
690da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_020
691da853ecaSopenharmony_ci * @tc.name      : Flac reset
692da853ecaSopenharmony_ci * @tc.desc      : Function test
693da853ecaSopenharmony_ci */
694da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_020, TestSize.Level2)
695da853ecaSopenharmony_ci{
696da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
697da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Flac";
698da853ecaSopenharmony_ci
699da853ecaSopenharmony_ci    string inputFile = "s16_44100_2_dayuhaitang.flac";
700da853ecaSopenharmony_ci    string firstOutputFile = "FUNCTION_020_1_reset.pcm";
701da853ecaSopenharmony_ci    string secondOutputFile = "FUNCTION_020_2_reset.pcm";
702da853ecaSopenharmony_ci
703da853ecaSopenharmony_ci    Format format;
704da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2);
705da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100);
706da853ecaSopenharmony_ci    format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000);
707da853ecaSopenharmony_ci    format.PutIntValue("bits_per_coded_sample", 24);
708da853ecaSopenharmony_ci
709da853ecaSopenharmony_ci    decoderDemo->InnerRunCaseReset(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format);
710da853ecaSopenharmony_ci
711da853ecaSopenharmony_ci    bool isSame = compareFile(firstOutputFile, secondOutputFile);
712da853ecaSopenharmony_ci    ASSERT_EQ(true, isSame);
713da853ecaSopenharmony_ci
714da853ecaSopenharmony_ci    delete decoderDemo;
715da853ecaSopenharmony_ci}
716da853ecaSopenharmony_ci/**
717da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_021
718da853ecaSopenharmony_ci * @tc.name      : Vorbis reset
719da853ecaSopenharmony_ci * @tc.desc      : Function test
720da853ecaSopenharmony_ci */
721da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_021, TestSize.Level2)
722da853ecaSopenharmony_ci{
723da853ecaSopenharmony_ci    AudioDecoderDemo* decoderDemo = new AudioDecoderDemo();
724da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Vorbis";
725da853ecaSopenharmony_ci
726da853ecaSopenharmony_ci    string inputFile = "fltp_128k_48000_1_dayuhaitang.ogg";
727da853ecaSopenharmony_ci    string firstOutputFile = "FUNCTION_021_1.pcm";
728da853ecaSopenharmony_ci    string secondOutputFile = "FUNCTION_021_2.pcm";
729da853ecaSopenharmony_ci
730da853ecaSopenharmony_ci    Format format;
731da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1);
732da853ecaSopenharmony_ci    format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000);
733da853ecaSopenharmony_ci    format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000);
734da853ecaSopenharmony_ci
735da853ecaSopenharmony_ci    decoderDemo->InnerRunCaseReset(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format);
736da853ecaSopenharmony_ci
737da853ecaSopenharmony_ci    bool isSame = compareFile(firstOutputFile, secondOutputFile);
738da853ecaSopenharmony_ci    ASSERT_EQ(true, isSame);
739da853ecaSopenharmony_ci
740da853ecaSopenharmony_ci    delete decoderDemo;
741da853ecaSopenharmony_ci}
742da853ecaSopenharmony_ci
743da853ecaSopenharmony_ci/**
744da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_022
745da853ecaSopenharmony_ci * @tc.name      : AAC(thread)
746da853ecaSopenharmony_ci * @tc.desc      : Function test
747da853ecaSopenharmony_ci */
748da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_022, TestSize.Level2)
749da853ecaSopenharmony_ci{
750da853ecaSopenharmony_ci    vector<thread> threadVec;
751da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.AAC";
752da853ecaSopenharmony_ci
753da853ecaSopenharmony_ci    string inputFile = "fltp_128k_16000_1_dayuhaitang.aac";
754da853ecaSopenharmony_ci
755da853ecaSopenharmony_ci    for (int32_t i = 0; i < 16; i++)
756da853ecaSopenharmony_ci    {
757da853ecaSopenharmony_ci        string outputFile = "FUNCTION_022_" + to_string(i) + ".pcm";
758da853ecaSopenharmony_ci        threadVec.push_back(thread(runDecode, decoderName, inputFile, outputFile, i));
759da853ecaSopenharmony_ci    }
760da853ecaSopenharmony_ci    for (uint32_t i = 0; i < threadVec.size(); i++)
761da853ecaSopenharmony_ci    {
762da853ecaSopenharmony_ci        threadVec[i].join();
763da853ecaSopenharmony_ci    }
764da853ecaSopenharmony_ci    for (int32_t i = 0; i < 10; i++)
765da853ecaSopenharmony_ci    {
766da853ecaSopenharmony_ci        ASSERT_EQ(AVCS_ERR_OK, testResult[i]);
767da853ecaSopenharmony_ci    }
768da853ecaSopenharmony_ci}
769da853ecaSopenharmony_ci
770da853ecaSopenharmony_ci
771da853ecaSopenharmony_ci/**
772da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_023
773da853ecaSopenharmony_ci * @tc.name      : MP3(thread)
774da853ecaSopenharmony_ci * @tc.desc      : Function test
775da853ecaSopenharmony_ci */
776da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_023, TestSize.Level2)
777da853ecaSopenharmony_ci{
778da853ecaSopenharmony_ci    vector<thread> threadVec;
779da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg";
780da853ecaSopenharmony_ci
781da853ecaSopenharmony_ci    string inputFile = "fltp_128k_44100_2_dayuhaitang.mp3";
782da853ecaSopenharmony_ci
783da853ecaSopenharmony_ci    for (int32_t i = 0; i < 16; i++)
784da853ecaSopenharmony_ci    {
785da853ecaSopenharmony_ci        string outputFile = "FUNCTION_023_" + to_string(i) + ".pcm";
786da853ecaSopenharmony_ci        threadVec.push_back(thread(runDecode, decoderName, inputFile, outputFile, i));
787da853ecaSopenharmony_ci    }
788da853ecaSopenharmony_ci    for (uint32_t i = 0; i < threadVec.size(); i++)
789da853ecaSopenharmony_ci    {
790da853ecaSopenharmony_ci        threadVec[i].join();
791da853ecaSopenharmony_ci    }
792da853ecaSopenharmony_ci    for (int32_t i = 0; i < 10; i++)
793da853ecaSopenharmony_ci    {
794da853ecaSopenharmony_ci        ASSERT_EQ(AVCS_ERR_OK, testResult[i]);
795da853ecaSopenharmony_ci    }
796da853ecaSopenharmony_ci}
797da853ecaSopenharmony_ci
798da853ecaSopenharmony_ci
799da853ecaSopenharmony_ci/**
800da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_024
801da853ecaSopenharmony_ci * @tc.name      : Flac(thread)
802da853ecaSopenharmony_ci * @tc.desc      : Function test
803da853ecaSopenharmony_ci */
804da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_024, TestSize.Level2)
805da853ecaSopenharmony_ci{
806da853ecaSopenharmony_ci    vector<thread> threadVec;
807da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Flac";
808da853ecaSopenharmony_ci
809da853ecaSopenharmony_ci    string inputFile = "s16_44100_2_dayuhaitang.flac";
810da853ecaSopenharmony_ci
811da853ecaSopenharmony_ci    for (int32_t i = 0; i < 16; i++)
812da853ecaSopenharmony_ci    {
813da853ecaSopenharmony_ci        string outputFile = "FUNCTION_024_" + to_string(i) + ".pcm";
814da853ecaSopenharmony_ci        threadVec.push_back(thread(runDecode, decoderName, inputFile, outputFile, i));
815da853ecaSopenharmony_ci    }
816da853ecaSopenharmony_ci    for (uint32_t i = 0; i < threadVec.size(); i++)
817da853ecaSopenharmony_ci    {
818da853ecaSopenharmony_ci        threadVec[i].join();
819da853ecaSopenharmony_ci    }
820da853ecaSopenharmony_ci    for (int32_t i = 0; i < 10; i++)
821da853ecaSopenharmony_ci    {
822da853ecaSopenharmony_ci        ASSERT_EQ(AVCS_ERR_OK, testResult[i]);
823da853ecaSopenharmony_ci    }
824da853ecaSopenharmony_ci}
825da853ecaSopenharmony_ci
826da853ecaSopenharmony_ci
827da853ecaSopenharmony_ci/**
828da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_025
829da853ecaSopenharmony_ci * @tc.name      : Vorbis(thread)
830da853ecaSopenharmony_ci * @tc.desc      : Function test
831da853ecaSopenharmony_ci */
832da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_025, TestSize.Level2)
833da853ecaSopenharmony_ci{
834da853ecaSopenharmony_ci    vector<thread> threadVec;
835da853ecaSopenharmony_ci    string decoderName = "OH.Media.Codec.Decoder.Audio.Vorbis";
836da853ecaSopenharmony_ci
837da853ecaSopenharmony_ci    string inputFile = "fltp_45k_48000_2_dayuhaitang.ogg";
838da853ecaSopenharmony_ci
839da853ecaSopenharmony_ci    for (int32_t i = 0; i < 16; i++)
840da853ecaSopenharmony_ci    {
841da853ecaSopenharmony_ci        string outputFile = "FUNCTION_025_" + to_string(i) + ".pcm";
842da853ecaSopenharmony_ci        threadVec.push_back(thread(runDecode, decoderName, inputFile, outputFile, i));
843da853ecaSopenharmony_ci    }
844da853ecaSopenharmony_ci    for (uint32_t i = 0; i < threadVec.size(); i++)
845da853ecaSopenharmony_ci    {
846da853ecaSopenharmony_ci        threadVec[i].join();
847da853ecaSopenharmony_ci    }
848da853ecaSopenharmony_ci    for (int32_t i = 0; i < 10; i++)
849da853ecaSopenharmony_ci    {
850da853ecaSopenharmony_ci        ASSERT_EQ(AVCS_ERR_OK, testResult[i]);
851da853ecaSopenharmony_ci    }
852da853ecaSopenharmony_ci}