summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/webrtc/media/engine/webrtcmediaengine.h
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/webrtc/media/engine/webrtcmediaengine.h')
-rw-r--r--third_party/libwebrtc/webrtc/media/engine/webrtcmediaengine.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/third_party/libwebrtc/webrtc/media/engine/webrtcmediaengine.h b/third_party/libwebrtc/webrtc/media/engine/webrtcmediaengine.h
new file mode 100644
index 0000000000..1b1649aec6
--- /dev/null
+++ b/third_party/libwebrtc/webrtc/media/engine/webrtcmediaengine.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef MEDIA_ENGINE_WEBRTCMEDIAENGINE_H_
+#define MEDIA_ENGINE_WEBRTCMEDIAENGINE_H_
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "call/call.h"
+#include "media/base/mediaengine.h"
+
+namespace webrtc {
+class AudioDecoderFactory;
+class AudioDeviceModule;
+class AudioMixer;
+class AudioProcessing;
+class VideoDecoderFactory;
+class VideoEncoderFactory;
+}
+namespace cricket {
+class WebRtcVideoDecoderFactory;
+class WebRtcVideoEncoderFactory;
+}
+
+namespace cricket {
+
+class WebRtcMediaEngineFactory {
+ public:
+ // These Create methods may be called on any thread, though the engine is
+ // only expected to be used on one thread, internally called the "worker
+ // thread". This is the thread Init must be called on.
+ //
+ // TODO(deadbeef): Change these to return an std::unique_ptr<>, to indicate
+ // that the caller owns the returned object.
+ static MediaEngineInterface* Create(
+ webrtc::AudioDeviceModule* adm,
+ const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
+ audio_encoder_factory,
+ const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
+ audio_decoder_factory,
+ WebRtcVideoEncoderFactory* video_encoder_factory,
+ WebRtcVideoDecoderFactory* video_decoder_factory);
+ static MediaEngineInterface* Create(
+ webrtc::AudioDeviceModule* adm,
+ const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
+ audio_encoder_factory,
+ const rtc::scoped_refptr<webrtc::AudioDecoderFactory>&
+ audio_decoder_factory,
+ WebRtcVideoEncoderFactory* video_encoder_factory,
+ WebRtcVideoDecoderFactory* video_decoder_factory,
+ rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
+ rtc::scoped_refptr<webrtc::AudioProcessing> apm);
+
+ // Create a MediaEngineInterface with optional video codec factories. These
+ // video factories represents all video codecs, i.e. no extra internal video
+ // codecs will be added.
+ static std::unique_ptr<MediaEngineInterface> Create(
+ rtc::scoped_refptr<webrtc::AudioDeviceModule> adm,
+ rtc::scoped_refptr<webrtc::AudioEncoderFactory> audio_encoder_factory,
+ rtc::scoped_refptr<webrtc::AudioDecoderFactory> audio_decoder_factory,
+ std::unique_ptr<webrtc::VideoEncoderFactory> video_encoder_factory,
+ std::unique_ptr<webrtc::VideoDecoderFactory> video_decoder_factory,
+ rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
+ rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing);
+};
+
+// Verify that extension IDs are within 1-byte extension range and are not
+// overlapping.
+bool ValidateRtpExtensions(const std::vector<webrtc::RtpExtension>& extensions);
+
+// Discard any extensions not validated by the 'supported' predicate. Duplicate
+// extensions are removed if 'filter_redundant_extensions' is set, and also any
+// mutually exclusive extensions (see implementation for details) are removed.
+std::vector<webrtc::RtpExtension> FilterRtpExtensions(
+ const std::vector<webrtc::RtpExtension>& extensions,
+ bool (*supported)(const std::string&),
+ bool filter_redundant_extensions);
+
+webrtc::Call::Config::BitrateConfig GetBitrateConfigForCodec(
+ const Codec& codec);
+
+} // namespace cricket
+
+#endif // MEDIA_ENGINE_WEBRTCMEDIAENGINE_H_