Use VoiceChannel/VideoChannel directly from RtpSender/RtpReceiver.
This eliminates the need for the extra layer of indirection provided by mediastreamprovider.h. It will thus make it easier to implement new functionality in RtpSender/RtpReceiver. It also brings us one step closer to the end goal of combining "senders" and "send streams". Currently the sender still needs to go through the BaseChannel and MediaChannel, using an SSRC as a key. R=pthatcher@webrtc.org Review URL: https://codereview.webrtc.org/2046173002 . Cr-Commit-Position: refs/heads/master@{#13285}
This commit is contained in:
@ -18,6 +18,7 @@
|
||||
|
||||
#include "webrtc/api/mediastreaminterface.h"
|
||||
#include "webrtc/api/proxy.h"
|
||||
#include "webrtc/api/rtpparameters.h"
|
||||
#include "webrtc/base/refcount.h"
|
||||
#include "webrtc/base/scoped_ref_ptr.h"
|
||||
#include "webrtc/pc/mediasession.h"
|
||||
@ -26,6 +27,12 @@ namespace webrtc {
|
||||
|
||||
class RtpReceiverObserverInterface {
|
||||
public:
|
||||
// Note: Currently if there are multiple RtpReceivers of the same media type,
|
||||
// they will all call OnFirstPacketReceived at once.
|
||||
//
|
||||
// In the future, it's likely that an RtpReceiver will only call
|
||||
// OnFirstPacketReceived when a packet is received specifically for its
|
||||
// SSRC/mid.
|
||||
virtual void OnFirstPacketReceived(cricket::MediaType media_type) = 0;
|
||||
|
||||
protected:
|
||||
@ -36,6 +43,9 @@ class RtpReceiverInterface : public rtc::RefCountInterface {
|
||||
public:
|
||||
virtual rtc::scoped_refptr<MediaStreamTrackInterface> track() const = 0;
|
||||
|
||||
// Audio or video receiver?
|
||||
virtual cricket::MediaType media_type() const = 0;
|
||||
|
||||
// Not to be confused with "mid", this is a field we can temporarily use
|
||||
// to uniquely identify a receiver until we implement Unified Plan SDP.
|
||||
virtual std::string id() const = 0;
|
||||
@ -46,10 +56,10 @@ class RtpReceiverInterface : public rtc::RefCountInterface {
|
||||
virtual RtpParameters GetParameters() const = 0;
|
||||
virtual bool SetParameters(const RtpParameters& parameters) = 0;
|
||||
|
||||
// Does not take ownership of observer.
|
||||
// Must call SetObserver(nullptr) before the observer is destroyed.
|
||||
virtual void SetObserver(RtpReceiverObserverInterface* observer) = 0;
|
||||
|
||||
virtual cricket::MediaType media_type() = 0;
|
||||
|
||||
protected:
|
||||
virtual ~RtpReceiverInterface() {}
|
||||
};
|
||||
@ -57,11 +67,11 @@ class RtpReceiverInterface : public rtc::RefCountInterface {
|
||||
// Define proxy for RtpReceiverInterface.
|
||||
BEGIN_SIGNALING_PROXY_MAP(RtpReceiver)
|
||||
PROXY_CONSTMETHOD0(rtc::scoped_refptr<MediaStreamTrackInterface>, track)
|
||||
PROXY_CONSTMETHOD0(cricket::MediaType, media_type)
|
||||
PROXY_CONSTMETHOD0(std::string, id)
|
||||
PROXY_CONSTMETHOD0(RtpParameters, GetParameters);
|
||||
PROXY_METHOD1(bool, SetParameters, const RtpParameters&)
|
||||
PROXY_METHOD1(void, SetObserver, RtpReceiverObserverInterface*);
|
||||
PROXY_METHOD0(cricket::MediaType, media_type);
|
||||
END_SIGNALING_PROXY()
|
||||
|
||||
} // namespace webrtc
|
||||
|
Reference in New Issue
Block a user