MythTV master
flacencoder.h
Go to the documentation of this file.
1#ifndef FLACENCODER_H_
2#define FLACENCODER_H_
3
4#include <cstdint>
5
6#include <FLAC/stream_encoder.h>
7
8#include "encoder.h"
9#ifndef __cpp_size_t_suffix
11#endif
12
13#ifdef __cpp_size_t_suffix
14static constexpr size_t MAX_SAMPLES { 588UZ * 4 };
15#else
16static constexpr size_t MAX_SAMPLES { 588_UZ * 4 };
17#endif
18static constexpr int8_t NUM_CHANNELS { 2 };
19
20class MusicMetadata;
21class QString;
22
23class FlacEncoder : public Encoder
24{
25 public:
26 FlacEncoder(const QString &outfile, int qualitylevel, MusicMetadata *metadata);
27 ~FlacEncoder() override;
28 int addSamples(int16_t *bytes, unsigned int len) override; // Encoder
29 int processSamples();
30
31 private:
32 FLAC__StreamEncoder *m_encoder {nullptr};
33 unsigned int m_sampleIndex {0};
34
35 std::array<std::array<FLAC__int32,MAX_SAMPLES>,NUM_CHANNELS> m_inputIn {};
36 std::array<FLAC__int32 *,NUM_CHANNELS>m_input {};
37};
38
39#endif
unsigned int m_sampleIndex
Definition: flacencoder.h:33
FlacEncoder(const QString &outfile, int qualitylevel, MusicMetadata *metadata)
Definition: flacencoder.cpp:20
std::array< std::array< FLAC__int32, MAX_SAMPLES >, NUM_CHANNELS > m_inputIn
Definition: flacencoder.h:35
std::array< FLAC__int32 *, NUM_CHANNELS > m_input
Definition: flacencoder.h:36
~FlacEncoder() override
Definition: flacencoder.cpp:73
int addSamples(int16_t *bytes, unsigned int len) override
Definition: flacencoder.cpp:87
int processSamples()
FLAC__StreamEncoder * m_encoder
Definition: flacencoder.h:32
static constexpr size_t MAX_SAMPLES
Definition: flacencoder.h:16
static constexpr int8_t NUM_CHANNELS
Definition: flacencoder.h:18