1fa7767c5Sopenharmony_ci/*
2fa7767c5Sopenharmony_ci * Copyright (c) 2023-2023 Huawei Device Co., Ltd.
3fa7767c5Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fa7767c5Sopenharmony_ci * you may not use this file except in compliance with the License.
5fa7767c5Sopenharmony_ci * You may obtain a copy of the License at
6fa7767c5Sopenharmony_ci *
7fa7767c5Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8fa7767c5Sopenharmony_ci *
9fa7767c5Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fa7767c5Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fa7767c5Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fa7767c5Sopenharmony_ci * See the License for the specific language governing permissions and
13fa7767c5Sopenharmony_ci * limitations under the License.
14fa7767c5Sopenharmony_ci */
15fa7767c5Sopenharmony_ci
16fa7767c5Sopenharmony_ci#include "gtest/gtest.h"
17fa7767c5Sopenharmony_ci#include "plugin/plugins/demuxer/aac_demuxer/aac_demuxer_plugin.h"
18fa7767c5Sopenharmony_ci
19fa7767c5Sopenharmony_ciusing namespace testing::ext;
20fa7767c5Sopenharmony_ciusing namespace OHOS::Media::Plugin;
21fa7767c5Sopenharmony_ciusing namespace OHOS::Media::Plugin::AacDemuxer;
22fa7767c5Sopenharmony_ci
23fa7767c5Sopenharmony_cinamespace OHOS {
24fa7767c5Sopenharmony_cinamespace Media {
25fa7767c5Sopenharmony_cinamespace Test {
26fa7767c5Sopenharmony_cistd::shared_ptr<AACDemuxerPlugin> AacDemuxerPluginCreate(const std::string& name)
27fa7767c5Sopenharmony_ci{
28fa7767c5Sopenharmony_ci    return std::make_shared<AACDemuxerPlugin>(name);
29fa7767c5Sopenharmony_ci}
30fa7767c5Sopenharmony_ci
31fa7767c5Sopenharmony_ciHWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_process, TestSize.Level1)
32fa7767c5Sopenharmony_ci{
33fa7767c5Sopenharmony_ci    std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("process");
34fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin != nullptr);
35fa7767c5Sopenharmony_ci    auto resetStatus = aacDemuxerPlugin->Reset();
36fa7767c5Sopenharmony_ci    ASSERT_TRUE(resetStatus == Status::OK);
37fa7767c5Sopenharmony_ci    auto initStatus = aacDemuxerPlugin->Init();
38fa7767c5Sopenharmony_ci    ASSERT_TRUE(initStatus == Status::OK);
39fa7767c5Sopenharmony_ci    auto prepareStatus = aacDemuxerPlugin->Prepare();
40fa7767c5Sopenharmony_ci    ASSERT_TRUE(prepareStatus == Status::OK);
41fa7767c5Sopenharmony_ci    auto startStatus = aacDemuxerPlugin->Start();
42fa7767c5Sopenharmony_ci    ASSERT_TRUE(startStatus == Status::OK);
43fa7767c5Sopenharmony_ci    auto stopStatus = aacDemuxerPlugin->Stop();
44fa7767c5Sopenharmony_ci    ASSERT_TRUE(stopStatus == Status::OK);
45fa7767c5Sopenharmony_ci    auto freeStatus = aacDemuxerPlugin->Deinit();
46fa7767c5Sopenharmony_ci    ASSERT_TRUE(freeStatus == Status::OK);
47fa7767c5Sopenharmony_ci}
48fa7767c5Sopenharmony_ci
49fa7767c5Sopenharmony_ciHWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_get_parameter, TestSize.Level1)
50fa7767c5Sopenharmony_ci{
51fa7767c5Sopenharmony_ci    std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("get parameter");
52fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin != nullptr);
53fa7767c5Sopenharmony_ci    ValueType para;
54fa7767c5Sopenharmony_ci    auto channelLayoutStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_CHANNEL_LAYOUT, para);
55fa7767c5Sopenharmony_ci    ASSERT_TRUE(channelLayoutStatus == Status::ERROR_UNIMPLEMENTED);
56fa7767c5Sopenharmony_ci    auto mediaTypeStatus =  aacDemuxerPlugin->GetParameter(Tag::MEDIA_TYPE, para);
57fa7767c5Sopenharmony_ci    ASSERT_TRUE(mediaTypeStatus == Status::ERROR_UNIMPLEMENTED);
58fa7767c5Sopenharmony_ci    auto sampleRateStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_SAMPLE_RATE, para);
59fa7767c5Sopenharmony_ci    ASSERT_TRUE(sampleRateStatus == Status::ERROR_UNIMPLEMENTED);
60fa7767c5Sopenharmony_ci    auto bitrateStatus =  aacDemuxerPlugin->GetParameter(Tag::MEDIA_BITRATE, para);
61fa7767c5Sopenharmony_ci    ASSERT_TRUE(bitrateStatus == Status::ERROR_UNIMPLEMENTED);
62fa7767c5Sopenharmony_ci    auto channelsStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_CHANNELS, para);
63fa7767c5Sopenharmony_ci    ASSERT_TRUE(channelsStatus == Status::ERROR_UNIMPLEMENTED);
64fa7767c5Sopenharmony_ci    auto trackIdStatus =  aacDemuxerPlugin->GetParameter(Tag::TRACK_ID, para);
65fa7767c5Sopenharmony_ci    ASSERT_TRUE(trackIdStatus == Status::ERROR_UNIMPLEMENTED);
66fa7767c5Sopenharmony_ci    auto mimeStatus =  aacDemuxerPlugin->GetParameter(Tag::MIME, para);
67fa7767c5Sopenharmony_ci    ASSERT_TRUE(mimeStatus == Status::ERROR_UNIMPLEMENTED);
68fa7767c5Sopenharmony_ci    auto streamFormatStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_AAC_STREAM_FORMAT, para);
69fa7767c5Sopenharmony_ci    ASSERT_TRUE(streamFormatStatus == Status::ERROR_UNIMPLEMENTED);
70fa7767c5Sopenharmony_ci    auto mpegVersionStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_MPEG_VERSION, para);
71fa7767c5Sopenharmony_ci    ASSERT_TRUE(mpegVersionStatus == Status::ERROR_UNIMPLEMENTED);
72fa7767c5Sopenharmony_ci    auto sampleFormatStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_SAMPLE_FORMAT, para);
73fa7767c5Sopenharmony_ci    ASSERT_TRUE(sampleFormatStatus == Status::ERROR_UNIMPLEMENTED);
74fa7767c5Sopenharmony_ci    auto samplePerFrameStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_SAMPLE_PER_FRAME, para);
75fa7767c5Sopenharmony_ci    ASSERT_TRUE(samplePerFrameStatus == Status::ERROR_UNIMPLEMENTED);
76fa7767c5Sopenharmony_ci    auto profileStatus =  aacDemuxerPlugin->GetParameter(Tag::AUDIO_AAC_PROFILE, para);
77fa7767c5Sopenharmony_ci    ASSERT_TRUE(profileStatus == Status::ERROR_UNIMPLEMENTED);
78fa7767c5Sopenharmony_ci}
79fa7767c5Sopenharmony_ci
80fa7767c5Sopenharmony_ciHWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_set_parameter, TestSize.Level1)
81fa7767c5Sopenharmony_ci{
82fa7767c5Sopenharmony_ci    std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("get parameter");
83fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin != nullptr);
84fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::AUDIO_CHANNEL_LAYOUT, AudioChannelLayout::STEREO)
85fa7767c5Sopenharmony_ci        == Status::ERROR_UNIMPLEMENTED);
86fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::MEDIA_TYPE, MediaType::AUDIO) == Status::ERROR_UNIMPLEMENTED);
87fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::TRACK_ID, 0) == Status::ERROR_UNIMPLEMENTED);
88fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::MIME, MEDIA_MIME_AUDIO_AAC) == Status::ERROR_UNIMPLEMENTED);
89fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::AUDIO_SAMPLE_FORMAT, AudioSampleFormat::S16)
90fa7767c5Sopenharmony_ci        == Status::ERROR_UNIMPLEMENTED);
91fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::AUDIO_SAMPLE_PER_FRAME, 1024) // sample per frame: 1024
92fa7767c5Sopenharmony_ci        == Status::ERROR_UNIMPLEMENTED);
93fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::AUDIO_AAC_PROFILE, AudioAacProfile::LC)
94fa7767c5Sopenharmony_ci        == Status::ERROR_UNIMPLEMENTED);
95fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin->SetParameter(Tag::AUDIO_AAC_STREAM_FORMAT, AudioAacStreamFormat::MP4ADTS)
96fa7767c5Sopenharmony_ci        == Status::ERROR_UNIMPLEMENTED);
97fa7767c5Sopenharmony_ci}
98fa7767c5Sopenharmony_ci
99fa7767c5Sopenharmony_ciHWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_get_allocator, TestSize.Level1)
100fa7767c5Sopenharmony_ci{
101fa7767c5Sopenharmony_ci    std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("get allocator");
102fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin != nullptr);
103fa7767c5Sopenharmony_ci    auto allocator =  aacDemuxerPlugin->GetAllocator();
104fa7767c5Sopenharmony_ci    ASSERT_TRUE(allocator == nullptr);
105fa7767c5Sopenharmony_ci}
106fa7767c5Sopenharmony_ci
107fa7767c5Sopenharmony_ciHWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_set_callback, TestSize.Level1)
108fa7767c5Sopenharmony_ci{
109fa7767c5Sopenharmony_ci    std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("set callback");
110fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin != nullptr);
111fa7767c5Sopenharmony_ci    Callback* cb = new Callback();
112fa7767c5Sopenharmony_ci    auto status = aacDemuxerPlugin->SetCallback(cb);
113fa7767c5Sopenharmony_ci    ASSERT_TRUE(status == Status::OK);
114fa7767c5Sopenharmony_ci}
115fa7767c5Sopenharmony_ci
116fa7767c5Sopenharmony_ciHWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_get_track_count, TestSize.Level1)
117fa7767c5Sopenharmony_ci{
118fa7767c5Sopenharmony_ci    std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("get track count");
119fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin != nullptr);
120fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin->GetTrackCount() == 0);
121fa7767c5Sopenharmony_ci}
122fa7767c5Sopenharmony_ci
123fa7767c5Sopenharmony_ciHWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_select_track, TestSize.Level1)
124fa7767c5Sopenharmony_ci{
125fa7767c5Sopenharmony_ci    std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("select track");
126fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin != nullptr);
127fa7767c5Sopenharmony_ci    auto selectStatus = aacDemuxerPlugin->SelectTrack(0);
128fa7767c5Sopenharmony_ci    ASSERT_TRUE(selectStatus == Status::OK);
129fa7767c5Sopenharmony_ci}
130fa7767c5Sopenharmony_ci
131fa7767c5Sopenharmony_ciHWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_unselect_track, TestSize.Level1)
132fa7767c5Sopenharmony_ci{
133fa7767c5Sopenharmony_ci    std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("unselect track");
134fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin != nullptr);
135fa7767c5Sopenharmony_ci    auto unselectStatus = aacDemuxerPlugin->UnselectTrack(0);
136fa7767c5Sopenharmony_ci    ASSERT_TRUE(unselectStatus == Status::OK);
137fa7767c5Sopenharmony_ci}
138fa7767c5Sopenharmony_ci
139fa7767c5Sopenharmony_ciHWTEST(TestAacDemuxerPlugin, find_aac_demuxer_plugins_get_select_track, TestSize.Level1)
140fa7767c5Sopenharmony_ci{
141fa7767c5Sopenharmony_ci    std::shared_ptr<AACDemuxerPlugin> aacDemuxerPlugin = AacDemuxerPluginCreate("get select track");
142fa7767c5Sopenharmony_ci    ASSERT_TRUE(aacDemuxerPlugin != nullptr);
143fa7767c5Sopenharmony_ci    std::vector<int32_t> trackIds = new std::vector<int32_t>[1];
144fa7767c5Sopenharmony_ci    auto selectStatus = aacDemuxerPlugin->GetSelectedTracks(trackIds);
145fa7767c5Sopenharmony_ci    ASSERT_TRUE(selectStatus == Status::OK);
146fa7767c5Sopenharmony_ci}
147fa7767c5Sopenharmony_ci
148fa7767c5Sopenharmony_ci} // namespace Test
149fa7767c5Sopenharmony_ci} // namespace Media
150fa7767c5Sopenharmony_ci} // namespace OHOS