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}