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).
|
// Called when a packet is sent (leaving socket).
|
||||||
bool OnSentPacket(int packet_id, Timestamp time);
|
bool OnSentPacket(int packet_id, Timestamp time);
|
||||||
|
|
||||||
protected:
|
|
||||||
// From SendPacketObserver.
|
// From SendPacketObserver.
|
||||||
// Called when a packet is sent to the transport.
|
// Called when a packet is sent to the transport.
|
||||||
void OnSendPacket(uint16_t packet_id,
|
void OnSendPacket(uint16_t packet_id,
|
||||||
|
|||||||
@ -1382,6 +1382,13 @@ void SendStatisticsProxy::FrameCountUpdated(const FrameCounts& frame_counts,
|
|||||||
stats->frame_counts = 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,
|
void SendStatisticsProxy::SendSideDelayUpdated(int avg_delay_ms,
|
||||||
int max_delay_ms,
|
int max_delay_ms,
|
||||||
uint32_t ssrc) {
|
uint32_t ssrc) {
|
||||||
|
|||||||
@ -103,6 +103,8 @@ class SendStatisticsProxy : public VideoStreamEncoderObserver,
|
|||||||
void OnEncodedFrameTimeMeasured(int encode_time_ms,
|
void OnEncodedFrameTimeMeasured(int encode_time_ms,
|
||||||
int encode_usage_percent) override;
|
int encode_usage_percent) override;
|
||||||
|
|
||||||
|
void OnSendPacket(uint32_t ssrc, Timestamp capture_time);
|
||||||
|
|
||||||
int GetInputFrameRate() const override;
|
int GetInputFrameRate() const override;
|
||||||
int GetSendFrameRate() const;
|
int GetSendFrameRate() const;
|
||||||
|
|
||||||
|
|||||||
@ -91,7 +91,7 @@ RtpSenderFrameEncryptionConfig CreateFrameEncryptionConfig(
|
|||||||
RtpSenderObservers CreateObservers(RtcpRttStats* call_stats,
|
RtpSenderObservers CreateObservers(RtcpRttStats* call_stats,
|
||||||
EncoderRtcpFeedback* encoder_feedback,
|
EncoderRtcpFeedback* encoder_feedback,
|
||||||
SendStatisticsProxy* stats_proxy,
|
SendStatisticsProxy* stats_proxy,
|
||||||
SendDelayStats* send_delay_stats) {
|
SendPacketObserver* send_packet_observer) {
|
||||||
RtpSenderObservers observers;
|
RtpSenderObservers observers;
|
||||||
observers.rtcp_rtt_stats = call_stats;
|
observers.rtcp_rtt_stats = call_stats;
|
||||||
observers.intra_frame_callback = encoder_feedback;
|
observers.intra_frame_callback = encoder_feedback;
|
||||||
@ -102,7 +102,7 @@ RtpSenderObservers CreateObservers(RtcpRttStats* call_stats,
|
|||||||
observers.frame_count_observer = stats_proxy;
|
observers.frame_count_observer = stats_proxy;
|
||||||
observers.rtcp_type_observer = stats_proxy;
|
observers.rtcp_type_observer = stats_proxy;
|
||||||
observers.send_delay_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;
|
return observers;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,6 +151,7 @@ VideoSendStream::VideoSendStream(
|
|||||||
const FieldTrialsView& field_trials)
|
const FieldTrialsView& field_trials)
|
||||||
: transport_(transport),
|
: transport_(transport),
|
||||||
stats_proxy_(clock, config, encoder_config.content_type, field_trials),
|
stats_proxy_(clock, config, encoder_config.content_type, field_trials),
|
||||||
|
send_packet_observer_(&stats_proxy_, send_delay_stats),
|
||||||
config_(std::move(config)),
|
config_(std::move(config)),
|
||||||
content_type_(encoder_config.content_type),
|
content_type_(encoder_config.content_type),
|
||||||
video_stream_encoder_(CreateVideoStreamEncoder(
|
video_stream_encoder_(CreateVideoStreamEncoder(
|
||||||
@ -169,20 +170,20 @@ VideoSendStream::VideoSendStream(
|
|||||||
[this](uint32_t ssrc, const std::vector<uint16_t>& seq_nums) {
|
[this](uint32_t ssrc, const std::vector<uint16_t>& seq_nums) {
|
||||||
return rtp_video_sender_->GetSentRtpPacketInfos(ssrc, seq_nums);
|
return rtp_video_sender_->GetSentRtpPacketInfos(ssrc, seq_nums);
|
||||||
}),
|
}),
|
||||||
rtp_video_sender_(
|
rtp_video_sender_(transport->CreateRtpVideoSender(
|
||||||
transport->CreateRtpVideoSender(suspended_ssrcs,
|
suspended_ssrcs,
|
||||||
suspended_payload_states,
|
suspended_payload_states,
|
||||||
config_.rtp,
|
config_.rtp,
|
||||||
config_.rtcp_report_interval_ms,
|
config_.rtcp_report_interval_ms,
|
||||||
config_.send_transport,
|
config_.send_transport,
|
||||||
CreateObservers(call_stats,
|
CreateObservers(call_stats,
|
||||||
&encoder_feedback_,
|
&encoder_feedback_,
|
||||||
&stats_proxy_,
|
&stats_proxy_,
|
||||||
send_delay_stats),
|
&send_packet_observer_),
|
||||||
event_log,
|
event_log,
|
||||||
std::move(fec_controller),
|
std::move(fec_controller),
|
||||||
CreateFrameEncryptionConfig(&config_),
|
CreateFrameEncryptionConfig(&config_),
|
||||||
config_.frame_transformer)),
|
config_.frame_transformer)),
|
||||||
send_stream_(clock,
|
send_stream_(clock,
|
||||||
&stats_proxy_,
|
&stats_proxy_,
|
||||||
transport,
|
transport,
|
||||||
|
|||||||
@ -99,6 +99,23 @@ class VideoSendStream : public webrtc::VideoSendStream {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
friend class test::VideoSendStreamPeer;
|
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;
|
absl::optional<float> GetPacingFactorOverride() const;
|
||||||
|
|
||||||
@ -106,6 +123,7 @@ class VideoSendStream : public webrtc::VideoSendStream {
|
|||||||
RtpTransportControllerSendInterface* const transport_;
|
RtpTransportControllerSendInterface* const transport_;
|
||||||
|
|
||||||
SendStatisticsProxy stats_proxy_;
|
SendStatisticsProxy stats_proxy_;
|
||||||
|
OnSendPacketObserver send_packet_observer_;
|
||||||
const VideoSendStream::Config config_;
|
const VideoSendStream::Config config_;
|
||||||
const VideoEncoderConfig::ContentType content_type_;
|
const VideoEncoderConfig::ContentType content_type_;
|
||||||
std::unique_ptr<VideoStreamEncoderInterface> video_stream_encoder_;
|
std::unique_ptr<VideoStreamEncoderInterface> video_stream_encoder_;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user