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