class ChannelStatsObserver;
class Config;
class CriticalSectionWrapper;
-class Encryption;
+class EncodedImageCallback;
class I420FrameCallback;
class PacedSender;
class ProcessThread;
-class RtcpRttObserver;
+class RtcpRttStats;
class RtpRtcp;
class ThreadWrapper;
class ViEDecoderObserver;
RtcpIntraFrameObserver* intra_frame_observer,
RtcpBandwidthObserver* bandwidth_observer,
RemoteBitrateEstimator* remote_bitrate_estimator,
- RtcpRttObserver* rtt_observer,
+ RtcpRttStats* rtt_stats,
PacedSender* paced_sender,
RtpRtcp* default_rtp_rtcp,
bool sender);
int SetSendAbsoluteSendTimeStatus(bool enable, int id);
int SetReceiveAbsoluteSendTimeStatus(bool enable, int id);
bool GetReceiveAbsoluteSendTimeStatus() const;
+ void SetRtcpXrRrtrStatus(bool enable);
void SetTransmissionSmoothingStatus(bool enable);
int32_t EnableTMMBR(const bool enable);
int32_t EnableKeyFrameRequestCallback(const bool enable);
uint32_t* jitter_samples,
int32_t* rtt_ms);
+ // Called on receipt of RTCP report block from remote side.
+ void RegisterSendChannelRtcpStatisticsCallback(
+ RtcpStatisticsCallback* callback);
+
// Returns our localy created statistics of the received RTP stream.
int32_t GetReceivedRtcpStatistics(uint16_t* fraction_lost,
uint32_t* cumulative_lost,
uint32_t* jitter_samples,
int32_t* rtt_ms);
+ // Called on generation of RTCP stats
+ void RegisterReceiveChannelRtcpStatisticsCallback(
+ RtcpStatisticsCallback* callback);
+
// Gets sent/received packets statistics.
int32_t GetRtpStatistics(uint32_t* bytes_sent,
uint32_t* packets_sent,
uint32_t* bytes_received,
uint32_t* packets_received) const;
+
+ // Called on update of RTP statistics.
+ void RegisterSendChannelRtpStatisticsCallback(
+ StreamDataCountersCallback* callback);
+
+ // Called on update of RTP statistics.
+ void RegisterReceiveChannelRtpStatisticsCallback(
+ StreamDataCountersCallback* callback);
+
+ void GetRtcpPacketTypeCounters(RtcpPacketTypeCounter* packets_sent,
+ RtcpPacketTypeCounter* packets_received) const;
+
void GetBandwidthUsage(uint32_t* total_bitrate_sent,
uint32_t* video_bitrate_sent,
uint32_t* fec_bitrate_sent,
uint32_t* nackBitrateSent) const;
- void GetEstimatedReceiveBandwidth(uint32_t* estimated_bandwidth) const;
+ bool GetSendSideDelay(int* avg_send_delay, int* max_send_delay) const;
+ void GetReceiveBandwidthEstimatorStats(
+ ReceiveBandwidthEstimatorStats* output) const;
+
+ // Called on any new send bitrate estimate.
+ void RegisterSendBitrateObserver(BitrateStatisticsObserver* observer);
int32_t StartRTPDump(const char file_nameUTF8[1024],
RTPDirections direction);
// Incoming packet from external transport.
int32_t ReceivedRTPPacket(const void* rtp_packet,
- const int32_t rtp_packet_length);
+ const int32_t rtp_packet_length,
+ const PacketTime& packet_time);
// Incoming packet from external transport.
int32_t ReceivedRTCPPacket(const void* rtcp_packet,
virtual int32_t ResendPackets(const uint16_t* sequence_numbers,
uint16_t length);
- int32_t RegisterExternalEncryption(Encryption* encryption);
- int32_t DeRegisterExternalEncryption();
-
int32_t SetVoiceChannel(int32_t ve_channel_id,
VoEVideoSync* ve_sync_interface);
int32_t VoiceChannel();
int32_t RegisterEffectFilter(ViEEffectFilter* effect_filter);
- // New-style callback, used by VideoReceiveStream.
+ // New-style callbacks, used by VideoReceiveStream.
void RegisterPreRenderCallback(I420FrameCallback* pre_render_callback);
+ void RegisterPreDecodeImageCallback(
+ EncodedImageCallback* pre_decode_callback);
+
+ void RegisterSendFrameCountObserver(FrameCountObserver* observer);
+
+ void ReceivedBWEPacket(int64_t arrival_time_ms, int payload_size,
+ const RTPHeader& header);
protected:
static bool ChannelDecodeThreadFunction(void* obj);
ViERTPObserver* rtp_observer_;
ViERTCPObserver* rtcp_observer_;
RtcpIntraFrameObserver* intra_frame_observer_;
- RtcpRttObserver* rtt_observer_;
+ RtcpRttStats* rtt_stats_;
PacedSender* paced_sender_;
scoped_ptr<RtcpBandwidthObserver> bandwidth_observer_;
int send_timestamp_extension_id_;
int absolute_send_time_extension_id_;
- bool receive_absolute_send_time_enabled_;
- bool using_packet_spread_;
Transport* external_transport_;
bool wait_for_key_frame_;
ThreadWrapper* decode_thread_;
- Encryption* external_encryption_;
-
ViEEffectFilter* effect_filter_;
bool color_enhancement_;
int nack_history_size_sender_;
int max_nack_reordering_threshold_;
I420FrameCallback* pre_render_callback_;
+ const Config& config_;
};
} // namespace webrtc