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#include "avcodec_info.h"
20da853ecaSopenharmony_ci#include "avcodec_errors.h"
21da853ecaSopenharmony_ci#include "media_description.h"
22da853ecaSopenharmony_ci#include "av_common.h"
23da853ecaSopenharmony_ci#include "meta/format.h"
24da853ecaSopenharmony_ci#include "avcodec_audio_common.h"
25da853ecaSopenharmony_ci
26da853ecaSopenharmony_ciusing namespace std;
27da853ecaSopenharmony_ciusing namespace testing::ext;
28da853ecaSopenharmony_ciusing namespace OHOS;
29da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec;
30da853ecaSopenharmony_ciconstexpr uint32_t SAMPLE_RATE_44100 = 44100;
31da853ecaSopenharmony_ciconstexpr int64_t BIT_RATE_112000 = 112000;
32da853ecaSopenharmony_ci
33da853ecaSopenharmony_cinamespace {
34da853ecaSopenharmony_ciclass InnerParamCheckTest : public testing::Test {
35da853ecaSopenharmony_cipublic:
36da853ecaSopenharmony_ci    static void SetUpTestCase();
37da853ecaSopenharmony_ci    static void TearDownTestCase();
38da853ecaSopenharmony_ci    void SetUp() override;
39da853ecaSopenharmony_ci    void TearDown() override;
40da853ecaSopenharmony_ci};
41da853ecaSopenharmony_ci
42da853ecaSopenharmony_civoid InnerParamCheckTest::SetUpTestCase() {}
43da853ecaSopenharmony_civoid InnerParamCheckTest::TearDownTestCase() {}
44da853ecaSopenharmony_civoid InnerParamCheckTest::SetUp() {}
45da853ecaSopenharmony_civoid InnerParamCheckTest::TearDown() {}
46da853ecaSopenharmony_ci} // namespace
47da853ecaSopenharmony_ci
48da853ecaSopenharmony_ci/**
49da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_001
50da853ecaSopenharmony_ci * @tc.name      : InnerCreateByMime
51da853ecaSopenharmony_ci * @tc.desc      : param check test
52da853ecaSopenharmony_ci */
53da853ecaSopenharmony_ciHWTEST_F(InnerParamCheckTest, SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_001, TestSize.Level2)
54da853ecaSopenharmony_ci{
55da853ecaSopenharmony_ci    AudioEncoderDemo *encoderDemo = new AudioEncoderDemo();
56da853ecaSopenharmony_ci
57da853ecaSopenharmony_ci    int32_t ret = encoderDemo->InnerCreateByMime("audio/mp4a-latm");
58da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
59da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
60da853ecaSopenharmony_ci
61da853ecaSopenharmony_ci    ret = encoderDemo->InnerCreateByMime("audio/flac");
62da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
63da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
64da853ecaSopenharmony_ci
65da853ecaSopenharmony_ci    ret = encoderDemo->InnerCreateByMime("aaa");
66da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_INVALID_OPERATION, ret);
67da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
68da853ecaSopenharmony_ci
69da853ecaSopenharmony_ci    delete encoderDemo;
70da853ecaSopenharmony_ci}
71da853ecaSopenharmony_ci
72da853ecaSopenharmony_ci/**
73da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_002
74da853ecaSopenharmony_ci * @tc.name      : InnerCreateByName
75da853ecaSopenharmony_ci * @tc.desc      : param check test
76da853ecaSopenharmony_ci */
77da853ecaSopenharmony_ciHWTEST_F(InnerParamCheckTest, SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_002, TestSize.Level2)
78da853ecaSopenharmony_ci{
79da853ecaSopenharmony_ci    AudioEncoderDemo *encoderDemo = new AudioEncoderDemo();
80da853ecaSopenharmony_ci
81da853ecaSopenharmony_ci    int32_t ret = encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC");
82da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
83da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
84da853ecaSopenharmony_ci
85da853ecaSopenharmony_ci    ret = encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.Flac");
86da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
87da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
88da853ecaSopenharmony_ci
89da853ecaSopenharmony_ci    ret = encoderDemo->InnerCreateByName("aaa");
90da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_INVALID_OPERATION, ret);
91da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
92da853ecaSopenharmony_ci
93da853ecaSopenharmony_ci    delete encoderDemo;
94da853ecaSopenharmony_ci}
95da853ecaSopenharmony_ci
96da853ecaSopenharmony_ci/**
97da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_003
98da853ecaSopenharmony_ci * @tc.name      : InnerConfigure - MD_KEY_BITRATE
99da853ecaSopenharmony_ci * @tc.desc      : param check test
100da853ecaSopenharmony_ci */
101da853ecaSopenharmony_ciHWTEST_F(InnerParamCheckTest, SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_003, TestSize.Level2)
102da853ecaSopenharmony_ci{
103da853ecaSopenharmony_ci    AudioEncoderDemo *encoderDemo = new AudioEncoderDemo();
104da853ecaSopenharmony_ci
105da853ecaSopenharmony_ci    int32_t ret = encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC");
106da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
107da853ecaSopenharmony_ci    Format audioParams;
108da853ecaSopenharmony_ci
109da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1);
110da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE_44100);
111da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BIT_RATE_112000);
112da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE);
113da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE);
114da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO);
115da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1);
116da853ecaSopenharmony_ci
117da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
118da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
119da853ecaSopenharmony_ci
120da853ecaSopenharmony_ci    encoderDemo->InnerReset();
121da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, -1);
122da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
123da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
124da853ecaSopenharmony_ci
125da853ecaSopenharmony_ci    encoderDemo->InnerReset();
126da853ecaSopenharmony_ci    audioParams.PutFloatValue(MediaDescriptionKey::MD_KEY_BITRATE, 0.1);
127da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
128da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
129da853ecaSopenharmony_ci
130da853ecaSopenharmony_ci    encoderDemo->InnerReset();
131da853ecaSopenharmony_ci    audioParams.PutDoubleValue(MediaDescriptionKey::MD_KEY_BITRATE, 0.1);
132da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
133da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
134da853ecaSopenharmony_ci
135da853ecaSopenharmony_ci    encoderDemo->InnerReset();
136da853ecaSopenharmony_ci    uint8_t b[100];
137da853ecaSopenharmony_ci    audioParams.PutBuffer(MediaDescriptionKey::MD_KEY_BITRATE, b, 100);
138da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
139da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
140da853ecaSopenharmony_ci
141da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
142da853ecaSopenharmony_ci    delete encoderDemo;
143da853ecaSopenharmony_ci}
144da853ecaSopenharmony_ci
145da853ecaSopenharmony_ci/**
146da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_004
147da853ecaSopenharmony_ci * @tc.name      : InnerConfigure - MD_KEY_BITS_PER_CODED_SAMPLE
148da853ecaSopenharmony_ci * @tc.desc      : param check test
149da853ecaSopenharmony_ci */
150da853ecaSopenharmony_ciHWTEST_F(InnerParamCheckTest, SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_004, TestSize.Level2)
151da853ecaSopenharmony_ci{
152da853ecaSopenharmony_ci    AudioEncoderDemo *encoderDemo = new AudioEncoderDemo();
153da853ecaSopenharmony_ci
154da853ecaSopenharmony_ci    int32_t ret = encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC");
155da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
156da853ecaSopenharmony_ci
157da853ecaSopenharmony_ci    Format audioParams;
158da853ecaSopenharmony_ci
159da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1);
160da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE_44100);
161da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BIT_RATE_112000);
162da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE);
163da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE);
164da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO);
165da853ecaSopenharmony_ci
166da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
167da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
168da853ecaSopenharmony_ci    encoderDemo->InnerReset();
169da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, -1);
170da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
171da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
172da853ecaSopenharmony_ci    encoderDemo->InnerReset();
173da853ecaSopenharmony_ci    audioParams.PutStringValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, "aaaaaa");
174da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
175da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
176da853ecaSopenharmony_ci    encoderDemo->InnerReset();
177da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, 0);
178da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
179da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
180da853ecaSopenharmony_ci    encoderDemo->InnerReset();
181da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, 0);
182da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
183da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
184da853ecaSopenharmony_ci    encoderDemo->InnerReset();
185da853ecaSopenharmony_ci    audioParams.PutFloatValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, 0.1);
186da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
187da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
188da853ecaSopenharmony_ci    encoderDemo->InnerReset();
189da853ecaSopenharmony_ci    audioParams.PutDoubleValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, 0.1);
190da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
191da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
192da853ecaSopenharmony_ci    encoderDemo->InnerReset();
193da853ecaSopenharmony_ci    uint8_t b[100];
194da853ecaSopenharmony_ci    audioParams.PutBuffer(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, b, 100);
195da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
196da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
197da853ecaSopenharmony_ci    encoderDemo->InnerReset();
198da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
199da853ecaSopenharmony_ci
200da853ecaSopenharmony_ci    delete encoderDemo;
201da853ecaSopenharmony_ci}
202da853ecaSopenharmony_ci
203da853ecaSopenharmony_ci/**
204da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_005
205da853ecaSopenharmony_ci * @tc.name      : InnerConfigure - MD_KEY_AUDIO_SAMPLE_FORMAT
206da853ecaSopenharmony_ci * @tc.desc      : param check test
207da853ecaSopenharmony_ci */
208da853ecaSopenharmony_ciHWTEST_F(InnerParamCheckTest, SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_005, TestSize.Level2)
209da853ecaSopenharmony_ci{
210da853ecaSopenharmony_ci    AudioEncoderDemo *encoderDemo = new AudioEncoderDemo();
211da853ecaSopenharmony_ci
212da853ecaSopenharmony_ci    int32_t ret = encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC");
213da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
214da853ecaSopenharmony_ci
215da853ecaSopenharmony_ci    Format audioParams;
216da853ecaSopenharmony_ci
217da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1);
218da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE_44100);
219da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BIT_RATE_112000);
220da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE);
221da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE);
222da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO);
223da853ecaSopenharmony_ci
224da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
225da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
226da853ecaSopenharmony_ci    encoderDemo->InnerReset();
227da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, -1);
228da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
229da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
230da853ecaSopenharmony_ci    encoderDemo->InnerReset();
231da853ecaSopenharmony_ci    audioParams.PutStringValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, "aaaaaa");
232da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
233da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
234da853ecaSopenharmony_ci    encoderDemo->InnerReset();
235da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, 0);
236da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
237da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
238da853ecaSopenharmony_ci    encoderDemo->InnerReset();
239da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, 0);
240da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
241da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
242da853ecaSopenharmony_ci    encoderDemo->InnerReset();
243da853ecaSopenharmony_ci    audioParams.PutFloatValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, 0.1);
244da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
245da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
246da853ecaSopenharmony_ci    encoderDemo->InnerReset();
247da853ecaSopenharmony_ci    audioParams.PutDoubleValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, 0.1);
248da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
249da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
250da853ecaSopenharmony_ci    encoderDemo->InnerReset();
251da853ecaSopenharmony_ci    uint8_t b[100];
252da853ecaSopenharmony_ci    audioParams.PutBuffer(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, b, 100);
253da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
254da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
255da853ecaSopenharmony_ci    encoderDemo->InnerReset();
256da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
257da853ecaSopenharmony_ci
258da853ecaSopenharmony_ci    delete encoderDemo;
259da853ecaSopenharmony_ci}
260da853ecaSopenharmony_ci
261da853ecaSopenharmony_ci/**
262da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_006
263da853ecaSopenharmony_ci * @tc.name      : InnerConfigure - MD_KEY_CHANNEL_LAYOUT check
264da853ecaSopenharmony_ci * @tc.desc      : param check test
265da853ecaSopenharmony_ci */
266da853ecaSopenharmony_ciHWTEST_F(InnerParamCheckTest, SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_006, TestSize.Level2)
267da853ecaSopenharmony_ci{
268da853ecaSopenharmony_ci    AudioEncoderDemo *encoderDemo = new AudioEncoderDemo();
269da853ecaSopenharmony_ci    int32_t ret = encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC");
270da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
271da853ecaSopenharmony_ci
272da853ecaSopenharmony_ci    Format audioParams;
273da853ecaSopenharmony_ci
274da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1);
275da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE_44100);
276da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BIT_RATE_112000);
277da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE);
278da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE);
279da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO);
280da853ecaSopenharmony_ci
281da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
282da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
283da853ecaSopenharmony_ci    encoderDemo->InnerReset();
284da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, -1);
285da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
286da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
287da853ecaSopenharmony_ci    encoderDemo->InnerReset();
288da853ecaSopenharmony_ci    audioParams.PutStringValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, "aaaaaa");
289da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
290da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
291da853ecaSopenharmony_ci    encoderDemo->InnerReset();
292da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, 0);
293da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
294da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
295da853ecaSopenharmony_ci    encoderDemo->InnerReset();
296da853ecaSopenharmony_ci    audioParams.PutFloatValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, 0.1);
297da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
298da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
299da853ecaSopenharmony_ci    encoderDemo->InnerReset();
300da853ecaSopenharmony_ci    audioParams.PutDoubleValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, 0.1);
301da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
302da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
303da853ecaSopenharmony_ci    encoderDemo->InnerReset();
304da853ecaSopenharmony_ci    uint8_t b[100];
305da853ecaSopenharmony_ci    audioParams.PutBuffer(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, b, 100);
306da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
307da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
308da853ecaSopenharmony_ci    encoderDemo->InnerReset();
309da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
310da853ecaSopenharmony_ci
311da853ecaSopenharmony_ci    delete encoderDemo;
312da853ecaSopenharmony_ci}
313da853ecaSopenharmony_ci/**
314da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_007
315da853ecaSopenharmony_ci * @tc.name      : InnerConfigure - MD_KEY_CHANNEL_COUNT check
316da853ecaSopenharmony_ci * @tc.desc      : param check test
317da853ecaSopenharmony_ci */
318da853ecaSopenharmony_ciHWTEST_F(InnerParamCheckTest, SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_007, TestSize.Level2)
319da853ecaSopenharmony_ci{
320da853ecaSopenharmony_ci    AudioEncoderDemo *encoderDemo = new AudioEncoderDemo();
321da853ecaSopenharmony_ci    int32_t ret = encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC");
322da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
323da853ecaSopenharmony_ci
324da853ecaSopenharmony_ci    Format audioParams;
325da853ecaSopenharmony_ci
326da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1);
327da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE_44100);
328da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BIT_RATE_112000);
329da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE);
330da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE);
331da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO);
332da853ecaSopenharmony_ci
333da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
334da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
335da853ecaSopenharmony_ci    encoderDemo->InnerReset();
336da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, -1);
337da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
338da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
339da853ecaSopenharmony_ci    encoderDemo->InnerReset();
340da853ecaSopenharmony_ci    audioParams.PutStringValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, "aaaaaa");
341da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
342da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
343da853ecaSopenharmony_ci    encoderDemo->InnerReset();
344da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, -1);
345da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
346da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
347da853ecaSopenharmony_ci    encoderDemo->InnerReset();
348da853ecaSopenharmony_ci    audioParams.PutFloatValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 0.1);
349da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
350da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
351da853ecaSopenharmony_ci    encoderDemo->InnerReset();
352da853ecaSopenharmony_ci    audioParams.PutDoubleValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 0.1);
353da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
354da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
355da853ecaSopenharmony_ci    encoderDemo->InnerReset();
356da853ecaSopenharmony_ci    uint8_t b[100];
357da853ecaSopenharmony_ci    audioParams.PutBuffer(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, b, 100);
358da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
359da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
360da853ecaSopenharmony_ci    encoderDemo->InnerReset();
361da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
362da853ecaSopenharmony_ci
363da853ecaSopenharmony_ci    delete encoderDemo;
364da853ecaSopenharmony_ci}
365da853ecaSopenharmony_ci
366da853ecaSopenharmony_ci/**
367da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_008
368da853ecaSopenharmony_ci * @tc.name      : InnerConfigure - MD_KEY_SAMPLE_RATE check
369da853ecaSopenharmony_ci * @tc.desc      : param check test
370da853ecaSopenharmony_ci */
371da853ecaSopenharmony_ciHWTEST_F(InnerParamCheckTest, SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_008, TestSize.Level2)
372da853ecaSopenharmony_ci{
373da853ecaSopenharmony_ci    AudioEncoderDemo *encoderDemo = new AudioEncoderDemo();
374da853ecaSopenharmony_ci    int32_t ret = encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC");
375da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
376da853ecaSopenharmony_ci
377da853ecaSopenharmony_ci    Format audioParams;
378da853ecaSopenharmony_ci
379da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1);
380da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE_44100);
381da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BIT_RATE_112000);
382da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE);
383da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE);
384da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO);
385da853ecaSopenharmony_ci
386da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
387da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
388da853ecaSopenharmony_ci    encoderDemo->InnerReset();
389da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, -1);
390da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
391da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
392da853ecaSopenharmony_ci    encoderDemo->InnerReset();
393da853ecaSopenharmony_ci    audioParams.PutStringValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, "aaaaaa");
394da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
395da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
396da853ecaSopenharmony_ci    encoderDemo->InnerReset();
397da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 0);
398da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
399da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
400da853ecaSopenharmony_ci    encoderDemo->InnerReset();
401da853ecaSopenharmony_ci    audioParams.PutFloatValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 0.1);
402da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
403da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
404da853ecaSopenharmony_ci    encoderDemo->InnerReset();
405da853ecaSopenharmony_ci    audioParams.PutDoubleValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 0.1);
406da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
407da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
408da853ecaSopenharmony_ci    encoderDemo->InnerReset();
409da853ecaSopenharmony_ci    uint8_t b[100];
410da853ecaSopenharmony_ci    audioParams.PutBuffer(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, b, 100);
411da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
412da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_UNSUPPORT_AUD_PARAMS, ret);
413da853ecaSopenharmony_ci    encoderDemo->InnerReset();
414da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
415da853ecaSopenharmony_ci
416da853ecaSopenharmony_ci    delete encoderDemo;
417da853ecaSopenharmony_ci}
418da853ecaSopenharmony_ci
419da853ecaSopenharmony_ci/**
420da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_009
421da853ecaSopenharmony_ci * @tc.name      : InnerQueueInputBuffer - info.size check
422da853ecaSopenharmony_ci * @tc.desc      : param check test
423da853ecaSopenharmony_ci */
424da853ecaSopenharmony_ciHWTEST_F(InnerParamCheckTest, SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_009, TestSize.Level2)
425da853ecaSopenharmony_ci{
426da853ecaSopenharmony_ci    AudioEncoderDemo *encoderDemo = new AudioEncoderDemo();
427da853ecaSopenharmony_ci    int32_t ret = encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC");
428da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
429da853ecaSopenharmony_ci    Format audioParams;
430da853ecaSopenharmony_ci
431da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1);
432da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE_44100);
433da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BIT_RATE_112000);
434da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE);
435da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE);
436da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO);
437da853ecaSopenharmony_ci    std::shared_ptr<AEncSignal> signal_ = encoderDemo->getSignal();
438da853ecaSopenharmony_ci    std::shared_ptr<InnerAEnDemoCallback> cb_ = make_unique<InnerAEnDemoCallback>(signal_);
439da853ecaSopenharmony_ci    ret = encoderDemo->InnerSetCallback(cb_);
440da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
441da853ecaSopenharmony_ci
442da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
443da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
444da853ecaSopenharmony_ci
445da853ecaSopenharmony_ci    encoderDemo->InnerPrepare();
446da853ecaSopenharmony_ci    encoderDemo->InnerStartWithThread();
447da853ecaSopenharmony_ci    uint32_t index = encoderDemo->InnerGetInputIndex();
448da853ecaSopenharmony_ci    AVCodecBufferInfo info;
449da853ecaSopenharmony_ci    AVCodecBufferFlag flag;
450da853ecaSopenharmony_ci
451da853ecaSopenharmony_ci    std::shared_ptr<AVSharedMemory> buffer = signal_->inInnerBufQueue_.front();
452da853ecaSopenharmony_ci    ASSERT_NE(nullptr, buffer);
453da853ecaSopenharmony_ci
454da853ecaSopenharmony_ci    info.presentationTimeUs = 0;
455da853ecaSopenharmony_ci    info.size = 100;
456da853ecaSopenharmony_ci    info.offset = 0;
457da853ecaSopenharmony_ci
458da853ecaSopenharmony_ci    flag = AVCODEC_BUFFER_FLAG_NONE;
459da853ecaSopenharmony_ci
460da853ecaSopenharmony_ci    ret = encoderDemo->InnerQueueInputBuffer(index, info, flag);
461da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
462da853ecaSopenharmony_ci    index = encoderDemo->InnerGetInputIndex();
463da853ecaSopenharmony_ci    info.size = -1;
464da853ecaSopenharmony_ci    ret = encoderDemo->InnerQueueInputBuffer(index, info, flag);
465da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_INVALID_VAL, ret);
466da853ecaSopenharmony_ci
467da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
468da853ecaSopenharmony_ci    delete encoderDemo;
469da853ecaSopenharmony_ci}
470da853ecaSopenharmony_ci
471da853ecaSopenharmony_ci/**
472da853ecaSopenharmony_ci * @tc.number    : SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_010
473da853ecaSopenharmony_ci * @tc.name      : InnerQueueInputBuffer - info.offset check
474da853ecaSopenharmony_ci * @tc.desc      : param check test
475da853ecaSopenharmony_ci */
476da853ecaSopenharmony_ciHWTEST_F(InnerParamCheckTest, SUB_MULTIMEDIA_AUDIO_ENCODER_PARAM_CHECK_010, TestSize.Level2)
477da853ecaSopenharmony_ci{
478da853ecaSopenharmony_ci    AudioEncoderDemo *encoderDemo = new AudioEncoderDemo();
479da853ecaSopenharmony_ci    int32_t ret = encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC");
480da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
481da853ecaSopenharmony_ci    Format audioParams;
482da853ecaSopenharmony_ci
483da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1);
484da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE_44100);
485da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BIT_RATE_112000);
486da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE);
487da853ecaSopenharmony_ci    audioParams.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE);
488da853ecaSopenharmony_ci    audioParams.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO);
489da853ecaSopenharmony_ci    std::shared_ptr<AEncSignal> signal_ = encoderDemo->getSignal();
490da853ecaSopenharmony_ci    std::shared_ptr<InnerAEnDemoCallback> cb_ = make_unique<InnerAEnDemoCallback>(signal_);
491da853ecaSopenharmony_ci    ret = encoderDemo->InnerSetCallback(cb_);
492da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
493da853ecaSopenharmony_ci
494da853ecaSopenharmony_ci    ret = encoderDemo->InnerConfigure(audioParams);
495da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
496da853ecaSopenharmony_ci
497da853ecaSopenharmony_ci    encoderDemo->InnerPrepare();
498da853ecaSopenharmony_ci    encoderDemo->InnerStartWithThread();
499da853ecaSopenharmony_ci
500da853ecaSopenharmony_ci    uint32_t index = encoderDemo->InnerGetInputIndex();
501da853ecaSopenharmony_ci    AVCodecBufferInfo info;
502da853ecaSopenharmony_ci    AVCodecBufferFlag flag;
503da853ecaSopenharmony_ci
504da853ecaSopenharmony_ci    std::shared_ptr<AVSharedMemory> buffer = signal_->inInnerBufQueue_.front();
505da853ecaSopenharmony_ci    ASSERT_NE(nullptr, buffer);
506da853ecaSopenharmony_ci
507da853ecaSopenharmony_ci    info.presentationTimeUs = 0;
508da853ecaSopenharmony_ci    info.size = 100;
509da853ecaSopenharmony_ci    info.offset = 0;
510da853ecaSopenharmony_ci
511da853ecaSopenharmony_ci    flag = AVCODEC_BUFFER_FLAG_NONE;
512da853ecaSopenharmony_ci
513da853ecaSopenharmony_ci    ret = encoderDemo->InnerQueueInputBuffer(index, info, flag);
514da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_OK, ret);
515da853ecaSopenharmony_ci
516da853ecaSopenharmony_ci    index = encoderDemo->InnerGetInputIndex();
517da853ecaSopenharmony_ci    info.offset = -1;
518da853ecaSopenharmony_ci    ret = encoderDemo->InnerQueueInputBuffer(index, info, flag);
519da853ecaSopenharmony_ci    ASSERT_EQ(AVCS_ERR_INVALID_VAL, ret);
520da853ecaSopenharmony_ci
521da853ecaSopenharmony_ci    encoderDemo->InnerDestroy();
522da853ecaSopenharmony_ci    delete encoderDemo;
523da853ecaSopenharmony_ci}