mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00
43 lines
1.6 KiB
C++
43 lines
1.6 KiB
C++
/*
|
|
* Copyright (c) 2020 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 API_AUDIO_AUDIO_FRAME_PROCESSOR_H_
|
|
#define API_AUDIO_AUDIO_FRAME_PROCESSOR_H_
|
|
|
|
#include <functional>
|
|
#include <memory>
|
|
|
|
namespace webrtc {
|
|
|
|
class AudioFrame;
|
|
|
|
// If passed into PeerConnectionFactory, will be used for additional
|
|
// processing of captured audio frames, performed before encoding.
|
|
// Implementations must be thread-safe.
|
|
class AudioFrameProcessor {
|
|
public:
|
|
using OnAudioFrameCallback = std::function<void(std::unique_ptr<AudioFrame>)>;
|
|
virtual ~AudioFrameProcessor() = default;
|
|
|
|
// Processes the frame received from WebRTC, is called by WebRTC off the
|
|
// realtime audio capturing path. AudioFrameProcessor must reply with
|
|
// processed frames by calling |sink_callback| if it was provided in SetSink()
|
|
// call. |sink_callback| can be called in the context of Process().
|
|
virtual void Process(std::unique_ptr<AudioFrame> frame) = 0;
|
|
|
|
// Atomically replaces the current sink with the new one. Before the
|
|
// first call to this function, or if the provided |sink_callback| is nullptr,
|
|
// processed frames are simply discarded.
|
|
virtual void SetSink(OnAudioFrameCallback sink_callback) = 0;
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // API_AUDIO_AUDIO_FRAME_PROCESSOR_H_
|