Expose VideoCodingModule's decoder stats up the stack from VCMTiming to chrome://webrtc-internals.

R=juberti@google.com, mikhal@webrtc.org, stefan@webrtc.org, wu@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2429004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5027 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
fischman@webrtc.org
2013-10-23 23:59:45 +00:00
parent d371a29227
commit 37bb4974e7
13 changed files with 189 additions and 10 deletions

View File

@ -40,6 +40,7 @@ VideoReceiver::VideoReceiver(const int32_t id,
_dualDecodedFrameCallback(_dualTiming, clock_),
_frameTypeCallback(NULL),
_receiveStatsCallback(NULL),
_decoderTimingCallback(NULL),
_packetRequestCallback(NULL),
render_buffer_callback_(NULL),
_decoder(NULL),
@ -85,6 +86,30 @@ int32_t VideoReceiver::Process() {
_receiveStatsCallback->OnReceiveStatisticsUpdate(bitRate, frameRate);
}
if (_decoderTimingCallback != NULL) {
int decode_ms;
int max_decode_ms;
int current_delay_ms;
int target_delay_ms;
int jitter_buffer_ms;
int min_playout_delay_ms;
int render_delay_ms;
_timing.GetTimings(&decode_ms,
&max_decode_ms,
&current_delay_ms,
&target_delay_ms,
&jitter_buffer_ms,
&min_playout_delay_ms,
&render_delay_ms);
_decoderTimingCallback->OnDecoderTiming(decode_ms,
max_decode_ms,
current_delay_ms,
target_delay_ms,
jitter_buffer_ms,
min_playout_delay_ms,
render_delay_ms);
}
// Size of render buffer.
if (render_buffer_callback_) {
int buffer_size_ms = _receiver.RenderBufferSizeMs();
@ -255,6 +280,7 @@ int32_t VideoReceiver::InitializeReceiver() {
_receiverInited = true;
_frameTypeCallback = NULL;
_receiveStatsCallback = NULL;
_decoderTimingCallback = NULL;
_packetRequestCallback = NULL;
_keyRequestMode = kKeyOnError;
_scheduleKeyRequest = false;
@ -278,6 +304,13 @@ int32_t VideoReceiver::RegisterReceiveStatisticsCallback(
return VCM_OK;
}
int32_t VideoReceiver::RegisterDecoderTimingCallback(
VCMDecoderTimingCallback* decoderTiming) {
CriticalSectionScoped cs(process_crit_sect_.get());
_decoderTimingCallback = decoderTiming;
return VCM_OK;
}
// Register an externally defined decoder/render object.
// Can be a decoder only or a decoder coupled with a renderer.
int32_t VideoReceiver::RegisterExternalDecoder(VideoDecoder* externalDecoder,