OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/renderer/media/cast_rtp_stream.h" | 5 #include "chrome/renderer/media/cast_rtp_stream.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_to_current_loop.h" |
8 #include "base/command_line.h" | 9 #include "base/command_line.h" |
9 #include "base/logging.h" | 10 #include "base/logging.h" |
10 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
11 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
12 #include "base/sys_info.h" | 13 #include "base/sys_info.h" |
13 #include "base/trace_event/trace_event.h" | 14 #include "base/trace_event/trace_event.h" |
14 #include "chrome/common/chrome_switches.h" | 15 #include "chrome/common/chrome_switches.h" |
15 #include "chrome/renderer/media/cast_session.h" | 16 #include "chrome/renderer/media/cast_session.h" |
16 #include "chrome/renderer/media/cast_udp_transport.h" | 17 #include "chrome/renderer/media/cast_udp_transport.h" |
17 #include "content/public/renderer/media_stream_audio_sink.h" | 18 #include "content/public/renderer/media_stream_audio_sink.h" |
18 #include "content/public/renderer/media_stream_video_sink.h" | 19 #include "content/public/renderer/media_stream_video_sink.h" |
19 #include "content/public/renderer/render_thread.h" | 20 #include "content/public/renderer/render_thread.h" |
20 #include "content/public/renderer/video_encode_accelerator.h" | 21 #include "content/public/renderer/video_encode_accelerator.h" |
21 #include "media/audio/audio_parameters.h" | 22 #include "media/audio/audio_parameters.h" |
22 #include "media/base/audio_bus.h" | 23 #include "media/base/audio_bus.h" |
23 #include "media/base/audio_converter.h" | 24 #include "media/base/audio_converter.h" |
24 #include "media/base/audio_fifo.h" | 25 #include "media/base/audio_fifo.h" |
25 #include "media/base/bind_to_current_loop.h" | |
26 #include "media/base/video_frame.h" | 26 #include "media/base/video_frame.h" |
27 #include "media/cast/cast_config.h" | 27 #include "media/cast/cast_config.h" |
28 #include "media/cast/cast_defines.h" | 28 #include "media/cast/cast_defines.h" |
29 #include "media/cast/cast_sender.h" | 29 #include "media/cast/cast_sender.h" |
30 #include "media/cast/net/cast_transport_config.h" | 30 #include "media/cast/net/cast_transport_config.h" |
31 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" | 31 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
32 #include "ui/gfx/geometry/size.h" | 32 #include "ui/gfx/geometry/size.h" |
33 | 33 |
34 using media::cast::AudioSenderConfig; | 34 using media::cast::AudioSenderConfig; |
35 using media::cast::VideoSenderConfig; | 35 using media::cast::VideoSenderConfig; |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 start_callback.Run(); | 518 start_callback.Run(); |
519 } else { | 519 } else { |
520 VideoSenderConfig config; | 520 VideoSenderConfig config; |
521 if (!ToVideoSenderConfig(params, &config)) { | 521 if (!ToVideoSenderConfig(params, &config)) { |
522 DidEncounterError("Invalid parameters for video."); | 522 DidEncounterError("Invalid parameters for video."); |
523 return; | 523 return; |
524 } | 524 } |
525 // See the code for audio above for explanation of callbacks. | 525 // See the code for audio above for explanation of callbacks. |
526 video_sink_.reset(new CastVideoSink( | 526 video_sink_.reset(new CastVideoSink( |
527 track_, | 527 track_, |
528 media::BindToCurrentLoop(base::Bind(&CastRtpStream::DidEncounterError, | 528 base::BindToCurrentLoop(base::Bind(&CastRtpStream::DidEncounterError, |
529 weak_factory_.GetWeakPtr())))); | 529 weak_factory_.GetWeakPtr())))); |
530 cast_session_->StartVideo( | 530 cast_session_->StartVideo( |
531 config, | 531 config, |
532 base::Bind(&CastVideoSink::AddToTrack, video_sink_->AsWeakPtr()), | 532 base::Bind(&CastVideoSink::AddToTrack, video_sink_->AsWeakPtr()), |
533 base::Bind(&CastRtpStream::DidEncounterError, | 533 base::Bind(&CastRtpStream::DidEncounterError, |
534 weak_factory_.GetWeakPtr())); | 534 weak_factory_.GetWeakPtr())); |
535 start_callback.Run(); | 535 start_callback.Run(); |
536 } | 536 } |
537 } | 537 } |
538 | 538 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
572 void CastRtpStream::DidEncounterError(const std::string& message) { | 572 void CastRtpStream::DidEncounterError(const std::string& message) { |
573 DVLOG(1) << "CastRtpStream::DidEncounterError(" << message << ") = " | 573 DVLOG(1) << "CastRtpStream::DidEncounterError(" << message << ") = " |
574 << (IsAudio() ? "audio" : "video"); | 574 << (IsAudio() ? "audio" : "video"); |
575 // Save the WeakPtr first because the error callback might delete this object. | 575 // Save the WeakPtr first because the error callback might delete this object. |
576 base::WeakPtr<CastRtpStream> ptr = weak_factory_.GetWeakPtr(); | 576 base::WeakPtr<CastRtpStream> ptr = weak_factory_.GetWeakPtr(); |
577 error_callback_.Run(message); | 577 error_callback_.Run(message); |
578 content::RenderThread::Get()->GetTaskRunner()->PostTask( | 578 content::RenderThread::Get()->GetTaskRunner()->PostTask( |
579 FROM_HERE, | 579 FROM_HERE, |
580 base::Bind(&CastRtpStream::Stop, ptr)); | 580 base::Bind(&CastRtpStream::Stop, ptr)); |
581 } | 581 } |
OLD | NEW |