Index: talk/app/webrtc/mediastreamhandler.h |
diff --git a/talk/app/webrtc/mediastreamhandler.h b/talk/app/webrtc/mediastreamhandler.h |
deleted file mode 100644 |
index 1782f26e73f5ec5b16390af76fc1cb58d256762c..0000000000000000000000000000000000000000 |
--- a/talk/app/webrtc/mediastreamhandler.h |
+++ /dev/null |
@@ -1,293 +0,0 @@ |
-/* |
- * libjingle |
- * Copyright 2012 Google Inc. |
- * |
- * Redistribution and use in source and binary forms, with or without |
- * modification, are permitted provided that the following conditions are met: |
- * |
- * 1. Redistributions of source code must retain the above copyright notice, |
- * this list of conditions and the following disclaimer. |
- * 2. Redistributions in binary form must reproduce the above copyright notice, |
- * this list of conditions and the following disclaimer in the documentation |
- * and/or other materials provided with the distribution. |
- * 3. The name of the author may not be used to endorse or promote products |
- * derived from this software without specific prior written permission. |
- * |
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED |
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO |
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- */ |
- |
-// This file contains classes for listening on changes on MediaStreams and |
-// MediaTracks that are connected to a certain PeerConnection. |
-// Example: If a user sets a rendererer on a remote video track the renderer is |
-// connected to the appropriate remote video stream. |
- |
-#ifndef TALK_APP_WEBRTC_MEDIASTREAMHANDLER_H_ |
-#define TALK_APP_WEBRTC_MEDIASTREAMHANDLER_H_ |
- |
-#include <list> |
-#include <vector> |
- |
-#include "talk/app/webrtc/mediastreaminterface.h" |
-#include "talk/app/webrtc/mediastreamprovider.h" |
-#include "talk/app/webrtc/peerconnectioninterface.h" |
-#include "talk/media/base/audiorenderer.h" |
-#include "webrtc/base/thread.h" |
- |
-namespace webrtc { |
- |
-// TrackHandler listen to events on a MediaStreamTrackInterface that is |
-// connected to a certain PeerConnection. |
-class TrackHandler : public ObserverInterface { |
- public: |
- TrackHandler(MediaStreamTrackInterface* track, uint32 ssrc); |
- virtual ~TrackHandler(); |
- virtual void OnChanged(); |
- // Stop using |track_| on this PeerConnection. |
- virtual void Stop() = 0; |
- |
- MediaStreamTrackInterface* track() { return track_; } |
- uint32 ssrc() const { return ssrc_; } |
- |
- protected: |
- virtual void OnStateChanged() = 0; |
- virtual void OnEnabledChanged() = 0; |
- |
- private: |
- rtc::scoped_refptr<MediaStreamTrackInterface> track_; |
- uint32 ssrc_; |
- MediaStreamTrackInterface::TrackState state_; |
- bool enabled_; |
-}; |
- |
-// LocalAudioSinkAdapter receives data callback as a sink to the local |
-// AudioTrack, and passes the data to the sink of AudioRenderer. |
-class LocalAudioSinkAdapter : public AudioTrackSinkInterface, |
- public cricket::AudioRenderer { |
- public: |
- LocalAudioSinkAdapter(); |
- virtual ~LocalAudioSinkAdapter(); |
- |
- private: |
- // AudioSinkInterface implementation. |
- void OnData(const void* audio_data, |
- int bits_per_sample, |
- int sample_rate, |
- int number_of_channels, |
- size_t number_of_frames) override; |
- |
- // cricket::AudioRenderer implementation. |
- void SetSink(cricket::AudioRenderer::Sink* sink) override; |
- |
- cricket::AudioRenderer::Sink* sink_; |
- // Critical section protecting |sink_|. |
- rtc::CriticalSection lock_; |
-}; |
- |
-// LocalAudioTrackHandler listen to events on a local AudioTrack instance |
-// connected to a PeerConnection and orders the |provider| to executes the |
-// requested change. |
-class LocalAudioTrackHandler : public TrackHandler { |
- public: |
- LocalAudioTrackHandler(AudioTrackInterface* track, |
- uint32 ssrc, |
- AudioProviderInterface* provider); |
- virtual ~LocalAudioTrackHandler(); |
- |
- void Stop() override; |
- |
- protected: |
- void OnStateChanged() override; |
- void OnEnabledChanged() override; |
- |
- private: |
- AudioTrackInterface* audio_track_; |
- AudioProviderInterface* provider_; |
- |
- // Used to pass the data callback from the |audio_track_| to the other |
- // end of cricket::AudioRenderer. |
- rtc::scoped_ptr<LocalAudioSinkAdapter> sink_adapter_; |
-}; |
- |
-// RemoteAudioTrackHandler listen to events on a remote AudioTrack instance |
-// connected to a PeerConnection and orders the |provider| to executes the |
-// requested change. |
-class RemoteAudioTrackHandler : public AudioSourceInterface::AudioObserver, |
- public TrackHandler { |
- public: |
- RemoteAudioTrackHandler(AudioTrackInterface* track, |
- uint32 ssrc, |
- AudioProviderInterface* provider); |
- virtual ~RemoteAudioTrackHandler(); |
- void Stop() override; |
- |
- protected: |
- void OnStateChanged() override; |
- void OnEnabledChanged() override; |
- |
- private: |
- // AudioSourceInterface::AudioObserver implementation. |
- void OnSetVolume(double volume) override; |
- |
- AudioTrackInterface* audio_track_; |
- AudioProviderInterface* provider_; |
-}; |
- |
-// LocalVideoTrackHandler listen to events on a local VideoTrack instance |
-// connected to a PeerConnection and orders the |provider| to executes the |
-// requested change. |
-class LocalVideoTrackHandler : public TrackHandler { |
- public: |
- LocalVideoTrackHandler(VideoTrackInterface* track, |
- uint32 ssrc, |
- VideoProviderInterface* provider); |
- virtual ~LocalVideoTrackHandler(); |
- void Stop() override; |
- |
- protected: |
- void OnStateChanged() override; |
- void OnEnabledChanged() override; |
- |
- private: |
- VideoTrackInterface* local_video_track_; |
- VideoProviderInterface* provider_; |
-}; |
- |
-// RemoteVideoTrackHandler listen to events on a remote VideoTrack instance |
-// connected to a PeerConnection and orders the |provider| to execute |
-// requested changes. |
-class RemoteVideoTrackHandler : public TrackHandler { |
- public: |
- RemoteVideoTrackHandler(VideoTrackInterface* track, |
- uint32 ssrc, |
- VideoProviderInterface* provider); |
- virtual ~RemoteVideoTrackHandler(); |
- void Stop() override; |
- |
- protected: |
- void OnStateChanged() override; |
- void OnEnabledChanged() override; |
- |
- private: |
- VideoTrackInterface* remote_video_track_; |
- VideoProviderInterface* provider_; |
-}; |
- |
-class MediaStreamHandler : public ObserverInterface { |
- public: |
- MediaStreamHandler(MediaStreamInterface* stream, |
- AudioProviderInterface* audio_provider, |
- VideoProviderInterface* video_provider); |
- ~MediaStreamHandler(); |
- MediaStreamInterface* stream(); |
- void Stop(); |
- |
- virtual void AddAudioTrack(AudioTrackInterface* audio_track, uint32 ssrc) = 0; |
- virtual void AddVideoTrack(VideoTrackInterface* video_track, uint32 ssrc) = 0; |
- |
- virtual void RemoveTrack(MediaStreamTrackInterface* track); |
- void OnChanged() override; |
- |
- protected: |
- TrackHandler* FindTrackHandler(MediaStreamTrackInterface* track); |
- rtc::scoped_refptr<MediaStreamInterface> stream_; |
- AudioProviderInterface* audio_provider_; |
- VideoProviderInterface* video_provider_; |
- typedef std::vector<TrackHandler*> TrackHandlers; |
- TrackHandlers track_handlers_; |
-}; |
- |
-class LocalMediaStreamHandler : public MediaStreamHandler { |
- public: |
- LocalMediaStreamHandler(MediaStreamInterface* stream, |
- AudioProviderInterface* audio_provider, |
- VideoProviderInterface* video_provider); |
- ~LocalMediaStreamHandler(); |
- |
- void AddAudioTrack(AudioTrackInterface* audio_track, uint32 ssrc) override; |
- void AddVideoTrack(VideoTrackInterface* video_track, uint32 ssrc) override; |
-}; |
- |
-class RemoteMediaStreamHandler : public MediaStreamHandler { |
- public: |
- RemoteMediaStreamHandler(MediaStreamInterface* stream, |
- AudioProviderInterface* audio_provider, |
- VideoProviderInterface* video_provider); |
- ~RemoteMediaStreamHandler(); |
- void AddAudioTrack(AudioTrackInterface* audio_track, uint32 ssrc) override; |
- void AddVideoTrack(VideoTrackInterface* video_track, uint32 ssrc) override; |
-}; |
- |
-// Container for MediaStreamHandlers of currently known local and remote |
-// MediaStreams. |
-class MediaStreamHandlerContainer { |
- public: |
- MediaStreamHandlerContainer(AudioProviderInterface* audio_provider, |
- VideoProviderInterface* video_provider); |
- ~MediaStreamHandlerContainer(); |
- |
- // Notify all referenced objects that MediaStreamHandlerContainer will be |
- // destroyed. This method must be called prior to the dtor and prior to the |
- // |audio_provider| and |video_provider| is destroyed. |
- void TearDown(); |
- |
- // Remove all TrackHandlers for tracks in |stream| and make sure |
- // the audio_provider and video_provider is notified that the tracks has been |
- // removed. |
- void RemoveRemoteStream(MediaStreamInterface* stream); |
- |
- // Create a RemoteAudioTrackHandler and associate |audio_track| with |ssrc|. |
- void AddRemoteAudioTrack(MediaStreamInterface* stream, |
- AudioTrackInterface* audio_track, |
- uint32 ssrc); |
- // Create a RemoteVideoTrackHandler and associate |video_track| with |ssrc|. |
- void AddRemoteVideoTrack(MediaStreamInterface* stream, |
- VideoTrackInterface* video_track, |
- uint32 ssrc); |
- // Remove the TrackHandler for |track|. |
- void RemoveRemoteTrack(MediaStreamInterface* stream, |
- MediaStreamTrackInterface* track); |
- |
- // Remove all TrackHandlers for tracks in |stream| and make sure |
- // the audio_provider and video_provider is notified that the tracks has been |
- // removed. |
- void RemoveLocalStream(MediaStreamInterface* stream); |
- |
- // Create a LocalAudioTrackHandler and associate |audio_track| with |ssrc|. |
- void AddLocalAudioTrack(MediaStreamInterface* stream, |
- AudioTrackInterface* audio_track, |
- uint32 ssrc); |
- // Create a LocalVideoTrackHandler and associate |video_track| with |ssrc|. |
- void AddLocalVideoTrack(MediaStreamInterface* stream, |
- VideoTrackInterface* video_track, |
- uint32 ssrc); |
- // Remove the TrackHandler for |track|. |
- void RemoveLocalTrack(MediaStreamInterface* stream, |
- MediaStreamTrackInterface* track); |
- |
- private: |
- typedef std::list<MediaStreamHandler*> StreamHandlerList; |
- MediaStreamHandler* FindStreamHandler(const StreamHandlerList& handlers, |
- MediaStreamInterface* stream); |
- MediaStreamHandler* CreateRemoteStreamHandler(MediaStreamInterface* stream); |
- MediaStreamHandler* CreateLocalStreamHandler(MediaStreamInterface* stream); |
- void DeleteStreamHandler(StreamHandlerList* streamhandlers, |
- MediaStreamInterface* stream); |
- |
- StreamHandlerList local_streams_handlers_; |
- StreamHandlerList remote_streams_handlers_; |
- AudioProviderInterface* audio_provider_; |
- VideoProviderInterface* video_provider_; |
-}; |
- |
-} // namespace webrtc |
- |
-#endif // TALK_APP_WEBRTC_MEDIASTREAMHANDLER_H_ |