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#include "avcodec_errors.h" 20da853ecaSopenharmony_ci 21da853ecaSopenharmony_ciusing namespace std; 22da853ecaSopenharmony_ciusing namespace testing::ext; 23da853ecaSopenharmony_ciusing namespace OHOS; 24da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec; 25da853ecaSopenharmony_ciusing namespace OHOS::Media; 26da853ecaSopenharmony_ci 27da853ecaSopenharmony_cinamespace { 28da853ecaSopenharmony_ci class InnerAVMuxerParamCheckTest : public testing::Test { 29da853ecaSopenharmony_ci public: 30da853ecaSopenharmony_ci static void SetUpTestCase(); 31da853ecaSopenharmony_ci static void TearDownTestCase(); 32da853ecaSopenharmony_ci void SetUp() override; 33da853ecaSopenharmony_ci void TearDown() override; 34da853ecaSopenharmony_ci }; 35da853ecaSopenharmony_ci 36da853ecaSopenharmony_ci void InnerAVMuxerParamCheckTest::SetUpTestCase() {} 37da853ecaSopenharmony_ci void InnerAVMuxerParamCheckTest::TearDownTestCase() {} 38da853ecaSopenharmony_ci void InnerAVMuxerParamCheckTest::SetUp() {} 39da853ecaSopenharmony_ci void InnerAVMuxerParamCheckTest::TearDown() {} 40da853ecaSopenharmony_ci const std::string HEVC_LIB_PATH = std::string(AV_CODEC_PATH) + "/libav_codec_hevc_parser.z.so"; 41da853ecaSopenharmony_ci} 42da853ecaSopenharmony_ci 43da853ecaSopenharmony_ci 44da853ecaSopenharmony_ci/** 45da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_001 46da853ecaSopenharmony_ci * @tc.name : InnerCreate - fd check 47da853ecaSopenharmony_ci * @tc.desc : param check test 48da853ecaSopenharmony_ci */ 49da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_001, TestSize.Level2) 50da853ecaSopenharmony_ci{ 51da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 52da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 53da853ecaSopenharmony_ci int32_t fd = -1; 54da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 55da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_NO_MEMORY, ret); 56da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 57da853ecaSopenharmony_ci 58da853ecaSopenharmony_ci fd = muxerDemo->InnerGetFdByMode(format); 59da853ecaSopenharmony_ci ret = muxerDemo->InnerCreate(fd, format); 60da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 61da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 62da853ecaSopenharmony_ci delete muxerDemo; 63da853ecaSopenharmony_ci} 64da853ecaSopenharmony_ci 65da853ecaSopenharmony_ci 66da853ecaSopenharmony_ci/** 67da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_002 68da853ecaSopenharmony_ci * @tc.name : InnerCreate - format check 69da853ecaSopenharmony_ci * @tc.desc : param check test 70da853ecaSopenharmony_ci */ 71da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_002, TestSize.Level2) 72da853ecaSopenharmony_ci{ 73da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 74da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 75da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 76da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 77da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 78da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 79da853ecaSopenharmony_ci 80da853ecaSopenharmony_ci format = Plugins::OutputFormat::M4A; 81da853ecaSopenharmony_ci fd = muxerDemo->InnerGetFdByMode(format); 82da853ecaSopenharmony_ci ret = muxerDemo->InnerCreate(fd, format); 83da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 84da853ecaSopenharmony_ci 85da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 86da853ecaSopenharmony_ci 87da853ecaSopenharmony_ci format = Plugins::OutputFormat::DEFAULT; 88da853ecaSopenharmony_ci fd = muxerDemo->InnerGetFdByMode(format); 89da853ecaSopenharmony_ci ret = muxerDemo->InnerCreate(fd, format); 90da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 91da853ecaSopenharmony_ci 92da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 93da853ecaSopenharmony_ci delete muxerDemo; 94da853ecaSopenharmony_ci} 95da853ecaSopenharmony_ci 96da853ecaSopenharmony_ci/** 97da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_003 98da853ecaSopenharmony_ci * @tc.name : InnerSetRotation - rotation check 99da853ecaSopenharmony_ci * @tc.desc : param check test 100da853ecaSopenharmony_ci */ 101da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_003, TestSize.Level2) 102da853ecaSopenharmony_ci{ 103da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 104da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 105da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 106da853ecaSopenharmony_ci std::cout<<"fd "<< fd << endl; 107da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 108da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 109da853ecaSopenharmony_ci 110da853ecaSopenharmony_ci int32_t rotation; 111da853ecaSopenharmony_ci 112da853ecaSopenharmony_ci rotation = 0; 113da853ecaSopenharmony_ci ret = muxerDemo->InnerSetRotation(rotation); 114da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 115da853ecaSopenharmony_ci 116da853ecaSopenharmony_ci rotation = 90; 117da853ecaSopenharmony_ci ret = muxerDemo->InnerSetRotation(rotation); 118da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 119da853ecaSopenharmony_ci 120da853ecaSopenharmony_ci rotation = 180; 121da853ecaSopenharmony_ci ret = muxerDemo->InnerSetRotation(rotation); 122da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 123da853ecaSopenharmony_ci 124da853ecaSopenharmony_ci rotation = 270; 125da853ecaSopenharmony_ci ret = muxerDemo->InnerSetRotation(rotation); 126da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 127da853ecaSopenharmony_ci 128da853ecaSopenharmony_ci rotation = -90; 129da853ecaSopenharmony_ci ret = muxerDemo->InnerSetRotation(rotation); 130da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_INVALID_VAL, ret); 131da853ecaSopenharmony_ci 132da853ecaSopenharmony_ci rotation = 45; 133da853ecaSopenharmony_ci ret = muxerDemo->InnerSetRotation(rotation); 134da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_INVALID_VAL, ret); 135da853ecaSopenharmony_ci 136da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 137da853ecaSopenharmony_ci 138da853ecaSopenharmony_ci delete muxerDemo; 139da853ecaSopenharmony_ci} 140da853ecaSopenharmony_ci 141da853ecaSopenharmony_ci 142da853ecaSopenharmony_ci/** 143da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_004 144da853ecaSopenharmony_ci * @tc.name : InnerAddTrack - (MediaDescriptionKey::MD_KEY_CODEC_MIME) check 145da853ecaSopenharmony_ci * @tc.desc : param check test 146da853ecaSopenharmony_ci */ 147da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_004, TestSize.Level2) 148da853ecaSopenharmony_ci{ 149da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 150da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 151da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 152da853ecaSopenharmony_ci std::cout<<"fd "<< fd << endl; 153da853ecaSopenharmony_ci 154da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 155da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 156da853ecaSopenharmony_ci 157da853ecaSopenharmony_ci std::shared_ptr<Meta> audioParams = std::make_shared<Meta>(); 158da853ecaSopenharmony_ci std::vector<uint8_t> a(100); 159da853ecaSopenharmony_ci 160da853ecaSopenharmony_ci audioParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::AUDIO_AAC); 161da853ecaSopenharmony_ci audioParams->Set<Tag::MEDIA_CODEC_CONFIG>(a); 162da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_CHANNEL_COUNT>(1); 163da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_SAMPLE_RATE>(48000); 164da853ecaSopenharmony_ci 165da853ecaSopenharmony_ci int trackIndex = 0; 166da853ecaSopenharmony_ci int32_t trackId; 167da853ecaSopenharmony_ci 168da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 169da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 170da853ecaSopenharmony_ci 171da853ecaSopenharmony_ci audioParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::AUDIO_MPEG); 172da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 173da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 174da853ecaSopenharmony_ci 175da853ecaSopenharmony_ci audioParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::AUDIO_FLAC); 176da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 177da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_UNSUPPORT_FILE_TYPE, trackId); 178da853ecaSopenharmony_ci 179da853ecaSopenharmony_ci audioParams->Set<Tag::MIME_TYPE>("aaaaaa"); 180da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 181da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_UNSUPPORT_FILE_TYPE, trackId); 182da853ecaSopenharmony_ci 183da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 184da853ecaSopenharmony_ci 185da853ecaSopenharmony_ci delete muxerDemo; 186da853ecaSopenharmony_ci} 187da853ecaSopenharmony_ci 188da853ecaSopenharmony_ci 189da853ecaSopenharmony_ci/** 190da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_005 191da853ecaSopenharmony_ci * @tc.name : InnerAddTrack - (MediaDescriptionKey::MD_KEY_CHANNEL_COUNT) check 192da853ecaSopenharmony_ci * @tc.desc : param check test 193da853ecaSopenharmony_ci */ 194da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_005, TestSize.Level2) 195da853ecaSopenharmony_ci{ 196da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 197da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 198da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 199da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 200da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 201da853ecaSopenharmony_ci 202da853ecaSopenharmony_ci std::shared_ptr<Meta> audioParams = std::make_shared<Meta>(); 203da853ecaSopenharmony_ci std::vector<uint8_t> a(100); 204da853ecaSopenharmony_ci 205da853ecaSopenharmony_ci audioParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::AUDIO_AAC); 206da853ecaSopenharmony_ci audioParams->Set<Tag::MEDIA_CODEC_CONFIG>(a); 207da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_CHANNEL_COUNT>(1); 208da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_SAMPLE_RATE>(48000); 209da853ecaSopenharmony_ci 210da853ecaSopenharmony_ci int trackIndex = 0; 211da853ecaSopenharmony_ci int32_t trackId; 212da853ecaSopenharmony_ci 213da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 214da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 215da853ecaSopenharmony_ci 216da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_CHANNEL_COUNT>(-1); 217da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 218da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_INVALID_VAL, trackId); 219da853ecaSopenharmony_ci 220da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 221da853ecaSopenharmony_ci delete muxerDemo; 222da853ecaSopenharmony_ci} 223da853ecaSopenharmony_ci 224da853ecaSopenharmony_ci 225da853ecaSopenharmony_ci/** 226da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_006 227da853ecaSopenharmony_ci * @tc.name : InnerAddTrack - (MediaDescriptionKey::MD_KEY_SAMPLE_RATE) check 228da853ecaSopenharmony_ci * @tc.desc : param check test 229da853ecaSopenharmony_ci */ 230da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_006, TestSize.Level2) 231da853ecaSopenharmony_ci{ 232da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 233da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 234da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 235da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 236da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 237da853ecaSopenharmony_ci 238da853ecaSopenharmony_ci std::shared_ptr<Meta> audioParams = std::make_shared<Meta>(); 239da853ecaSopenharmony_ci std::vector<uint8_t> a(100); 240da853ecaSopenharmony_ci 241da853ecaSopenharmony_ci audioParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::AUDIO_AAC); 242da853ecaSopenharmony_ci audioParams->Set<Tag::MEDIA_CODEC_CONFIG>(a); 243da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_CHANNEL_COUNT>(1); 244da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_SAMPLE_RATE>(48000); 245da853ecaSopenharmony_ci 246da853ecaSopenharmony_ci int trackIndex = 0; 247da853ecaSopenharmony_ci int32_t trackId; 248da853ecaSopenharmony_ci 249da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 250da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 251da853ecaSopenharmony_ci 252da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_SAMPLE_RATE>(-1); 253da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 254da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_INVALID_VAL, trackId); 255da853ecaSopenharmony_ci 256da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 257da853ecaSopenharmony_ci delete muxerDemo; 258da853ecaSopenharmony_ci} 259da853ecaSopenharmony_ci 260da853ecaSopenharmony_ci/** 261da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_007 262da853ecaSopenharmony_ci * @tc.name : InnerAddTrack - video (MediaDescriptionKey::MD_KEY_CODEC_MIME) check 263da853ecaSopenharmony_ci * @tc.desc : param check test 264da853ecaSopenharmony_ci */ 265da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_007, TestSize.Level2) 266da853ecaSopenharmony_ci{ 267da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 268da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 269da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 270da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 271da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 272da853ecaSopenharmony_ci 273da853ecaSopenharmony_ci std::shared_ptr<Meta> videoParams = std::make_shared<Meta>(); 274da853ecaSopenharmony_ci std::vector<uint8_t> a(100); 275da853ecaSopenharmony_ci 276da853ecaSopenharmony_ci videoParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::VIDEO_MPEG4); 277da853ecaSopenharmony_ci videoParams->Set<Tag::MEDIA_CODEC_CONFIG>(a); 278da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_WIDTH>(352); 279da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_HEIGHT>(288); 280da853ecaSopenharmony_ci 281da853ecaSopenharmony_ci int32_t trackId; 282da853ecaSopenharmony_ci int trackIndex = 0; 283da853ecaSopenharmony_ci 284da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 285da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 286da853ecaSopenharmony_ci 287da853ecaSopenharmony_ci videoParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::VIDEO_AVC); 288da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 289da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 290da853ecaSopenharmony_ci 291da853ecaSopenharmony_ci videoParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::IMAGE_JPG); 292da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 293da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 294da853ecaSopenharmony_ci 295da853ecaSopenharmony_ci videoParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::IMAGE_PNG); 296da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 297da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 298da853ecaSopenharmony_ci 299da853ecaSopenharmony_ci videoParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::IMAGE_BMP); 300da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 301da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 302da853ecaSopenharmony_ci 303da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 304da853ecaSopenharmony_ci delete muxerDemo; 305da853ecaSopenharmony_ci} 306da853ecaSopenharmony_ci 307da853ecaSopenharmony_ci 308da853ecaSopenharmony_ci/** 309da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_008 310da853ecaSopenharmony_ci * @tc.name : InnerAddTrack - video (MediaDescriptionKey::MD_KEY_WIDTH) check 311da853ecaSopenharmony_ci * @tc.desc : param check test 312da853ecaSopenharmony_ci */ 313da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_008, TestSize.Level2) 314da853ecaSopenharmony_ci{ 315da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 316da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 317da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 318da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 319da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 320da853ecaSopenharmony_ci 321da853ecaSopenharmony_ci std::shared_ptr<Meta> videoParams = std::make_shared<Meta>(); 322da853ecaSopenharmony_ci std::vector<uint8_t> a(100); 323da853ecaSopenharmony_ci 324da853ecaSopenharmony_ci videoParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::VIDEO_MPEG4); 325da853ecaSopenharmony_ci videoParams->Set<Tag::MEDIA_CODEC_CONFIG>(a); 326da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_WIDTH>(352); 327da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_HEIGHT>(288); 328da853ecaSopenharmony_ci 329da853ecaSopenharmony_ci int trackIndex = 0; 330da853ecaSopenharmony_ci int32_t trackId; 331da853ecaSopenharmony_ci 332da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 333da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 334da853ecaSopenharmony_ci 335da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_WIDTH>(-1); 336da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 337da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_INVALID_VAL, trackId); 338da853ecaSopenharmony_ci 339da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 340da853ecaSopenharmony_ci delete muxerDemo; 341da853ecaSopenharmony_ci} 342da853ecaSopenharmony_ci 343da853ecaSopenharmony_ci 344da853ecaSopenharmony_ci/** 345da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_009 346da853ecaSopenharmony_ci * @tc.name : InnerAddTrack - video (MediaDescriptionKey::MD_KEY_HEIGHT) check 347da853ecaSopenharmony_ci * @tc.desc : param check test 348da853ecaSopenharmony_ci */ 349da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_009, TestSize.Level2) 350da853ecaSopenharmony_ci{ 351da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 352da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 353da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 354da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 355da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 356da853ecaSopenharmony_ci 357da853ecaSopenharmony_ci std::shared_ptr<Meta> videoParams = std::make_shared<Meta>(); 358da853ecaSopenharmony_ci std::vector<uint8_t> a(100); 359da853ecaSopenharmony_ci 360da853ecaSopenharmony_ci videoParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::VIDEO_MPEG4); 361da853ecaSopenharmony_ci videoParams->Set<Tag::MEDIA_CODEC_CONFIG>(a); 362da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_WIDTH>(352); 363da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_HEIGHT>(288); 364da853ecaSopenharmony_ci 365da853ecaSopenharmony_ci int trackIndex = 0; 366da853ecaSopenharmony_ci int32_t trackId; 367da853ecaSopenharmony_ci 368da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 369da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 370da853ecaSopenharmony_ci 371da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_HEIGHT>(-1); 372da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 373da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_INVALID_VAL, trackId); 374da853ecaSopenharmony_ci 375da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 376da853ecaSopenharmony_ci delete muxerDemo; 377da853ecaSopenharmony_ci} 378da853ecaSopenharmony_ci 379da853ecaSopenharmony_ci 380da853ecaSopenharmony_ci/** 381da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_010 382da853ecaSopenharmony_ci * @tc.name : InnerAddTrack - (any key) check 383da853ecaSopenharmony_ci * @tc.desc : param check test 384da853ecaSopenharmony_ci */ 385da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_010, TestSize.Level2) 386da853ecaSopenharmony_ci{ 387da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 388da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 389da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 390da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 391da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 392da853ecaSopenharmony_ci 393da853ecaSopenharmony_ci std::shared_ptr<Meta> audioParams = std::make_shared<Meta>(); 394da853ecaSopenharmony_ci audioParams->SetData("aaaaa", "bbbbb"); 395da853ecaSopenharmony_ci 396da853ecaSopenharmony_ci int trackIndex = 0; 397da853ecaSopenharmony_ci int32_t trackId; 398da853ecaSopenharmony_ci 399da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 400da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_INVALID_VAL, trackId); 401da853ecaSopenharmony_ci 402da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 403da853ecaSopenharmony_ci delete muxerDemo; 404da853ecaSopenharmony_ci} 405da853ecaSopenharmony_ci 406da853ecaSopenharmony_ci 407da853ecaSopenharmony_ci/** 408da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_011 409da853ecaSopenharmony_ci * @tc.name : InnerWriteSample - info.trackIndex check 410da853ecaSopenharmony_ci * @tc.desc : param check test 411da853ecaSopenharmony_ci */ 412da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_011, TestSize.Level2) 413da853ecaSopenharmony_ci{ 414da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 415da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 416da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 417da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 418da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 419da853ecaSopenharmony_ci 420da853ecaSopenharmony_ci std::shared_ptr<Meta> audioParams = std::make_shared<Meta>(); 421da853ecaSopenharmony_ci std::vector<uint8_t> a(100); 422da853ecaSopenharmony_ci 423da853ecaSopenharmony_ci audioParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::AUDIO_AAC); 424da853ecaSopenharmony_ci audioParams->Set<Tag::MEDIA_CODEC_CONFIG>(a); 425da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_CHANNEL_COUNT>(1); 426da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_SAMPLE_RATE>(48000); 427da853ecaSopenharmony_ci 428da853ecaSopenharmony_ci int trackIndex = 0; 429da853ecaSopenharmony_ci int32_t trackId; 430da853ecaSopenharmony_ci 431da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 432da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 433da853ecaSopenharmony_ci 434da853ecaSopenharmony_ci 435da853ecaSopenharmony_ci ret = muxerDemo->InnerStart(); 436da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 437da853ecaSopenharmony_ci 438da853ecaSopenharmony_ci uint8_t data[100]; 439da853ecaSopenharmony_ci std::shared_ptr<AVBuffer> avMemBuffer = AVBuffer::CreateAVBuffer(data, sizeof(data), sizeof(data)); 440da853ecaSopenharmony_ci 441da853ecaSopenharmony_ci ret = muxerDemo->InnerWriteSample(trackIndex, avMemBuffer); 442da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 443da853ecaSopenharmony_ci 444da853ecaSopenharmony_ci trackIndex = -1; 445da853ecaSopenharmony_ci ret = muxerDemo->InnerWriteSample(trackIndex, avMemBuffer); 446da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_INVALID_VAL, ret); 447da853ecaSopenharmony_ci 448da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 449da853ecaSopenharmony_ci delete muxerDemo; 450da853ecaSopenharmony_ci} 451da853ecaSopenharmony_ci 452da853ecaSopenharmony_ci 453da853ecaSopenharmony_ci/** 454da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_012 455da853ecaSopenharmony_ci * @tc.name : InnerWriteSample - info.presentationTimeUs check 456da853ecaSopenharmony_ci * @tc.desc : param check test 457da853ecaSopenharmony_ci */ 458da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_012, TestSize.Level2) 459da853ecaSopenharmony_ci{ 460da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 461da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 462da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 463da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 464da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 465da853ecaSopenharmony_ci 466da853ecaSopenharmony_ci std::shared_ptr<Meta> audioParams = std::make_shared<Meta>(); 467da853ecaSopenharmony_ci std::vector<uint8_t> a(100); 468da853ecaSopenharmony_ci 469da853ecaSopenharmony_ci audioParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::AUDIO_AAC); 470da853ecaSopenharmony_ci audioParams->Set<Tag::MEDIA_CODEC_CONFIG>(a); 471da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_CHANNEL_COUNT>(1); 472da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_SAMPLE_RATE>(48000); 473da853ecaSopenharmony_ci 474da853ecaSopenharmony_ci int trackIndex = 0; 475da853ecaSopenharmony_ci 476da853ecaSopenharmony_ci ret = muxerDemo->InnerAddTrack(trackIndex, audioParams); 477da853ecaSopenharmony_ci ASSERT_EQ(0, ret); 478da853ecaSopenharmony_ci std::cout << "trackIndex: " << trackIndex << std::endl; 479da853ecaSopenharmony_ci ret = muxerDemo->InnerStart(); 480da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 481da853ecaSopenharmony_ci 482da853ecaSopenharmony_ci uint8_t data[100]; 483da853ecaSopenharmony_ci std::shared_ptr<AVBuffer> avMemBuffer = AVBuffer::CreateAVBuffer(data, sizeof(data), sizeof(data)); 484da853ecaSopenharmony_ci 485da853ecaSopenharmony_ci ret = muxerDemo->InnerWriteSample(trackIndex, avMemBuffer); 486da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 487da853ecaSopenharmony_ci 488da853ecaSopenharmony_ci avMemBuffer->pts_ = -1; 489da853ecaSopenharmony_ci ret = muxerDemo->InnerWriteSample(trackIndex, avMemBuffer); 490da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 491da853ecaSopenharmony_ci 492da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 493da853ecaSopenharmony_ci delete muxerDemo; 494da853ecaSopenharmony_ci} 495da853ecaSopenharmony_ci 496da853ecaSopenharmony_ci 497da853ecaSopenharmony_ci/** 498da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_013 499da853ecaSopenharmony_ci * @tc.name : InnerWriteSample - info.size check 500da853ecaSopenharmony_ci * @tc.desc : param check test 501da853ecaSopenharmony_ci */ 502da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_013, TestSize.Level2) 503da853ecaSopenharmony_ci{ 504da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 505da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 506da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 507da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 508da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 509da853ecaSopenharmony_ci 510da853ecaSopenharmony_ci std::shared_ptr<Meta> audioParams = std::make_shared<Meta>(); 511da853ecaSopenharmony_ci std::vector<uint8_t> a(100); 512da853ecaSopenharmony_ci 513da853ecaSopenharmony_ci audioParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::AUDIO_AAC); 514da853ecaSopenharmony_ci audioParams->Set<Tag::MEDIA_CODEC_CONFIG>(a); 515da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_CHANNEL_COUNT>(1); 516da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_SAMPLE_RATE>(48000); 517da853ecaSopenharmony_ci 518da853ecaSopenharmony_ci int trackIndex = 0; 519da853ecaSopenharmony_ci int32_t trackId; 520da853ecaSopenharmony_ci 521da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 522da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 523da853ecaSopenharmony_ci 524da853ecaSopenharmony_ci ret = muxerDemo->InnerStart(); 525da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 526da853ecaSopenharmony_ci 527da853ecaSopenharmony_ci uint8_t data[100]; 528da853ecaSopenharmony_ci std::shared_ptr<AVBuffer> avMemBuffer = AVBuffer::CreateAVBuffer(data, sizeof(data), sizeof(data)); 529da853ecaSopenharmony_ci 530da853ecaSopenharmony_ci ret = muxerDemo->InnerWriteSample(trackIndex, avMemBuffer); 531da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 532da853ecaSopenharmony_ci 533da853ecaSopenharmony_ci avMemBuffer->memory_->SetSize(-1); 534da853ecaSopenharmony_ci ret = muxerDemo->InnerWriteSample(trackIndex, avMemBuffer); 535da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 536da853ecaSopenharmony_ci 537da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 538da853ecaSopenharmony_ci delete muxerDemo; 539da853ecaSopenharmony_ci} 540da853ecaSopenharmony_ci/** 541da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_014 542da853ecaSopenharmony_ci * @tc.name : InnerWriteSample - info.offset check 543da853ecaSopenharmony_ci * @tc.desc : param check test 544da853ecaSopenharmony_ci */ 545da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_014, TestSize.Level2) 546da853ecaSopenharmony_ci{ 547da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 548da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 549da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 550da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 551da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 552da853ecaSopenharmony_ci 553da853ecaSopenharmony_ci std::shared_ptr<Meta> audioParams = std::make_shared<Meta>(); 554da853ecaSopenharmony_ci std::vector<uint8_t> a(100); 555da853ecaSopenharmony_ci 556da853ecaSopenharmony_ci audioParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::AUDIO_AAC); 557da853ecaSopenharmony_ci audioParams->Set<Tag::MEDIA_CODEC_CONFIG>(a); 558da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_CHANNEL_COUNT>(1); 559da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_SAMPLE_RATE>(48000); 560da853ecaSopenharmony_ci 561da853ecaSopenharmony_ci int trackIndex = 0; 562da853ecaSopenharmony_ci int32_t trackId; 563da853ecaSopenharmony_ci 564da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 565da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 566da853ecaSopenharmony_ci 567da853ecaSopenharmony_ci ret = muxerDemo->InnerStart(); 568da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 569da853ecaSopenharmony_ci 570da853ecaSopenharmony_ci uint8_t data[100]; 571da853ecaSopenharmony_ci std::shared_ptr<AVBuffer> avMemBuffer = AVBuffer::CreateAVBuffer(data, sizeof(data), sizeof(data)); 572da853ecaSopenharmony_ci 573da853ecaSopenharmony_ci ret = muxerDemo->InnerWriteSample(trackIndex, avMemBuffer); 574da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 575da853ecaSopenharmony_ci 576da853ecaSopenharmony_ci avMemBuffer->memory_->SetOffset(-1); 577da853ecaSopenharmony_ci ret = muxerDemo->InnerWriteSample(trackIndex, avMemBuffer); 578da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 579da853ecaSopenharmony_ci 580da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 581da853ecaSopenharmony_ci delete muxerDemo; 582da853ecaSopenharmony_ci} 583da853ecaSopenharmony_ci 584da853ecaSopenharmony_ci 585da853ecaSopenharmony_ci/** 586da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_015 587da853ecaSopenharmony_ci * @tc.name : InnerWriteSample - info.flags check 588da853ecaSopenharmony_ci * @tc.desc : param check test 589da853ecaSopenharmony_ci */ 590da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_015, TestSize.Level2) 591da853ecaSopenharmony_ci{ 592da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 593da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 594da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 595da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 596da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 597da853ecaSopenharmony_ci 598da853ecaSopenharmony_ci std::shared_ptr<Meta> audioParams = std::make_shared<Meta>(); 599da853ecaSopenharmony_ci std::vector<uint8_t> a(100); 600da853ecaSopenharmony_ci 601da853ecaSopenharmony_ci audioParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::AUDIO_AAC); 602da853ecaSopenharmony_ci audioParams->Set<Tag::MEDIA_CODEC_CONFIG>(a); 603da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_CHANNEL_COUNT>(1); 604da853ecaSopenharmony_ci audioParams->Set<Tag::AUDIO_SAMPLE_RATE>(48000); 605da853ecaSopenharmony_ci 606da853ecaSopenharmony_ci int trackIndex = 0; 607da853ecaSopenharmony_ci int32_t trackId; 608da853ecaSopenharmony_ci 609da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, audioParams); 610da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 611da853ecaSopenharmony_ci 612da853ecaSopenharmony_ci ret = muxerDemo->InnerStart(); 613da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 614da853ecaSopenharmony_ci 615da853ecaSopenharmony_ci uint8_t data[100]; 616da853ecaSopenharmony_ci std::shared_ptr<AVBuffer> avMemBuffer = AVBuffer::CreateAVBuffer(data, sizeof(data), sizeof(data)); 617da853ecaSopenharmony_ci 618da853ecaSopenharmony_ci avMemBuffer->flag_ = static_cast<uint32_t>(Plugins::AVBufferFlag::SYNC_FRAME); 619da853ecaSopenharmony_ci ret = muxerDemo->InnerWriteSample(trackIndex, avMemBuffer); 620da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 621da853ecaSopenharmony_ci 622da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 623da853ecaSopenharmony_ci delete muxerDemo; 624da853ecaSopenharmony_ci} 625da853ecaSopenharmony_ci 626da853ecaSopenharmony_ci/** 627da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_016 628da853ecaSopenharmony_ci * @tc.name : InnerAddTrack - video (MediaDescriptionKey::MD_KEY_COLOR_PRIMARIES) check 629da853ecaSopenharmony_ci * @tc.desc : param check test 630da853ecaSopenharmony_ci */ 631da853ecaSopenharmony_ciHWTEST_F(InnerAVMuxerParamCheckTest, SUB_MULTIMEDIA_MEDIA_MUXER_PARAM_CHECK_016, TestSize.Level2) 632da853ecaSopenharmony_ci{ 633da853ecaSopenharmony_ci if (access(HEVC_LIB_PATH.c_str(), F_OK) != 0) { 634da853ecaSopenharmony_ci std::cout << "the hevc of mimetype is not supported" << std::endl; 635da853ecaSopenharmony_ci return; 636da853ecaSopenharmony_ci } 637da853ecaSopenharmony_ci 638da853ecaSopenharmony_ci AVMuxerDemo* muxerDemo = new AVMuxerDemo(); 639da853ecaSopenharmony_ci Plugins::OutputFormat format = Plugins::OutputFormat::MPEG_4; 640da853ecaSopenharmony_ci int32_t fd = muxerDemo->InnerGetFdByMode(format); 641da853ecaSopenharmony_ci int32_t ret = muxerDemo->InnerCreate(fd, format); 642da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 643da853ecaSopenharmony_ci 644da853ecaSopenharmony_ci std::shared_ptr<Meta> videoParams = std::make_shared<Meta>(); 645da853ecaSopenharmony_ci std::vector<uint8_t> a(100); 646da853ecaSopenharmony_ci 647da853ecaSopenharmony_ci videoParams->Set<Tag::MIME_TYPE>(Plugins::MimeType::VIDEO_HEVC); 648da853ecaSopenharmony_ci videoParams->Set<Tag::MEDIA_CODEC_CONFIG>(a); 649da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_WIDTH>(352); 650da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_HEIGHT>(288); 651da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_FRAME_RATE>(60); 652da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_DELAY>(2); 653da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_COLOR_PRIMARIES>(Plugins::ColorPrimary::BT709); 654da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_COLOR_TRC>(Plugins::TransferCharacteristic::BT709); 655da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_COLOR_MATRIX_COEFF>(Plugins::MatrixCoefficient::BT709); 656da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_COLOR_RANGE>(false); 657da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_IS_HDR_VIVID>(true); 658da853ecaSopenharmony_ci 659da853ecaSopenharmony_ci videoParams->Set<Tag::MEDIA_CREATION_TIME>(nullptr); 660da853ecaSopenharmony_ci videoParams->SetData(nullptr, nullptr); 661da853ecaSopenharmony_ci videoParams->SetData(0, 0); 662da853ecaSopenharmony_ci 663da853ecaSopenharmony_ci int trackIndex = 0; 664da853ecaSopenharmony_ci int32_t trackId; 665da853ecaSopenharmony_ci 666da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 667da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 668da853ecaSopenharmony_ci 669da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_COLOR_PRIMARIES>(static_cast<Plugins::ColorPrimary>(0)); 670da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 671da853ecaSopenharmony_ci ASSERT_NE(0, trackId); 672da853ecaSopenharmony_ci 673da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_COLOR_PRIMARIES>(Plugins::ColorPrimary::BT709); 674da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_COLOR_TRC>(static_cast<Plugins::TransferCharacteristic>(0)); 675da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 676da853ecaSopenharmony_ci ASSERT_NE(0, trackId); 677da853ecaSopenharmony_ci 678da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_COLOR_TRC>(Plugins::TransferCharacteristic::BT709); 679da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_COLOR_MATRIX_COEFF>(static_cast<Plugins::MatrixCoefficient>(3)); 680da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 681da853ecaSopenharmony_ci ASSERT_NE(0, trackId); 682da853ecaSopenharmony_ci 683da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_COLOR_MATRIX_COEFF>(Plugins::MatrixCoefficient::BT709); 684da853ecaSopenharmony_ci videoParams->Set<Tag::VIDEO_IS_HDR_VIVID>(false); 685da853ecaSopenharmony_ci trackId = muxerDemo->InnerAddTrack(trackIndex, videoParams); 686da853ecaSopenharmony_ci ASSERT_EQ(0, trackId); 687da853ecaSopenharmony_ci 688da853ecaSopenharmony_ci muxerDemo->InnerDestroy(); 689da853ecaSopenharmony_ci delete muxerDemo; 690da853ecaSopenharmony_ci} 691