55 lines
1.6 KiB
C++
55 lines
1.6 KiB
C++
// Copyright (c) 2018 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_PUSH_SINK_H_
|
|
#define CEF_LIBCEF_BROWSER_AUDIO_PUSH_SINK_H_
|
|
#pragma once
|
|
|
|
#include "include/cef_audio_handler.h"
|
|
#include "include/cef_base.h"
|
|
#include "libcef/browser/browser_host_impl.h"
|
|
|
|
#include "base/callback.h"
|
|
#include "base/memory/weak_ptr.h"
|
|
#include "base/message_loop/message_loop.h"
|
|
#include "base/threading/thread_checker.h"
|
|
#include "media/audio/audio_io.h"
|
|
#include "media/base/audio_converter.h"
|
|
#include "media/base/audio_parameters.h"
|
|
#include "media/base/channel_layout.h"
|
|
|
|
class CefAudioPushSink : public media::AudioPushSink {
|
|
public:
|
|
typedef base::Callback<void(CefAudioPushSink* sink)> CloseCallback;
|
|
|
|
CefAudioPushSink(const media::AudioParameters& params,
|
|
CefRefPtr<CefBrowserHostImpl> browser,
|
|
CefRefPtr<CefAudioHandler> cef_audio_handler,
|
|
const CloseCallback& callback);
|
|
virtual ~CefAudioPushSink();
|
|
|
|
void OnData(std::unique_ptr<media::AudioBus> source,
|
|
base::TimeTicks reference_time) override;
|
|
void Close() override;
|
|
|
|
private:
|
|
void InitOnUIThread();
|
|
|
|
const media::AudioParameters params_;
|
|
CefRefPtr<CefBrowserHostImpl> browser_;
|
|
CefRefPtr<CefAudioHandler> cef_audio_handler_;
|
|
CloseCallback close_callback_;
|
|
|
|
base::ThreadChecker thread_checker_;
|
|
|
|
bool stop_stream_;
|
|
int audio_stream_id_;
|
|
|
|
static int audio_stream_id;
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(CefAudioPushSink);
|
|
};
|
|
|
|
#endif // CEF_LIBCEF_BROWSER_AUDIO_PUSH_SINK_H_
|