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 "UtDemuxerTest1.h"
17fa7767c5Sopenharmony_ci
18fa7767c5Sopenharmony_ciusing namespace OHOS::Media::Plugin;
19fa7767c5Sopenharmony_ci
20fa7767c5Sopenharmony_cistatic int Sniff(const std::string& name, std::shared_ptr<DataSource> dataSource)
21fa7767c5Sopenharmony_ci{
22fa7767c5Sopenharmony_ci    int bufferSize = 16;
23fa7767c5Sopenharmony_ci    auto bufData = Buffer::CreateDefaultBuffer(BufferMetaType::AUDIO, bufferSize);
24fa7767c5Sopenharmony_ci    if (dataSource->ReadAt(0, bufData, bufferSize) == Status::OK) {
25fa7767c5Sopenharmony_ci        const uint8_t* data = bufData->GetMemory()->GetReadOnlyData();
26fa7767c5Sopenharmony_ci        if (data[0] == 'U' && data[1] == 't') {
27fa7767c5Sopenharmony_ci            return 100; // 100
28fa7767c5Sopenharmony_ci        }
29fa7767c5Sopenharmony_ci    }
30fa7767c5Sopenharmony_ci    return 0;
31fa7767c5Sopenharmony_ci}
32fa7767c5Sopenharmony_ci
33fa7767c5Sopenharmony_cistatic Status RegisterPlugins(const std::shared_ptr<Register>& reg)
34fa7767c5Sopenharmony_ci{
35fa7767c5Sopenharmony_ci    DemuxerPluginDef regInfo;
36fa7767c5Sopenharmony_ci    regInfo.name = "UtDemuxerTest1";
37fa7767c5Sopenharmony_ci    regInfo.description = "unit test demuxer test1";
38fa7767c5Sopenharmony_ci    regInfo.rank = 100; // 100
39fa7767c5Sopenharmony_ci    regInfo.creator = [](const std::string& name) -> std::shared_ptr<DemuxerPlugin> {
40fa7767c5Sopenharmony_ci        return std::make_shared<UtDemuxerTest1>(name);
41fa7767c5Sopenharmony_ci    };
42fa7767c5Sopenharmony_ci    regInfo.sniffer = Sniff;
43fa7767c5Sopenharmony_ci    return reg->AddPlugin(regInfo);
44fa7767c5Sopenharmony_ci}
45fa7767c5Sopenharmony_ci
46fa7767c5Sopenharmony_ciPLUGIN_DEFINITION(UtDemuxerTest1, LicenseType::LGPL, RegisterPlugins, [] {});
47fa7767c5Sopenharmony_ci
48fa7767c5Sopenharmony_ciStatus UtDemuxerTest1::SetDataSource(const std::shared_ptr<DataSource> &source)
49fa7767c5Sopenharmony_ci{
50fa7767c5Sopenharmony_ci    return Status::OK;
51fa7767c5Sopenharmony_ci}
52fa7767c5Sopenharmony_ci
53fa7767c5Sopenharmony_ciStatus UtDemuxerTest1::GetMediaInfo(MediaInfo &mediaInfo)
54fa7767c5Sopenharmony_ci{
55fa7767c5Sopenharmony_ci    return Status::OK;
56fa7767c5Sopenharmony_ci}
57fa7767c5Sopenharmony_ci
58fa7767c5Sopenharmony_cisize_t UtDemuxerTest1::GetTrackCount()
59fa7767c5Sopenharmony_ci{
60fa7767c5Sopenharmony_ci    return 0;
61fa7767c5Sopenharmony_ci}
62fa7767c5Sopenharmony_ci
63fa7767c5Sopenharmony_ciStatus UtDemuxerTest1::SelectTrack(int32_t trackId)
64fa7767c5Sopenharmony_ci{
65fa7767c5Sopenharmony_ci    return Status::OK;
66fa7767c5Sopenharmony_ci}
67fa7767c5Sopenharmony_ci
68fa7767c5Sopenharmony_ciStatus UtDemuxerTest1::UnselectTrack(int32_t trackId)
69fa7767c5Sopenharmony_ci{
70fa7767c5Sopenharmony_ci    return Status::OK;
71fa7767c5Sopenharmony_ci}
72fa7767c5Sopenharmony_ci
73fa7767c5Sopenharmony_ciStatus UtDemuxerTest1::GetSelectedTracks(std::vector<int32_t> &trackIds)
74fa7767c5Sopenharmony_ci{
75fa7767c5Sopenharmony_ci    return Status::OK;
76fa7767c5Sopenharmony_ci}
77fa7767c5Sopenharmony_ci
78fa7767c5Sopenharmony_ciStatus UtDemuxerTest1::ReadFrame(Buffer &buffer, int32_t timeOutMs)
79fa7767c5Sopenharmony_ci{
80fa7767c5Sopenharmony_ci    return Status::OK;
81fa7767c5Sopenharmony_ci}
82fa7767c5Sopenharmony_ci
83fa7767c5Sopenharmony_ciStatus UtDemuxerTest1::SeekTo(int32_t trackId, int64_t seekTime, SeekMode mode, int64_t& realSeekTime)
84fa7767c5Sopenharmony_ci{
85fa7767c5Sopenharmony_ci    (void)trackId;
86fa7767c5Sopenharmony_ci    (void)seekTime;
87fa7767c5Sopenharmony_ci    (void)mode;
88fa7767c5Sopenharmony_ci    (void)realSeekTime;
89fa7767c5Sopenharmony_ci    return Status::OK;
90fa7767c5Sopenharmony_ci}
91fa7767c5Sopenharmony_ci
92fa7767c5Sopenharmony_cistd::shared_ptr<Allocator> UtDemuxerTest1::GetAllocator()
93fa7767c5Sopenharmony_ci{
94fa7767c5Sopenharmony_ci    return std::shared_ptr<Allocator>();
95fa7767c5Sopenharmony_ci}
96fa7767c5Sopenharmony_ci
97fa7767c5Sopenharmony_ciStatus UtDemuxerTest1::SetCallback(Callback* cb)
98fa7767c5Sopenharmony_ci{
99fa7767c5Sopenharmony_ci    return Status::OK;
100fa7767c5Sopenharmony_ci}
101fa7767c5Sopenharmony_ci
102