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