Index: media/cast/sender/video_sender.cc |
diff --git a/media/cast/sender/video_sender.cc b/media/cast/sender/video_sender.cc |
index 498b71646dff29ba246bad4589f8a800b5050164..3b57befec51f5b073ce7439758b8514b682336f9 100644 |
--- a/media/cast/sender/video_sender.cc |
+++ b/media/cast/sender/video_sender.cc |
@@ -12,6 +12,7 @@ |
#include "base/bind.h" |
#include "base/logging.h" |
+#include "base/memory/ptr_util.h" |
#include "base/trace_event/trace_event.h" |
#include "media/cast/cast_defines.h" |
#include "media/cast/net/cast_transport_config.h" |
@@ -52,12 +53,12 @@ const int64_t kMinKeyFrameRequestOnPliIntervalMs = 500; |
void LogVideoCaptureTimestamps(CastEnvironment* cast_environment, |
const media::VideoFrame& video_frame, |
RtpTimeTicks rtp_timestamp) { |
- scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent()); |
+ std::unique_ptr<FrameEvent> capture_begin_event(new FrameEvent()); |
capture_begin_event->type = FRAME_CAPTURE_BEGIN; |
capture_begin_event->media_type = VIDEO_EVENT; |
capture_begin_event->rtp_timestamp = rtp_timestamp; |
- scoped_ptr<FrameEvent> capture_end_event(new FrameEvent()); |
+ std::unique_ptr<FrameEvent> capture_end_event(new FrameEvent()); |
capture_end_event->type = FRAME_CAPTURE_END; |
capture_end_event->media_type = VIDEO_EVENT; |
capture_end_event->rtp_timestamp = rtp_timestamp; |
@@ -81,6 +82,32 @@ void LogVideoCaptureTimestamps(CastEnvironment* cast_environment, |
cast_environment->logger()->DispatchFrameEvent(std::move(capture_end_event)); |
} |
+class VideoSenderRtcpClient : public RtpSenderRtcpClient { |
+ public: |
+ explicit VideoSenderRtcpClient(base::WeakPtr<VideoSender> video_sender) |
+ : video_sender_(video_sender) {} |
+ |
+ void OnCastMessageReceived(const RtcpCastMessage& cast_message) override { |
+ if (video_sender_) |
+ video_sender_->OnReceivedCastFeedback(cast_message); |
+ } |
+ |
+ void OnRttReceived(base::TimeDelta round_trip_time) override { |
+ if (video_sender_) |
+ video_sender_->OnMeasuredRoundTripTime(round_trip_time); |
+ } |
+ |
+ void OnPliReceived() override { |
+ if (video_sender_) |
+ video_sender_->OnReceivedPli(); |
+ } |
+ |
+ private: |
+ base::WeakPtr<VideoSender> video_sender_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(VideoSenderRtcpClient); |
+}; |
+ |
} // namespace |
// Note, we use a fixed bitrate value when external video encoder is used. |
@@ -140,11 +167,8 @@ VideoSender::VideoSender( |
transport_config.aes_iv_mask = video_config.aes_iv_mask; |
transport_sender->InitializeVideo( |
- transport_config, base::Bind(&VideoSender::OnReceivedCastFeedback, |
- weak_factory_.GetWeakPtr()), |
- base::Bind(&VideoSender::OnMeasuredRoundTripTime, |
- weak_factory_.GetWeakPtr()), |
- base::Bind(&VideoSender::OnReceivedPli, weak_factory_.GetWeakPtr())); |
+ transport_config, |
+ base::WrapUnique(new VideoSenderRtcpClient(weak_factory_.GetWeakPtr()))); |
} |
VideoSender::~VideoSender() { |
@@ -300,7 +324,7 @@ void VideoSender::InsertRawVideoFrame( |
} |
} |
-scoped_ptr<VideoFrameFactory> VideoSender::CreateVideoFrameFactory() { |
+std::unique_ptr<VideoFrameFactory> VideoSender::CreateVideoFrameFactory() { |
return video_encoder_ ? video_encoder_->CreateVideoFrameFactory() : nullptr; |
} |
@@ -321,7 +345,7 @@ base::TimeDelta VideoSender::GetInFlightMediaDuration() const { |
void VideoSender::OnEncodedVideoFrame( |
const scoped_refptr<media::VideoFrame>& video_frame, |
int encoder_bitrate, |
- scoped_ptr<SenderEncodedFrame> encoded_frame) { |
+ std::unique_ptr<SenderEncodedFrame> encoded_frame) { |
DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); |
frames_in_encoder_--; |