sink_stream.h 888 B

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