1 /*
2  * Copyright (c) 2023-2023 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 "plugin/plugins/demuxer/aac_demuxer/aac_demuxer_plugin.h"
18 
19 using namespace testing::ext;
20 using namespace OHOS::Media::Plugin;
21 using namespace OHOS::Media::Plugin::AacDemuxer;
22 
23 namespace OHOS {
24 namespace Media {
25 namespace Test {
AacDemuxerPluginCreate(const std::string & name)26 std::shared_ptr<AACDemuxerPlugin> AacDemuxerPluginCreate(const std::string& name)
27 {
28     return std::make_shared<AACDemuxerPlugin>(name);
29 }
30 
31 HWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_process, TestSize.Level1)
32 {
33     std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("process");
34     ASSERT_TRUE(aacDemuxerPlugin != nullptr);
35     auto resetStatus = aacDemuxerPlugin->Reset();
36     ASSERT_TRUE(resetStatus == Status::OK);
37     auto initStatus = aacDemuxerPlugin->Init();
38     ASSERT_TRUE(initStatus == Status::OK);
39     auto prepareStatus = aacDemuxerPlugin->Prepare();
40     ASSERT_TRUE(prepareStatus == Status::OK);
41     auto startStatus = aacDemuxerPlugin->Start();
42     ASSERT_TRUE(startStatus == Status::OK);
43     auto stopStatus = aacDemuxerPlugin->Stop();
44     ASSERT_TRUE(stopStatus == Status::OK);
45     auto freeStatus = aacDemuxerPlugin->Deinit();
46     ASSERT_TRUE(freeStatus == Status::OK);
47 }
48 
49 HWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_get_parameter, TestSize.Level1)
50 {
51     std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("get parameter");
52     ASSERT_TRUE(aacDemuxerPlugin != nullptr);
53     ValueType para;
54     auto channelLayoutStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_CHANNEL_LAYOUT, para);
55     ASSERT_TRUE(channelLayoutStatus == Status::ERROR_UNIMPLEMENTED);
56     auto mediaTypeStatus =  aacDemuxerPlugin->GetParameter(Tag::MEDIA_TYPE, para);
57     ASSERT_TRUE(mediaTypeStatus == Status::ERROR_UNIMPLEMENTED);
58     auto sampleRateStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_SAMPLE_RATE, para);
59     ASSERT_TRUE(sampleRateStatus == Status::ERROR_UNIMPLEMENTED);
60     auto bitrateStatus =  aacDemuxerPlugin->GetParameter(Tag::MEDIA_BITRATE, para);
61     ASSERT_TRUE(bitrateStatus == Status::ERROR_UNIMPLEMENTED);
62     auto channelsStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_CHANNELS, para);
63     ASSERT_TRUE(channelsStatus == Status::ERROR_UNIMPLEMENTED);
64     auto trackIdStatus =  aacDemuxerPlugin->GetParameter(Tag::TRACK_ID, para);
65     ASSERT_TRUE(trackIdStatus == Status::ERROR_UNIMPLEMENTED);
66     auto mimeStatus =  aacDemuxerPlugin->GetParameter(Tag::MIME, para);
67     ASSERT_TRUE(mimeStatus == Status::ERROR_UNIMPLEMENTED);
68     auto streamFormatStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_AAC_STREAM_FORMAT, para);
69     ASSERT_TRUE(streamFormatStatus == Status::ERROR_UNIMPLEMENTED);
70     auto mpegVersionStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_MPEG_VERSION, para);
71     ASSERT_TRUE(mpegVersionStatus == Status::ERROR_UNIMPLEMENTED);
72     auto sampleFormatStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_SAMPLE_FORMAT, para);
73     ASSERT_TRUE(sampleFormatStatus == Status::ERROR_UNIMPLEMENTED);
74     auto samplePerFrameStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_SAMPLE_PER_FRAME, para);
75     ASSERT_TRUE(samplePerFrameStatus == Status::ERROR_UNIMPLEMENTED);
76     auto profileStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_AAC_PROFILE, para);
77     ASSERT_TRUE(profileStatus == Status::ERROR_UNIMPLEMENTED);
78 }
79 
80 HWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_set_parameter, TestSize.Level1)
81 {
82     std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("get parameter");
83     ASSERT_TRUE(aacDemuxerPlugin != nullptr);
84     ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::AUDIO_CHANNEL_LAYOUT, AudioChannelLayout::STEREO)
85         == Status::ERROR_UNIMPLEMENTED);
86     ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::MEDIA_TYPE, MediaType::AUDIO) == Status::ERROR_UNIMPLEMENTED);
87     ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::TRACK_ID, 0) == Status::ERROR_UNIMPLEMENTED);
88     ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::MIME, MEDIA_MIME_AUDIO_AAC) == Status::ERROR_UNIMPLEMENTED);
89     ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::AUDIO_SAMPLE_FORMAT, AudioSampleFormat::S16)
90         == Status::ERROR_UNIMPLEMENTED);
91     ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::AUDIO_SAMPLE_PER_FRAME, 1024) // sample per frame: 1024
92         == Status::ERROR_UNIMPLEMENTED);
93     ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::AUDIO_AAC_PROFILE, AudioAacProfile::LC)
94         == Status::ERROR_UNIMPLEMENTED);
95     ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::AUDIO_AAC_STREAM_FORMAT, AudioAacStreamFormat::MP4ADTS)
96         == Status::ERROR_UNIMPLEMENTED);
97 }
98 
99 HWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_get_allocator, TestSize.Level1)
100 {
101     std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("get allocator");
102     ASSERT_TRUE(aacDemuxerPlugin != nullptr);
103     auto allocator =  aacDemuxerPlugin->GetAllocator();
104     ASSERT_TRUE(allocator == nullptr);
105 }
106 
107 HWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_set_callback, TestSize.Level1)
108 {
109     std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("set callback");
110     ASSERT_TRUE(aacDemuxerPlugin != nullptr);
111     Callback* cb = new Callback();
112     auto status = aacDemuxerPlugin->SetCallback(cb);
113     ASSERT_TRUE(status == Status::OK);
114 }
115 
116 HWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_get_track_count, TestSize.Level1)
117 {
118     std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("get track count");
119     ASSERT_TRUE(aacDemuxerPlugin != nullptr);
120     ASSERT_TRUE(aacDemuxerPlugin->GetTrackCount() == 0);
121 }
122 
123 HWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_select_track, TestSize.Level1)
124 {
125     std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("select track");
126     ASSERT_TRUE(aacDemuxerPlugin != nullptr);
127     auto selectStatus = aacDemuxerPlugin->SelectTrack(0);
128     ASSERT_TRUE(selectStatus == Status::OK);
129 }
130 
131 HWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_unselect_track, TestSize.Level1)
132 {
133     std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("unselect track");
134     ASSERT_TRUE(aacDemuxerPlugin != nullptr);
135     auto unselectStatus = aacDemuxerPlugin->UnselectTrack(0);
136     ASSERT_TRUE(unselectStatus == Status::OK);
137 }
138 
139 HWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_get_select_track, TestSize.Level1)
140 {
141     std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("get select track");
142     ASSERT_TRUE(aacDemuxerPlugin != nullptr);
143     std::vector<int32_t> trackIds = new std::vector<int32_t>[1];
144     auto selectStatus = aacDemuxerPlugin->GetSelectedTracks(trackIds);
145     ASSERT_TRUE(selectStatus == Status::OK);
146 }
147 
148 } // namespace Test
149 } // namespace Media
150 } // namespace OHOS