Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1078)

Unified Diff: webrtc/call/rtp_demuxer.h

Issue 2943693003: Create RtcpDemuxer (Closed)
Patch Set: Rebased Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/call/rtcp_packet_sink_interface.h ('k') | webrtc/call/rtp_demuxer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/call/rtp_demuxer.h
diff --git a/webrtc/call/rtp_demuxer.h b/webrtc/call/rtp_demuxer.h
index 6a4370d73163573246b61f2b1179c12af1e2a4f0..9ec93787dea7ab9f533483319eb2596973983006 100644
--- a/webrtc/call/rtp_demuxer.h
+++ b/webrtc/call/rtp_demuxer.h
@@ -14,9 +14,11 @@
#include <map>
#include <set>
#include <string>
+#include <vector>
namespace webrtc {
+class RsidResolutionObserver;
class RtpPacketReceived;
class RtpPacketSinkInterface;
@@ -41,9 +43,16 @@ class RtpDemuxer {
// Null pointer is not allowed.
bool RemoveSink(const RtpPacketSinkInterface* sink);
- // Returns true if at least one matching sink was found, otherwise false.
+ // Returns true if at least one matching sink was found.
bool OnRtpPacket(const RtpPacketReceived& packet);
+ // Allows other objects to be notified when RSID-SSRC associations are
+ // resolved by this object.
+ void RegisterRsidResolutionObserver(RsidResolutionObserver* observer);
+
+ // Undo a previous RegisterRsidResolutionObserver().
+ void DeregisterRsidResolutionObserver(const RsidResolutionObserver* observer);
+
private:
// Records a sink<->SSRC association. This can happen by explicit
// configuration by AddSink(ssrc...), or by inferred configuration from an
@@ -51,9 +60,14 @@ class RtpDemuxer {
// packet reception.
void RecordSsrcToSinkAssociation(uint32_t ssrc, RtpPacketSinkInterface* sink);
- // When a new packet arrives, we attempt to resolve extra associations,
- // such as which RSIDs are associated with which SSRCs.
- void FindSsrcAssociations(const RtpPacketReceived& packet);
+ // When a new packet arrives, we attempt to resolve extra associations.
+ void ResolveAssociations(const RtpPacketReceived& packet);
+
+ // Find the associations of RSID to SSRCs.
+ void ResolveRsidToSsrcAssociations(const RtpPacketReceived& packet);
+
+ // Notify observers of the resolution of an RSID to an SSRC.
+ void NotifyObserversOfRsidResolution(const std::string& rsid, uint32_t ssrc);
// This records the association SSRCs to sinks. Other associations, such
// as by RSID, also end up here once the RSID, etc., is resolved to an SSRC.
@@ -73,6 +87,10 @@ class RtpDemuxer {
// Avoid an attack that would create excessive logging.
bool logged_max_processed_ssrcs_exceeded_ = false;
+
+ // Observers which will be notified when an RSID association to an SSRC is
+ // resolved by this object.
+ std::vector<RsidResolutionObserver*> rsid_resolution_observers_;
};
} // namespace webrtc
« no previous file with comments | « webrtc/call/rtcp_packet_sink_interface.h ('k') | webrtc/call/rtp_demuxer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698