| 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 |