sink_stream.h 907 B

123456789101112131415161718192021222324252627282930313233343536
  1. // Copyright 2018 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <memory>
  6. #include <vector>
  7. #include "common/common_types.h"
  8. namespace AudioCore {
  9. /**
  10. * Accepts samples in stereo signed PCM16 format to be output. Sinks *do not* handle resampling and
  11. * expect the correct sample rate. They are dumb outputs.
  12. */
  13. class SinkStream {
  14. public:
  15. virtual ~SinkStream() = default;
  16. /**
  17. * Feed stereo samples to sink.
  18. * @param num_channels Number of channels used.
  19. * @param samples Samples in interleaved stereo PCM16 format.
  20. */
  21. virtual void EnqueueSamples(u32 num_channels, const std::vector<s16>& samples) = 0;
  22. virtual std::size_t SamplesInQueue(u32 num_channels) const = 0;
  23. virtual void Flush() = 0;
  24. };
  25. using SinkStreamPtr = std::unique_ptr<SinkStream>;
  26. } // namespace AudioCore