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