/* * Copyright (c) 2021-2021 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "plugin/core/plugin_wrapper.h" #include namespace { std::set g_metaIdSet = { OHOS::Media::Plugin::Tag::MIME, OHOS::Media::Plugin::Tag::TRACK_ID, OHOS::Media::Plugin::Tag::MEDIA_CODEC_CONFIG, OHOS::Media::Plugin::Tag::MEDIA_BITRATE, OHOS::Media::Plugin::Tag::AUDIO_CHANNELS, OHOS::Media::Plugin::Tag::AUDIO_SAMPLE_RATE, OHOS::Media::Plugin::Tag::AUDIO_SAMPLE_FORMAT, OHOS::Media::Plugin::Tag::AUDIO_SAMPLE_PER_FRAME, OHOS::Media::Plugin::Tag::AUDIO_CHANNEL_LAYOUT, OHOS::Media::Plugin::Tag::MEDIA_TITLE, OHOS::Media::Plugin::Tag::MEDIA_ARTIST, OHOS::Media::Plugin::Tag::MEDIA_LYRICIST, OHOS::Media::Plugin::Tag::MEDIA_ALBUM, OHOS::Media::Plugin::Tag::MEDIA_ALBUM_ARTIST, OHOS::Media::Plugin::Tag::MEDIA_DATE, OHOS::Media::Plugin::Tag::MEDIA_COMMENT, OHOS::Media::Plugin::Tag::MEDIA_GENRE, OHOS::Media::Plugin::Tag::MEDIA_DESCRIPTION, OHOS::Media::Plugin::Tag::MEDIA_COPYRIGHT, OHOS::Media::Plugin::Tag::MEDIA_LANGUAGE, OHOS::Media::Plugin::Tag::MEDIA_LYRICS, OHOS::Media::Plugin::Tag::MEDIA_DURATION, OHOS::Media::Plugin::Tag::MEDIA_FILE_URI, OHOS::Media::Plugin::Tag::MEDIA_FILE_SIZE, OHOS::Media::Plugin::Tag::MEDIA_SEEKABLE, OHOS::Media::Plugin::Tag::MEDIA_TYPE, OHOS::Media::Plugin::Tag::AUDIO_MPEG_VERSION, OHOS::Media::Plugin::Tag::AUDIO_MPEG_LAYER, OHOS::Media::Plugin::Tag::AUDIO_AAC_PROFILE, OHOS::Media::Plugin::Tag::AUDIO_AAC_LEVEL, OHOS::Media::Plugin::Tag::AUDIO_AAC_STREAM_FORMAT, OHOS::Media::Plugin::Tag::VIDEO_WIDTH, OHOS::Media::Plugin::Tag::VIDEO_HEIGHT, OHOS::Media::Plugin::Tag::VIDEO_PIXEL_FORMAT, OHOS::Media::Plugin::Tag::VIDEO_BIT_STREAM_FORMAT, OHOS::Media::Plugin::Tag::VIDEO_FRAME_RATE, OHOS::Media::Plugin::Tag::VIDEO_H264_LEVEL, OHOS::Media::Plugin::Tag::VIDEO_H264_PROFILE, OHOS::Media::Plugin::Tag::BITS_PER_CODED_SAMPLE, }; } namespace OHOS { namespace Media { namespace Plugin { DataSourceWrapper::DataSourceWrapper(uint32_t pkgVersion, std::shared_ptr dataSource) : version(pkgVersion), helper(std::move(dataSource)) { } Status DataSourceWrapper::ReadAt(int64_t offset, std::shared_ptr& buffer, size_t expectedLen) { return helper->ReadAt(offset, buffer, expectedLen); } Status DataSourceWrapper::GetSize(uint64_t& size) { return helper->GetSize(size); } Seekable DataSourceWrapper::GetSeekable() { return helper->GetSeekable(); } DataSinkWrapper::DataSinkWrapper(uint32_t pkgVersion, std::shared_ptr dataSink) : version(pkgVersion), helper(std::move(dataSink)) {} Status DataSinkWrapper::WriteAt(int64_t offset, const std::shared_ptr& buffer) { return helper->WriteAt(offset, buffer); } void ConvertToMediaInfoHelper(uint32_t pkgVersion, const MediaInfo& src, MediaInfoHelper& dest) { (void)(pkgVersion); for (auto const& global : src.general) { dest.globalMeta.SetData(global.first, global.second); } size_t streamSize = src.tracks.size(); if (streamSize <= 0) { return; } dest.trackMeta.resize(streamSize); for (size_t i = 0; i < streamSize; ++i) { for (auto const& meta : src.tracks[i]) { if (g_metaIdSet.count(meta.first)) { dest.trackMeta[i].SetData(meta.first, meta.second); } } } } } // namespace Plugin } // namespace Media } // namespace OHOS