149812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org/* 249812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 349812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org * 449812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org * Use of this source code is governed by a BSD-style license 549812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org * that can be found in the LICENSE file in the root of the source 649812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org * tree. An additional intellectual property rights grant can be found 749812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org * in the file PATENTS. All contributing project authors may 849812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org * be found in the AUTHORS file in the root of the source tree. 949812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org */ 1049812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 1149812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org#ifndef WEBRTC_VIDEO_SEND_STATISTICS_PROXY_H_ 1249812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org#define WEBRTC_VIDEO_SEND_STATISTICS_PROXY_H_ 1349812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 1449812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org#include <string> 1549812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 16d54aa969545bd9c5ccc0077dd6645e742bf11418pbos@webrtc.org#include "webrtc/base/thread_annotations.h" 1749812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org#include "webrtc/common_types.h" 1849812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org#include "webrtc/video_engine/include/vie_codec.h" 1949812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org#include "webrtc/video_engine/include/vie_capture.h" 2049812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org#include "webrtc/video_send_stream.h" 2149812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org#include "webrtc/system_wrappers/interface/scoped_ptr.h" 2249812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 2349812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.orgnamespace webrtc { 2449812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 2549812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.orgclass CriticalSectionWrapper; 2649812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 2749812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.orgclass SendStatisticsProxy : public RtcpStatisticsCallback, 2849812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org public StreamDataCountersCallback, 2949812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org public BitrateStatisticsObserver, 3049812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org public FrameCountObserver, 3149812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org public ViEEncoderObserver, 3255b0f2e500fac8fc0932ea5b60359d268371f8c5stefan@webrtc.org public ViECaptureObserver, 3355b0f2e500fac8fc0932ea5b60359d268371f8c5stefan@webrtc.org public SendSideDelayObserver { 3449812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org public: 3555b0f2e500fac8fc0932ea5b60359d268371f8c5stefan@webrtc.org explicit SendStatisticsProxy(const VideoSendStream::Config& config); 3649812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org virtual ~SendStatisticsProxy(); 3749812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 3849812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org VideoSendStream::Stats GetStats() const; 3949812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 4049812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org protected: 4149812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org // From RtcpStatisticsCallback. 4249812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org virtual void StatisticsUpdated(const RtcpStatistics& statistics, 4349812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org uint32_t ssrc) OVERRIDE; 4449812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org // From StreamDataCountersCallback. 4549812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org virtual void DataCountersUpdated(const StreamDataCounters& counters, 4649812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org uint32_t ssrc) OVERRIDE; 4749812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 4849812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org // From BitrateStatisticsObserver. 4949812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org virtual void Notify(const BitrateStatistics& stats, uint32_t ssrc) OVERRIDE; 5049812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 5149812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org // From FrameCountObserver. 5249812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org virtual void FrameCountUpdated(FrameType frame_type, 5349812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org uint32_t frame_count, 5449812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org const unsigned int ssrc) OVERRIDE; 5549812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 5649812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org // From ViEEncoderObserver. 5749812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org virtual void OutgoingRate(const int video_channel, 5849812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org const unsigned int framerate, 5949812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org const unsigned int bitrate) OVERRIDE; 6049812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 619376c690a76a995b8d198107b3dbe68616392ccbhenrik.lundin@webrtc.org virtual void SuspendChange(int video_channel, bool is_suspended) OVERRIDE; 6249812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 6349812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org // From ViECaptureObserver. 6449812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org virtual void BrightnessAlarm(const int capture_id, 6549812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org const Brightness brightness) OVERRIDE {} 6649812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 6749812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org virtual void CapturedFrameRate(const int capture_id, 6849812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org const unsigned char frame_rate) OVERRIDE; 6949812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 7049812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org virtual void NoPictureAlarm(const int capture_id, 7149812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org const CaptureAlarm alarm) OVERRIDE {} 7249812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 7355b0f2e500fac8fc0932ea5b60359d268371f8c5stefan@webrtc.org virtual void SendSideDelayUpdated(int avg_delay_ms, 7455b0f2e500fac8fc0932ea5b60359d268371f8c5stefan@webrtc.org int max_delay_ms, 7555b0f2e500fac8fc0932ea5b60359d268371f8c5stefan@webrtc.org uint32_t ssrc) OVERRIDE; 7655b0f2e500fac8fc0932ea5b60359d268371f8c5stefan@webrtc.org 7749812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org private: 78c476e64d056c5e342bc5b23eecd493abf6d85d7fpbos@webrtc.org StreamStats* GetStatsEntry(uint32_t ssrc) EXCLUSIVE_LOCKS_REQUIRED(crit_); 7949812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 8049812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org const VideoSendStream::Config config_; 81c476e64d056c5e342bc5b23eecd493abf6d85d7fpbos@webrtc.org scoped_ptr<CriticalSectionWrapper> crit_; 82c476e64d056c5e342bc5b23eecd493abf6d85d7fpbos@webrtc.org VideoSendStream::Stats stats_ GUARDED_BY(crit_); 8349812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org}; 8449812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org 8549812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org} // namespace webrtc 8649812e6680a6392d53897b82b1b8dbfca6dd4faasprang@webrtc.org#endif // WEBRTC_VIDEO_SEND_STATISTICS_PROXY_H_ 87