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:
Taylor Brandstetter
2016-06-24 14:06:35 -07:00
parent ba8d4337b7
commit bc5831999d
18 changed files with 661 additions and 912 deletions

View File

@ -14,10 +14,10 @@
#include <list>
#include <string>
#include "webrtc/api/mediastreaminterface.h"
#include "webrtc/api/notifier.h"
#include "webrtc/audio_sink.h"
#include "webrtc/base/criticalsection.h"
#include "webrtc/pc/channel.h"
namespace rtc {
struct Message;
@ -26,15 +26,13 @@ class Thread;
namespace webrtc {
class AudioProviderInterface;
// This class implements the audio source used by the remote audio track.
class RemoteAudioSource : public Notifier<AudioSourceInterface> {
public:
// Creates an instance of RemoteAudioSource.
static rtc::scoped_refptr<RemoteAudioSource> Create(
uint32_t ssrc,
AudioProviderInterface* provider);
cricket::VoiceChannel* channel);
// MediaSourceInterface implementation.
MediaSourceInterface::SourceState state() const override;
@ -49,7 +47,7 @@ class RemoteAudioSource : public Notifier<AudioSourceInterface> {
// Post construction initialize where we can do things like save a reference
// to ourselves (need to be fully constructed).
void Initialize(uint32_t ssrc, AudioProviderInterface* provider);
void Initialize(uint32_t ssrc, cricket::VoiceChannel* channel);
private:
typedef std::list<AudioObserver*> AudioObserverList;
@ -61,7 +59,7 @@ class RemoteAudioSource : public Notifier<AudioSourceInterface> {
class Sink;
void OnData(const AudioSinkInterface::Data& audio);
void OnAudioProviderGone();
void OnAudioChannelGone();
class MessageHandler;
void OnMessage(rtc::Message* msg);