Add send frame rate statistics callback
BUG=2235 R=mflodman@webrtc.org, pbos@webrtc.org, stefan@webrtc.org Review URL: https://webrtc-codereview.appspot.com/4479005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5213 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@ -147,7 +147,6 @@ VCMJitterBuffer::VCMJitterBuffer(Clock* clock,
|
||||
incomplete_frames_(),
|
||||
last_decoded_state_(),
|
||||
first_packet_since_reset_(true),
|
||||
receive_statistics_(),
|
||||
incoming_frame_rate_(0),
|
||||
incoming_frame_count_(0),
|
||||
time_last_incoming_frame_count_(0),
|
||||
@ -172,7 +171,6 @@ VCMJitterBuffer::VCMJitterBuffer(Clock* clock,
|
||||
average_packets_per_frame_(0.0f),
|
||||
frame_counter_(0) {
|
||||
memset(frame_buffers_, 0, sizeof(frame_buffers_));
|
||||
memset(receive_statistics_, 0, sizeof(receive_statistics_));
|
||||
|
||||
for (int i = 0; i < kStartNumberOfFrames; i++) {
|
||||
frame_buffers_[i] = new VCMFrameBuffer();
|
||||
@ -218,8 +216,7 @@ void VCMJitterBuffer::CopyFrom(const VCMJitterBuffer& rhs) {
|
||||
assert(max_nack_list_size_ == rhs.max_nack_list_size_);
|
||||
assert(max_packet_age_to_nack_ == rhs.max_packet_age_to_nack_);
|
||||
assert(max_incomplete_time_ms_ == rhs.max_incomplete_time_ms_);
|
||||
memcpy(receive_statistics_, rhs.receive_statistics_,
|
||||
sizeof(receive_statistics_));
|
||||
receive_statistics_ = rhs.receive_statistics_;
|
||||
nack_seq_nums_.resize(rhs.nack_seq_nums_.size());
|
||||
missing_sequence_numbers_ = rhs.missing_sequence_numbers_;
|
||||
latest_received_sequence_number_ = rhs.latest_received_sequence_number_;
|
||||
@ -264,7 +261,7 @@ void VCMJitterBuffer::Start() {
|
||||
incoming_bit_count_ = 0;
|
||||
incoming_bit_rate_ = 0;
|
||||
time_last_incoming_frame_count_ = clock_->TimeInMilliseconds();
|
||||
memset(receive_statistics_, 0, sizeof(receive_statistics_));
|
||||
receive_statistics_.clear();
|
||||
|
||||
num_consecutive_old_frames_ = 0;
|
||||
num_consecutive_old_packets_ = 0;
|
||||
@ -336,13 +333,9 @@ void VCMJitterBuffer::Flush() {
|
||||
}
|
||||
|
||||
// Get received key and delta frames
|
||||
void VCMJitterBuffer::FrameStatistics(uint32_t* received_delta_frames,
|
||||
uint32_t* received_key_frames) const {
|
||||
assert(received_delta_frames);
|
||||
assert(received_key_frames);
|
||||
std::map<FrameType, uint32_t> VCMJitterBuffer::FrameStatistics() const {
|
||||
CriticalSectionScoped cs(crit_sect_);
|
||||
*received_delta_frames = receive_statistics_[1] + receive_statistics_[3];
|
||||
*received_key_frames = receive_statistics_[0] + receive_statistics_[2];
|
||||
return receive_statistics_;
|
||||
}
|
||||
|
||||
int VCMJitterBuffer::num_discarded_packets() const {
|
||||
@ -1206,26 +1199,7 @@ void VCMJitterBuffer::CountFrame(const VCMFrameBuffer& frame) {
|
||||
// Update receive statistics. We count all layers, thus when you use layers
|
||||
// adding all key and delta frames might differ from frame count.
|
||||
if (frame.IsSessionComplete()) {
|
||||
switch (frame.FrameType()) {
|
||||
case kVideoFrameKey: {
|
||||
receive_statistics_[0]++;
|
||||
break;
|
||||
}
|
||||
case kVideoFrameDelta: {
|
||||
receive_statistics_[1]++;
|
||||
break;
|
||||
}
|
||||
case kVideoFrameGolden: {
|
||||
receive_statistics_[2]++;
|
||||
break;
|
||||
}
|
||||
case kVideoFrameAltRef: {
|
||||
receive_statistics_[3]++;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
assert(false);
|
||||
}
|
||||
++receive_statistics_[frame.FrameType()];
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user