mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-27 17:22:46 +01:00
f852369986
* Initial Commit Added Device logic to Sinks Started on UI for selecting devices Removed redundant import * Audio Core: Complete Device Switching Complete the device switching implementation by allowing the output device to be loaded, changed and saved through the configurations menu. Worked with the Sink abstraction and tuned the "Device Selection" configuration so that the Device List is automatically populated when the Sink is changed. This hopefully addresses the concerns and recommendations mentioned in the comments of the PR. * Clean original implementation. * Refactor GetSinkDetails
45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
// Copyright 2016 Citra Emulator Project
|
|
// Licensed under GPLv2 or any later version
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <vector>
|
|
#include "common/common_types.h"
|
|
|
|
namespace AudioCore {
|
|
|
|
/**
|
|
* This class is an interface for an audio sink. An audio sink accepts samples in stereo signed
|
|
* PCM16 format to be output. Sinks *do not* handle resampling and expect the correct sample rate.
|
|
* They are dumb outputs.
|
|
*/
|
|
class Sink {
|
|
public:
|
|
virtual ~Sink() = default;
|
|
|
|
/// The native rate of this sink. The sink expects to be fed samples that respect this. (Units:
|
|
/// samples/sec)
|
|
virtual unsigned int GetNativeSampleRate() const = 0;
|
|
|
|
/**
|
|
* Feed stereo samples to sink.
|
|
* @param samples Samples in interleaved stereo PCM16 format.
|
|
* @param sample_count Number of samples.
|
|
*/
|
|
virtual void EnqueueSamples(const s16* samples, size_t sample_count) = 0;
|
|
|
|
/// Samples enqueued that have not been played yet.
|
|
virtual std::size_t SamplesInQueue() const = 0;
|
|
|
|
/**
|
|
* Sets the desired output device.
|
|
* @paran device_id Id of the desired device.
|
|
*/
|
|
virtual void SetDevice(int device_id) = 0;
|
|
|
|
/// Returns the list of available devices.
|
|
virtual std::vector<std::string> GetDeviceList() const = 0;
|
|
};
|
|
|
|
} // namespace
|