Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(651)

Side by Side Diff: media/mojo/clients/mojo_demuxer_factory.cc

Issue 2643743002: Mojify demuxers and allow running {Chunk/FFmpeg}Demuxer in a Utility Process (Closed)
Patch Set: Rebase and make sure to unbind mojom::DemuxerPtr on the bound thread during termination Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "media/mojo/clients/mojo_demuxer_factory.h"
6
7 #include "media/mojo/clients/mojo_demuxer_source_buffer.h"
8 #include "services/service_manager/public/cpp/connect.h"
9
10 namespace media {
11
12 int MojoDemuxerFactory::next_demuxer_id_ = MediaResource::kInvalidRemoteId + 1;
13
14 MojoDemuxerFactory::MojoDemuxerFactory(
15 service_manager::mojom::InterfaceProvider* interface_provider)
16 : interface_provider_(interface_provider) {
17 DCHECK(interface_provider_);
18 }
19
20 MojoDemuxerFactory::~MojoDemuxerFactory() {}
21
22 std::unique_ptr<Demuxer> MojoDemuxerFactory::CreateDemuxer(
23 const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner,
24 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
25 DataSource* data_source,
26 const Demuxer::EncryptedMediaInitDataCB& encrypted_media_init_data_cb,
27 const Demuxer::MediaTracksUpdatedCB& media_tracks_updated_cb) {
28 CHECK(main_task_runner->BelongsToCurrentThread());
29
30 mojom::DemuxerPtr demuxer_ptr;
31 service_manager::GetInterface<mojom::Demuxer>(interface_provider_,
32 &demuxer_ptr);
33
34 std::unique_ptr<Demuxer> demuxer(new MojoDemuxer(
35 next_demuxer_id_++, Demuxer::LoadType::LoadTypeURL, data_source,
36 media_task_runner, std::move(demuxer_ptr), base::Bind(&base::DoNothing),
37 encrypted_media_init_data_cb, media_tracks_updated_cb));
38
39 return demuxer;
40 }
41
42 std::unique_ptr<Demuxer> MojoDemuxerFactory::CreateDemuxerSourceBuffer(
43 const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner,
44 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
45 const base::Closure& open_cb,
46 const Demuxer::EncryptedMediaInitDataCB& encrypted_media_init_data_cb,
47 media::SourceBuffer** source_buffer_out) {
48 DCHECK(source_buffer_out);
49 mojom::DemuxerPtr demuxer_ptr;
50 service_manager::GetInterface<mojom::Demuxer>(interface_provider_,
51 &demuxer_ptr);
52
53 mojom::SourceBufferPtr source_buffer_ptr;
54 service_manager::GetInterface<mojom::SourceBuffer>(interface_provider_,
55 &source_buffer_ptr);
56
57 MojoDemuxerSourceBuffer* mojo_demuxer_source_buffer =
58 new MojoDemuxerSourceBuffer(next_demuxer_id_++, main_task_runner,
59 media_task_runner, std::move(demuxer_ptr),
60 std::move(source_buffer_ptr), open_cb,
61 encrypted_media_init_data_cb);
62
63 std::unique_ptr<Demuxer> demuxer(mojo_demuxer_source_buffer);
64
65 *source_buffer_out = mojo_demuxer_source_buffer;
66
67 return demuxer;
68 }
69
70 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/clients/mojo_demuxer_factory.h ('k') | media/mojo/clients/mojo_demuxer_source_buffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698