• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "gtest/gtest.h"
17 #include "media_errors.h"
18 #include "avcodec_list_unit_test.h"
19 
20 using namespace std;
21 using namespace OHOS;
22 using namespace OHOS::Media;
23 using namespace testing::ext;
24 
25 namespace OHOS {
26 namespace Media {
SetUpTestCase(void)27 void AVCodecListUnitTest::SetUpTestCase(void) {}
28 
TearDownTestCase(void)29 void AVCodecListUnitTest::TearDownTestCase(void) {}
30 
SetUp(void)31 void AVCodecListUnitTest::SetUp(void)
32 {
33     avCodecList_ = AVCodecMockFactory::CreateAVCodecList();
34     ASSERT_NE(nullptr, avCodecList_);
35     enum_ = AVCodecMockFactory::CreateEnum();
36     ASSERT_NE(nullptr, enum_);
37     codecMimeKey_ = enum_->GetMediaDescriptionKey(MediaDescriptionKeyMock::MOCK_MD_KEY_CODEC_MIME);
38     bitrateKey_ = enum_->GetMediaDescriptionKey(MediaDescriptionKeyMock::MOCK_MD_KEY_BITRATE);
39     widthKey_ = enum_->GetMediaDescriptionKey(MediaDescriptionKeyMock::MOCK_MD_KEY_WIDTH);
40     heightKey_ = enum_->GetMediaDescriptionKey(MediaDescriptionKeyMock::MOCK_MD_KEY_HEIGHT);
41     pixelFormatKey_ = enum_->GetMediaDescriptionKey(MediaDescriptionKeyMock::MOCK_MD_KEY_PIXEL_FORMAT);
42     frameRateKey_ = enum_->GetMediaDescriptionKey(MediaDescriptionKeyMock::MOCK_MD_KEY_FRAME_RATE);
43     channelCountKey_ = enum_->GetMediaDescriptionKey(MediaDescriptionKeyMock::MOCK_MD_KEY_CHANNEL_COUNT);
44     sampleRateKey_ = enum_->GetMediaDescriptionKey(MediaDescriptionKeyMock::MOCK_MD_KEY_SAMPLE_RATE);
45 }
46 
TearDown(void)47 void AVCodecListUnitTest::TearDown(void)
48 {
49 }
50 
51 /**
52  * @tc.name: AVCdecList_FindVideoDecoder_0100
53  * @tc.desc: AVCdecList FindVideoDecoder
54  * @tc.type: FUNC
55  * @tc.require:
56  */
57 HWTEST_F(AVCodecListUnitTest, AVCdecList_FindVideoDecoder_0100, TestSize.Level0)
58 {
59     std::string codecName;
60     std::shared_ptr<FormatMock> format = AVCodecMockFactory::CreateFormat();
61     ASSERT_NE(nullptr, format);
62     (void)format->PutStringValue(codecMimeKey_, enum_->GetCodecMimeType(CodecMimeTypeMock::VIDEO_AVC));
63     (void)format->PutIntValue(bitrateKey_, MAX_VIDEO_BITRATE);
64     (void)format->PutIntValue(widthKey_, DEFAULT_WIDTH);
65     (void)format->PutIntValue(heightKey_, DEFAULT_HEIGHT);
66     (void)format->PutIntValue(pixelFormatKey_, enum_->GetVideoPixelFormat(VideoPixelFormatMock::MOCK_NV12));
67     (void)format->PutIntValue(frameRateKey_, MAX_FRAME_RATE_HARD);
68     codecName = avCodecList_->FindVideoDecoder(format);
69 }
70 
71 /**
72  * @tc.name: AVCdecList_FindVideoEncoder_0100
73  * @tc.desc: AVCdecList FindVideoEncoder
74  * @tc.type: FUNC
75  * @tc.require:
76  */
77 HWTEST_F(AVCodecListUnitTest, AVCdecList_FindVideoEncoder_0100, TestSize.Level0)
78 {
79     std::string codecName;
80     std::shared_ptr<FormatMock> format = AVCodecMockFactory::CreateFormat();
81     (void)format->PutStringValue(codecMimeKey_, enum_->GetCodecMimeType(CodecMimeTypeMock::VIDEO_MPEG4));
82     (void)format->PutIntValue(bitrateKey_, MAX_VIDEO_BITRATE);
83     (void)format->PutIntValue(widthKey_, DEFAULT_WIDTH);
84     (void)format->PutIntValue(heightKey_, DEFAULT_HEIGHT);
85     (void)format->PutIntValue(pixelFormatKey_, enum_->GetVideoPixelFormat(VideoPixelFormatMock::MOCK_NV21));
86     (void)format->PutIntValue(frameRateKey_, MAX_FRAME_RATE_SOFT);
87     codecName = avCodecList_->FindVideoEncoder(format);
88     EXPECT_NE("", codecName);
89 }
90 
91 /**
92  * @tc.name: AVCdecList_FindAudioDecoder_0100
93  * @tc.desc: AVCdecList FindAudioDecoder
94  * @tc.type: FUNC
95  * @tc.require:
96  */
97 HWTEST_F(AVCodecListUnitTest, AVCdecList_FindAudioDecoder_0100, TestSize.Level0)
98 {
99     std::string codecName;
100     std::shared_ptr<FormatMock> format = AVCodecMockFactory::CreateFormat();
101     (void)format->PutStringValue(codecMimeKey_, enum_->GetCodecMimeType(CodecMimeTypeMock::AUDIO_MPEG));
102     (void)format->PutIntValue(bitrateKey_, MAX_AUDIO_BITRATE);
103     (void)format->PutIntValue(channelCountKey_, MAX_CHANNEL_COUNT);
104     (void)format->PutIntValue(sampleRateKey_, DEFAULT_SAMPLE_RATE);
105     codecName = avCodecList_->FindAudioDecoder(format);
106     EXPECT_EQ("avdec_mp3", codecName);
107 }
108 
109 /**
110  * @tc.name: AVCdecList_FindAudioEncoder_0100
111  * @tc.desc: AVCdecList FindAudioEncoder
112  * @tc.type: FUNC
113  * @tc.require:
114  */
115 HWTEST_F(AVCodecListUnitTest, AVCdecList_FindAudioEncoder_0100, TestSize.Level0)
116 {
117     std::string codecName;
118     std::shared_ptr<FormatMock> format = AVCodecMockFactory::CreateFormat();
119     (void)format->PutStringValue(codecMimeKey_, enum_->GetCodecMimeType(CodecMimeTypeMock::AUDIO_AAC));
120     (void)format->PutIntValue(bitrateKey_, MAX_AUDIO_BITRATE);
121     (void)format->PutIntValue(channelCountKey_, MAX_CHANNEL_COUNT);
122     (void)format->PutIntValue(sampleRateKey_, DEFAULT_SAMPLE_RATE);
123     codecName = avCodecList_->FindAudioEncoder(format);
124     EXPECT_EQ("avenc_aac", codecName);
125 }
126 
CheckVideoCapsArray(const std::vector<std::shared_ptr<VideoCapsMock>> & videoCapsArray) const127 void AVCodecListUnitTest::CheckVideoCapsArray(const std::vector<std::shared_ptr<VideoCapsMock>> &videoCapsArray) const
128 {
129     for (auto iter = videoCapsArray.begin(); iter != videoCapsArray.end(); iter++) {
130         std::shared_ptr<VideoCapsMock> pVideoCaps = *iter;
131         if (pVideoCaps == nullptr) {
132             cout << "pVideoCaps is nullptr" << endl;
133             break;
134         }
135         CheckVideoCaps(pVideoCaps);
136     }
137 }
138 
CheckVideoCaps(const std::shared_ptr<VideoCapsMock> & videoCaps) const139 void AVCodecListUnitTest::CheckVideoCaps(const std::shared_ptr<VideoCapsMock> &videoCaps) const
140 {
141     std::shared_ptr<AVCodecInfoMock> videoCodecCaps;
142     videoCodecCaps = videoCaps->GetCodecInfo();
143     std::string codecName = videoCodecCaps->GetName();
144     cout << "codecName is : " << codecName << endl;
145     if (codecName.compare("avdec_h264") == 0) {
146         CheckAVDecH264(videoCaps);
147     } else if (codecName.compare("avdec_h263") == 0) {
148         CheckAVDecH263(videoCaps);
149     } else if (codecName.compare("avdec_mpeg2video") == 0) {
150         CheckAVDecMpeg2Video(videoCaps);
151     } else if (codecName.compare("avdec_mpeg4") == 0) {
152         CheckAVDecMpeg4(videoCaps);
153     } else if (codecName.compare("avenc_mpeg4") == 0) {
154         CheckAVEncMpeg4(videoCaps);
155     }
156 }
157 
CheckAVDecH264(const std::shared_ptr<VideoCapsMock> & videoCaps) const158 void AVCodecListUnitTest::CheckAVDecH264(const std::shared_ptr<VideoCapsMock> &videoCaps) const
159 {
160     std::shared_ptr<AVCodecInfoMock> videoCodecCaps = videoCaps->GetCodecInfo();
161     EXPECT_EQ(AVCODEC_TYPE_MOCK_VIDEO_DECODER, videoCodecCaps->GetType());
162     EXPECT_EQ(enum_->GetCodecMimeType(CodecMimeTypeMock::VIDEO_AVC), videoCodecCaps->GetMimeType());
163     EXPECT_EQ(0, videoCodecCaps->IsHardwareAccelerated());
164     EXPECT_EQ(1, videoCodecCaps->IsSoftwareOnly());
165     EXPECT_EQ(0, videoCodecCaps->IsVendor());
166     EXPECT_EQ(1, videoCaps->GetSupportedBitrate().minVal);
167     EXPECT_EQ(MAX_VIDEO_BITRATE, videoCaps->GetSupportedBitrate().maxVal);
168     EXPECT_EQ(0, videoCaps->GetSupportedWidthAlignment());
169     EXPECT_EQ(MIN_WIDTH, videoCaps->GetSupportedWidth().minVal);
170     EXPECT_EQ(MAX_WIDTH, videoCaps->GetSupportedWidth().maxVal);
171     EXPECT_EQ(MIN_HEIGHT, videoCaps->GetSupportedHeight().minVal);
172     EXPECT_EQ(MAX_HEIGHT, videoCaps->GetSupportedHeight().maxVal);
173     EXPECT_EQ(1, videoCaps->GetSupportedFrameRate().minVal);
174     EXPECT_EQ(MAX_FRAME_RATE_SOFT, videoCaps->GetSupportedFrameRate().maxVal);
175     EXPECT_EQ(0, videoCaps->GetSupportedEncodeQuality().minVal);
176     EXPECT_EQ(0, videoCaps->GetSupportedEncodeQuality().maxVal);
177     EXPECT_EQ(0, videoCaps->GetSupportedQuality().minVal);
178     EXPECT_EQ(0, videoCaps->GetSupportedQuality().maxVal);
179     EXPECT_EQ(0, videoCaps->GetSupportedComplexity().minVal);
180     EXPECT_EQ(0, videoCaps->GetSupportedComplexity().maxVal);
181     EXPECT_EQ(2, videoCaps->GetSupportedFormats().size()); // 2: supported formats count
182     EXPECT_EQ(3, videoCaps->GetSupportedProfiles().size()); // 3: supported profile count
183     EXPECT_EQ(0, videoCaps->GetSupportedBitrateMode().size());
184     EXPECT_EQ(0, videoCaps->GetSupportedLevels().size());
185     EXPECT_EQ(false, videoCaps->IsSupportDynamicIframe());
186     EXPECT_EQ(true, videoCaps->IsSizeSupported(videoCaps->GetSupportedWidth().minVal,
187         videoCaps->GetSupportedHeight().maxVal));
188 }
189 
CheckAVDecH263(const std::shared_ptr<VideoCapsMock> & videoCaps) const190 void AVCodecListUnitTest::CheckAVDecH263(const std::shared_ptr<VideoCapsMock> &videoCaps) const
191 {
192     std::shared_ptr<AVCodecInfoMock> videoCodecCaps = videoCaps->GetCodecInfo();
193     EXPECT_EQ(AVCODEC_TYPE_MOCK_VIDEO_DECODER, videoCodecCaps->GetType());
194     EXPECT_EQ(enum_->GetCodecMimeType(CodecMimeTypeMock::VIDEO_H263), videoCodecCaps->GetMimeType());
195     EXPECT_EQ(0, videoCodecCaps->IsHardwareAccelerated());
196     EXPECT_EQ(1, videoCodecCaps->IsSoftwareOnly());
197     EXPECT_EQ(0, videoCodecCaps->IsVendor());
198     EXPECT_EQ(1, videoCaps->GetSupportedBitrate().minVal);
199     EXPECT_EQ(MAX_VIDEO_BITRATE, videoCaps->GetSupportedBitrate().maxVal);
200     EXPECT_EQ(0, videoCaps->GetSupportedWidthAlignment());
201     EXPECT_EQ(0, videoCaps->GetSupportedHeightAlignment());
202     EXPECT_EQ(MIN_WIDTH, videoCaps->GetSupportedWidth().minVal);
203     EXPECT_EQ(MAX_WIDTH, videoCaps->GetSupportedWidth().maxVal);
204     EXPECT_EQ(MIN_HEIGHT, videoCaps->GetSupportedHeight().minVal);
205     EXPECT_EQ(MAX_HEIGHT, videoCaps->GetSupportedHeight().maxVal);
206     EXPECT_EQ(1, videoCaps->GetSupportedFrameRate().minVal);
207     EXPECT_EQ(MAX_FRAME_RATE_SOFT, videoCaps->GetSupportedFrameRate().maxVal);
208     EXPECT_EQ(0, videoCaps->GetSupportedEncodeQuality().minVal);
209     EXPECT_EQ(0, videoCaps->GetSupportedEncodeQuality().maxVal);
210     EXPECT_EQ(0, videoCaps->GetSupportedQuality().minVal);
211     EXPECT_EQ(0, videoCaps->GetSupportedQuality().maxVal);
212     EXPECT_EQ(0, videoCaps->GetSupportedComplexity().minVal);
213     EXPECT_EQ(0, videoCaps->GetSupportedComplexity().maxVal);
214     EXPECT_EQ(2, videoCaps->GetSupportedFormats().size()); // 2: supported formats count
215     EXPECT_EQ(1, videoCaps->GetSupportedProfiles().size());
216     EXPECT_EQ(0, videoCaps->GetSupportedBitrateMode().size());
217     EXPECT_EQ(0, videoCaps->GetSupportedLevels().size());
218     EXPECT_EQ(false, videoCaps->IsSupportDynamicIframe());
219     EXPECT_EQ(false, videoCaps->IsSizeSupported(videoCaps->GetSupportedWidth().minVal - 1,
220         videoCaps->GetSupportedHeight().maxVal));
221 }
222 
CheckAVDecMpeg2Video(const std::shared_ptr<VideoCapsMock> & videoCaps) const223 void AVCodecListUnitTest::CheckAVDecMpeg2Video(const std::shared_ptr<VideoCapsMock> &videoCaps) const
224 {
225     std::shared_ptr<AVCodecInfoMock> videoCodecCaps = videoCaps->GetCodecInfo();
226     EXPECT_EQ(AVCODEC_TYPE_MOCK_VIDEO_DECODER, videoCodecCaps->GetType());
227     EXPECT_EQ(enum_->GetCodecMimeType(CodecMimeTypeMock::VIDEO_MPEG2), videoCodecCaps->GetMimeType());
228     EXPECT_EQ(0, videoCodecCaps->IsHardwareAccelerated());
229     EXPECT_EQ(1, videoCodecCaps->IsSoftwareOnly());
230     EXPECT_EQ(0, videoCodecCaps->IsVendor());
231     EXPECT_EQ(1, videoCaps->GetSupportedBitrate().minVal);
232     EXPECT_EQ(MAX_VIDEO_BITRATE, videoCaps->GetSupportedBitrate().maxVal);
233     EXPECT_EQ(0, videoCaps->GetSupportedWidthAlignment());
234     EXPECT_EQ(0, videoCaps->GetSupportedHeightAlignment());
235     EXPECT_EQ(MIN_WIDTH, videoCaps->GetSupportedWidth().minVal);
236     EXPECT_EQ(MAX_WIDTH, videoCaps->GetSupportedWidth().maxVal);
237     EXPECT_EQ(MIN_HEIGHT, videoCaps->GetSupportedHeight().minVal);
238     EXPECT_EQ(MAX_HEIGHT, videoCaps->GetSupportedHeight().maxVal);
239     EXPECT_EQ(1, videoCaps->GetSupportedFrameRate().minVal);
240     EXPECT_EQ(MAX_FRAME_RATE_SOFT, videoCaps->GetSupportedFrameRate().maxVal);
241     EXPECT_EQ(0, videoCaps->GetSupportedEncodeQuality().minVal);
242     EXPECT_EQ(0, videoCaps->GetSupportedEncodeQuality().maxVal);
243     EXPECT_EQ(0, videoCaps->GetSupportedQuality().minVal);
244     EXPECT_EQ(0, videoCaps->GetSupportedQuality().maxVal);
245     EXPECT_EQ(0, videoCaps->GetSupportedComplexity().minVal);
246     EXPECT_EQ(0, videoCaps->GetSupportedComplexity().maxVal);
247     EXPECT_EQ(2, videoCaps->GetSupportedFormats().size()); // 2: supported formats count
248     EXPECT_EQ(2, videoCaps->GetSupportedProfiles().size()); // 2: supported profile count
249     EXPECT_EQ(0, videoCaps->GetSupportedBitrateMode().size());
250     EXPECT_EQ(0, videoCaps->GetSupportedLevels().size());
251     EXPECT_EQ(false, videoCaps->IsSupportDynamicIframe());
252     EXPECT_EQ(0, videoCaps->IsSizeAndRateSupported(videoCaps->GetSupportedWidth().minVal,
253         videoCaps->GetSupportedHeight().maxVal, videoCaps->GetSupportedFrameRate().maxVal));
254     EXPECT_EQ(false, videoCaps->IsSizeAndRateSupported(videoCaps->GetSupportedWidth().minVal-1,
255         videoCaps->GetSupportedHeight().maxVal + 1, videoCaps->GetSupportedFrameRate().maxVal));
256 }
257 
CheckAVDecMpeg4(const std::shared_ptr<VideoCapsMock> & videoCaps) const258 void AVCodecListUnitTest::CheckAVDecMpeg4(const std::shared_ptr<VideoCapsMock> &videoCaps) const
259 {
260     std::shared_ptr<AVCodecInfoMock> videoCodecCaps = videoCaps->GetCodecInfo();
261     EXPECT_EQ(AVCODEC_TYPE_MOCK_VIDEO_DECODER, videoCodecCaps->GetType());
262     EXPECT_EQ(enum_->GetCodecMimeType(CodecMimeTypeMock::VIDEO_MPEG4), videoCodecCaps->GetMimeType());
263     EXPECT_EQ(0, videoCodecCaps->IsHardwareAccelerated());
264     EXPECT_EQ(1, videoCodecCaps->IsSoftwareOnly());
265     EXPECT_EQ(0, videoCodecCaps->IsVendor());
266     EXPECT_EQ(1, videoCaps->GetSupportedBitrate().minVal);
267     EXPECT_EQ(MAX_VIDEO_BITRATE, videoCaps->GetSupportedBitrate().maxVal);
268     EXPECT_EQ(0, videoCaps->GetSupportedWidthAlignment());
269     EXPECT_EQ(0, videoCaps->GetSupportedHeightAlignment());
270     EXPECT_EQ(MIN_WIDTH, videoCaps->GetSupportedWidth().minVal);
271     EXPECT_EQ(MAX_WIDTH, videoCaps->GetSupportedWidth().maxVal);
272     EXPECT_EQ(MIN_HEIGHT, videoCaps->GetSupportedHeight().minVal);
273     EXPECT_EQ(MAX_HEIGHT, videoCaps->GetSupportedHeight().maxVal);
274     EXPECT_EQ(1, videoCaps->GetSupportedFrameRate().minVal);
275     EXPECT_EQ(MAX_FRAME_RATE_SOFT, videoCaps->GetSupportedFrameRate().maxVal);
276     EXPECT_EQ(0, videoCaps->GetSupportedEncodeQuality().minVal);
277     EXPECT_EQ(0, videoCaps->GetSupportedEncodeQuality().maxVal);
278     EXPECT_EQ(0, videoCaps->GetSupportedQuality().minVal);
279     EXPECT_EQ(0, videoCaps->GetSupportedQuality().maxVal);
280     EXPECT_EQ(0, videoCaps->GetSupportedComplexity().minVal);
281     EXPECT_EQ(0, videoCaps->GetSupportedComplexity().maxVal);
282     EXPECT_EQ(2, videoCaps->GetSupportedFormats().size()); // 2: supported formats count
283     EXPECT_EQ(2, videoCaps->GetSupportedProfiles().size()); // 2: supported profile count
284     EXPECT_EQ(0, videoCaps->GetSupportedBitrateMode().size());
285     EXPECT_EQ(0, videoCaps->GetSupportedLevels().size());
286     EXPECT_EQ(false, videoCaps->IsSupportDynamicIframe());
287     EXPECT_EQ(false, videoCaps->IsSizeAndRateSupported(videoCaps->GetSupportedWidth().minVal,
288         videoCaps->GetSupportedHeight().maxVal, videoCaps->GetSupportedFrameRate().maxVal + 1));
289 }
290 
CheckAVEncMpeg4(const std::shared_ptr<VideoCapsMock> & videoCaps) const291 void AVCodecListUnitTest::CheckAVEncMpeg4(const std::shared_ptr<VideoCapsMock> &videoCaps) const
292 {
293     std::shared_ptr<AVCodecInfoMock> videoCodecCaps = videoCaps->GetCodecInfo();
294     EXPECT_EQ(AVCODEC_TYPE_MOCK_VIDEO_ENCODER, videoCodecCaps->GetType());
295     EXPECT_EQ(enum_->GetCodecMimeType(CodecMimeTypeMock::VIDEO_MPEG4), videoCodecCaps->GetMimeType());
296     EXPECT_EQ(0, videoCodecCaps->IsHardwareAccelerated());
297     EXPECT_EQ(1, videoCodecCaps->IsSoftwareOnly());
298     EXPECT_EQ(0, videoCodecCaps->IsVendor());
299     EXPECT_EQ(1, videoCaps->GetSupportedBitrate().minVal);
300     EXPECT_EQ(MAX_VIDEO_BITRATE, videoCaps->GetSupportedBitrate().maxVal);
301     EXPECT_EQ(0, videoCaps->GetSupportedWidthAlignment());
302     EXPECT_EQ(0, videoCaps->GetSupportedHeightAlignment());
303     EXPECT_EQ(MIN_WIDTH, videoCaps->GetSupportedWidth().minVal);
304     EXPECT_EQ(DEFAULT_WIDTH, videoCaps->GetSupportedWidth().maxVal);
305     EXPECT_EQ(MIN_HEIGHT, videoCaps->GetSupportedHeight().minVal);
306     EXPECT_EQ(DEFAULT_HEIGHT, videoCaps->GetSupportedHeight().maxVal);
307     EXPECT_EQ(1, videoCaps->GetSupportedFrameRate().minVal);
308     EXPECT_EQ(MAX_FRAME_RATE_SOFT, videoCaps->GetSupportedFrameRate().maxVal);
309     EXPECT_EQ(0, videoCaps->GetSupportedEncodeQuality().minVal);
310     EXPECT_EQ(0, videoCaps->GetSupportedEncodeQuality().maxVal);
311     EXPECT_EQ(0, videoCaps->GetSupportedQuality().minVal);
312     EXPECT_EQ(0, videoCaps->GetSupportedQuality().maxVal);
313     EXPECT_EQ(0, videoCaps->GetSupportedComplexity().minVal);
314     EXPECT_EQ(0, videoCaps->GetSupportedComplexity().maxVal);
315     EXPECT_EQ(2, videoCaps->GetSupportedFormats().size()); // 2: supported formats count
316     EXPECT_EQ(2, videoCaps->GetSupportedProfiles().size()); // 2: supported profile count
317     EXPECT_EQ(2, videoCaps->GetSupportedBitrateMode().size()); // 2: supported bitretemode count
318     EXPECT_EQ(0, videoCaps->GetSupportedLevels().size());
319     EXPECT_EQ(false, videoCaps->IsSupportDynamicIframe());
320 }
321 
CheckAudioCapsArray(const std::vector<std::shared_ptr<AudioCapsMock>> & audioCapsArray) const322 void AVCodecListUnitTest::CheckAudioCapsArray(const std::vector<std::shared_ptr<AudioCapsMock>> &audioCapsArray) const
323 {
324     for (auto iter = audioCapsArray.begin(); iter != audioCapsArray.end(); iter++) {
325         std::shared_ptr<AudioCapsMock> pAudioCaps = *iter;
326         if (pAudioCaps == nullptr) {
327             cout << "pAudioCaps is nullptr" << endl;
328             break;
329         }
330         CheckAudioCaps(pAudioCaps);
331     }
332 }
333 
CheckAudioCaps(const std::shared_ptr<AudioCapsMock> & audioCaps) const334 void AVCodecListUnitTest::CheckAudioCaps(const std::shared_ptr<AudioCapsMock> &audioCaps) const
335 {
336     std::shared_ptr<AVCodecInfoMock> audioCodecCaps;
337     audioCodecCaps = audioCaps->GetCodecInfo();
338     std::string codecName = audioCodecCaps->GetName();
339     if (codecName.compare("avdec_mp3") == 0) {
340         CheckAVDecMP3(audioCaps);
341     } else if (codecName.compare("avdec_aac") == 0) {
342         CheckAVDecAAC(audioCaps);
343     } else if (codecName.compare("avdec_vorbis") == 0) {
344         CheckAVDecVorbis(audioCaps);
345     } else if (codecName.compare("avdec_flac") == 0) {
346         CheckAVDecFlac(audioCaps);
347     } else if (codecName.compare("avdec_opus") == 0) {
348         CheckAVDecOpus(audioCaps);
349     } else if (codecName.compare("avenc_aac") == 0) {
350         CheckAVEncAAC(audioCaps);
351     } else if (codecName.compare("avenc_opus") == 0) {
352         CheckAVEncOpus(audioCaps);
353     }
354 }
355 
CheckAVDecMP3(const std::shared_ptr<AudioCapsMock> & audioCaps) const356 void AVCodecListUnitTest::CheckAVDecMP3(const std::shared_ptr<AudioCapsMock> &audioCaps) const
357 {
358     std::shared_ptr<AVCodecInfoMock> audioCodecCaps = audioCaps->GetCodecInfo();
359     EXPECT_EQ(AVCODEC_TYPE_MOCK_AUDIO_DECODER, audioCodecCaps->GetType());
360     EXPECT_EQ(enum_->GetCodecMimeType(CodecMimeTypeMock::AUDIO_MPEG), audioCodecCaps->GetMimeType());
361     EXPECT_EQ(0, audioCodecCaps->IsHardwareAccelerated());
362     EXPECT_EQ(1, audioCodecCaps->IsSoftwareOnly());
363     EXPECT_EQ(0, audioCodecCaps->IsVendor());
364     EXPECT_EQ(1, audioCaps->GetSupportedBitrate().minVal);
365     EXPECT_EQ(MAX_AUDIO_BITRATE, audioCaps->GetSupportedBitrate().maxVal);
366     EXPECT_EQ(1, audioCaps->GetSupportedChannel().minVal);
367     EXPECT_EQ(MAX_CHANNEL_COUNT, audioCaps->GetSupportedChannel().maxVal);
368     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().minVal);
369     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().maxVal);
370     EXPECT_EQ(1, audioCaps->GetSupportedFormats().size());
371     EXPECT_EQ(12, audioCaps->GetSupportedSampleRates().size()); // 12: supported samplerate count
372     EXPECT_EQ(0, audioCaps->GetSupportedProfiles().size());
373     EXPECT_EQ(0, audioCaps->GetSupportedLevels().size());
374 }
375 
CheckAVDecAAC(const std::shared_ptr<AudioCapsMock> & audioCaps) const376 void AVCodecListUnitTest::CheckAVDecAAC(const std::shared_ptr<AudioCapsMock> &audioCaps) const
377 {
378     std::shared_ptr<AVCodecInfoMock> audioCodecCaps = audioCaps->GetCodecInfo();
379     EXPECT_EQ(AVCODEC_TYPE_MOCK_AUDIO_DECODER, audioCodecCaps->GetType());
380     EXPECT_EQ(enum_->GetCodecMimeType(CodecMimeTypeMock::AUDIO_AAC), audioCodecCaps->GetMimeType());
381     EXPECT_EQ(0, audioCodecCaps->IsHardwareAccelerated());
382     EXPECT_EQ(1, audioCodecCaps->IsSoftwareOnly());
383     EXPECT_EQ(0, audioCodecCaps->IsVendor());
384     EXPECT_EQ(1, audioCaps->GetSupportedBitrate().minVal);
385     EXPECT_EQ(MAX_AUDIO_BITRATE, audioCaps->GetSupportedBitrate().maxVal);
386     EXPECT_EQ(1, audioCaps->GetSupportedChannel().minVal);
387     EXPECT_EQ(MAX_CHANNEL_COUNT, audioCaps->GetSupportedChannel().maxVal);
388     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().minVal);
389     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().maxVal);
390     EXPECT_EQ(1, audioCaps->GetSupportedFormats().size());
391     EXPECT_EQ(12, audioCaps->GetSupportedSampleRates().size()); // 12: supported samplerate count
392     EXPECT_EQ(1, audioCaps->GetSupportedProfiles().size());
393     EXPECT_EQ(0, audioCaps->GetSupportedLevels().size());
394 }
395 
CheckAVDecVorbis(const std::shared_ptr<AudioCapsMock> & audioCaps) const396 void AVCodecListUnitTest::CheckAVDecVorbis(const std::shared_ptr<AudioCapsMock> &audioCaps) const
397 {
398     std::shared_ptr<AVCodecInfoMock> audioCodecCaps = audioCaps->GetCodecInfo();
399     EXPECT_EQ(AVCODEC_TYPE_MOCK_AUDIO_DECODER, audioCodecCaps->GetType());
400     EXPECT_EQ(enum_->GetCodecMimeType(CodecMimeTypeMock::AUDIO_VORBIS), audioCodecCaps->GetMimeType());
401     EXPECT_EQ(0, audioCodecCaps->IsHardwareAccelerated());
402     EXPECT_EQ(1, audioCodecCaps->IsSoftwareOnly());
403     EXPECT_EQ(0, audioCodecCaps->IsVendor());
404     EXPECT_EQ(1, audioCaps->GetSupportedBitrate().minVal);
405     EXPECT_EQ(MAX_AUDIO_BITRATE, audioCaps->GetSupportedBitrate().maxVal);
406     EXPECT_EQ(1, audioCaps->GetSupportedChannel().minVal);
407     EXPECT_EQ(MAX_CHANNEL_COUNT_VORBIS, audioCaps->GetSupportedChannel().maxVal);
408     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().minVal);
409     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().maxVal);
410     EXPECT_EQ(1, audioCaps->GetSupportedFormats().size());
411     EXPECT_EQ(14, audioCaps->GetSupportedSampleRates().size()); // 14: supported samplerate count
412     EXPECT_EQ(0, audioCaps->GetSupportedProfiles().size());
413     EXPECT_EQ(0, audioCaps->GetSupportedLevels().size());
414 }
415 
CheckAVDecFlac(const std::shared_ptr<AudioCapsMock> & audioCaps) const416 void AVCodecListUnitTest::CheckAVDecFlac(const std::shared_ptr<AudioCapsMock> &audioCaps) const
417 {
418     std::shared_ptr<AVCodecInfoMock> audioCodecCaps = audioCaps->GetCodecInfo();
419     EXPECT_EQ(AVCODEC_TYPE_MOCK_AUDIO_DECODER, audioCodecCaps->GetType());
420     EXPECT_EQ(enum_->GetCodecMimeType(CodecMimeTypeMock::AUDIO_FLAC), audioCodecCaps->GetMimeType());
421     EXPECT_EQ(0, audioCodecCaps->IsHardwareAccelerated());
422     EXPECT_EQ(1, audioCodecCaps->IsSoftwareOnly());
423     EXPECT_EQ(0, audioCodecCaps->IsVendor());
424     EXPECT_EQ(1, audioCaps->GetSupportedBitrate().minVal);
425     EXPECT_EQ(MAX_AUDIO_BITRATE, audioCaps->GetSupportedBitrate().maxVal);
426     EXPECT_EQ(1, audioCaps->GetSupportedChannel().minVal);
427     EXPECT_EQ(MAX_CHANNEL_COUNT, audioCaps->GetSupportedChannel().maxVal);
428     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().minVal);
429     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().maxVal);
430     EXPECT_EQ(1, audioCaps->GetSupportedFormats().size());
431     EXPECT_EQ(12, audioCaps->GetSupportedSampleRates().size()); // 12: supported samplerate count
432     EXPECT_EQ(0, audioCaps->GetSupportedProfiles().size());
433     EXPECT_EQ(0, audioCaps->GetSupportedLevels().size());
434 }
435 
CheckAVDecOpus(const std::shared_ptr<AudioCapsMock> & audioCaps) const436 void AVCodecListUnitTest::CheckAVDecOpus(const std::shared_ptr<AudioCapsMock> &audioCaps) const
437 {
438     std::shared_ptr<AVCodecInfoMock> audioCodecCaps = audioCaps->GetCodecInfo();
439     EXPECT_EQ(AVCODEC_TYPE_MOCK_AUDIO_DECODER, audioCodecCaps->GetType());
440     EXPECT_EQ(enum_->GetCodecMimeType(CodecMimeTypeMock::AUDIO_OPUS), audioCodecCaps->GetMimeType());
441     EXPECT_EQ(0, audioCodecCaps->IsHardwareAccelerated());
442     EXPECT_EQ(1, audioCodecCaps->IsSoftwareOnly());
443     EXPECT_EQ(0, audioCodecCaps->IsVendor());
444     EXPECT_EQ(1, audioCaps->GetSupportedBitrate().minVal);
445     EXPECT_EQ(MAX_AUDIO_BITRATE, audioCaps->GetSupportedBitrate().maxVal);
446     EXPECT_EQ(1, audioCaps->GetSupportedChannel().minVal);
447     EXPECT_EQ(MAX_CHANNEL_COUNT, audioCaps->GetSupportedChannel().maxVal);
448     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().minVal);
449     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().maxVal);
450     EXPECT_EQ(1, audioCaps->GetSupportedFormats().size());
451     EXPECT_EQ(1, audioCaps->GetSupportedSampleRates().size());
452     EXPECT_EQ(0, audioCaps->GetSupportedProfiles().size());
453     EXPECT_EQ(0, audioCaps->GetSupportedLevels().size());
454 }
455 
CheckAVEncAAC(const std::shared_ptr<AudioCapsMock> & audioCaps) const456 void AVCodecListUnitTest::CheckAVEncAAC(const std::shared_ptr<AudioCapsMock> &audioCaps) const
457 {
458     std::shared_ptr<AVCodecInfoMock> audioCodecCaps = audioCaps->GetCodecInfo();
459     EXPECT_EQ(AVCODEC_TYPE_MOCK_AUDIO_ENCODER, audioCodecCaps->GetType());
460     EXPECT_EQ(enum_->GetCodecMimeType(CodecMimeTypeMock::AUDIO_AAC), audioCodecCaps->GetMimeType());
461     EXPECT_EQ(0, audioCodecCaps->IsHardwareAccelerated());
462     EXPECT_EQ(1, audioCodecCaps->IsSoftwareOnly());
463     EXPECT_EQ(0, audioCodecCaps->IsVendor());
464     EXPECT_EQ(8000, audioCaps->GetSupportedBitrate().minVal);  // 8000: supported min bitrate
465     EXPECT_EQ(MAX_AUDIO_BITRATE, audioCaps->GetSupportedBitrate().maxVal);
466     EXPECT_EQ(1, audioCaps->GetSupportedChannel().minVal);
467     EXPECT_EQ(MAX_CHANNEL_COUNT, audioCaps->GetSupportedChannel().maxVal);
468     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().minVal);
469     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().maxVal);
470     EXPECT_EQ(1, audioCaps->GetSupportedFormats().size());
471     EXPECT_EQ(11, audioCaps->GetSupportedSampleRates().size()); // 11: supported samplerate count
472     EXPECT_EQ(0, audioCaps->GetSupportedProfiles().size());
473     EXPECT_EQ(0, audioCaps->GetSupportedLevels().size());
474 }
475 
CheckAVEncOpus(const std::shared_ptr<AudioCapsMock> & audioCaps) const476 void AVCodecListUnitTest::CheckAVEncOpus(const std::shared_ptr<AudioCapsMock> &audioCaps) const
477 {
478     std::shared_ptr<AVCodecInfoMock> audioCodecCaps = audioCaps->GetCodecInfo();
479     EXPECT_EQ(AVCODEC_TYPE_MOCK_AUDIO_ENCODER, audioCodecCaps->GetType());
480     EXPECT_EQ(enum_->GetCodecMimeType(CodecMimeTypeMock::AUDIO_OPUS), audioCodecCaps->GetMimeType());
481     EXPECT_EQ(0, audioCodecCaps->IsHardwareAccelerated());
482     EXPECT_EQ(1, audioCodecCaps->IsSoftwareOnly());
483     EXPECT_EQ(0, audioCodecCaps->IsVendor());
484     EXPECT_EQ(1, audioCaps->GetSupportedBitrate().minVal);
485     EXPECT_EQ(MAX_AUDIO_BITRATE, audioCaps->GetSupportedBitrate().maxVal);
486     EXPECT_EQ(1, audioCaps->GetSupportedChannel().minVal);
487     EXPECT_EQ(MAX_CHANNEL_COUNT, audioCaps->GetSupportedChannel().maxVal);
488     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().minVal);
489     EXPECT_EQ(0, audioCaps->GetSupportedComplexity().maxVal);
490     EXPECT_EQ(1, audioCaps->GetSupportedFormats().size());
491     EXPECT_EQ(1, audioCaps->GetSupportedSampleRates().size());
492     EXPECT_EQ(0, audioCaps->GetSupportedProfiles().size());
493     EXPECT_EQ(0, audioCaps->GetSupportedLevels().size());
494 }
495 
496 /**
497  * @tc.name: AVCdecList_GetVideoDecoderCaps_0100
498  * @tc.desc: AVCdecList GetVideoDecoderCaps
499  * @tc.type: FUNC
500  * @tc.require:
501  */
502 HWTEST_F(AVCodecListUnitTest, AVCdecList_GetVideoDecoderCaps_0100, TestSize.Level0)
503 {
504     std::vector<std::shared_ptr<VideoCapsMock>> videoDecoderArray;
505     videoDecoderArray = avCodecList_->GetVideoDecoderCaps();
506     CheckVideoCapsArray(videoDecoderArray);
507 }
508 
509 /**
510  * @tc.name: AVCdecList_GetVideoEncoderCaps_0100
511  * @tc.desc: AVCdecList GetVideoEncoderCaps
512  * @tc.type: FUNC
513  * @tc.require:
514  */
515 HWTEST_F(AVCodecListUnitTest, AVCdecList_GetVideoEncoderCaps_0100, TestSize.Level0)
516 {
517     std::vector<std::shared_ptr<VideoCapsMock>> videoEncoderArray;
518     videoEncoderArray = avCodecList_->GetVideoEncoderCaps();
519     CheckVideoCapsArray(videoEncoderArray);
520 }
521 
522 /**
523  * @tc.name: AVCdecList_GetAudioDecoderCaps_0100
524  * @tc.desc: AVCdecList GetAudioDecoderCaps
525  * @tc.type: FUNC
526  * @tc.require:
527  */
528 HWTEST_F(AVCodecListUnitTest, AVCdecList_GetAudioDecoderCaps_0100, TestSize.Level0)
529 {
530     std::vector<std::shared_ptr<AudioCapsMock>> audioDecoderArray;
531     audioDecoderArray = avCodecList_->GetAudioDecoderCaps();
532     CheckAudioCapsArray(audioDecoderArray);
533 }
534 
535 /**
536  * @tc.name: AVCdecList_GetAudioEncoderCaps_0100
537  * @tc.desc: AVCdecList GetAudioEncoderCaps
538  * @tc.type: FUNC
539  * @tc.require:
540  */
541 HWTEST_F(AVCodecListUnitTest, AVCdecList_GetAudioEncoderCaps_0100, TestSize.Level0)
542 {
543     std::vector<std::shared_ptr<AudioCapsMock>> audioEncoderArray;
544     audioEncoderArray = avCodecList_->GetAudioEncoderCaps();
545     CheckAudioCapsArray(audioEncoderArray);
546 }
547 
548 /**
549  * @tc.name: AVCdecList_GetSupportedFrameRatesFor_0100
550  * @tc.desc: AVCdecList GetSupportedFrameRatesFor
551  * @tc.type: FUNC
552  * @tc.require:
553  */
554 HWTEST_F(AVCodecListUnitTest, AVCdecList_GetSupportedFrameRatesFor_0100, TestSize.Level0)
555 {
556     RangeMock ret;
557     std::vector<std::shared_ptr<VideoCapsMock>> videoDecoderArray = avCodecList_->GetVideoDecoderCaps();
558     for (auto iter = videoDecoderArray.begin(); iter != videoDecoderArray.end(); iter++) {
559         std::shared_ptr<VideoCapsMock> pVideoCaps = *iter;
560         ret = (*iter)->GetSupportedFrameRatesFor(DEFAULT_WIDTH, DEFAULT_HEIGHT);
561         EXPECT_GE(ret.minVal, 0);
562         EXPECT_LE(ret.maxVal, MAX_FRAME_RATE_HARD);
563     }
564     std::vector<std::shared_ptr<VideoCapsMock>> videoEncoderArray = avCodecList_->GetVideoEncoderCaps();
565     for (auto iter = videoEncoderArray.begin(); iter != videoEncoderArray.end(); iter++) {
566         ret = (*iter)->GetSupportedFrameRatesFor(DEFAULT_WIDTH, DEFAULT_HEIGHT);
567         EXPECT_GE(ret.minVal, 0);
568         EXPECT_LE(ret.maxVal, MAX_FRAME_RATE_HARD);
569     }
570 }
571 
572 /**
573  * @tc.name: AVCdecList_GetSupportedFrameRatesFor_0200
574  * @tc.desc: AVCdecList GetSupportedFrameRatesFor not supported size
575  * @tc.type: FUNC
576  * @tc.require:
577  */
578 HWTEST_F(AVCodecListUnitTest, AVCdecList_GetSupportedFrameRatesFor_0200, TestSize.Level0)
579 {
580     RangeMock ret;
581     std::vector<std::shared_ptr<VideoCapsMock>> videoDecoderArray = avCodecList_->GetVideoDecoderCaps();
582     for (auto iter = videoDecoderArray.begin(); iter != videoDecoderArray.end(); iter++) {
583         std::shared_ptr<VideoCapsMock> pVideoCaps = *iter;
584         ret = (*iter)->GetSupportedFrameRatesFor(MAX_WIDTH + 1, MAX_HEIGHT + 1);
585         EXPECT_GE(ret.minVal, 0);
586         EXPECT_LE(ret.maxVal, MAX_FRAME_RATE_HARD);
587     }
588     std::vector<std::shared_ptr<VideoCapsMock>> videoEncoderArray = avCodecList_->GetVideoEncoderCaps();
589     for (auto iter = videoEncoderArray.begin(); iter != videoEncoderArray.end(); iter++) {
590         ret = (*iter)->GetSupportedFrameRatesFor(MIN_WIDTH - 1, MIN_HEIGHT - 1);
591         EXPECT_GE(ret.minVal, 0);
592         EXPECT_LE(ret.maxVal, MAX_FRAME_RATE_HARD);
593     }
594 }
595 
596 /**
597  * @tc.name: AVCdecList_GetPreferredFrameRate_0100
598  * @tc.desc: AVCdecList GetPreferredFrameRate
599  * @tc.type: FUNC
600  * @tc.require:
601  */
602 HWTEST_F(AVCodecListUnitTest, AVCdecList_GetPreferredFrameRate_0100, TestSize.Level0)
603 {
604     RangeMock ret;
605     std::vector<std::shared_ptr<VideoCapsMock>> videoEncoderArray = avCodecList_->GetVideoEncoderCaps();
606     for (auto iter = videoEncoderArray.begin(); iter != videoEncoderArray.end(); iter++) {
607         ret = (*iter)->GetPreferredFrameRate(DEFAULT_WIDTH, DEFAULT_HEIGHT);
608         EXPECT_GE(ret.minVal, 0);
609     }
610     std::vector<std::shared_ptr<VideoCapsMock>> videoDecoderArray = avCodecList_->GetVideoDecoderCaps();
611     for (auto iter = videoDecoderArray.begin(); iter != videoDecoderArray.end(); iter++) {
612         ret = (*iter)->GetPreferredFrameRate(DEFAULT_WIDTH, DEFAULT_HEIGHT);
613         EXPECT_GE(ret.minVal, 0);
614     }
615 }
616 
617 /**
618  * @tc.name: AVCdecList_GetPreferredFrameRate_0200
619  * @tc.desc: AVCdecList GetPreferredFrameRate for not supported size
620  * @tc.type: FUNC
621  * @tc.require:
622  */
623 HWTEST_F(AVCodecListUnitTest, AVCdecList_GetPreferredFrameRate_0200, TestSize.Level0)
624 {
625     RangeMock ret;
626     std::vector<std::shared_ptr<VideoCapsMock>> videoEncoderArray = avCodecList_->GetVideoEncoderCaps();
627     for (auto iter = videoEncoderArray.begin(); iter != videoEncoderArray.end(); iter++) {
628         ret = (*iter)->GetPreferredFrameRate(MAX_WIDTH + 1, MAX_HEIGHT + 1);
629         EXPECT_GE(ret.minVal, 0);
630     }
631     std::vector<std::shared_ptr<VideoCapsMock>> videoDecoderArray = avCodecList_->GetVideoDecoderCaps();
632     for (auto iter = videoDecoderArray.begin(); iter != videoDecoderArray.end(); iter++) {
633         ret = (*iter)->GetPreferredFrameRate(MIN_WIDTH - 1, MIN_HEIGHT - 1);
634         EXPECT_GE(ret.minVal, 0);
635     }
636 }
637 } // namespace Media
638 } // namespace OHOS
639