NOTE: Using libwebrtc M77 branch.
Here the identified libwebrtc modules and classes must be exposed, with a brief description about their purpose and exposed API, and whether they are "public" classes or internally used ones by others.
RtcpBandwidthObserver
In modules/rtp_rtcp/include/rtp_rtcp_defines.h
:
In audio/channel_send.cc
:
In call/rtp_transport_controller_send.h
(NOTE: this is the one that RTCPReceiver
uses):
In call/rtp_transport_controller_send.h
:
TransportFeedbackObserver
In modules/rtp_rtcp/include/rtp_rtcp_defines.h
:
In audio/channel_send.cc
:
In call/rtp_transport_controller_send.h
:
NetworkControllerInterface
In modules/congestion_controller/goog_cc/goog_cc_network_control.h
:
(similar classes in pcc
and bbr
congestion control implementations).
PacketRouter
classIn src/modules/pacing/packet_router.h
.
It inherits from PacedSender::PacketSender
(in src/modules/pacing/paced_sender.h
).
In modules/rtp_rtcp/source/rtcp_receiver.hpp
:
In modules/rtp_rtcp/source/rtcp_receiver.cpp
:
In call/rtp_transport_controller_send.cc
(the implementation of RtcpBandwidthObserver
in use):
In modules/congestion_controller/goog_cc/goog_cc_network_control.cc
(the implementation of NetworkControllerInterface
) in use:
In modules/bitrate_controller/send_side_bandwidth_estimation.cc
:
In modules/rtp_rtcp/source/rtcp_receiver.h
:
In modules/rtp_rtcp/source/rtcp_receiver.cc
:
In call/rtp_transport_controller_send.cc
:
In congestion_controller/rtp/transport_feedback_adapter.cc
:
NOTE: Somewhere on RTP packet sent process it arrives here.
In modules/rtp_rtcp/source/rtp_sender.cc
:
In call/rtp_transport_controller_send.cc
:
In modules/congestion_controller/rtp/transport_feedback_adapter.cc
:
In call/rtp_video_sender.h
:
NOTE: So it does nothing.
Whenever the controller_
is feed via any of its public methods, which all return a NetworkControlUpdate
object , the following method is called:
Such method calls the private method:
Which:
observer_
is Call
:
The following method distributes the bandwdith within its bitrate_observers_configs_
and
TODO: Let's see.
It seems that the WebRtcTransport
class should have an instance of RtpTransportControllerSend
that is defined/declared at:
call/rtp_transport_controller_send.h
call/rtp_transport_controller_send.cc
We must also check the interface definition:
call/rtp_transport_controller_send_interface.h
The user of RtpTransportControllerSendInterface
are:
call/call.h
call/call.cc
video/video_send_stream.h
video/video_send_stream_impl.h
video/video_send_stream_impl.cc
audio/channel_send.h
audio/channel_send.cc
audio/audio_send_stream.h
audio/audio_send_stream.cc
call/rtp_video_sender.h
call/rtp_video_sender.cc
It seems that, instead of directly calling TimeUntilNextProcess()
in modules (most above classes inherit from Module
), libwebrtc uses modules/utility/source/process_thread_impl.cc
:
(Check also the ProcessThreadImpl::Process()
method).
PacketFeedback
struct:
modules/rtp_rtcp/include/rtp_rtcp_defines.h
.PacedPacketInfo
struct:
api/transport/network_types.h
.PacketResult
struct:
api/transport/network_types.h
.