| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 /* |  | 
| 2  * libjingle |  | 
| 3  * Copyright 2015 Google Inc. |  | 
| 4  * |  | 
| 5  * Redistribution and use in source and binary forms, with or without |  | 
| 6  * modification, are permitted provided that the following conditions are met: |  | 
| 7  * |  | 
| 8  *  1. Redistributions of source code must retain the above copyright notice, |  | 
| 9  *     this list of conditions and the following disclaimer. |  | 
| 10  *  2. Redistributions in binary form must reproduce the above copyright notice, |  | 
| 11  *     this list of conditions and the following disclaimer in the documentation |  | 
| 12  *     and/or other materials provided with the distribution. |  | 
| 13  *  3. The name of the author may not be used to endorse or promote products |  | 
| 14  *     derived from this software without specific prior written permission. |  | 
| 15  * |  | 
| 16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED |  | 
| 17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |  | 
| 18  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO |  | 
| 19  * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |  | 
| 20  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |  | 
| 21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |  | 
| 22  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |  | 
| 23  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |  | 
| 24  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |  | 
| 25  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |  | 
| 26  */ |  | 
| 27 |  | 
| 28 #include "talk/app/webrtc/mediacontroller.h" |  | 
| 29 |  | 
| 30 #include "talk/session/media/channelmanager.h" |  | 
| 31 #include "webrtc/base/bind.h" |  | 
| 32 #include "webrtc/base/checks.h" |  | 
| 33 #include "webrtc/call.h" |  | 
| 34 |  | 
| 35 namespace { |  | 
| 36 |  | 
| 37 const int kMinBandwidthBps = 30000; |  | 
| 38 const int kStartBandwidthBps = 300000; |  | 
| 39 const int kMaxBandwidthBps = 2000000; |  | 
| 40 |  | 
| 41 class MediaController : public webrtc::MediaControllerInterface, |  | 
| 42                         public sigslot::has_slots<> { |  | 
| 43  public: |  | 
| 44   MediaController(rtc::Thread* worker_thread, |  | 
| 45                   cricket::ChannelManager* channel_manager) |  | 
| 46       : worker_thread_(worker_thread), channel_manager_(channel_manager) { |  | 
| 47     RTC_DCHECK(nullptr != worker_thread); |  | 
| 48     worker_thread_->Invoke<void>( |  | 
| 49         rtc::Bind(&MediaController::Construct_w, this, |  | 
| 50                   channel_manager_->media_engine())); |  | 
| 51   } |  | 
| 52   ~MediaController() override { |  | 
| 53     worker_thread_->Invoke<void>(rtc::Bind(&MediaController::Destruct_w, this)); |  | 
| 54   } |  | 
| 55 |  | 
| 56   webrtc::Call* call_w() override { |  | 
| 57     RTC_DCHECK(worker_thread_->IsCurrent()); |  | 
| 58     return call_.get(); |  | 
| 59   } |  | 
| 60 |  | 
| 61   cricket::ChannelManager* channel_manager() const override { |  | 
| 62     return channel_manager_; |  | 
| 63   } |  | 
| 64 |  | 
| 65  private: |  | 
| 66   void Construct_w(cricket::MediaEngineInterface* media_engine) { |  | 
| 67     RTC_DCHECK(worker_thread_->IsCurrent()); |  | 
| 68     RTC_DCHECK(media_engine); |  | 
| 69     webrtc::Call::Config config; |  | 
| 70     config.audio_state = media_engine->GetAudioState(); |  | 
| 71     config.bitrate_config.min_bitrate_bps = kMinBandwidthBps; |  | 
| 72     config.bitrate_config.start_bitrate_bps = kStartBandwidthBps; |  | 
| 73     config.bitrate_config.max_bitrate_bps = kMaxBandwidthBps; |  | 
| 74     call_.reset(webrtc::Call::Create(config)); |  | 
| 75   } |  | 
| 76   void Destruct_w() { |  | 
| 77     RTC_DCHECK(worker_thread_->IsCurrent()); |  | 
| 78     call_.reset(); |  | 
| 79   } |  | 
| 80 |  | 
| 81   rtc::Thread* const worker_thread_; |  | 
| 82   cricket::ChannelManager* const channel_manager_; |  | 
| 83   rtc::scoped_ptr<webrtc::Call> call_; |  | 
| 84 |  | 
| 85   RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(MediaController); |  | 
| 86 }; |  | 
| 87 }  // namespace { |  | 
| 88 |  | 
| 89 namespace webrtc { |  | 
| 90 |  | 
| 91 MediaControllerInterface* MediaControllerInterface::Create( |  | 
| 92     rtc::Thread* worker_thread, |  | 
| 93     cricket::ChannelManager* channel_manager) { |  | 
| 94   return new MediaController(worker_thread, channel_manager); |  | 
| 95 } |  | 
| 96 }  // namespace webrtc |  | 
| OLD | NEW | 
|---|