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
16da853ecaSopenharmony_ci#include "gtest/gtest.h"
17da853ecaSopenharmony_ci
18da853ecaSopenharmony_ci#include "native_avcodec_base.h"
19da853ecaSopenharmony_ci#include "native_avdemuxer.h"
20da853ecaSopenharmony_ci#include "native_avformat.h"
21da853ecaSopenharmony_ci#include "native_avsource.h"
22da853ecaSopenharmony_ci#include "native_avbuffer.h"
23da853ecaSopenharmony_ci
24da853ecaSopenharmony_ci#include <iostream>
25da853ecaSopenharmony_ci#include <cstdio>
26da853ecaSopenharmony_ci#include <string>
27da853ecaSopenharmony_ci#include <fcntl.h>
28da853ecaSopenharmony_ci
29da853ecaSopenharmony_cinamespace OHOS {
30da853ecaSopenharmony_cinamespace Media {
31da853ecaSopenharmony_ciclass DemuxerApiNdkTest : public testing::Test {
32da853ecaSopenharmony_cipublic:
33da853ecaSopenharmony_ci    // SetUpTestCase: Called before all test cases
34da853ecaSopenharmony_ci    static void SetUpTestCase(void);
35da853ecaSopenharmony_ci    // TearDownTestCase: Called after all test case
36da853ecaSopenharmony_ci    static void TearDownTestCase(void);
37da853ecaSopenharmony_ci    // SetUp: Called before each test cases
38da853ecaSopenharmony_ci    void SetUp(void);
39da853ecaSopenharmony_ci    // TearDown: Called after each test cases
40da853ecaSopenharmony_ci    void TearDown(void);
41da853ecaSopenharmony_ci
42da853ecaSopenharmony_cipublic:
43da853ecaSopenharmony_ci    int fd1;
44da853ecaSopenharmony_ci    int64_t size;
45da853ecaSopenharmony_ci};
46da853ecaSopenharmony_cistatic int32_t g_width = 3840;
47da853ecaSopenharmony_cistatic int32_t g_height = 2160;
48da853ecaSopenharmony_cistatic OH_AVMemory *memory = nullptr;
49da853ecaSopenharmony_cistatic OH_AVBuffer *buffer = nullptr;
50da853ecaSopenharmony_cistatic OH_AVSource *source = nullptr;
51da853ecaSopenharmony_cistatic OH_AVDemuxer *demuxer = nullptr;
52da853ecaSopenharmony_ciconst char *g_file1 = "/data/test/media/01_video_audio.mp4";
53da853ecaSopenharmony_ciconst char *g_file2 = "/data/test/media/avcc_10sec.mp4";
54da853ecaSopenharmony_ci
55da853ecaSopenharmony_civoid DemuxerApiNdkTest::SetUpTestCase() {}
56da853ecaSopenharmony_civoid DemuxerApiNdkTest::TearDownTestCase() {}
57da853ecaSopenharmony_ci
58da853ecaSopenharmony_civoid DemuxerApiNdkTest::SetUp()
59da853ecaSopenharmony_ci{
60da853ecaSopenharmony_ci    memory = OH_AVMemory_Create(g_width * g_height);
61da853ecaSopenharmony_ci    buffer = OH_AVBuffer_Create(g_width * g_height);
62da853ecaSopenharmony_ci    fd1 = open(g_file1, O_RDONLY);
63da853ecaSopenharmony_ci
64da853ecaSopenharmony_ci    struct stat fileStatus {};
65da853ecaSopenharmony_ci    if (stat(g_file1, &fileStatus) == 0) {
66da853ecaSopenharmony_ci        size = static_cast<int64_t>(fileStatus.st_size);
67da853ecaSopenharmony_ci    }
68da853ecaSopenharmony_ci
69da853ecaSopenharmony_ci    std::cout << fd1 << "----------" << g_file1 << "=====" << size << std::endl;
70da853ecaSopenharmony_ci}
71da853ecaSopenharmony_ci
72da853ecaSopenharmony_civoid DemuxerApiNdkTest::TearDown()
73da853ecaSopenharmony_ci{
74da853ecaSopenharmony_ci    close(fd1);
75da853ecaSopenharmony_ci    fd1 = 0;
76da853ecaSopenharmony_ci    if (memory != nullptr) {
77da853ecaSopenharmony_ci        OH_AVMemory_Destroy(memory);
78da853ecaSopenharmony_ci        memory = nullptr;
79da853ecaSopenharmony_ci    }
80da853ecaSopenharmony_ci    if (buffer != nullptr) {
81da853ecaSopenharmony_ci        OH_AVBuffer_Destroy(buffer);
82da853ecaSopenharmony_ci        buffer = nullptr;
83da853ecaSopenharmony_ci    }
84da853ecaSopenharmony_ci    if (source != nullptr) {
85da853ecaSopenharmony_ci        OH_AVSource_Destroy(source);
86da853ecaSopenharmony_ci        source = nullptr;
87da853ecaSopenharmony_ci    }
88da853ecaSopenharmony_ci    if (demuxer != nullptr) {
89da853ecaSopenharmony_ci        OH_AVDemuxer_Destroy(demuxer);
90da853ecaSopenharmony_ci        demuxer = nullptr;
91da853ecaSopenharmony_ci    }
92da853ecaSopenharmony_ci}
93da853ecaSopenharmony_ci} // namespace Media
94da853ecaSopenharmony_ci} // namespace OHOS
95da853ecaSopenharmony_ci
96da853ecaSopenharmony_cinamespace {
97da853ecaSopenharmony_ciusing namespace std;
98da853ecaSopenharmony_ciusing namespace OHOS;
99da853ecaSopenharmony_ciusing namespace OHOS::Media;
100da853ecaSopenharmony_ciusing namespace testing::ext;
101da853ecaSopenharmony_ci
102da853ecaSopenharmony_ci/**
103da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_0100
104da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_CreateWithURI para error
105da853ecaSopenharmony_ci * @tc.desc      : api test
106da853ecaSopenharmony_ci */
107da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_0100, TestSize.Level2)
108da853ecaSopenharmony_ci{
109da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithURI(nullptr);
110da853ecaSopenharmony_ci    ASSERT_EQ(nullptr, source);
111da853ecaSopenharmony_ci}
112da853ecaSopenharmony_ci
113da853ecaSopenharmony_ci/**
114da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_0200
115da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_CreateWithFD para error
116da853ecaSopenharmony_ci * @tc.desc      : api test
117da853ecaSopenharmony_ci */
118da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_0200, TestSize.Level2)
119da853ecaSopenharmony_ci{
120da853ecaSopenharmony_ci    // fd must bigger than 2
121da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(2, 0, 0);
122da853ecaSopenharmony_ci    ASSERT_EQ(nullptr, source);
123da853ecaSopenharmony_ci}
124da853ecaSopenharmony_ci
125da853ecaSopenharmony_ci/**
126da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_0700
127da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_CreateWithFD para error
128da853ecaSopenharmony_ci * @tc.desc      : api test
129da853ecaSopenharmony_ci */
130da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_0700, TestSize.Level2)
131da853ecaSopenharmony_ci{
132da853ecaSopenharmony_ci    // fd must bigger than 2
133da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(3, 0, -1);
134da853ecaSopenharmony_ci    ASSERT_EQ(nullptr, source);
135da853ecaSopenharmony_ci}
136da853ecaSopenharmony_ci
137da853ecaSopenharmony_ci/**
138da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_0800
139da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_CreateWithFD para error
140da853ecaSopenharmony_ci * @tc.desc      : api test
141da853ecaSopenharmony_ci */
142da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_0800, TestSize.Level2)
143da853ecaSopenharmony_ci{
144da853ecaSopenharmony_ci    // fd must bigger than 2
145da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(3, -1, 1);
146da853ecaSopenharmony_ci    ASSERT_EQ(nullptr, source);
147da853ecaSopenharmony_ci}
148da853ecaSopenharmony_ci
149da853ecaSopenharmony_ci/**
150da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_0300
151da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_Destroy para error
152da853ecaSopenharmony_ci * @tc.desc      : api test
153da853ecaSopenharmony_ci */
154da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_0300, TestSize.Level2)
155da853ecaSopenharmony_ci{
156da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVSource_Destroy(nullptr));
157da853ecaSopenharmony_ci}
158da853ecaSopenharmony_ci
159da853ecaSopenharmony_ci/**
160da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_0400
161da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_GetSourceFormat para error
162da853ecaSopenharmony_ci * @tc.desc      : api test
163da853ecaSopenharmony_ci */
164da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_0400, TestSize.Level2)
165da853ecaSopenharmony_ci{
166da853ecaSopenharmony_ci    OH_AVFormat *format = OH_AVSource_GetSourceFormat(nullptr);
167da853ecaSopenharmony_ci    ASSERT_EQ(nullptr, format);
168da853ecaSopenharmony_ci}
169da853ecaSopenharmony_ci
170da853ecaSopenharmony_ci/**
171da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_0500
172da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_GetTrackFormat para error
173da853ecaSopenharmony_ci * @tc.desc      : api test
174da853ecaSopenharmony_ci */
175da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_0500, TestSize.Level2)
176da853ecaSopenharmony_ci{
177da853ecaSopenharmony_ci    OH_AVFormat *format = OH_AVSource_GetTrackFormat(nullptr, 0);
178da853ecaSopenharmony_ci    ASSERT_EQ(nullptr, format);
179da853ecaSopenharmony_ci}
180da853ecaSopenharmony_ci
181da853ecaSopenharmony_ci/**
182da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_0600
183da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_GetSourceFormat para error
184da853ecaSopenharmony_ci * @tc.desc      : api test
185da853ecaSopenharmony_ci */
186da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_0600, TestSize.Level2)
187da853ecaSopenharmony_ci{
188da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
189da853ecaSopenharmony_ci    ASSERT_NE(nullptr, source);
190da853ecaSopenharmony_ci    OH_AVFormat *format = OH_AVSource_GetTrackFormat(source, -1);
191da853ecaSopenharmony_ci    ASSERT_EQ(nullptr, format);
192da853ecaSopenharmony_ci}
193da853ecaSopenharmony_ci
194da853ecaSopenharmony_ci/**
195da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_2300
196da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_CreateWithFD para error
197da853ecaSopenharmony_ci * @tc.desc      : api test
198da853ecaSopenharmony_ci */
199da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_2300, TestSize.Level2)
200da853ecaSopenharmony_ci{
201da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, 0);
202da853ecaSopenharmony_ci    ASSERT_EQ(nullptr, source);
203da853ecaSopenharmony_ci}
204da853ecaSopenharmony_ci
205da853ecaSopenharmony_ci/**
206da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_0900
207da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_CreateWithSource para error
208da853ecaSopenharmony_ci * @tc.desc      : api test
209da853ecaSopenharmony_ci */
210da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_0900, TestSize.Level2)
211da853ecaSopenharmony_ci{
212da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(nullptr);
213da853ecaSopenharmony_ci    ASSERT_EQ(nullptr, demuxer);
214da853ecaSopenharmony_ci}
215da853ecaSopenharmony_ci
216da853ecaSopenharmony_ci/**
217da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_1000
218da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_Destroy para error
219da853ecaSopenharmony_ci * @tc.desc      : api test
220da853ecaSopenharmony_ci */
221da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_1000, TestSize.Level2)
222da853ecaSopenharmony_ci{
223da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVDemuxer_Destroy(nullptr));
224da853ecaSopenharmony_ci}
225da853ecaSopenharmony_ci
226da853ecaSopenharmony_ci/**
227da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_1100
228da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_SelectTrackByID para error
229da853ecaSopenharmony_ci * @tc.desc      : api test
230da853ecaSopenharmony_ci */
231da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_1100, TestSize.Level2)
232da853ecaSopenharmony_ci{
233da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVDemuxer_SelectTrackByID(nullptr, 0));
234da853ecaSopenharmony_ci}
235da853ecaSopenharmony_ci
236da853ecaSopenharmony_ci/**
237da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_1200
238da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_SelectTrackByID para error
239da853ecaSopenharmony_ci * @tc.desc      : api test
240da853ecaSopenharmony_ci */
241da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_1200, TestSize.Level2)
242da853ecaSopenharmony_ci{
243da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
244da853ecaSopenharmony_ci    ASSERT_NE(nullptr, source);
245da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
246da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVDemuxer_SelectTrackByID(demuxer, -1));
247da853ecaSopenharmony_ci}
248da853ecaSopenharmony_ci
249da853ecaSopenharmony_ci/**
250da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_1300
251da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_UnselectTrackByID para error
252da853ecaSopenharmony_ci * @tc.desc      : api test
253da853ecaSopenharmony_ci */
254da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_1300, TestSize.Level2)
255da853ecaSopenharmony_ci{
256da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVDemuxer_UnselectTrackByID(nullptr, 0));
257da853ecaSopenharmony_ci}
258da853ecaSopenharmony_ci
259da853ecaSopenharmony_ci/**
260da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_1400
261da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_UnselectTrackByID para error
262da853ecaSopenharmony_ci * @tc.desc      : api test
263da853ecaSopenharmony_ci */
264da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_1400, TestSize.Level2)
265da853ecaSopenharmony_ci{
266da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
267da853ecaSopenharmony_ci    ASSERT_NE(nullptr, source);
268da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
269da853ecaSopenharmony_ci    ASSERT_NE(nullptr, demuxer);
270da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_UnselectTrackByID(demuxer, -1)); // unselect ok
271da853ecaSopenharmony_ci}
272da853ecaSopenharmony_ci
273da853ecaSopenharmony_ci/**
274da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_1500
275da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSample para error
276da853ecaSopenharmony_ci * @tc.desc      : api test
277da853ecaSopenharmony_ci */
278da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_1500, TestSize.Level2)
279da853ecaSopenharmony_ci{
280da853ecaSopenharmony_ci    uint32_t trackIndex = 0;
281da853ecaSopenharmony_ci    OH_AVCodecBufferAttr bufferAttr;
282da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVDemuxer_ReadSample(nullptr, trackIndex, memory, &bufferAttr));
283da853ecaSopenharmony_ci}
284da853ecaSopenharmony_ci
285da853ecaSopenharmony_ci/**
286da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_1600
287da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSample para error
288da853ecaSopenharmony_ci * @tc.desc      : api test
289da853ecaSopenharmony_ci */
290da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_1600, TestSize.Level2)
291da853ecaSopenharmony_ci{
292da853ecaSopenharmony_ci    uint32_t trackIndex = -1;
293da853ecaSopenharmony_ci    OH_AVCodecBufferAttr bufferAttr;
294da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
295da853ecaSopenharmony_ci    ASSERT_NE(nullptr, source);
296da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
297da853ecaSopenharmony_ci    ASSERT_NE(nullptr, demuxer);
298da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_OPERATE_NOT_PERMIT, OH_AVDemuxer_ReadSample(demuxer, trackIndex, memory, &bufferAttr));
299da853ecaSopenharmony_ci}
300da853ecaSopenharmony_ci
301da853ecaSopenharmony_ci/**
302da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_1700
303da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSample para error
304da853ecaSopenharmony_ci * @tc.desc      : api test
305da853ecaSopenharmony_ci */
306da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_1700, TestSize.Level2)
307da853ecaSopenharmony_ci{
308da853ecaSopenharmony_ci    uint32_t trackIndex = 0;
309da853ecaSopenharmony_ci    OH_AVMemory *memory1 = OH_AVMemory_Create(2);
310da853ecaSopenharmony_ci    OH_AVCodecBufferAttr bufferAttr;
311da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
312da853ecaSopenharmony_ci    ASSERT_NE(nullptr, source);
313da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
314da853ecaSopenharmony_ci    ASSERT_NE(nullptr, demuxer);
315da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SelectTrackByID(demuxer, 0));
316da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_NO_MEMORY, OH_AVDemuxer_ReadSample(demuxer, trackIndex, memory1, &bufferAttr));
317da853ecaSopenharmony_ci
318da853ecaSopenharmony_ci    OH_AVMemory_Destroy(memory1);
319da853ecaSopenharmony_ci    memory1 = nullptr;
320da853ecaSopenharmony_ci}
321da853ecaSopenharmony_ci
322da853ecaSopenharmony_ci/**
323da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_8600
324da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSample para error
325da853ecaSopenharmony_ci * @tc.desc      : api test
326da853ecaSopenharmony_ci */
327da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_2400, TestSize.Level2)
328da853ecaSopenharmony_ci{
329da853ecaSopenharmony_ci    uint32_t trackIndex = 0;
330da853ecaSopenharmony_ci    OH_AVMemory *memory1 = OH_AVMemory_Create(2);
331da853ecaSopenharmony_ci    OH_AVCodecBufferAttr bufferAttr;
332da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
333da853ecaSopenharmony_ci    ASSERT_NE(nullptr, source);
334da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
335da853ecaSopenharmony_ci    ASSERT_NE(nullptr, demuxer);
336da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_OPERATE_NOT_PERMIT, OH_AVDemuxer_ReadSample(demuxer, trackIndex, memory1, &bufferAttr));
337da853ecaSopenharmony_ci
338da853ecaSopenharmony_ci    OH_AVMemory_Destroy(memory1);
339da853ecaSopenharmony_ci    memory1 = nullptr;
340da853ecaSopenharmony_ci}
341da853ecaSopenharmony_ci
342da853ecaSopenharmony_ci/**
343da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_1700
344da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSample para error
345da853ecaSopenharmony_ci * @tc.desc      : api test
346da853ecaSopenharmony_ci */
347da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_2500, TestSize.Level2)
348da853ecaSopenharmony_ci{
349da853ecaSopenharmony_ci    uint32_t trackIndex = 0;
350da853ecaSopenharmony_ci    OH_AVCodecBufferAttr bufferAttr;
351da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
352da853ecaSopenharmony_ci    ASSERT_NE(nullptr, source);
353da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
354da853ecaSopenharmony_ci    ASSERT_NE(nullptr, demuxer);
355da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVDemuxer_ReadSample(demuxer, trackIndex, nullptr, &bufferAttr));
356da853ecaSopenharmony_ci}
357da853ecaSopenharmony_ci
358da853ecaSopenharmony_ci/**
359da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_2600
360da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSampleBuffer para error, input null demuxer
361da853ecaSopenharmony_ci * @tc.desc      : api test
362da853ecaSopenharmony_ci */
363da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_2600, TestSize.Level2)
364da853ecaSopenharmony_ci{
365da853ecaSopenharmony_ci    uint32_t trackIndex = 0;
366da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVDemuxer_ReadSampleBuffer(nullptr, trackIndex, buffer));
367da853ecaSopenharmony_ci}
368da853ecaSopenharmony_ci
369da853ecaSopenharmony_ci/**
370da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_2700
371da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSampleBuffer para error, input illegal trackIndex
372da853ecaSopenharmony_ci * @tc.desc      : api test
373da853ecaSopenharmony_ci */
374da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_2700, TestSize.Level2)
375da853ecaSopenharmony_ci{
376da853ecaSopenharmony_ci    uint32_t trackIndex = -1;
377da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
378da853ecaSopenharmony_ci    ASSERT_NE(nullptr, source);
379da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
380da853ecaSopenharmony_ci    ASSERT_NE(nullptr, demuxer);
381da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_OPERATE_NOT_PERMIT, OH_AVDemuxer_ReadSampleBuffer(demuxer, trackIndex, buffer));
382da853ecaSopenharmony_ci}
383da853ecaSopenharmony_ci
384da853ecaSopenharmony_ci/**
385da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_2800
386da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSampleBuffer para error, input buffer is not enough
387da853ecaSopenharmony_ci * @tc.desc      : api test
388da853ecaSopenharmony_ci */
389da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_2800, TestSize.Level2)
390da853ecaSopenharmony_ci{
391da853ecaSopenharmony_ci    uint32_t trackIndex = 0;
392da853ecaSopenharmony_ci    OH_AVBuffer *buffer1 = OH_AVBuffer_Create(2);
393da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
394da853ecaSopenharmony_ci    ASSERT_NE(nullptr, source);
395da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
396da853ecaSopenharmony_ci    ASSERT_NE(nullptr, demuxer);
397da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SelectTrackByID(demuxer, 0));
398da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_NO_MEMORY, OH_AVDemuxer_ReadSampleBuffer(demuxer, trackIndex, buffer1));
399da853ecaSopenharmony_ci
400da853ecaSopenharmony_ci    OH_AVBuffer_Destroy(buffer1);
401da853ecaSopenharmony_ci    buffer1 = nullptr;
402da853ecaSopenharmony_ci}
403da853ecaSopenharmony_ci
404da853ecaSopenharmony_ci/**
405da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_2900
406da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSampleBuffer para error, read before select
407da853ecaSopenharmony_ci * @tc.desc      : api test
408da853ecaSopenharmony_ci */
409da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_2900, TestSize.Level2)
410da853ecaSopenharmony_ci{
411da853ecaSopenharmony_ci    uint32_t trackIndex = 0;
412da853ecaSopenharmony_ci    OH_AVBuffer *buffer1 = OH_AVBuffer_Create(2);
413da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
414da853ecaSopenharmony_ci    ASSERT_NE(nullptr, source);
415da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
416da853ecaSopenharmony_ci    ASSERT_NE(nullptr, demuxer);
417da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_OPERATE_NOT_PERMIT, OH_AVDemuxer_ReadSampleBuffer(demuxer, trackIndex, buffer1));
418da853ecaSopenharmony_ci
419da853ecaSopenharmony_ci    OH_AVBuffer_Destroy(buffer1);
420da853ecaSopenharmony_ci    buffer1 = nullptr;
421da853ecaSopenharmony_ci}
422da853ecaSopenharmony_ci
423da853ecaSopenharmony_ci/**
424da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_3000
425da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSampleBuffer para error, input null buffer
426da853ecaSopenharmony_ci * @tc.desc      : api test
427da853ecaSopenharmony_ci */
428da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_3000, TestSize.Level2)
429da853ecaSopenharmony_ci{
430da853ecaSopenharmony_ci    uint32_t trackIndex = 0;
431da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
432da853ecaSopenharmony_ci    ASSERT_NE(nullptr, source);
433da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
434da853ecaSopenharmony_ci    ASSERT_NE(nullptr, demuxer);
435da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVDemuxer_ReadSampleBuffer(demuxer, trackIndex, nullptr));
436da853ecaSopenharmony_ci}
437da853ecaSopenharmony_ci
438da853ecaSopenharmony_ci/**
439da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_1800
440da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSample para error
441da853ecaSopenharmony_ci * @tc.desc      : api test
442da853ecaSopenharmony_ci */
443da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_1800, TestSize.Level2)
444da853ecaSopenharmony_ci{
445da853ecaSopenharmony_ci    uint32_t trackIndex = 0;
446da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
447da853ecaSopenharmony_ci    ASSERT_NE(nullptr, source);
448da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
449da853ecaSopenharmony_ci    ASSERT_NE(nullptr, demuxer);
450da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVDemuxer_ReadSample(demuxer, trackIndex, memory, nullptr));
451da853ecaSopenharmony_ci}
452da853ecaSopenharmony_ci
453da853ecaSopenharmony_ci/**
454da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_1900
455da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_SeekToTime para error
456da853ecaSopenharmony_ci * @tc.desc      : api test
457da853ecaSopenharmony_ci */
458da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_1900, TestSize.Level2)
459da853ecaSopenharmony_ci{
460da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVDemuxer_SeekToTime(nullptr, 1, SEEK_MODE_NEXT_SYNC));
461da853ecaSopenharmony_ci}
462da853ecaSopenharmony_ci
463da853ecaSopenharmony_ci/**
464da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_2100
465da853ecaSopenharmony_ci * @tc.name      : OH_AVMemory_Create para error
466da853ecaSopenharmony_ci * @tc.desc      : api test
467da853ecaSopenharmony_ci */
468da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_2100, TestSize.Level2)
469da853ecaSopenharmony_ci{
470da853ecaSopenharmony_ci    memory = OH_AVMemory_Create(-1);
471da853ecaSopenharmony_ci    ASSERT_EQ(nullptr, memory);
472da853ecaSopenharmony_ci}
473da853ecaSopenharmony_ci
474da853ecaSopenharmony_ci/**
475da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_2200
476da853ecaSopenharmony_ci * @tc.name      : OH_AVMemory_Destroy para error
477da853ecaSopenharmony_ci * @tc.desc      : api test
478da853ecaSopenharmony_ci */
479da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_ILLEGAL_PARA_2200, TestSize.Level2)
480da853ecaSopenharmony_ci{
481da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVMemory_Destroy(nullptr));
482da853ecaSopenharmony_ci}
483da853ecaSopenharmony_ci
484da853ecaSopenharmony_ci/**
485da853ecaSopenharmony_ci * @tc.number    : DEMUXER_API_0200
486da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_CreateWithFD Repeat Call
487da853ecaSopenharmony_ci * @tc.desc      : api test
488da853ecaSopenharmony_ci */
489da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_API_0200, TestSize.Level2)
490da853ecaSopenharmony_ci{
491da853ecaSopenharmony_ci    OH_AVSource *source1 = OH_AVSource_CreateWithFD(fd1, 0, size);
492da853ecaSopenharmony_ci    ASSERT_NE(source1, nullptr);
493da853ecaSopenharmony_ci    int fd2 = open(g_file2, O_RDONLY);
494da853ecaSopenharmony_ci    int64_t size2 = 0;
495da853ecaSopenharmony_ci
496da853ecaSopenharmony_ci    struct stat fileStatus {};
497da853ecaSopenharmony_ci    if (stat(g_file2, &fileStatus) == 0) {
498da853ecaSopenharmony_ci        size2 = static_cast<int64_t>(fileStatus.st_size);
499da853ecaSopenharmony_ci    }
500da853ecaSopenharmony_ci
501da853ecaSopenharmony_ci    OH_AVSource *source2 = OH_AVSource_CreateWithFD(fd2, 0, size2);
502da853ecaSopenharmony_ci    cout << size2 << "------------------" << endl;
503da853ecaSopenharmony_ci    ASSERT_NE(source2, nullptr);
504da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_OK, OH_AVSource_Destroy(source1));
505da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_OK, OH_AVSource_Destroy(source2));
506da853ecaSopenharmony_ci    source1 = nullptr;
507da853ecaSopenharmony_ci    source2 = nullptr;
508da853ecaSopenharmony_ci    close(fd2);
509da853ecaSopenharmony_ci}
510da853ecaSopenharmony_ci
511da853ecaSopenharmony_ci/**
512da853ecaSopenharmony_ci * @tc.number    : DEMUXER_API_0300
513da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_Destroy Repeat Call
514da853ecaSopenharmony_ci * @tc.desc      : api test
515da853ecaSopenharmony_ci */
516da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_API_0300, TestSize.Level2)
517da853ecaSopenharmony_ci{
518da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
519da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_OK, OH_AVSource_Destroy(source));
520da853ecaSopenharmony_ci    source = nullptr;
521da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVSource_Destroy(source));
522da853ecaSopenharmony_ci}
523da853ecaSopenharmony_ci
524da853ecaSopenharmony_ci/**
525da853ecaSopenharmony_ci * @tc.number    : DEMUXER_API_0500
526da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_GetSourceFormat Repeat Call
527da853ecaSopenharmony_ci * @tc.desc      : api test
528da853ecaSopenharmony_ci */
529da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_API_0500, TestSize.Level2)
530da853ecaSopenharmony_ci{
531da853ecaSopenharmony_ci    OH_AVFormat *format;
532da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
533da853ecaSopenharmony_ci    ASSERT_NE(source, nullptr);
534da853ecaSopenharmony_ci    format = OH_AVSource_GetSourceFormat(source);
535da853ecaSopenharmony_ci    ASSERT_NE(format, nullptr);
536da853ecaSopenharmony_ci    format = OH_AVSource_GetSourceFormat(source);
537da853ecaSopenharmony_ci    ASSERT_NE(format, nullptr);
538da853ecaSopenharmony_ci}
539da853ecaSopenharmony_ci
540da853ecaSopenharmony_ci/**
541da853ecaSopenharmony_ci * @tc.number    : DEMUXER_API_0700
542da853ecaSopenharmony_ci * @tc.name      : OH_AVSource_GetTrackFormat Repeat Call
543da853ecaSopenharmony_ci * @tc.desc      : api test
544da853ecaSopenharmony_ci */
545da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_API_0700, TestSize.Level2)
546da853ecaSopenharmony_ci{
547da853ecaSopenharmony_ci    OH_AVFormat *format;
548da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
549da853ecaSopenharmony_ci    ASSERT_NE(source, nullptr);
550da853ecaSopenharmony_ci
551da853ecaSopenharmony_ci    format = OH_AVSource_GetTrackFormat(source, 0);
552da853ecaSopenharmony_ci    ASSERT_NE(format, nullptr);
553da853ecaSopenharmony_ci    format = OH_AVSource_GetTrackFormat(source, 0);
554da853ecaSopenharmony_ci    ASSERT_NE(format, nullptr);
555da853ecaSopenharmony_ci}
556da853ecaSopenharmony_ci
557da853ecaSopenharmony_ci/**
558da853ecaSopenharmony_ci * @tc.number    : DEMUXER_API_1000
559da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_Destroy Repeat Call
560da853ecaSopenharmony_ci * @tc.desc      : api test
561da853ecaSopenharmony_ci */
562da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_API_1000, TestSize.Level2)
563da853ecaSopenharmony_ci{
564da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
565da853ecaSopenharmony_ci    ASSERT_NE(source, nullptr);
566da853ecaSopenharmony_ci
567da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
568da853ecaSopenharmony_ci    ASSERT_NE(demuxer, nullptr);
569da853ecaSopenharmony_ci
570da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_Destroy(demuxer));
571da853ecaSopenharmony_ci    demuxer = nullptr;
572da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVDemuxer_Destroy(demuxer));
573da853ecaSopenharmony_ci}
574da853ecaSopenharmony_ci
575da853ecaSopenharmony_ci/**
576da853ecaSopenharmony_ci * @tc.number    : DEMUXER_API_1100
577da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_SelectTrackByID Repeat Call
578da853ecaSopenharmony_ci * @tc.desc      : api test
579da853ecaSopenharmony_ci */
580da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_API_1100, TestSize.Level2)
581da853ecaSopenharmony_ci{
582da853ecaSopenharmony_ci    OH_AVErrCode ret = AV_ERR_OK;
583da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
584da853ecaSopenharmony_ci    ASSERT_NE(source, nullptr);
585da853ecaSopenharmony_ci
586da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
587da853ecaSopenharmony_ci    ASSERT_NE(demuxer, nullptr);
588da853ecaSopenharmony_ci    ret = OH_AVDemuxer_SelectTrackByID(demuxer, 0);
589da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
590da853ecaSopenharmony_ci    ret = OH_AVDemuxer_SelectTrackByID(demuxer, 0);
591da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
592da853ecaSopenharmony_ci}
593da853ecaSopenharmony_ci
594da853ecaSopenharmony_ci/**
595da853ecaSopenharmony_ci * @tc.number    : DEMUXER_API_1200
596da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_UnselectTrackByID Repeat Call
597da853ecaSopenharmony_ci * @tc.desc      : api test
598da853ecaSopenharmony_ci */
599da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_API_1200, TestSize.Level2)
600da853ecaSopenharmony_ci{
601da853ecaSopenharmony_ci    OH_AVErrCode ret = AV_ERR_OK;
602da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
603da853ecaSopenharmony_ci    ASSERT_NE(source, nullptr);
604da853ecaSopenharmony_ci
605da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
606da853ecaSopenharmony_ci    ASSERT_NE(demuxer, nullptr);
607da853ecaSopenharmony_ci    ret = OH_AVDemuxer_SelectTrackByID(demuxer, 0);
608da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
609da853ecaSopenharmony_ci    ret = OH_AVDemuxer_UnselectTrackByID(demuxer, 0);
610da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
611da853ecaSopenharmony_ci    ret = OH_AVDemuxer_UnselectTrackByID(demuxer, 0);
612da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
613da853ecaSopenharmony_ci}
614da853ecaSopenharmony_ci
615da853ecaSopenharmony_ci/**
616da853ecaSopenharmony_ci * @tc.number    : DEMUXER_API_1300
617da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSample Repeat Call
618da853ecaSopenharmony_ci * @tc.desc      : api test
619da853ecaSopenharmony_ci */
620da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_API_1300, TestSize.Level2)
621da853ecaSopenharmony_ci{
622da853ecaSopenharmony_ci    OH_AVErrCode ret = AV_ERR_OK;
623da853ecaSopenharmony_ci    OH_AVCodecBufferAttr attr;
624da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
625da853ecaSopenharmony_ci    ASSERT_NE(source, nullptr);
626da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
627da853ecaSopenharmony_ci    ASSERT_NE(demuxer, nullptr);
628da853ecaSopenharmony_ci    ret = OH_AVDemuxer_SelectTrackByID(demuxer, 0);
629da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
630da853ecaSopenharmony_ci    ret = OH_AVDemuxer_ReadSample(demuxer, 0, memory, &attr);
631da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
632da853ecaSopenharmony_ci    ret = OH_AVDemuxer_ReadSample(demuxer, 0, memory, &attr);
633da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
634da853ecaSopenharmony_ci}
635da853ecaSopenharmony_ci
636da853ecaSopenharmony_ci/**
637da853ecaSopenharmony_ci * @tc.number    : DEMUXER_API_1400
638da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_SeekToTime Repeat Call
639da853ecaSopenharmony_ci * @tc.desc      : api test
640da853ecaSopenharmony_ci */
641da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_API_1400, TestSize.Level2)
642da853ecaSopenharmony_ci{
643da853ecaSopenharmony_ci    OH_AVErrCode ret = AV_ERR_OK;
644da853ecaSopenharmony_ci    uint32_t ms = 1000;
645da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
646da853ecaSopenharmony_ci    ASSERT_NE(source, nullptr);
647da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
648da853ecaSopenharmony_ci    ASSERT_NE(demuxer, nullptr);
649da853ecaSopenharmony_ci    ret = OH_AVDemuxer_SelectTrackByID(demuxer, 0);
650da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
651da853ecaSopenharmony_ci    ret = OH_AVDemuxer_SeekToTime(demuxer, ms, SEEK_MODE_NEXT_SYNC);
652da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
653da853ecaSopenharmony_ci    ret = OH_AVDemuxer_SeekToTime(demuxer, ms, SEEK_MODE_NEXT_SYNC);
654da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
655da853ecaSopenharmony_ci}
656da853ecaSopenharmony_ci
657da853ecaSopenharmony_ci/**
658da853ecaSopenharmony_ci * @tc.number    : DEMUXER_API_1500
659da853ecaSopenharmony_ci * @tc.name      : OH_AVMemory_Create Repeat Call
660da853ecaSopenharmony_ci * @tc.desc      : api test
661da853ecaSopenharmony_ci */
662da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_API_2300, TestSize.Level2)
663da853ecaSopenharmony_ci{
664da853ecaSopenharmony_ci    memory = OH_AVMemory_Create(1024);
665da853ecaSopenharmony_ci    ASSERT_NE(nullptr, memory);
666da853ecaSopenharmony_ci    memory = OH_AVMemory_Create(2);
667da853ecaSopenharmony_ci    ASSERT_NE(nullptr, memory);
668da853ecaSopenharmony_ci}
669da853ecaSopenharmony_ci
670da853ecaSopenharmony_ci/**
671da853ecaSopenharmony_ci * @tc.number    : DEMUXER_ILLEGAL_PARA_2200
672da853ecaSopenharmony_ci * @tc.name      : OH_AVMemory_Destroy para error
673da853ecaSopenharmony_ci * @tc.desc      : api test
674da853ecaSopenharmony_ci */
675da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_API_2400, TestSize.Level2)
676da853ecaSopenharmony_ci{
677da853ecaSopenharmony_ci    memory = OH_AVMemory_Create(2);
678da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_OK, OH_AVMemory_Destroy(memory));
679da853ecaSopenharmony_ci    memory = nullptr;
680da853ecaSopenharmony_ci    ASSERT_EQ(AV_ERR_INVALID_VAL, OH_AVMemory_Destroy(memory));
681da853ecaSopenharmony_ci}
682da853ecaSopenharmony_ci
683da853ecaSopenharmony_ci/**
684da853ecaSopenharmony_ci * @tc.number    : DEMUXER_API_2500
685da853ecaSopenharmony_ci * @tc.name      : OH_AVDemuxer_ReadSampleBuffer Repeat Call
686da853ecaSopenharmony_ci * @tc.desc      : api test
687da853ecaSopenharmony_ci */
688da853ecaSopenharmony_ciHWTEST_F(DemuxerApiNdkTest, DEMUXER_API_2500, TestSize.Level2)
689da853ecaSopenharmony_ci{
690da853ecaSopenharmony_ci    OH_AVErrCode ret = AV_ERR_OK;
691da853ecaSopenharmony_ci    source = OH_AVSource_CreateWithFD(fd1, 0, size);
692da853ecaSopenharmony_ci    ASSERT_NE(source, nullptr);
693da853ecaSopenharmony_ci    demuxer = OH_AVDemuxer_CreateWithSource(source);
694da853ecaSopenharmony_ci    ASSERT_NE(demuxer, nullptr);
695da853ecaSopenharmony_ci    ret = OH_AVDemuxer_SelectTrackByID(demuxer, 0);
696da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
697da853ecaSopenharmony_ci    ret = OH_AVDemuxer_ReadSampleBuffer(demuxer, 0, buffer);
698da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
699da853ecaSopenharmony_ci    ret = OH_AVDemuxer_ReadSampleBuffer(demuxer, 0, buffer);
700da853ecaSopenharmony_ci    ASSERT_EQ(ret, AV_ERR_OK);
701da853ecaSopenharmony_ci}
702da853ecaSopenharmony_ci}
703