OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chromecast/browser/media/media_pipeline_host.h" | 5 #include "chromecast/browser/media/media_pipeline_host.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 media_pipeline_.reset(new MediaPipelineImpl()); | 62 media_pipeline_.reset(new MediaPipelineImpl()); |
63 task_runner_.reset(new TaskRunnerImpl()); | 63 task_runner_.reset(new TaskRunnerImpl()); |
64 MediaPipelineDeviceParams::MediaSyncType sync_type = | 64 MediaPipelineDeviceParams::MediaSyncType sync_type = |
65 (load_type == kLoadTypeMediaStream) | 65 (load_type == kLoadTypeMediaStream) |
66 ? MediaPipelineDeviceParams::kModeIgnorePts | 66 ? MediaPipelineDeviceParams::kModeIgnorePts |
67 : MediaPipelineDeviceParams::kModeSyncPts; | 67 : MediaPipelineDeviceParams::kModeSyncPts; |
68 MediaPipelineDeviceParams default_parameters(sync_type, task_runner_.get()); | 68 MediaPipelineDeviceParams default_parameters(sync_type, task_runner_.get()); |
69 | 69 |
70 media_pipeline_->SetClient(client); | 70 media_pipeline_->SetClient(client); |
71 media_pipeline_->Initialize(load_type, | 71 media_pipeline_->Initialize(load_type, |
72 create_backend_cb.Run(default_parameters).Pass()); | 72 create_backend_cb.Run(default_parameters)); |
73 } | 73 } |
74 | 74 |
75 void MediaPipelineHost::SetAvPipe( | 75 void MediaPipelineHost::SetAvPipe( |
76 TrackId track_id, | 76 TrackId track_id, |
77 scoped_ptr<base::SharedMemory> shared_mem, | 77 scoped_ptr<base::SharedMemory> shared_mem, |
78 const base::Closure& pipe_read_activity_cb, | 78 const base::Closure& pipe_read_activity_cb, |
79 const base::Closure& av_pipe_set_cb) { | 79 const base::Closure& av_pipe_set_cb) { |
80 DCHECK(thread_checker_.CalledOnValidThread()); | 80 DCHECK(thread_checker_.CalledOnValidThread()); |
81 CHECK(track_id == kAudioTrackId || track_id == kVideoTrackId); | 81 CHECK(track_id == kAudioTrackId || track_id == kVideoTrackId); |
82 | 82 |
83 size_t shared_mem_size = shared_mem->requested_size(); | 83 size_t shared_mem_size = shared_mem->requested_size(); |
84 scoped_ptr<MediaMemoryChunk> shared_memory_chunk( | 84 scoped_ptr<MediaMemoryChunk> shared_memory_chunk( |
85 new SharedMemoryChunk(shared_mem.Pass(), shared_mem_size)); | 85 new SharedMemoryChunk(std::move(shared_mem), shared_mem_size)); |
86 scoped_ptr<MediaMessageFifo> media_message_fifo( | 86 scoped_ptr<MediaMessageFifo> media_message_fifo( |
87 new MediaMessageFifo(shared_memory_chunk.Pass(), shared_mem_size)); | 87 new MediaMessageFifo(std::move(shared_memory_chunk), shared_mem_size)); |
88 media_message_fifo->ObserveReadActivity(pipe_read_activity_cb); | 88 media_message_fifo->ObserveReadActivity(pipe_read_activity_cb); |
89 scoped_ptr<CodedFrameProviderHost> frame_provider_host( | 89 scoped_ptr<CodedFrameProviderHost> frame_provider_host( |
90 new CodedFrameProviderHost(media_message_fifo.Pass())); | 90 new CodedFrameProviderHost(std::move(media_message_fifo))); |
91 | 91 |
92 MediaTrackMap::iterator it = media_track_map_.find(track_id); | 92 MediaTrackMap::iterator it = media_track_map_.find(track_id); |
93 MediaTrackHost* media_track_host; | 93 MediaTrackHost* media_track_host; |
94 if (it == media_track_map_.end()) { | 94 if (it == media_track_map_.end()) { |
95 media_track_host = new MediaTrackHost(); | 95 media_track_host = new MediaTrackHost(); |
96 media_track_map_.insert( | 96 media_track_map_.insert( |
97 std::pair<TrackId, MediaTrackHost*>(track_id, media_track_host)); | 97 std::pair<TrackId, MediaTrackHost*>(track_id, media_track_host)); |
98 } else { | 98 } else { |
99 media_track_host = it->second; | 99 media_track_host = it->second; |
100 } | 100 } |
101 media_track_host->pipe_write_cb = frame_provider_host->GetFifoWriteEventCb(); | 101 media_track_host->pipe_write_cb = frame_provider_host->GetFifoWriteEventCb(); |
102 | 102 |
103 if (track_id == kAudioTrackId) { | 103 if (track_id == kAudioTrackId) { |
104 audio_frame_provider_ = frame_provider_host.Pass(); | 104 audio_frame_provider_ = std::move(frame_provider_host); |
105 } else { | 105 } else { |
106 video_frame_provider_ = frame_provider_host.Pass(); | 106 video_frame_provider_ = std::move(frame_provider_host); |
107 } | 107 } |
108 av_pipe_set_cb.Run(); | 108 av_pipe_set_cb.Run(); |
109 } | 109 } |
110 | 110 |
111 void MediaPipelineHost::AudioInitialize( | 111 void MediaPipelineHost::AudioInitialize( |
112 TrackId track_id, | 112 TrackId track_id, |
113 const AvPipelineClient& client, | 113 const AvPipelineClient& client, |
114 const ::media::AudioDecoderConfig& config, | 114 const ::media::AudioDecoderConfig& config, |
115 const ::media::PipelineStatusCB& status_cb) { | 115 const ::media::PipelineStatusCB& status_cb) { |
116 DCHECK(thread_checker_.CalledOnValidThread()); | 116 DCHECK(thread_checker_.CalledOnValidThread()); |
117 CHECK(track_id == kAudioTrackId); | 117 CHECK(track_id == kAudioTrackId); |
118 media_pipeline_->InitializeAudio( | 118 media_pipeline_->InitializeAudio(config, client, |
119 config, client, audio_frame_provider_.Pass(), status_cb); | 119 std::move(audio_frame_provider_), status_cb); |
120 } | 120 } |
121 | 121 |
122 void MediaPipelineHost::VideoInitialize( | 122 void MediaPipelineHost::VideoInitialize( |
123 TrackId track_id, | 123 TrackId track_id, |
124 const VideoPipelineClient& client, | 124 const VideoPipelineClient& client, |
125 const std::vector< ::media::VideoDecoderConfig>& configs, | 125 const std::vector< ::media::VideoDecoderConfig>& configs, |
126 const ::media::PipelineStatusCB& status_cb) { | 126 const ::media::PipelineStatusCB& status_cb) { |
127 DCHECK(thread_checker_.CalledOnValidThread()); | 127 DCHECK(thread_checker_.CalledOnValidThread()); |
128 CHECK(track_id == kVideoTrackId); | 128 CHECK(track_id == kVideoTrackId); |
129 media_pipeline_->InitializeVideo( | 129 media_pipeline_->InitializeVideo(configs, client, |
130 configs, client, video_frame_provider_.Pass(), status_cb); | 130 std::move(video_frame_provider_), status_cb); |
131 } | 131 } |
132 | 132 |
133 void MediaPipelineHost::StartPlayingFrom(base::TimeDelta time) { | 133 void MediaPipelineHost::StartPlayingFrom(base::TimeDelta time) { |
134 DCHECK(thread_checker_.CalledOnValidThread()); | 134 DCHECK(thread_checker_.CalledOnValidThread()); |
135 media_pipeline_->StartPlayingFrom(time); | 135 media_pipeline_->StartPlayingFrom(time); |
136 } | 136 } |
137 | 137 |
138 void MediaPipelineHost::Flush(const ::media::PipelineStatusCB& status_cb) { | 138 void MediaPipelineHost::Flush(const ::media::PipelineStatusCB& status_cb) { |
139 DCHECK(thread_checker_.CalledOnValidThread()); | 139 DCHECK(thread_checker_.CalledOnValidThread()); |
140 media_pipeline_->Flush(status_cb); | 140 media_pipeline_->Flush(status_cb); |
(...skipping 26 matching lines...) Expand all Loading... |
167 if (it == media_track_map_.end()) | 167 if (it == media_track_map_.end()) |
168 return; | 168 return; |
169 | 169 |
170 MediaTrackHost* media_track_host = it->second; | 170 MediaTrackHost* media_track_host = it->second; |
171 if (!media_track_host->pipe_write_cb.is_null()) | 171 if (!media_track_host->pipe_write_cb.is_null()) |
172 media_track_host->pipe_write_cb.Run(); | 172 media_track_host->pipe_write_cb.Run(); |
173 } | 173 } |
174 | 174 |
175 } // namespace media | 175 } // namespace media |
176 } // namespace chromecast | 176 } // namespace chromecast |
OLD | NEW |