#include "services/audio/loopback_stream.h"
#include <string>
#include "base/containers/contains.h"
#include "base/functional/bind.h"
#include "base/not_fatal_until.h"
#include "base/ranges/algorithm.h"
#include "base/sync_socket.h"
#include "base/task/sequenced_task_runner.h"
#include "base/time/default_tick_clock.h"
#include "base/trace_event/trace_event.h"
#include "media/base/audio_bus.h"
#include "media/base/vector_math.h"
#include "mojo/public/cpp/system/buffer.h"
#include "mojo/public/cpp/system/platform_handle.h"
#include "third_party/abseil-cpp/absl/utility/utility.h"
namespace audio {
namespace {
constexpr base::TimeDelta kInitialCaptureDelay = …;
}
constexpr double LoopbackStream::kMaxVolume;
LoopbackStream::LoopbackStream(
CreatedCallback created_callback,
BindingLostCallback binding_lost_callback,
scoped_refptr<base::SequencedTaskRunner> flow_task_runner,
mojo::PendingReceiver<media::mojom::AudioInputStream> receiver,
mojo::PendingRemote<media::mojom::AudioInputStreamClient> client,
mojo::PendingRemote<media::mojom::AudioInputStreamObserver> observer,
const media::AudioParameters& params,
uint32_t shared_memory_count,
LoopbackCoordinator* coordinator,
const base::UnguessableToken& group_id)
: … { … }
LoopbackStream::~LoopbackStream() { … }
void LoopbackStream::Record() { … }
void LoopbackStream::SetVolume(double volume) { … }
void LoopbackStream::OnMemberJoinedGroup(LoopbackGroupMember* member) { … }
void LoopbackStream::OnMemberLeftGroup(LoopbackGroupMember* member) { … }
void LoopbackStream::OnError() { … }
LoopbackStream::FlowNetwork::FlowNetwork(
scoped_refptr<base::SequencedTaskRunner> flow_task_runner,
const media::AudioParameters& output_params,
std::unique_ptr<InputSyncWriter> writer)
: … { … }
void LoopbackStream::FlowNetwork::AddInput(SnooperNode* node) { … }
void LoopbackStream::FlowNetwork::RemoveInput(SnooperNode* node) { … }
void LoopbackStream::FlowNetwork::SetVolume(double volume) { … }
void LoopbackStream::FlowNetwork::Start() { … }
LoopbackStream::FlowNetwork::~FlowNetwork() { … }
void LoopbackStream::FlowNetwork::GenerateMoreAudio() { … }
}