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 "AVMuxerDemo.h" 19da853ecaSopenharmony_ci 20da853ecaSopenharmony_ciusing namespace std; 21da853ecaSopenharmony_ciusing namespace testing::ext; 22da853ecaSopenharmony_ciusing namespace OHOS; 23da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec; 24da853ecaSopenharmony_ci 25da853ecaSopenharmony_ci 26da853ecaSopenharmony_cinamespace { 27da853ecaSopenharmony_ci class NativeAVMuxerNullCheckTest : public testing::Test { 28da853ecaSopenharmony_ci public: 29da853ecaSopenharmony_ci static void SetUpTestCase(); 30da853ecaSopenharmony_ci static void TearDownTestCase(); 31da853ecaSopenharmony_ci void SetUp() override; 32da853ecaSopenharmony_ci void TearDown() override; 33da853ecaSopenharmony_ci }; 34da853ecaSopenharmony_ci 35da853ecaSopenharmony_ci void NativeAVMuxerNullCheckTest::SetUpTestCase() {} 36da853ecaSopenharmony_ci void NativeAVMuxerNullCheckTest::TearDownTestCase() {} 37da853ecaSopenharmony_ci void NativeAVMuxerNullCheckTest::SetUp() {} 38da853ecaSopenharmony_ci void NativeAVMuxerNullCheckTest::TearDown() {} 39da853ecaSopenharmony_ci 40da853ecaSopenharmony_ci constexpr int64_t BITRATE = 32000; 41da853ecaSopenharmony_ci constexpr int32_t CODEC_CONFIG = 100; 42da853ecaSopenharmony_ci constexpr int32_t CHANNEL_COUNT = 1; 43da853ecaSopenharmony_ci constexpr int32_t SAMPLE_RATE = 48000; 44da853ecaSopenharmony_ci constexpr int32_t PROFILE = 0; 45da853ecaSopenharmony_ci constexpr int32_t INFO_SIZE = 100; 46da853ecaSopenharmony_ci} 47da853ecaSopenharmony_ci 48da853ecaSopenharmony_ci 49da853ecaSopenharmony_ci/** 50da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_001 51da853ecaSopenharmony_ci * @tc.name : NativeSetRotation - muxer check 52da853ecaSopenharmony_ci * @tc.desc : nullptr test 53da853ecaSopenharmony_ci */ 54da853ecaSopenharmony_ciHWTEST_F(NativeAVMuxerNullCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_001, TestSize.Level2) 55da853ecaSopenharmony_ci{ 56da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 57da853ecaSopenharmony_ci OH_AVOutputFormat format = AV_OUTPUT_FORMAT_M4A; 58da853ecaSopenharmony_ci int32_t fd = muxerDemo->GetFdByMode(format); 59da853ecaSopenharmony_ci OH_AVMuxer* handle = muxerDemo->NativeCreate(fd, format); 60da853ecaSopenharmony_ci ASSERT_NE(nullptr, handle); 61da853ecaSopenharmony_ci 62da853ecaSopenharmony_ci int32_t rotation = 0; 63da853ecaSopenharmony_ci 64da853ecaSopenharmony_ci OH_AVErrCode ret = muxerDemo->NativeSetRotation(nullptr, rotation); 65da853ecaSopenharmony_ci ASSERT_EQ(AV_ERR_INVALID_VAL, ret); 66da853ecaSopenharmony_ci muxerDemo->NativeDestroy(handle); 67da853ecaSopenharmony_ci delete muxerDemo; 68da853ecaSopenharmony_ci} 69da853ecaSopenharmony_ci 70da853ecaSopenharmony_ci 71da853ecaSopenharmony_ci/** 72da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_002 73da853ecaSopenharmony_ci * @tc.name : OH_AVMuxer_AddTrack - muxer check 74da853ecaSopenharmony_ci * @tc.desc : nullptr test 75da853ecaSopenharmony_ci */ 76da853ecaSopenharmony_ciHWTEST_F(NativeAVMuxerNullCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_002, TestSize.Level2) 77da853ecaSopenharmony_ci{ 78da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 79da853ecaSopenharmony_ci OH_AVOutputFormat format = AV_OUTPUT_FORMAT_M4A; 80da853ecaSopenharmony_ci int32_t fd = muxerDemo->GetFdByMode(format); 81da853ecaSopenharmony_ci OH_AVMuxer* handle = muxerDemo->NativeCreate(fd, format); 82da853ecaSopenharmony_ci ASSERT_NE(nullptr, handle); 83da853ecaSopenharmony_ci 84da853ecaSopenharmony_ci int32_t trackId = -1; 85da853ecaSopenharmony_ci 86da853ecaSopenharmony_ci uint8_t a[100]; 87da853ecaSopenharmony_ci 88da853ecaSopenharmony_ci OH_AVFormat* trackFormat = OH_AVFormat_Create(); 89da853ecaSopenharmony_ci OH_AVFormat_SetStringValue(trackFormat, OH_MD_KEY_CODEC_MIME, OH_AVCODEC_MIMETYPE_AUDIO_AAC); 90da853ecaSopenharmony_ci OH_AVFormat_SetLongValue(trackFormat, OH_MD_KEY_BITRATE, BITRATE); 91da853ecaSopenharmony_ci OH_AVFormat_SetBuffer(trackFormat, OH_MD_KEY_CODEC_CONFIG, a, CODEC_CONFIG); 92da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_AUD_CHANNEL_COUNT, CHANNEL_COUNT); 93da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_AUD_SAMPLE_RATE, SAMPLE_RATE); 94da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_PROFILE, PROFILE); 95da853ecaSopenharmony_ci 96da853ecaSopenharmony_ci OH_AVErrCode ret = muxerDemo->NativeAddTrack(nullptr, &trackId, trackFormat); 97da853ecaSopenharmony_ci ASSERT_EQ(-1, trackId); 98da853ecaSopenharmony_ci ASSERT_EQ(AV_ERR_INVALID_VAL, ret); 99da853ecaSopenharmony_ci muxerDemo->NativeDestroy(handle); 100da853ecaSopenharmony_ci OH_AVFormat_Destroy(trackFormat); 101da853ecaSopenharmony_ci delete muxerDemo; 102da853ecaSopenharmony_ci} 103da853ecaSopenharmony_ci 104da853ecaSopenharmony_ci 105da853ecaSopenharmony_ci/** 106da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_003 107da853ecaSopenharmony_ci * @tc.name : OH_AVMuxer_AddTrack - trackId check 108da853ecaSopenharmony_ci * @tc.desc : nullptr test 109da853ecaSopenharmony_ci */ 110da853ecaSopenharmony_ciHWTEST_F(NativeAVMuxerNullCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_003, TestSize.Level2) 111da853ecaSopenharmony_ci{ 112da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 113da853ecaSopenharmony_ci OH_AVOutputFormat format = AV_OUTPUT_FORMAT_M4A; 114da853ecaSopenharmony_ci int32_t fd = muxerDemo->GetFdByMode(format); 115da853ecaSopenharmony_ci OH_AVMuxer* handle = muxerDemo->NativeCreate(fd, format); 116da853ecaSopenharmony_ci ASSERT_NE(nullptr, handle); 117da853ecaSopenharmony_ci 118da853ecaSopenharmony_ci uint8_t a[100]; 119da853ecaSopenharmony_ci 120da853ecaSopenharmony_ci OH_AVFormat* trackFormat = OH_AVFormat_Create(); 121da853ecaSopenharmony_ci OH_AVFormat_SetStringValue(trackFormat, OH_MD_KEY_CODEC_MIME, OH_AVCODEC_MIMETYPE_AUDIO_AAC); 122da853ecaSopenharmony_ci OH_AVFormat_SetLongValue(trackFormat, OH_MD_KEY_BITRATE, BITRATE); 123da853ecaSopenharmony_ci OH_AVFormat_SetBuffer(trackFormat, OH_MD_KEY_CODEC_CONFIG, a, CODEC_CONFIG); 124da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_AUD_CHANNEL_COUNT, CHANNEL_COUNT); 125da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_AUD_SAMPLE_RATE, SAMPLE_RATE); 126da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_PROFILE, PROFILE); 127da853ecaSopenharmony_ci 128da853ecaSopenharmony_ci OH_AVErrCode ret = muxerDemo->NativeAddTrack(handle, nullptr, trackFormat); 129da853ecaSopenharmony_ci ASSERT_EQ(AV_ERR_INVALID_VAL, ret); 130da853ecaSopenharmony_ci muxerDemo->NativeDestroy(handle); 131da853ecaSopenharmony_ci OH_AVFormat_Destroy(trackFormat); 132da853ecaSopenharmony_ci delete muxerDemo; 133da853ecaSopenharmony_ci} 134da853ecaSopenharmony_ci 135da853ecaSopenharmony_ci 136da853ecaSopenharmony_ci/** 137da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_004 138da853ecaSopenharmony_ci * @tc.name : OH_AVMuxer_AddTrack - trackFormat check 139da853ecaSopenharmony_ci * @tc.desc : nullptr test 140da853ecaSopenharmony_ci */ 141da853ecaSopenharmony_ciHWTEST_F(NativeAVMuxerNullCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_004, TestSize.Level2) 142da853ecaSopenharmony_ci{ 143da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 144da853ecaSopenharmony_ci OH_AVOutputFormat format = AV_OUTPUT_FORMAT_M4A; 145da853ecaSopenharmony_ci int32_t fd = muxerDemo->GetFdByMode(format); 146da853ecaSopenharmony_ci OH_AVMuxer* handle = muxerDemo->NativeCreate(fd, format); 147da853ecaSopenharmony_ci ASSERT_NE(nullptr, handle); 148da853ecaSopenharmony_ci 149da853ecaSopenharmony_ci int32_t trackId = -1; 150da853ecaSopenharmony_ci 151da853ecaSopenharmony_ci OH_AVFormat* trackFormat = nullptr; 152da853ecaSopenharmony_ci 153da853ecaSopenharmony_ci OH_AVErrCode ret = muxerDemo->NativeAddTrack(handle, &trackId, trackFormat); 154da853ecaSopenharmony_ci ASSERT_EQ(AV_ERR_INVALID_VAL, ret); 155da853ecaSopenharmony_ci muxerDemo->NativeDestroy(handle); 156da853ecaSopenharmony_ci delete muxerDemo; 157da853ecaSopenharmony_ci} 158da853ecaSopenharmony_ci 159da853ecaSopenharmony_ci 160da853ecaSopenharmony_ci/** 161da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_005 162da853ecaSopenharmony_ci * @tc.name : OH_AVMuxer_Start - muxer check 163da853ecaSopenharmony_ci * @tc.desc : nullptr test 164da853ecaSopenharmony_ci */ 165da853ecaSopenharmony_ciHWTEST_F(NativeAVMuxerNullCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_005, TestSize.Level2) 166da853ecaSopenharmony_ci{ 167da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 168da853ecaSopenharmony_ci OH_AVOutputFormat format = AV_OUTPUT_FORMAT_MPEG_4; 169da853ecaSopenharmony_ci int32_t fd = muxerDemo->GetFdByMode(format); 170da853ecaSopenharmony_ci OH_AVMuxer* handle = muxerDemo->NativeCreate(fd, format); 171da853ecaSopenharmony_ci ASSERT_NE(nullptr, handle); 172da853ecaSopenharmony_ci 173da853ecaSopenharmony_ci int32_t trackId = -1; 174da853ecaSopenharmony_ci 175da853ecaSopenharmony_ci uint8_t a[100]; 176da853ecaSopenharmony_ci 177da853ecaSopenharmony_ci OH_AVFormat* trackFormat = OH_AVFormat_Create(); 178da853ecaSopenharmony_ci OH_AVFormat_SetStringValue(trackFormat, OH_MD_KEY_CODEC_MIME, OH_AVCODEC_MIMETYPE_AUDIO_AAC); 179da853ecaSopenharmony_ci OH_AVFormat_SetLongValue(trackFormat, OH_MD_KEY_BITRATE, BITRATE); 180da853ecaSopenharmony_ci OH_AVFormat_SetBuffer(trackFormat, OH_MD_KEY_CODEC_CONFIG, a, CODEC_CONFIG); 181da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_AUD_CHANNEL_COUNT, CHANNEL_COUNT); 182da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_AUD_SAMPLE_RATE, SAMPLE_RATE); 183da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_PROFILE, PROFILE); 184da853ecaSopenharmony_ci 185da853ecaSopenharmony_ci OH_AVErrCode ret = muxerDemo->NativeAddTrack(handle, &trackId, trackFormat); 186da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 187da853ecaSopenharmony_ci 188da853ecaSopenharmony_ci ret = muxerDemo->NativeStart(nullptr); 189da853ecaSopenharmony_ci ASSERT_EQ(AV_ERR_INVALID_VAL, ret); 190da853ecaSopenharmony_ci 191da853ecaSopenharmony_ci muxerDemo->NativeDestroy(handle); 192da853ecaSopenharmony_ci OH_AVFormat_Destroy(trackFormat); 193da853ecaSopenharmony_ci delete muxerDemo; 194da853ecaSopenharmony_ci} 195da853ecaSopenharmony_ci 196da853ecaSopenharmony_ci 197da853ecaSopenharmony_ci/** 198da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_006 199da853ecaSopenharmony_ci * @tc.name : OH_AVMuxer_WriteSampleBuffer - muxer check 200da853ecaSopenharmony_ci * @tc.desc : nullptr test 201da853ecaSopenharmony_ci */ 202da853ecaSopenharmony_ciHWTEST_F(NativeAVMuxerNullCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_006, TestSize.Level2) 203da853ecaSopenharmony_ci{ 204da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 205da853ecaSopenharmony_ci OH_AVOutputFormat format = AV_OUTPUT_FORMAT_MPEG_4; 206da853ecaSopenharmony_ci int32_t fd = muxerDemo->GetFdByMode(format); 207da853ecaSopenharmony_ci OH_AVMuxer* handle = muxerDemo->NativeCreate(fd, format); 208da853ecaSopenharmony_ci ASSERT_NE(nullptr, handle); 209da853ecaSopenharmony_ci 210da853ecaSopenharmony_ci int32_t trackId = -1; 211da853ecaSopenharmony_ci 212da853ecaSopenharmony_ci uint8_t a[100]; 213da853ecaSopenharmony_ci 214da853ecaSopenharmony_ci OH_AVFormat* trackFormat = OH_AVFormat_Create(); 215da853ecaSopenharmony_ci OH_AVFormat_SetStringValue(trackFormat, OH_MD_KEY_CODEC_MIME, OH_AVCODEC_MIMETYPE_AUDIO_AAC); 216da853ecaSopenharmony_ci OH_AVFormat_SetLongValue(trackFormat, OH_MD_KEY_BITRATE, BITRATE); 217da853ecaSopenharmony_ci OH_AVFormat_SetBuffer(trackFormat, OH_MD_KEY_CODEC_CONFIG, a, CODEC_CONFIG); 218da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_AUD_CHANNEL_COUNT, CHANNEL_COUNT); 219da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_AUD_SAMPLE_RATE, SAMPLE_RATE); 220da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_PROFILE, PROFILE); 221da853ecaSopenharmony_ci 222da853ecaSopenharmony_ci OH_AVErrCode ret = muxerDemo->NativeAddTrack(handle, &trackId, trackFormat); 223da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 224da853ecaSopenharmony_ci 225da853ecaSopenharmony_ci ret = muxerDemo->NativeStart(handle); 226da853ecaSopenharmony_ci ASSERT_EQ(AV_ERR_OK, ret); 227da853ecaSopenharmony_ci 228da853ecaSopenharmony_ci OH_AVMemory* avMemBuffer = OH_AVMemory_Create(INFO_SIZE); 229da853ecaSopenharmony_ci 230da853ecaSopenharmony_ci OH_AVCodecBufferAttr info; 231da853ecaSopenharmony_ci info.pts = 0; 232da853ecaSopenharmony_ci info.size = INFO_SIZE; 233da853ecaSopenharmony_ci info.offset = 0; 234da853ecaSopenharmony_ci info.flags = 0; 235da853ecaSopenharmony_ci 236da853ecaSopenharmony_ci ret = muxerDemo->NativeWriteSampleBuffer(nullptr, trackId, avMemBuffer, info); 237da853ecaSopenharmony_ci ASSERT_EQ(AV_ERR_INVALID_VAL, ret); 238da853ecaSopenharmony_ci 239da853ecaSopenharmony_ci OH_AVMemory_Destroy(avMemBuffer); 240da853ecaSopenharmony_ci muxerDemo->NativeDestroy(handle); 241da853ecaSopenharmony_ci OH_AVFormat_Destroy(trackFormat); 242da853ecaSopenharmony_ci delete muxerDemo; 243da853ecaSopenharmony_ci} 244da853ecaSopenharmony_ci 245da853ecaSopenharmony_ci 246da853ecaSopenharmony_ci/** 247da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_007 248da853ecaSopenharmony_ci * @tc.name : OH_AVMuxer_WriteSampleBuffer - sampleBuffer check 249da853ecaSopenharmony_ci * @tc.desc : nullptr test 250da853ecaSopenharmony_ci */ 251da853ecaSopenharmony_ciHWTEST_F(NativeAVMuxerNullCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_007, TestSize.Level2) 252da853ecaSopenharmony_ci{ 253da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 254da853ecaSopenharmony_ci OH_AVOutputFormat format = AV_OUTPUT_FORMAT_MPEG_4; 255da853ecaSopenharmony_ci int32_t fd = muxerDemo->GetFdByMode(format); 256da853ecaSopenharmony_ci OH_AVMuxer* handle = muxerDemo->NativeCreate(fd, format); 257da853ecaSopenharmony_ci ASSERT_NE(nullptr, handle); 258da853ecaSopenharmony_ci 259da853ecaSopenharmony_ci int32_t trackId = -1; 260da853ecaSopenharmony_ci 261da853ecaSopenharmony_ci uint8_t a[100]; 262da853ecaSopenharmony_ci 263da853ecaSopenharmony_ci OH_AVFormat* trackFormat = OH_AVFormat_Create(); 264da853ecaSopenharmony_ci OH_AVFormat_SetStringValue(trackFormat, OH_MD_KEY_CODEC_MIME, OH_AVCODEC_MIMETYPE_AUDIO_AAC); 265da853ecaSopenharmony_ci OH_AVFormat_SetLongValue(trackFormat, OH_MD_KEY_BITRATE, BITRATE); 266da853ecaSopenharmony_ci OH_AVFormat_SetBuffer(trackFormat, OH_MD_KEY_CODEC_CONFIG, a, CODEC_CONFIG); 267da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_AUD_CHANNEL_COUNT, CHANNEL_COUNT); 268da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_AUD_SAMPLE_RATE, SAMPLE_RATE); 269da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_PROFILE, PROFILE); 270da853ecaSopenharmony_ci 271da853ecaSopenharmony_ci OH_AVErrCode ret = muxerDemo->NativeAddTrack(handle, &trackId, trackFormat); 272da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 273da853ecaSopenharmony_ci 274da853ecaSopenharmony_ci ret = muxerDemo->NativeStart(handle); 275da853ecaSopenharmony_ci ASSERT_EQ(AV_ERR_OK, ret); 276da853ecaSopenharmony_ci 277da853ecaSopenharmony_ci OH_AVCodecBufferAttr info; 278da853ecaSopenharmony_ci info.pts = 0; 279da853ecaSopenharmony_ci info.size = INFO_SIZE; 280da853ecaSopenharmony_ci info.offset = 0; 281da853ecaSopenharmony_ci info.flags = 0; 282da853ecaSopenharmony_ci 283da853ecaSopenharmony_ci ret = muxerDemo->NativeWriteSampleBuffer(handle, trackId, nullptr, info); 284da853ecaSopenharmony_ci ASSERT_EQ(AV_ERR_INVALID_VAL, ret); 285da853ecaSopenharmony_ci 286da853ecaSopenharmony_ci muxerDemo->NativeDestroy(handle); 287da853ecaSopenharmony_ci OH_AVFormat_Destroy(trackFormat); 288da853ecaSopenharmony_ci delete muxerDemo; 289da853ecaSopenharmony_ci} 290da853ecaSopenharmony_ci 291da853ecaSopenharmony_ci 292da853ecaSopenharmony_ci/** 293da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_008 294da853ecaSopenharmony_ci * @tc.name : OH_AVMuxer_Stop - muxer check 295da853ecaSopenharmony_ci * @tc.desc : nullptr test 296da853ecaSopenharmony_ci */ 297da853ecaSopenharmony_ciHWTEST_F(NativeAVMuxerNullCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_008, TestSize.Level2) 298da853ecaSopenharmony_ci{ 299da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 300da853ecaSopenharmony_ci OH_AVOutputFormat format = AV_OUTPUT_FORMAT_MPEG_4; 301da853ecaSopenharmony_ci int32_t fd = muxerDemo->GetFdByMode(format); 302da853ecaSopenharmony_ci OH_AVMuxer* handle = muxerDemo->NativeCreate(fd, format); 303da853ecaSopenharmony_ci ASSERT_NE(nullptr, handle); 304da853ecaSopenharmony_ci 305da853ecaSopenharmony_ci int32_t trackId = -1; 306da853ecaSopenharmony_ci 307da853ecaSopenharmony_ci uint8_t a[100]; 308da853ecaSopenharmony_ci 309da853ecaSopenharmony_ci OH_AVFormat* trackFormat = OH_AVFormat_Create(); 310da853ecaSopenharmony_ci OH_AVFormat_SetStringValue(trackFormat, OH_MD_KEY_CODEC_MIME, OH_AVCODEC_MIMETYPE_AUDIO_AAC); 311da853ecaSopenharmony_ci OH_AVFormat_SetLongValue(trackFormat, OH_MD_KEY_BITRATE, BITRATE); 312da853ecaSopenharmony_ci OH_AVFormat_SetBuffer(trackFormat, OH_MD_KEY_CODEC_CONFIG, a, CODEC_CONFIG); 313da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_AUD_CHANNEL_COUNT, CHANNEL_COUNT); 314da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_AUD_SAMPLE_RATE, SAMPLE_RATE); 315da853ecaSopenharmony_ci OH_AVFormat_SetIntValue(trackFormat, OH_MD_KEY_PROFILE, PROFILE); 316da853ecaSopenharmony_ci 317da853ecaSopenharmony_ci OH_AVErrCode ret = muxerDemo->NativeAddTrack(handle, &trackId, trackFormat); 318da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 319da853ecaSopenharmony_ci 320da853ecaSopenharmony_ci ret = muxerDemo->NativeStart(handle); 321da853ecaSopenharmony_ci ASSERT_EQ(AV_ERR_OK, ret); 322da853ecaSopenharmony_ci 323da853ecaSopenharmony_ci ret = muxerDemo->NativeStop(nullptr); 324da853ecaSopenharmony_ci ASSERT_EQ(AV_ERR_INVALID_VAL, ret); 325da853ecaSopenharmony_ci 326da853ecaSopenharmony_ci muxerDemo->NativeDestroy(handle); 327da853ecaSopenharmony_ci OH_AVFormat_Destroy(trackFormat); 328da853ecaSopenharmony_ci delete muxerDemo; 329da853ecaSopenharmony_ci} 330da853ecaSopenharmony_ci 331da853ecaSopenharmony_ci 332da853ecaSopenharmony_ci/** 333da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_009 334da853ecaSopenharmony_ci * @tc.name : OH_AVMuxer_Destroy - muxer check 335da853ecaSopenharmony_ci * @tc.desc : nullptr test 336da853ecaSopenharmony_ci */ 337da853ecaSopenharmony_ciHWTEST_F(NativeAVMuxerNullCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_NULL_CHECK_009, TestSize.Level2) 338da853ecaSopenharmony_ci{ 339da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 340da853ecaSopenharmony_ci OH_AVOutputFormat format = AV_OUTPUT_FORMAT_MPEG_4; 341da853ecaSopenharmony_ci int32_t fd = muxerDemo->GetFdByMode(format); 342da853ecaSopenharmony_ci OH_AVMuxer* handle = muxerDemo->NativeCreate(fd, format); 343da853ecaSopenharmony_ci ASSERT_NE(nullptr, handle); 344da853ecaSopenharmony_ci 345da853ecaSopenharmony_ci OH_AVErrCode ret = muxerDemo->NativeDestroy(nullptr); 346da853ecaSopenharmony_ci ASSERT_EQ(AV_ERR_INVALID_VAL, ret); 347da853ecaSopenharmony_ci 348da853ecaSopenharmony_ci muxerDemo->NativeDestroy(handle); 349da853ecaSopenharmony_ci delete muxerDemo; 350da853ecaSopenharmony_ci}