You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
756 B
C++

// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright The Music Player Daemon Project
#ifndef MPD_FLAC_PCM_HXX
#define MPD_FLAC_PCM_HXX
#include "pcm/Buffer.hxx"
#include "pcm/AudioFormat.hxx"
#include <FLAC/ordinals.h>
#include <cstddef>
#include <span>
/**
* This class imports libFLAC PCM data into a PCM format supported by
* MPD.
*/
class FlacPcmImport {
PcmBuffer buffer;
AudioFormat audio_format;
public:
/**
* Throws #std::runtime_error on error.
*/
void Open(unsigned sample_rate, unsigned bits_per_sample,
unsigned channels);
const AudioFormat &GetAudioFormat() const noexcept {
return audio_format;
}
std::span<const std::byte> Import(const FLAC__int32 *const src[],
size_t n_frames) noexcept;
};
#endif