// Copyright (c) 2019 The Chromium Embedded Framework Authors. // Portions copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CEF_LIBCEF_BROWSER_AUDIO_CAPTURER_H_ #define CEF_LIBCEF_BROWSER_AUDIO_CAPTURER_H_ #pragma once #include "include/internal/cef_ptr.h" #include "include/internal/cef_types_wrappers.h" #include "media/base/audio_capturer_source.h" namespace media { class AudioInputDevice; } // namespace media class CefAudioHandler; class CefAudioLoopbackStreamCreator; class AlloyBrowserHostImpl; class CefAudioCapturer : public media::AudioCapturerSource::CaptureCallback { public: CefAudioCapturer(const CefAudioParameters& params, CefRefPtr browser, CefRefPtr audio_handler); ~CefAudioCapturer() override; private: void OnCaptureStarted() override; void Capture(const media::AudioBus* audio_source, base::TimeTicks audio_capture_time, double volume, bool key_pressed) override; void OnCaptureError(media::AudioCapturerSource::ErrorCode code, const std::string& message) override; void OnCaptureMuted(bool is_muted) override {} void StopStream(); CefAudioParameters params_; CefRefPtr browser_; CefRefPtr audio_handler_; std::unique_ptr audio_stream_creator_; scoped_refptr audio_input_device_; bool capturing_ = false; int channels_ = 0; }; #endif // CEF_LIBCEF_BROWSER_AUDIO_CAPTURER_H_