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"
10
11static constexpr size_t MAX_SAMPLES { 588_UZ * 4 };
12static constexpr int8_t NUM_CHANNELS { 2 };
13
14class MusicMetadata;
15class QString;
16
17class FlacEncoder : public Encoder
18{
19 public:
20 FlacEncoder(const QString &outfile, int qualitylevel, MusicMetadata *metadata);
21 ~FlacEncoder() override;
22 int addSamples(int16_t *bytes, unsigned int len) override; // Encoder
23 int processSamples();
24
25 private:
26 FLAC__StreamEncoder *m_encoder {nullptr};
27 unsigned int m_sampleIndex {0};
28
29 std::array<std::array<FLAC__int32,MAX_SAMPLES>,NUM_CHANNELS> m_inputIn {};
30 std::array<FLAC__int32 *,NUM_CHANNELS>m_input {};
31};
32
33#endif
unsigned int m_sampleIndex
Definition: flacencoder.h:27
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:29
std::array< FLAC__int32 *, NUM_CHANNELS > m_input
Definition: flacencoder.h:30
~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:26
static constexpr size_t MAX_SAMPLES
Definition: flacencoder.h:11
static constexpr int8_t NUM_CHANNELS
Definition: flacencoder.h:12