DSPark 1.8.0
Header-only C++20 DSP for real-time and offline audio
Loading...
Searching...
No Matches
dspark::FlacFile Class Reference

Decode-only native FLAC implementation with eager integrity checks. More...

#include <FlacFile.h>

Inheritance diagram for dspark::FlacFile:
Collaboration diagram for dspark::FlacFile:

Public Member Functions

 ~FlacFile () override
 
bool openRead (const std::filesystem::path &path) override
 Opens and fully validates a native FLAC stream.
 
bool openWrite (const std::filesystem::path &path, const AudioFileInfo &info) override
 FLAC encoding is unsupported; closes prior state and returns false.
 
AudioFileInfo getInfo () const override
 Returns current stream metadata, or default metadata when closed.
 
bool readSamples (AudioBufferView< float > dest) override
 Reads from sample zero, clamped to the destination dimensions.
 
bool readSamples (AudioBufferView< float > dest, int64_t startFrame, int64_t numFrames) override
 Decodes an exact valid file range into the destination capacity.
 
bool writeSamples (AudioBufferView< const float > src) override
 Always returns false because this class is decode-only.
 
void close () override
 Releases compressed data, metadata, and the frame index.
 
bool isOpen () const noexcept override
 True only after a complete stream has passed eager validation.
 
- Public Member Functions inherited from dspark::AudioFile
virtual ~AudioFile ()=default
 

Static Public Attributes

static constexpr uint64_t kMaxInputBytes = 256ull * 1024 * 1024
 Maximum compressed input retained by one instance.
 
static constexpr uint64_t kMaxMetadataBlocks = 65536
 Maximum number of metadata block headers scanned.
 
static constexpr uint64_t kMaxFrames = 1048576
 Maximum number of indexed audio frames.
 
static constexpr uint64_t kMaxInterchannelSamples = 1ull << 31
 Maximum decoded interchannel sample count.
 
static constexpr uint64_t kMaxDecodedPcmBytes = 8ull << 30
 Maximum logical decoded PCM byte count.
 
static constexpr uint64_t kMaxRiceUnaryZeros = 1ull << 20
 Maximum zero run accepted in one Rice unary code.
 
static constexpr std::string_view kWriteUnsupportedReason
 Stable explanation returned by documentation for write failure.
 

Detailed Description

Decode-only native FLAC implementation with eager integrity checks.

Definition at line 47 of file FlacFile.h.

Constructor & Destructor Documentation

◆ ~FlacFile()

dspark::FlacFile::~FlacFile ( )
inlineoverride

Definition at line 66 of file FlacFile.h.

Member Function Documentation

◆ close()

void dspark::FlacFile::close ( )
inlineoverridevirtual

Releases compressed data, metadata, and the frame index.

Implements dspark::AudioFile.

Definition at line 210 of file FlacFile.h.

◆ getInfo()

AudioFileInfo dspark::FlacFile::getInfo ( ) const
inlineoverridevirtual

Returns current stream metadata, or default metadata when closed.

Implements dspark::AudioFile.

Definition at line 120 of file FlacFile.h.

◆ isOpen()

bool dspark::FlacFile::isOpen ( ) const
inlineoverridevirtualnoexcept

True only after a complete stream has passed eager validation.

Implements dspark::AudioFile.

Definition at line 220 of file FlacFile.h.

◆ openRead()

bool dspark::FlacFile::openRead ( const std::filesystem::path &  path)
inlineoverridevirtual

Opens and fully validates a native FLAC stream.

Returns
True only after metadata, frames, CRCs, coverage, and MD5 pass.

Implements dspark::AudioFile.

Definition at line 72 of file FlacFile.h.

◆ openWrite()

bool dspark::FlacFile::openWrite ( const std::filesystem::path &  path,
const AudioFileInfo &  info 
)
inlineoverridevirtual

FLAC encoding is unsupported; closes prior state and returns false.

The destination path is never opened or modified.

Implements dspark::AudioFile.

Definition at line 110 of file FlacFile.h.

◆ readSamples() [1/2]

bool dspark::FlacFile::readSamples ( AudioBufferView< float >  dest)
inlineoverridevirtual

Reads from sample zero, clamped to the destination dimensions.

Implements dspark::AudioFile.

Definition at line 123 of file FlacFile.h.

◆ readSamples() [2/2]

bool dspark::FlacFile::readSamples ( AudioBufferView< float >  dest,
int64_t  startFrame,
int64_t  numFrames 
)
inlineoverridevirtual

Decodes an exact valid file range into the destination capacity.

The requested range must be wholly valid. Transfer is clamped to the destination's frames and channels, leaving every excess element untouched.

Implements dspark::AudioFile.

Definition at line 135 of file FlacFile.h.

◆ writeSamples()

bool dspark::FlacFile::writeSamples ( AudioBufferView< const float >  src)
inlineoverridevirtual

Always returns false because this class is decode-only.

Implements dspark::AudioFile.

Definition at line 203 of file FlacFile.h.

Member Data Documentation

◆ kMaxDecodedPcmBytes

constexpr uint64_t dspark::FlacFile::kMaxDecodedPcmBytes = 8ull << 30
staticconstexpr

Maximum logical decoded PCM byte count.

Definition at line 59 of file FlacFile.h.

◆ kMaxFrames

constexpr uint64_t dspark::FlacFile::kMaxFrames = 1048576
staticconstexpr

Maximum number of indexed audio frames.

Definition at line 55 of file FlacFile.h.

◆ kMaxInputBytes

constexpr uint64_t dspark::FlacFile::kMaxInputBytes = 256ull * 1024 * 1024
staticconstexpr

Maximum compressed input retained by one instance.

Definition at line 51 of file FlacFile.h.

◆ kMaxInterchannelSamples

constexpr uint64_t dspark::FlacFile::kMaxInterchannelSamples = 1ull << 31
staticconstexpr

Maximum decoded interchannel sample count.

Definition at line 57 of file FlacFile.h.

◆ kMaxMetadataBlocks

constexpr uint64_t dspark::FlacFile::kMaxMetadataBlocks = 65536
staticconstexpr

Maximum number of metadata block headers scanned.

Definition at line 53 of file FlacFile.h.

◆ kMaxRiceUnaryZeros

constexpr uint64_t dspark::FlacFile::kMaxRiceUnaryZeros = 1ull << 20
staticconstexpr

Maximum zero run accepted in one Rice unary code.

Definition at line 61 of file FlacFile.h.

◆ kWriteUnsupportedReason

constexpr std::string_view dspark::FlacFile::kWriteUnsupportedReason
staticconstexpr
Initial value:
=
"FlacFile is decode-only; FLAC encoding is not supported."

Stable explanation returned by documentation for write failure.

Definition at line 63 of file FlacFile.h.


The documentation for this class was generated from the following file: