Propagate OnSendPacket signal to SendStatisticsProxy
With an intent to use it instead of the SendSideDelayUpdated Bug: None Change-Id: Ifa2b76af6882b36b2ccca13d8038aa4fbb1a67fb Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/317801 Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Åsa Persson <asapersson@webrtc.org> Cr-Commit-Position: refs/heads/main@{#40725}
This commit is contained in:
parent
a8e3111d8c
commit
6e237e7914
@ -44,7 +44,6 @@ class SendDelayStats : public SendPacketObserver {
|
||||
// Called when a packet is sent (leaving socket).
|
||||
bool OnSentPacket(int packet_id, Timestamp time);
|
||||
|
||||
protected:
|
||||
// From SendPacketObserver.
|
||||
// Called when a packet is sent to the transport.
|
||||
void OnSendPacket(uint16_t packet_id,
|
||||
|
||||
@ -1382,6 +1382,13 @@ void SendStatisticsProxy::FrameCountUpdated(const FrameCounts& frame_counts,
|
||||
stats->frame_counts = frame_counts;
|
||||
}
|
||||
|
||||
void SendStatisticsProxy::OnSendPacket(uint32_t ssrc, Timestamp capture_time) {
|
||||
[[maybe_unused]] TimeDelta send_delay = clock_->CurrentTime() - capture_time;
|
||||
// TODO(danilchap): Calculate average and max send_delay per ssrc over last
|
||||
// second, Use that measurement instead of whatever is received in
|
||||
// SendSideDelayUpdated below.
|
||||
}
|
||||
|
||||
void SendStatisticsProxy::SendSideDelayUpdated(int avg_delay_ms,
|
||||
int max_delay_ms,
|
||||
uint32_t ssrc) {
|
||||
|
||||
@ -103,6 +103,8 @@ class SendStatisticsProxy : public VideoStreamEncoderObserver,
|
||||
void OnEncodedFrameTimeMeasured(int encode_time_ms,
|
||||
int encode_usage_percent) override;
|
||||
|
||||
void OnSendPacket(uint32_t ssrc, Timestamp capture_time);
|
||||
|
||||
int GetInputFrameRate() const override;
|
||||
int GetSendFrameRate() const;
|
||||
|
||||
|
||||
@ -91,7 +91,7 @@ RtpSenderFrameEncryptionConfig CreateFrameEncryptionConfig(
|
||||
RtpSenderObservers CreateObservers(RtcpRttStats* call_stats,
|
||||
EncoderRtcpFeedback* encoder_feedback,
|
||||
SendStatisticsProxy* stats_proxy,
|
||||
SendDelayStats* send_delay_stats) {
|
||||
SendPacketObserver* send_packet_observer) {
|
||||
RtpSenderObservers observers;
|
||||
observers.rtcp_rtt_stats = call_stats;
|
||||
observers.intra_frame_callback = encoder_feedback;
|
||||
@ -102,7 +102,7 @@ RtpSenderObservers CreateObservers(RtcpRttStats* call_stats,
|
||||
observers.frame_count_observer = stats_proxy;
|
||||
observers.rtcp_type_observer = stats_proxy;
|
||||
observers.send_delay_observer = stats_proxy;
|
||||
observers.send_packet_observer = send_delay_stats;
|
||||
observers.send_packet_observer = send_packet_observer;
|
||||
return observers;
|
||||
}
|
||||
|
||||
@ -151,6 +151,7 @@ VideoSendStream::VideoSendStream(
|
||||
const FieldTrialsView& field_trials)
|
||||
: transport_(transport),
|
||||
stats_proxy_(clock, config, encoder_config.content_type, field_trials),
|
||||
send_packet_observer_(&stats_proxy_, send_delay_stats),
|
||||
config_(std::move(config)),
|
||||
content_type_(encoder_config.content_type),
|
||||
video_stream_encoder_(CreateVideoStreamEncoder(
|
||||
@ -169,20 +170,20 @@ VideoSendStream::VideoSendStream(
|
||||
[this](uint32_t ssrc, const std::vector<uint16_t>& seq_nums) {
|
||||
return rtp_video_sender_->GetSentRtpPacketInfos(ssrc, seq_nums);
|
||||
}),
|
||||
rtp_video_sender_(
|
||||
transport->CreateRtpVideoSender(suspended_ssrcs,
|
||||
suspended_payload_states,
|
||||
config_.rtp,
|
||||
config_.rtcp_report_interval_ms,
|
||||
config_.send_transport,
|
||||
CreateObservers(call_stats,
|
||||
&encoder_feedback_,
|
||||
&stats_proxy_,
|
||||
send_delay_stats),
|
||||
event_log,
|
||||
std::move(fec_controller),
|
||||
CreateFrameEncryptionConfig(&config_),
|
||||
config_.frame_transformer)),
|
||||
rtp_video_sender_(transport->CreateRtpVideoSender(
|
||||
suspended_ssrcs,
|
||||
suspended_payload_states,
|
||||
config_.rtp,
|
||||
config_.rtcp_report_interval_ms,
|
||||
config_.send_transport,
|
||||
CreateObservers(call_stats,
|
||||
&encoder_feedback_,
|
||||
&stats_proxy_,
|
||||
&send_packet_observer_),
|
||||
event_log,
|
||||
std::move(fec_controller),
|
||||
CreateFrameEncryptionConfig(&config_),
|
||||
config_.frame_transformer)),
|
||||
send_stream_(clock,
|
||||
&stats_proxy_,
|
||||
transport,
|
||||
|
||||
@ -99,6 +99,23 @@ class VideoSendStream : public webrtc::VideoSendStream {
|
||||
|
||||
private:
|
||||
friend class test::VideoSendStreamPeer;
|
||||
class OnSendPacketObserver : public SendPacketObserver {
|
||||
public:
|
||||
OnSendPacketObserver(SendStatisticsProxy* stats_proxy,
|
||||
SendDelayStats* send_delay_stats)
|
||||
: stats_proxy_(*stats_proxy), send_delay_stats_(*send_delay_stats) {}
|
||||
|
||||
void OnSendPacket(uint16_t packet_id,
|
||||
Timestamp capture_time,
|
||||
uint32_t ssrc) override {
|
||||
stats_proxy_.OnSendPacket(ssrc, capture_time);
|
||||
send_delay_stats_.OnSendPacket(packet_id, capture_time, ssrc);
|
||||
}
|
||||
|
||||
private:
|
||||
SendStatisticsProxy& stats_proxy_;
|
||||
SendDelayStats& send_delay_stats_;
|
||||
};
|
||||
|
||||
absl::optional<float> GetPacingFactorOverride() const;
|
||||
|
||||
@ -106,6 +123,7 @@ class VideoSendStream : public webrtc::VideoSendStream {
|
||||
RtpTransportControllerSendInterface* const transport_;
|
||||
|
||||
SendStatisticsProxy stats_proxy_;
|
||||
OnSendPacketObserver send_packet_observer_;
|
||||
const VideoSendStream::Config config_;
|
||||
const VideoEncoderConfig::ContentType content_type_;
|
||||
std::unique_ptr<VideoStreamEncoderInterface> video_stream_encoder_;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user