diff options
author | mikhal@google.com <mikhal@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-20 03:24:01 +0000 |
---|---|---|
committer | mikhal@google.com <mikhal@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-20 03:24:01 +0000 |
commit | 7df9716b1c460092a3caca82dddfe78739940aa9 (patch) | |
tree | a57328270dafca2b95affd5bc47e546f255ea66e /media/cast/video_receiver | |
parent | 7cc7a2e71c9b9dc1fe1d2cf67839ed8f00169bb1 (diff) | |
download | chromium_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')
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( |