| Index: media/cast/sender/video_sender.cc
|
| diff --git a/media/cast/sender/video_sender.cc b/media/cast/sender/video_sender.cc
|
| index 2389e9f3a13b76d4e56643694084697f7b727909..48e879029773c90d512ca36153f8bf9769ac901e 100644
|
| --- a/media/cast/sender/video_sender.cc
|
| +++ b/media/cast/sender/video_sender.cc
|
| @@ -30,6 +30,39 @@ const int kRoundTripsNeeded = 4;
|
| // time).
|
| const int kConstantTimeMs = 75;
|
|
|
| +// Extract capture begin/end timestamps from |video_frame|'s metadata and log
|
| +// it.
|
| +void LogVideoCaptureTimestamps(const CastEnvironment& cast_environment,
|
| + const media::VideoFrame& video_frame,
|
| + RtpTimestamp rtp_timestamp) {
|
| + base::TimeTicks capture_begin_time;
|
| + base::TimeTicks capture_end_time;
|
| + double capture_begin_time_internal = 0;
|
| + double capture_end_time_internal = 0;
|
| + if (video_frame.metadata().GetDouble("captureBeginTimeTicks",
|
| + &capture_begin_time_internal) &&
|
| + video_frame.metadata().GetDouble("captureEndTimeTicks",
|
| + &capture_end_time_internal)) {
|
| + // See comments in media/capture/content_video_capture_device_core.cc
|
| + // for why casting between double and int64 is reasonable.
|
| + capture_begin_time = base::TimeTicks::FromInternalValue(
|
| + static_cast<int64>(capture_begin_time_internal));
|
| + capture_end_time = base::TimeTicks::FromInternalValue(
|
| + static_cast<int64>(capture_end_time_internal));
|
| + } else {
|
| + // The frame capture timestamps were not provided by the video capture
|
| + // source. Simply log the events as happening right now.
|
| + capture_begin_time = capture_end_time =
|
| + cast_environment.Clock()->NowTicks();
|
| + }
|
| + cast_environment.Logging()->InsertFrameEvent(
|
| + capture_begin_time, FRAME_CAPTURE_BEGIN, VIDEO_EVENT, rtp_timestamp,
|
| + kFrameIdUnknown);
|
| + cast_environment.Logging()->InsertFrameEvent(
|
| + capture_end_time, FRAME_CAPTURE_END, VIDEO_EVENT, rtp_timestamp,
|
| + kFrameIdUnknown);
|
| +}
|
| +
|
| } // namespace
|
|
|
| // Note, we use a fixed bitrate value when external video encoder is used.
|
| @@ -108,15 +141,7 @@ void VideoSender::InsertRawVideoFrame(
|
|
|
| const RtpTimestamp rtp_timestamp =
|
| TimeDeltaToRtpDelta(video_frame->timestamp(), kVideoFrequency);
|
| - const base::TimeTicks insertion_time = cast_environment_->Clock()->NowTicks();
|
| - // TODO(miu): Plumb in capture timestamps. For now, make it look like capture
|
| - // took zero time by setting the BEGIN and END event to the same timestamp.
|
| - cast_environment_->Logging()->InsertFrameEvent(
|
| - insertion_time, FRAME_CAPTURE_BEGIN, VIDEO_EVENT, rtp_timestamp,
|
| - kFrameIdUnknown);
|
| - cast_environment_->Logging()->InsertFrameEvent(
|
| - insertion_time, FRAME_CAPTURE_END, VIDEO_EVENT, rtp_timestamp,
|
| - kFrameIdUnknown);
|
| + LogVideoCaptureTimestamps(*cast_environment_, *video_frame, rtp_timestamp);
|
|
|
| // Used by chrome/browser/extension/api/cast_streaming/performance_test.cc
|
| TRACE_EVENT_INSTANT2(
|
|
|