summaryrefslogtreecommitdiffstats
path: root/media/cast/video_receiver
diff options
context:
space:
mode:
authormikhal@google.com <mikhal@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-20 03:24:01 +0000
committermikhal@google.com <mikhal@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-20 03:24:01 +0000
commit7df9716b1c460092a3caca82dddfe78739940aa9 (patch)
treea57328270dafca2b95affd5bc47e546f255ea66e /media/cast/video_receiver
parent7cc7a2e71c9b9dc1fe1d2cf67839ed8f00169bb1 (diff)
downloadchromium_src-7df9716b1c460092a3caca82dddfe78739940aa9.zip
chromium_src-7df9716b1c460092a3caca82dddfe78739940aa9.tar.gz
chromium_src-7df9716b1c460092a3caca82dddfe78739940aa9.tar.bz2
Incorporating logging into Cast:
1. Adding logging to CastEnvironment. 2. Actually triggering logging within the cast library. 3. Adding thread checks. 4. Removing trace calls outside of the logging class. Open issues: 1.Use of rtp_timestamp and frame id is not consistent. In addition, the AudioBus does not include these values. 2. There is a pending cl to switch frame_id to int. This cl does not include that. 3. There are a few more places to add logging. As this cl is already big enough, all of the above will come in a follow-up cl. Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=236034 Review URL: https://codereview.chromium.org/69603002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236118 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/cast/video_receiver')
-rw-r--r--media/cast/video_receiver/codecs/vp8/vp8_decoder.cc4
-rw-r--r--media/cast/video_receiver/video_decoder_unittest.cc3
-rw-r--r--media/cast/video_receiver/video_receiver.cc10
-rw-r--r--media/cast/video_receiver/video_receiver_unittest.cc3
4 files changed, 16 insertions, 4 deletions
diff --git a/media/cast/video_receiver/codecs/vp8/vp8_decoder.cc b/media/cast/video_receiver/codecs/vp8/vp8_decoder.cc
index d9ad3f1..84d4fa9 100644
--- a/media/cast/video_receiver/codecs/vp8/vp8_decoder.cc
+++ b/media/cast/video_receiver/codecs/vp8/vp8_decoder.cc
@@ -84,8 +84,10 @@ bool Vp8Decoder::Decode(const EncodedVideoFrame* encoded_frame,
memcpy(decoded_frame->v_plane.data, img->planes[VPX_PLANE_V],
decoded_frame->v_plane.length);
- // Return frame.
+ cast_environment_->Logging()->InsertFrameEvent(kVideoFrameDecoded,
+ kFrameIdUnknown, encoded_frame->frame_id);
VLOG(1) << "Decoded frame " << frame_id_int;
+
// Frame decoded - return frame to the user via callback.
cast_environment_->PostTask(CastEnvironment::MAIN, FROM_HERE,
base::Bind(frame_decoded_cb, base::Passed(&decoded_frame), render_time));
diff --git a/media/cast/video_receiver/video_decoder_unittest.cc b/media/cast/video_receiver/video_decoder_unittest.cc
index dbf95dd..f03b467 100644
--- a/media/cast/video_receiver/video_decoder_unittest.cc
+++ b/media/cast/video_receiver/video_decoder_unittest.cc
@@ -43,7 +43,8 @@ class VideoDecoderTest : public ::testing::Test {
VideoDecoderTest()
: task_runner_(new test::FakeTaskRunner(&testing_clock_)),
cast_environment_(new CastEnvironment(&testing_clock_, task_runner_,
- task_runner_, task_runner_, task_runner_, task_runner_)),
+ task_runner_, task_runner_, task_runner_, task_runner_,
+ GetDefaultCastLoggingConfig())),
test_callback_(new DecodeTestFrameCallback()) {
// Configure to vp8.
config_.codec = kVp8;
diff --git a/media/cast/video_receiver/video_receiver.cc b/media/cast/video_receiver/video_receiver.cc
index 2bcd5ce..c637d7a 100644
--- a/media/cast/video_receiver/video_receiver.cc
+++ b/media/cast/video_receiver/video_receiver.cc
@@ -127,7 +127,7 @@ VideoReceiver::VideoReceiver(scoped_refptr<CastEnvironment> cast_environment,
}
rtcp_.reset(
- new Rtcp(cast_environment_->Clock(),
+ new Rtcp(cast_environment_,
NULL,
packet_sender,
NULL,
@@ -249,6 +249,10 @@ bool VideoReceiver::PullEncodedVideoFrame(uint32 rtp_timestamp,
DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
base::TimeTicks now = cast_environment_->Clock()->NowTicks();
*render_time = GetRenderTime(now, rtp_timestamp);
+ base::TimeDelta diff = now - *render_time;
+
+ cast_environment_->Logging()->InsertFrameEvent(kVideoRenderDelay,
+ rtp_timestamp, diff.InMilliseconds());
// Minimum time before a frame is due to be rendered before we pull it for
// decode.
@@ -391,6 +395,10 @@ void VideoReceiver::IncomingParsedRtpPacket(const uint8* payload_data,
time_incoming_packet_updated_ = true;
}
+ cast_environment_->Logging()->InsertPacketEvent(kPacketReceived,
+ rtp_header.webrtc.header.timestamp, rtp_header.frame_id,
+ rtp_header.packet_id, rtp_header.max_packet_id, payload_size);
+
bool complete = framer_->InsertPacket(payload_data, payload_size, rtp_header);
if (!complete) return; // Video frame not complete; wait for more packets.
diff --git a/media/cast/video_receiver/video_receiver_unittest.cc b/media/cast/video_receiver/video_receiver_unittest.cc
index 29efa5d..b5dda546 100644
--- a/media/cast/video_receiver/video_receiver_unittest.cc
+++ b/media/cast/video_receiver/video_receiver_unittest.cc
@@ -73,7 +73,8 @@ class VideoReceiverTest : public ::testing::Test {
config_.use_external_decoder = false;
task_runner_ = new test::FakeTaskRunner(&testing_clock_);
cast_environment_ = new CastEnvironment(&testing_clock_, task_runner_,
- task_runner_, task_runner_, task_runner_, task_runner_);
+ task_runner_, task_runner_, task_runner_, task_runner_,
+ GetDefaultCastLoggingConfig());
receiver_.reset(new
PeerVideoReceiver(cast_environment_, config_, &mock_transport_));
testing_clock_.Advance(