Index: webrtc/media/base/mediaengine.h |
diff --git a/webrtc/media/base/mediaengine.h b/webrtc/media/base/mediaengine.h |
index 8ce60753d0822214bceae38e7e7397100384c45a..52a55f93bb4c1c5d738d2da4f373bb0171d76cfd 100644 |
--- a/webrtc/media/base/mediaengine.h |
+++ b/webrtc/media/base/mediaengine.h |
@@ -109,71 +109,65 @@ class MediaEngineFactory { |
// CompositeMediaEngine constructs a MediaEngine from separate |
// voice and video engine classes. |
-template<class VOICE, class VIDEO> |
+template <class VOICE, class VIDEO> |
class CompositeMediaEngine : public MediaEngineInterface { |
public: |
- CompositeMediaEngine( |
- webrtc::AudioDeviceModule* adm, |
- const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& |
- audio_encoder_factory, |
- const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& |
- audio_decoder_factory, |
- rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer, |
- rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) |
- : voice_(adm, |
- audio_encoder_factory, |
- audio_decoder_factory, |
- audio_mixer, |
- audio_processing) {} |
+ template <class... Args1, class... Args2> |
+ CompositeMediaEngine(std::tuple<Args1...> first_args, |
+ std::tuple<Args2...> second_args) |
+ : engines_(std::piecewise_construct, |
+ std::move(first_args), |
+ std::move(second_args)) {} |
+ |
virtual ~CompositeMediaEngine() {} |
virtual bool Init() { |
- voice_.Init(); |
- video_.Init(); |
+ voice().Init(); |
return true; |
} |
virtual rtc::scoped_refptr<webrtc::AudioState> GetAudioState() const { |
- return voice_.GetAudioState(); |
+ return voice().GetAudioState(); |
} |
virtual VoiceMediaChannel* CreateChannel(webrtc::Call* call, |
const MediaConfig& config, |
const AudioOptions& options) { |
- return voice_.CreateChannel(call, config, options); |
+ return voice().CreateChannel(call, config, options); |
} |
virtual VideoMediaChannel* CreateVideoChannel(webrtc::Call* call, |
const MediaConfig& config, |
const VideoOptions& options) { |
- return video_.CreateChannel(call, config, options); |
+ return video().CreateChannel(call, config, options); |
} |
- virtual int GetInputLevel() { |
- return voice_.GetInputLevel(); |
- } |
+ virtual int GetInputLevel() { return voice().GetInputLevel(); } |
virtual const std::vector<AudioCodec>& audio_send_codecs() { |
- return voice_.send_codecs(); |
+ return voice().send_codecs(); |
} |
virtual const std::vector<AudioCodec>& audio_recv_codecs() { |
- return voice_.recv_codecs(); |
+ return voice().recv_codecs(); |
} |
virtual RtpCapabilities GetAudioCapabilities() { |
- return voice_.GetCapabilities(); |
+ return voice().GetCapabilities(); |
} |
- virtual std::vector<VideoCodec> video_codecs() { return video_.codecs(); } |
+ virtual std::vector<VideoCodec> video_codecs() { return video().codecs(); } |
virtual RtpCapabilities GetVideoCapabilities() { |
- return video_.GetCapabilities(); |
+ return video().GetCapabilities(); |
} |
virtual bool StartAecDump(rtc::PlatformFile file, int64_t max_size_bytes) { |
- return voice_.StartAecDump(file, max_size_bytes); |
+ return voice().StartAecDump(file, max_size_bytes); |
} |
- virtual void StopAecDump() { |
- voice_.StopAecDump(); |
- } |
+ virtual void StopAecDump() { voice().StopAecDump(); } |
protected: |
- VOICE voice_; |
- VIDEO video_; |
+ VOICE& voice() { return engines_.first; } |
+ VIDEO& video() { return engines_.second; } |
+ const VOICE& voice() const { return engines_.first; } |
+ const VIDEO& video() const { return engines_.second; } |
+ |
+ private: |
+ std::pair<VOICE, VIDEO> engines_; |
}; |
enum DataChannelType { DCT_NONE = 0, DCT_RTP = 1, DCT_SCTP = 2, DCT_QUIC = 3 }; |