| Index: webrtc/modules/audio_coding/include/audio_coding_module.h
|
| diff --git a/webrtc/modules/audio_coding/include/audio_coding_module.h b/webrtc/modules/audio_coding/include/audio_coding_module.h
|
| index 9f93ef5559617c7171d9ce19b4421d0b39755db3..fc8ae1ed513cb5098c2406f09a4d63a2e1f9720a 100644
|
| --- a/webrtc/modules/audio_coding/include/audio_coding_module.h
|
| +++ b/webrtc/modules/audio_coding/include/audio_coding_module.h
|
| @@ -16,6 +16,7 @@
|
| #include <vector>
|
|
|
| #include "webrtc/base/deprecation.h"
|
| +#include "webrtc/base/function_view.h"
|
| #include "webrtc/base/optional.h"
|
| #include "webrtc/common_types.h"
|
| #include "webrtc/modules/audio_coding/codecs/audio_decoder_factory.h"
|
| @@ -209,48 +210,18 @@ class AudioCodingModule {
|
| virtual void RegisterExternalSendCodec(
|
| AudioEncoder* external_speech_encoder) = 0;
|
|
|
| - // Just like std::function, FunctionView will wrap any callable and hide its
|
| - // actual type, exposing only its signature. But unlike std::function,
|
| - // FunctionView doesn't own its callable---it just points to it. Thus, it's a
|
| - // good choice mainly as a function argument when the callable argument will
|
| - // not be called again once the function has returned.
|
| - template <typename T>
|
| - class FunctionView; // Undefined.
|
| -
|
| - template <typename RetT, typename... ArgT>
|
| - class FunctionView<RetT(ArgT...)> final {
|
| - public:
|
| - // This constructor is implicit, so that callers won't have to convert
|
| - // lambdas to FunctionView<Blah(Blah, Blah)> explicitly. This is safe
|
| - // because FunctionView is only a reference to the real callable.
|
| - template <typename F>
|
| - FunctionView(F&& f)
|
| - : f_(&f), call_(Call<typename std::remove_reference<F>::type>) {}
|
| -
|
| - RetT operator()(ArgT... args) const {
|
| - return call_(f_, std::forward<ArgT>(args)...);
|
| - }
|
| -
|
| - private:
|
| - template <typename F>
|
| - static RetT Call(void* f, ArgT... args) {
|
| - return (*static_cast<F*>(f))(std::forward<ArgT>(args)...);
|
| - }
|
| - void* f_;
|
| - RetT (*call_)(void* f, ArgT... args);
|
| - };
|
| -
|
| // |modifier| is called exactly once with one argument: a pointer to the
|
| // unique_ptr that holds the current encoder (which is null if there is no
|
| // current encoder). For the duration of the call, |modifier| has exclusive
|
| // access to the unique_ptr; it may call the encoder, steal the encoder and
|
| // replace it with another encoder or with nullptr, etc.
|
| virtual void ModifyEncoder(
|
| - FunctionView<void(std::unique_ptr<AudioEncoder>*)> modifier) = 0;
|
| + rtc::FunctionView<void(std::unique_ptr<AudioEncoder>*)> modifier) = 0;
|
|
|
| // |modifier| is called exactly once with one argument: a const pointer to the
|
| // current encoder (which is null if there is no current encoder).
|
| - virtual void QueryEncoder(FunctionView<void(AudioEncoder const*)> query) = 0;
|
| + virtual void QueryEncoder(
|
| + rtc::FunctionView<void(AudioEncoder const*)> query) = 0;
|
|
|
| // Utility method for simply replacing the existing encoder with a new one.
|
| void SetEncoder(std::unique_ptr<AudioEncoder> new_encoder) {
|
| @@ -529,7 +500,7 @@ class AudioCodingModule {
|
| // the decoder being registered is iSAC.
|
| virtual int RegisterReceiveCodec(
|
| const CodecInst& receive_codec,
|
| - FunctionView<std::unique_ptr<AudioDecoder>()> isac_factory) = 0;
|
| + rtc::FunctionView<std::unique_ptr<AudioDecoder>()> isac_factory) = 0;
|
|
|
| // Registers an external decoder. The name is only used to provide information
|
| // back to the caller about the decoder. Hence, the name is arbitrary, and may
|
|
|