1fa7767c5Sopenharmony_ci/*
2fa7767c5Sopenharmony_ci * Copyright (c) 2021-2021 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 "common/media_source.h"
17fa7767c5Sopenharmony_ci#include "common/log.h"
18fa7767c5Sopenharmony_ci#include <type_traits>
19fa7767c5Sopenharmony_ci
20fa7767c5Sopenharmony_cinamespace {
21fa7767c5Sopenharmony_ciconstexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, LOG_DOMAIN_FOUNDATION, "MediaSource" };
22fa7767c5Sopenharmony_ci}
23fa7767c5Sopenharmony_ci
24fa7767c5Sopenharmony_cinamespace OHOS {
25fa7767c5Sopenharmony_cinamespace Media {
26fa7767c5Sopenharmony_cinamespace Plugins {
27fa7767c5Sopenharmony_ciMediaSource::MediaSource(std::string uri)
28fa7767c5Sopenharmony_ci    : uri_(std::move(uri)), type_(SourceType::SOURCE_TYPE_URI)
29fa7767c5Sopenharmony_ci{
30fa7767c5Sopenharmony_ci}
31fa7767c5Sopenharmony_ci
32fa7767c5Sopenharmony_ci#ifndef OHOS_LITE
33fa7767c5Sopenharmony_ciMediaSource::MediaSource(std::shared_ptr<IMediaDataSource> dataSrc)
34fa7767c5Sopenharmony_ci    :type_(SourceType::SOURCE_TYPE_STREAM), dataSrc_(std::move(dataSrc))
35fa7767c5Sopenharmony_ci{
36fa7767c5Sopenharmony_ci    MEDIA_LOG_I("MediaSource ctor called dataSrc");
37fa7767c5Sopenharmony_ci}
38fa7767c5Sopenharmony_ci#endif
39fa7767c5Sopenharmony_ci
40fa7767c5Sopenharmony_ciMediaSource::MediaSource(std::string uri, std::map<std::string, std::string> header)
41fa7767c5Sopenharmony_ci    : uri_(std::move(uri)), header_(std::move(header))
42fa7767c5Sopenharmony_ci{
43fa7767c5Sopenharmony_ci    MEDIA_LOG_I("MediaSource ctor called header");
44fa7767c5Sopenharmony_ci}
45fa7767c5Sopenharmony_ci
46fa7767c5Sopenharmony_ciSourceType MediaSource::GetSourceType() const
47fa7767c5Sopenharmony_ci{
48fa7767c5Sopenharmony_ci    return type_;
49fa7767c5Sopenharmony_ci}
50fa7767c5Sopenharmony_ci
51fa7767c5Sopenharmony_ciconst std::string &MediaSource::GetSourceUri() const
52fa7767c5Sopenharmony_ci{
53fa7767c5Sopenharmony_ci    return uri_;
54fa7767c5Sopenharmony_ci}
55fa7767c5Sopenharmony_ci
56fa7767c5Sopenharmony_ciconst std::map<std::string, std::string> &MediaSource::GetSourceHeader() const
57fa7767c5Sopenharmony_ci{
58fa7767c5Sopenharmony_ci    return header_;
59fa7767c5Sopenharmony_ci}
60fa7767c5Sopenharmony_ci
61fa7767c5Sopenharmony_civoid MediaSource::SetPlayStrategy(const std::shared_ptr<PlayStrategy>& playStrategy)
62fa7767c5Sopenharmony_ci{
63fa7767c5Sopenharmony_ci    MEDIA_LOG_I("SetPlayStrategy width: %{public}d, height: %{public}d, duration: %{public}d, preferHDR: %{public}d",
64fa7767c5Sopenharmony_ci        playStrategy->width, playStrategy->height, playStrategy->duration, playStrategy->preferHDR);
65fa7767c5Sopenharmony_ci    playStrategy_ = playStrategy;
66fa7767c5Sopenharmony_ci}
67fa7767c5Sopenharmony_ci
68fa7767c5Sopenharmony_cistd::shared_ptr<PlayStrategy> MediaSource::GetPlayStrategy() const
69fa7767c5Sopenharmony_ci{
70fa7767c5Sopenharmony_ci    return playStrategy_;
71fa7767c5Sopenharmony_ci}
72fa7767c5Sopenharmony_ci
73fa7767c5Sopenharmony_civoid MediaSource::SetAppUid(int32_t appUid)
74fa7767c5Sopenharmony_ci{
75fa7767c5Sopenharmony_ci    appUid_ = appUid;
76fa7767c5Sopenharmony_ci}
77fa7767c5Sopenharmony_ci
78fa7767c5Sopenharmony_ciint32_t MediaSource::GetAppUid()
79fa7767c5Sopenharmony_ci{
80fa7767c5Sopenharmony_ci    return appUid_;
81fa7767c5Sopenharmony_ci}
82fa7767c5Sopenharmony_ci
83fa7767c5Sopenharmony_civoid MediaSource::SetMimeType(const std::string& mimeType)
84fa7767c5Sopenharmony_ci{
85fa7767c5Sopenharmony_ci    mimeType_ = mimeType;
86fa7767c5Sopenharmony_ci}
87fa7767c5Sopenharmony_ci
88fa7767c5Sopenharmony_cistd::string MediaSource::GetMimeType() const
89fa7767c5Sopenharmony_ci{
90fa7767c5Sopenharmony_ci    return mimeType_;
91fa7767c5Sopenharmony_ci}
92fa7767c5Sopenharmony_ci
93fa7767c5Sopenharmony_ci#ifndef OHOS_LITE
94fa7767c5Sopenharmony_cistd::shared_ptr<IMediaDataSource> MediaSource::GetDataSrc() const
95fa7767c5Sopenharmony_ci{
96fa7767c5Sopenharmony_ci    return dataSrc_;
97fa7767c5Sopenharmony_ci}
98fa7767c5Sopenharmony_ci#endif
99fa7767c5Sopenharmony_ci} // namespace Plugins
100fa7767c5Sopenharmony_ci} // namespace Media
101fa7767c5Sopenharmony_ci} // namespace OHOS
102fa7767c5Sopenharmony_ci
103