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..a2a730578912395f45394738c97e20cbcb0737f7 100644 |
--- a/media/cast/sender/video_sender.cc |
+++ b/media/cast/sender/video_sender.cc |
@@ -52,12 +52,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; |
@@ -300,7 +300,7 @@ void VideoSender::InsertRawVideoFrame( |
} |
} |
-scoped_ptr<VideoFrameFactory> VideoSender::CreateVideoFrameFactory() { |
+std::unique_ptr<VideoFrameFactory> VideoSender::CreateVideoFrameFactory() { |
return video_encoder_ ? video_encoder_->CreateVideoFrameFactory() : nullptr; |
} |
@@ -321,12 +321,16 @@ 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_--; |
DCHECK_GE(frames_in_encoder_, 0); |
+ // Encoding was exited with errors. |
+ if (!encoded_frame) |
+ return; |
+ |
duration_in_encoder_ = |
last_enqueued_frame_reference_time_ - encoded_frame->reference_time; |