15aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org/* 25aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * libjingle 35aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * Copyright 2013, Google Inc. 45aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * 55aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * Redistribution and use in source and binary forms, with or without 65aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * modification, are permitted provided that the following conditions are met: 75aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * 85aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * 1. Redistributions of source code must retain the above copyright notice, 95aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * this list of conditions and the following disclaimer. 105aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * 2. Redistributions in binary form must reproduce the above copyright notice, 115aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * this list of conditions and the following disclaimer in the documentation 125aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * and/or other materials provided with the distribution. 135aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * 3. The name of the author may not be used to endorse or promote products 145aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * derived from this software without specific prior written permission. 155aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * 165aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 175aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 185aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 195aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 205aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 215aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 225aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 235aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 245aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 255aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 265aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org * 275aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org */ 285aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 295aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org#ifndef TALK_APP_WEBRTC_TEST_FAKEMEDIASTREAMSIGNALING_H_ 305aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org#define TALK_APP_WEBRTC_TEST_FAKEMEDIASTREAMSIGNALING_H_ 315aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 325aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org#include "talk/app/webrtc/audiotrack.h" 335aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org#include "talk/app/webrtc/mediastreamsignaling.h" 345aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org#include "talk/app/webrtc/videotrack.h" 355aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 365aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.orgstatic const char kStream1[] = "stream1"; 375aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.orgstatic const char kVideoTrack1[] = "video1"; 385aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.orgstatic const char kAudioTrack1[] = "audio1"; 395aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 405aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.orgstatic const char kStream2[] = "stream2"; 415aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.orgstatic const char kVideoTrack2[] = "video2"; 425aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.orgstatic const char kAudioTrack2[] = "audio2"; 435aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 445aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.orgclass FakeMediaStreamSignaling : public webrtc::MediaStreamSignaling, 455aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org public webrtc::MediaStreamSignalingObserver { 465aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org public: 474ba8b9ea10385f43b19d6ed7408f4a09bdc1cbdawu@webrtc.org explicit FakeMediaStreamSignaling(cricket::ChannelManager* channel_manager) : 482a86ce22ccc387dfa6f8a98ce3eba5c1e6f9e538buildbot@webrtc.org webrtc::MediaStreamSignaling(rtc::Thread::Current(), this, 494ba8b9ea10385f43b19d6ed7408f4a09bdc1cbdawu@webrtc.org channel_manager) { 505aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 515aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 525aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org void SendAudioVideoStream1() { 535aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org ClearLocalStreams(); 545aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org AddLocalStream(CreateStream(kStream1, kAudioTrack1, kVideoTrack1)); 555aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 565aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 575aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org void SendAudioVideoStream2() { 585aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org ClearLocalStreams(); 595aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org AddLocalStream(CreateStream(kStream2, kAudioTrack2, kVideoTrack2)); 605aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 615aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 625aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org void SendAudioVideoStream1And2() { 635aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org ClearLocalStreams(); 645aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org AddLocalStream(CreateStream(kStream1, kAudioTrack1, kVideoTrack1)); 655aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org AddLocalStream(CreateStream(kStream2, kAudioTrack2, kVideoTrack2)); 665aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 675aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 685aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org void SendNothing() { 695aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org ClearLocalStreams(); 705aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 715aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 725aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org void UseOptionsAudioOnly() { 735aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org ClearLocalStreams(); 745aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org AddLocalStream(CreateStream(kStream2, kAudioTrack2, "")); 755aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 765aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 775aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org void UseOptionsVideoOnly() { 785aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org ClearLocalStreams(); 795aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org AddLocalStream(CreateStream(kStream2, "", kVideoTrack2)); 805aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 815aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 825aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org void ClearLocalStreams() { 835aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org while (local_streams()->count() != 0) { 845aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org RemoveLocalStream(local_streams()->at(0)); 855aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 865aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 875aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 885aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org // Implements MediaStreamSignalingObserver. 895aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org virtual void OnAddRemoteStream(webrtc::MediaStreamInterface* stream) { 905aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 915aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org virtual void OnRemoveRemoteStream(webrtc::MediaStreamInterface* stream) { 925aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 935aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org virtual void OnAddDataChannel(webrtc::DataChannelInterface* data_channel) { 945aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 955aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org virtual void OnAddLocalAudioTrack(webrtc::MediaStreamInterface* stream, 965aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::AudioTrackInterface* audio_track, 975aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org uint32 ssrc) { 985aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 995aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org virtual void OnAddLocalVideoTrack(webrtc::MediaStreamInterface* stream, 1005aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::VideoTrackInterface* video_track, 1015aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org uint32 ssrc) { 1025aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 1035aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org virtual void OnAddRemoteAudioTrack(webrtc::MediaStreamInterface* stream, 1045aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::AudioTrackInterface* audio_track, 1055aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org uint32 ssrc) { 1065aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 1075aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 1085aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org virtual void OnAddRemoteVideoTrack(webrtc::MediaStreamInterface* stream, 1095aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::VideoTrackInterface* video_track, 1105aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org uint32 ssrc) { 1115aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 1125aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 1135aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org virtual void OnRemoveRemoteAudioTrack( 1145aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::MediaStreamInterface* stream, 1155aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::AudioTrackInterface* audio_track) { 1165aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 1175aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 1185aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org virtual void OnRemoveRemoteVideoTrack( 1195aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::MediaStreamInterface* stream, 1205aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::VideoTrackInterface* video_track) { 1215aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 1225aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 1235aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org virtual void OnRemoveLocalAudioTrack( 1245aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::MediaStreamInterface* stream, 125c583107e6b398a140dc56f9539b0e01b58af8c61henrike@webrtc.org webrtc::AudioTrackInterface* audio_track, 126c583107e6b398a140dc56f9539b0e01b58af8c61henrike@webrtc.org uint32 ssrc) { 1275aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 1285aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org virtual void OnRemoveLocalVideoTrack( 1295aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::MediaStreamInterface* stream, 1305aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::VideoTrackInterface* video_track) { 1315aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 1325aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org virtual void OnRemoveLocalStream(webrtc::MediaStreamInterface* stream) { 1335aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 1345aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 1355aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org private: 1362a86ce22ccc387dfa6f8a98ce3eba5c1e6f9e538buildbot@webrtc.org rtc::scoped_refptr<webrtc::MediaStreamInterface> CreateStream( 1375aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org const std::string& stream_label, 1385aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org const std::string& audio_track_id, 1395aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org const std::string& video_track_id) { 1402a86ce22ccc387dfa6f8a98ce3eba5c1e6f9e538buildbot@webrtc.org rtc::scoped_refptr<webrtc::MediaStreamInterface> stream( 1415aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::MediaStream::Create(stream_label)); 1425aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 1435aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org if (!audio_track_id.empty()) { 1442a86ce22ccc387dfa6f8a98ce3eba5c1e6f9e538buildbot@webrtc.org rtc::scoped_refptr<webrtc::AudioTrackInterface> audio_track( 1455aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::AudioTrack::Create(audio_track_id, NULL)); 1465aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org stream->AddTrack(audio_track); 1475aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 1485aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 1495aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org if (!video_track_id.empty()) { 1502a86ce22ccc387dfa6f8a98ce3eba5c1e6f9e538buildbot@webrtc.org rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track( 1515aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org webrtc::VideoTrack::Create(video_track_id, NULL)); 1525aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org stream->AddTrack(video_track); 1535aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 1545aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org return stream; 1555aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org } 1565aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org}; 1575aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org 1585aed3bb9fb287faecd773b88bb68732c31579590wu@webrtc.org#endif // TALK_APP_WEBRTC_TEST_FAKEMEDIASTREAMSIGNALING_H_ 159