| Index: media/mojo/clients/mojo_demuxer_factory.cc
|
| diff --git a/media/mojo/clients/mojo_demuxer_factory.cc b/media/mojo/clients/mojo_demuxer_factory.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fede1dc582b996c147571048647e5601ec5e8929
|
| --- /dev/null
|
| +++ b/media/mojo/clients/mojo_demuxer_factory.cc
|
| @@ -0,0 +1,70 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "media/mojo/clients/mojo_demuxer_factory.h"
|
| +
|
| +#include "media/mojo/clients/mojo_demuxer_source_buffer.h"
|
| +#include "services/service_manager/public/cpp/connect.h"
|
| +
|
| +namespace media {
|
| +
|
| +int MojoDemuxerFactory::next_demuxer_id_ = MediaResource::kInvalidRemoteId + 1;
|
| +
|
| +MojoDemuxerFactory::MojoDemuxerFactory(
|
| + service_manager::mojom::InterfaceProvider* interface_provider)
|
| + : interface_provider_(interface_provider) {
|
| + DCHECK(interface_provider_);
|
| +}
|
| +
|
| +MojoDemuxerFactory::~MojoDemuxerFactory() {}
|
| +
|
| +std::unique_ptr<Demuxer> MojoDemuxerFactory::CreateDemuxer(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
|
| + DataSource* data_source,
|
| + const Demuxer::EncryptedMediaInitDataCB& encrypted_media_init_data_cb,
|
| + const Demuxer::MediaTracksUpdatedCB& media_tracks_updated_cb) {
|
| + CHECK(main_task_runner->BelongsToCurrentThread());
|
| +
|
| + mojom::DemuxerPtr demuxer_ptr;
|
| + service_manager::GetInterface<mojom::Demuxer>(interface_provider_,
|
| + &demuxer_ptr);
|
| +
|
| + std::unique_ptr<Demuxer> demuxer(new MojoDemuxer(
|
| + next_demuxer_id_++, Demuxer::LoadType::LoadTypeURL, data_source,
|
| + media_task_runner, std::move(demuxer_ptr), base::Bind(&base::DoNothing),
|
| + encrypted_media_init_data_cb, media_tracks_updated_cb));
|
| +
|
| + return demuxer;
|
| +}
|
| +
|
| +std::unique_ptr<Demuxer> MojoDemuxerFactory::CreateDemuxerSourceBuffer(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
|
| + const base::Closure& open_cb,
|
| + const Demuxer::EncryptedMediaInitDataCB& encrypted_media_init_data_cb,
|
| + media::SourceBuffer** source_buffer_out) {
|
| + DCHECK(source_buffer_out);
|
| + mojom::DemuxerPtr demuxer_ptr;
|
| + service_manager::GetInterface<mojom::Demuxer>(interface_provider_,
|
| + &demuxer_ptr);
|
| +
|
| + mojom::SourceBufferPtr source_buffer_ptr;
|
| + service_manager::GetInterface<mojom::SourceBuffer>(interface_provider_,
|
| + &source_buffer_ptr);
|
| +
|
| + MojoDemuxerSourceBuffer* mojo_demuxer_source_buffer =
|
| + new MojoDemuxerSourceBuffer(next_demuxer_id_++, main_task_runner,
|
| + media_task_runner, std::move(demuxer_ptr),
|
| + std::move(source_buffer_ptr), open_cb,
|
| + encrypted_media_init_data_cb);
|
| +
|
| + std::unique_ptr<Demuxer> demuxer(mojo_demuxer_source_buffer);
|
| +
|
| + *source_buffer_out = mojo_demuxer_source_buffer;
|
| +
|
| + return demuxer;
|
| +}
|
| +
|
| +} // namespace media
|
|
|