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

Side by Side Diff: media/remoting/courier_renderer.cc

Issue 2491043003: MediaResource refactoring to support multiple streams (Closed)
Patch Set: Added a TODO about DemuxerStream enabled/set_enabled methods 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
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "media/remoting/courier_renderer.h" 5 #include "media/remoting/courier_renderer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 FROM_HERE, base::Bind(init_cb, PIPELINE_ERROR_INVALID_STATE)); 117 FROM_HERE, base::Bind(init_cb, PIPELINE_ERROR_INVALID_STATE));
118 return; 118 return;
119 } 119 }
120 120
121 media_resource_ = media_resource; 121 media_resource_ = media_resource;
122 client_ = client; 122 client_ = client;
123 init_workflow_done_callback_ = init_cb; 123 init_workflow_done_callback_ = init_cb;
124 124
125 state_ = STATE_CREATE_PIPE; 125 state_ = STATE_CREATE_PIPE;
126 126
127 // TODO(servolk): Add support for multiple streams. For now use the first
128 // enabled audio and video streams to preserve the existing behavior.
129 ::media::DemuxerStream* audio_demuxer_stream =
130 media_resource_->GetFirstStream(DemuxerStream::AUDIO);
131 ::media::DemuxerStream* video_demuxer_stream =
132 media_resource_->GetFirstStream(DemuxerStream::VIDEO);
133
127 // Create audio mojo data pipe handles if audio is available. 134 // Create audio mojo data pipe handles if audio is available.
128 DemuxerStream* audio_demuxer_stream =
129 media_resource_->GetStream(DemuxerStream::AUDIO);
130 std::unique_ptr<mojo::DataPipe> audio_data_pipe; 135 std::unique_ptr<mojo::DataPipe> audio_data_pipe;
131 if (audio_demuxer_stream) { 136 if (audio_demuxer_stream) {
132 audio_data_pipe = base::WrapUnique(DemuxerStreamAdapter::CreateDataPipe()); 137 audio_data_pipe = base::WrapUnique(DemuxerStreamAdapter::CreateDataPipe());
133 } 138 }
134 139
135 // Create video mojo data pipe handles if video is available. 140 // Create video mojo data pipe handles if video is available.
136 DemuxerStream* video_demuxer_stream =
137 media_resource_->GetStream(DemuxerStream::VIDEO);
138 std::unique_ptr<mojo::DataPipe> video_data_pipe; 141 std::unique_ptr<mojo::DataPipe> video_data_pipe;
139 if (video_demuxer_stream) { 142 if (video_demuxer_stream) {
140 video_data_pipe = base::WrapUnique(DemuxerStreamAdapter::CreateDataPipe()); 143 video_data_pipe = base::WrapUnique(DemuxerStreamAdapter::CreateDataPipe());
141 } 144 }
142 145
143 // Establish remoting data pipe connection using main thread. 146 // Establish remoting data pipe connection using main thread.
144 const SharedSession::DataPipeStartCallback data_pipe_callback = 147 const SharedSession::DataPipeStartCallback data_pipe_callback =
145 base::Bind(&CourierRenderer::OnDataPipeCreatedOnMainThread, 148 base::Bind(&CourierRenderer::OnDataPipeCreatedOnMainThread,
146 media_task_runner_, weak_factory_.GetWeakPtr(), rpc_broker_); 149 media_task_runner_, weak_factory_.GetWeakPtr(), rpc_broker_);
147 main_task_runner_->PostTask( 150 main_task_runner_->PostTask(
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 int audio_rpc_handle, 320 int audio_rpc_handle,
318 int video_rpc_handle) { 321 int video_rpc_handle) {
319 VLOG(2) << __func__; 322 VLOG(2) << __func__;
320 DCHECK(media_task_runner_->BelongsToCurrentThread()); 323 DCHECK(media_task_runner_->BelongsToCurrentThread());
321 324
322 if (state_ == STATE_ERROR) 325 if (state_ == STATE_ERROR)
323 return; // Abort because something went wrong in the meantime. 326 return; // Abort because something went wrong in the meantime.
324 DCHECK_EQ(state_, STATE_CREATE_PIPE); 327 DCHECK_EQ(state_, STATE_CREATE_PIPE);
325 DCHECK(!init_workflow_done_callback_.is_null()); 328 DCHECK(!init_workflow_done_callback_.is_null());
326 329
330 // TODO(servolk): Add support for multiple streams. For now use the first
331 // enabled audio and video streams to preserve the existing behavior.
332 ::media::DemuxerStream* audio_demuxer_stream =
333 media_resource_->GetFirstStream(DemuxerStream::AUDIO);
334 ::media::DemuxerStream* video_demuxer_stream =
335 media_resource_->GetFirstStream(DemuxerStream::VIDEO);
336
327 // Create audio demuxer stream adapter if audio is available. 337 // Create audio demuxer stream adapter if audio is available.
328 DemuxerStream* audio_demuxer_stream =
329 media_resource_->GetStream(DemuxerStream::AUDIO);
330 if (audio_demuxer_stream && audio.is_valid() && audio_handle.is_valid() && 338 if (audio_demuxer_stream && audio.is_valid() && audio_handle.is_valid() &&
331 audio_rpc_handle != RpcBroker::kInvalidHandle) { 339 audio_rpc_handle != RpcBroker::kInvalidHandle) {
332 VLOG(2) << "Initialize audio"; 340 VLOG(2) << "Initialize audio";
333 audio_demuxer_stream_adapter_.reset(new DemuxerStreamAdapter( 341 audio_demuxer_stream_adapter_.reset(new DemuxerStreamAdapter(
334 main_task_runner_, media_task_runner_, "audio", audio_demuxer_stream, 342 main_task_runner_, media_task_runner_, "audio", audio_demuxer_stream,
335 rpc_broker_, audio_rpc_handle, std::move(audio), 343 rpc_broker_, audio_rpc_handle, std::move(audio),
336 std::move(audio_handle), 344 std::move(audio_handle),
337 base::Bind(&CourierRenderer::OnFatalError, base::Unretained(this)))); 345 base::Bind(&CourierRenderer::OnFatalError, base::Unretained(this))));
338 } 346 }
339 347
340 // Create video demuxer stream adapter if video is available. 348 // Create video demuxer stream adapter if video is available.
341 DemuxerStream* video_demuxer_stream =
342 media_resource_->GetStream(DemuxerStream::VIDEO);
343 if (video_demuxer_stream && video.is_valid() && video_handle.is_valid() && 349 if (video_demuxer_stream && video.is_valid() && video_handle.is_valid() &&
344 video_rpc_handle != RpcBroker::kInvalidHandle) { 350 video_rpc_handle != RpcBroker::kInvalidHandle) {
345 VLOG(2) << "Initialize video"; 351 VLOG(2) << "Initialize video";
346 video_demuxer_stream_adapter_.reset(new DemuxerStreamAdapter( 352 video_demuxer_stream_adapter_.reset(new DemuxerStreamAdapter(
347 main_task_runner_, media_task_runner_, "video", video_demuxer_stream, 353 main_task_runner_, media_task_runner_, "video", video_demuxer_stream,
348 rpc_broker_, video_rpc_handle, std::move(video), 354 rpc_broker_, video_rpc_handle, std::move(video),
349 std::move(video_handle), 355 std::move(video_handle),
350 base::Bind(&CourierRenderer::OnFatalError, base::Unretained(this)))); 356 base::Bind(&CourierRenderer::OnFatalError, base::Unretained(this))));
351 } 357 }
352 358
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 kBytesPerKilobit; 851 kBytesPerKilobit;
846 DCHECK_GE(kilobits_per_second, 0); 852 DCHECK_GE(kilobits_per_second, 0);
847 const base::CheckedNumeric<int> checked_kbps = kilobits_per_second; 853 const base::CheckedNumeric<int> checked_kbps = kilobits_per_second;
848 metrics_recorder_.OnVideoRateEstimate( 854 metrics_recorder_.OnVideoRateEstimate(
849 checked_kbps.ValueOrDefault(std::numeric_limits<int>::max())); 855 checked_kbps.ValueOrDefault(std::numeric_limits<int>::max()));
850 } 856 }
851 } 857 }
852 858
853 } // namespace remoting 859 } // namespace remoting
854 } // namespace media 860 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/services/mojo_demuxer_stream_adapter.cc ('k') | media/remoting/fake_media_resource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698