• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef WEBRTC_VIDEO_ENGINE_VIE_CHANNEL_GROUP_H_
12 #define WEBRTC_VIDEO_ENGINE_VIE_CHANNEL_GROUP_H_
13 
14 #include <set>
15 
16 #include "webrtc/system_wrappers/interface/scoped_ptr.h"
17 
18 namespace webrtc {
19 
20 class BitrateController;
21 class CallStats;
22 class Config;
23 class EncoderStateFeedback;
24 class ProcessThread;
25 class RemoteBitrateEstimator;
26 class ViEChannel;
27 class ViEEncoder;
28 class VieRemb;
29 
30 // Channel group contains data common for several channels. All channels in the
31 // group are assumed to send/receive data to the same end-point.
32 class ChannelGroup {
33  public:
34   ChannelGroup(int engine_id, ProcessThread* process_thread,
35                const Config* config);
36   ~ChannelGroup();
37 
38   void AddChannel(int channel_id);
39   void RemoveChannel(int channel_id, unsigned int ssrc);
40   bool HasChannel(int channel_id);
41   bool Empty();
42 
43   bool SetChannelRembStatus(int channel_id, bool sender, bool receiver,
44                             ViEChannel* channel);
45   void SetBandwidthEstimationConfig(const webrtc::Config& config);
46 
47   BitrateController* GetBitrateController();
48   CallStats* GetCallStats();
49   RemoteBitrateEstimator* GetRemoteBitrateEstimator();
50   EncoderStateFeedback* GetEncoderStateFeedback();
51 
52  private:
53   typedef std::set<int> ChannelSet;
54 
55   scoped_ptr<VieRemb> remb_;
56   scoped_ptr<BitrateController> bitrate_controller_;
57   scoped_ptr<CallStats> call_stats_;
58   scoped_ptr<RemoteBitrateEstimator> remote_bitrate_estimator_;
59   scoped_ptr<EncoderStateFeedback> encoder_state_feedback_;
60   ChannelSet channels_;
61   const Config* config_;
62   // Placeholder for the case where this owns the config.
63   scoped_ptr<Config> own_config_;
64 
65   // Registered at construct time and assumed to outlive this class.
66   ProcessThread* process_thread_;
67 };
68 
69 }  // namespace webrtc
70 
71 #endif  // WEBRTC_VIDEO_ENGINE_VIE_CHANNEL_GROUP_H_
72