| Index: media/cast/transport/cast_transport_sender_impl.cc
|
| diff --git a/media/cast/transport/cast_transport_sender_impl.cc b/media/cast/transport/cast_transport_sender_impl.cc
|
| index fd7139993c6fc0638e9c17cb02d17643e7b398f6..6df02c8278dd4f5f9359ab7cf27de74907a351b2 100644
|
| --- a/media/cast/transport/cast_transport_sender_impl.cc
|
| +++ b/media/cast/transport/cast_transport_sender_impl.cc
|
| @@ -12,41 +12,63 @@ namespace media {
|
| namespace cast {
|
| namespace transport {
|
|
|
| -CastTransportSender* CastTransportSender::CreateCastTransportSender(
|
| +scoped_ptr<CastTransportSender> CastTransportSender::Create(
|
| base::TickClock* clock,
|
| - const CastTransportConfig& config,
|
| + const net::IPEndPoint& local_end_point,
|
| + const net::IPEndPoint& remote_end_point,
|
| const CastTransportStatusCallback& status_callback,
|
| const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) {
|
| - return new CastTransportSenderImpl(
|
| - clock, config, status_callback, transport_task_runner.get(), NULL);
|
| + return scoped_ptr<CastTransportSender>(
|
| + new CastTransportSenderImpl(clock,
|
| + local_end_point,
|
| + remote_end_point,
|
| + status_callback,
|
| + transport_task_runner.get(),
|
| + NULL));
|
| }
|
|
|
| CastTransportSenderImpl::CastTransportSenderImpl(
|
| base::TickClock* clock,
|
| - const CastTransportConfig& config,
|
| + const net::IPEndPoint& local_end_point,
|
| + const net::IPEndPoint& remote_end_point,
|
| const CastTransportStatusCallback& status_callback,
|
| const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
|
| PacketSender* external_transport)
|
| - : transport_(external_transport ? NULL
|
| + : clock_(clock),
|
| + status_callback_(status_callback),
|
| + transport_task_runner_(transport_task_runner),
|
| + transport_(external_transport ? NULL
|
| : new UdpTransport(transport_task_runner,
|
| - config.local_endpoint,
|
| - config.receiver_endpoint,
|
| + local_end_point,
|
| + remote_end_point,
|
| status_callback)),
|
| pacer_(clock,
|
| external_transport ? external_transport : transport_.get(),
|
| transport_task_runner),
|
| - rtcp_builder_(&pacer_),
|
| - audio_sender_(config, clock, transport_task_runner, &pacer_),
|
| - video_sender_(config, clock, transport_task_runner, &pacer_) {
|
| - if (audio_sender_.initialized() && video_sender_.initialized()) {
|
| - status_callback.Run(TRANSPORT_INITIALIZED);
|
| - } else {
|
| - status_callback.Run(TRANSPORT_UNINITIALIZED);
|
| - }
|
| -}
|
| + rtcp_builder_(&pacer_) {}
|
|
|
| CastTransportSenderImpl::~CastTransportSenderImpl() {}
|
|
|
| +void CastTransportSenderImpl::InitializeAudio(
|
| + const CastTransportAudioConfig& config) {
|
| + audio_sender_.reset(new TransportAudioSender(
|
| + config, clock_, transport_task_runner_, &pacer_));
|
| + if (audio_sender_->initialized())
|
| + status_callback_.Run(TRANSPORT_AUDIO_INITIALIZED);
|
| + else
|
| + status_callback_.Run(TRANSPORT_AUDIO_UNINITIALIZED);
|
| +}
|
| +
|
| +void CastTransportSenderImpl::InitializeVideo(
|
| + const CastTransportVideoConfig& config) {
|
| + video_sender_.reset(new TransportVideoSender(
|
| + config, clock_, transport_task_runner_, &pacer_));
|
| + if (video_sender_->initialized())
|
| + status_callback_.Run(TRANSPORT_VIDEO_INITIALIZED);
|
| + else
|
| + status_callback_.Run(TRANSPORT_VIDEO_UNINITIALIZED);
|
| +}
|
| +
|
| void CastTransportSenderImpl::SetPacketReceiver(
|
| const PacketReceiverCallback& packet_receiver) {
|
| transport_->StartReceiving(packet_receiver);
|
| @@ -55,13 +77,15 @@ void CastTransportSenderImpl::SetPacketReceiver(
|
| void CastTransportSenderImpl::InsertCodedAudioFrame(
|
| const EncodedAudioFrame* audio_frame,
|
| const base::TimeTicks& recorded_time) {
|
| - audio_sender_.InsertCodedAudioFrame(audio_frame, recorded_time);
|
| + DCHECK(audio_sender_) << "Audio sender uninitialized";
|
| + audio_sender_->InsertCodedAudioFrame(audio_frame, recorded_time);
|
| }
|
|
|
| void CastTransportSenderImpl::InsertCodedVideoFrame(
|
| const EncodedVideoFrame* video_frame,
|
| const base::TimeTicks& capture_time) {
|
| - video_sender_.InsertCodedVideoFrame(video_frame, capture_time);
|
| + DCHECK(video_sender_) << "Video sender uninitialized";
|
| + video_sender_->InsertCodedVideoFrame(video_frame, capture_time);
|
| }
|
|
|
| void CastTransportSenderImpl::SendRtcpFromRtpSender(
|
| @@ -79,20 +103,24 @@ void CastTransportSenderImpl::ResendPackets(
|
| bool is_audio,
|
| const MissingFramesAndPacketsMap& missing_packets) {
|
| if (is_audio) {
|
| - audio_sender_.ResendPackets(missing_packets);
|
| + DCHECK(audio_sender_) << "Audio sender uninitialized";
|
| + audio_sender_->ResendPackets(missing_packets);
|
| } else {
|
| - video_sender_.ResendPackets(missing_packets);
|
| + DCHECK(video_sender_) << "Video sender uninitialized";
|
| + video_sender_->ResendPackets(missing_packets);
|
| }
|
| }
|
|
|
| void CastTransportSenderImpl::SubscribeAudioRtpStatsCallback(
|
| const CastTransportRtpStatistics& callback) {
|
| - audio_sender_.SubscribeAudioRtpStatsCallback(callback);
|
| + DCHECK(audio_sender_) << "Audio sender uninitialized";
|
| + audio_sender_->SubscribeAudioRtpStatsCallback(callback);
|
| }
|
|
|
| void CastTransportSenderImpl::SubscribeVideoRtpStatsCallback(
|
| const CastTransportRtpStatistics& callback) {
|
| - video_sender_.SubscribeVideoRtpStatsCallback(callback);
|
| + DCHECK(video_sender_) << "Audio sender uninitialized";
|
| + video_sender_->SubscribeVideoRtpStatsCallback(callback);
|
| }
|
|
|
| } // namespace transport
|
|
|