MythTV  master
audiooutputdigitalencoder.h
Go to the documentation of this file.
1 #ifndef AUDIOOUTPUTREENCODER
2 #define AUDIOOUTPUTREENCODER
3 
4 extern "C" {
5 #include "libavcodec/avcodec.h"
6 };
7 
8 #include "spdifencoder.h"
9 #include "audiooutputsettings.h"
10 
11 static constexpr ssize_t INBUFSIZE { 131072 };
12 static constexpr ssize_t OUTBUFSIZE { INBUFSIZE };
13 
15 {
16 
17  public:
20 
21  bool Init(AVCodecID codec_id, int bitrate, int samplerate, int channels);
22  int Encode(void *input, int len, AudioFormat format);
23  int GetFrames(void *ptr, int maxlen);
24  int Buffered(void) const
25  // assume 32 bit samples = 4 byte
26  { return m_inlen / 4 / m_avContext->ch_layout.nb_channels; }
27  void clear();
28 
29  private:
30  void Reset(void);
31  static void *realloc(void *ptr, size_t old_size, size_t new_size);
32 
33  AVCodecContext *m_avContext {nullptr};
34  uint8_t *m_outbuf {nullptr};
35  ssize_t m_outSize {0};
36  // m_inbuf = 6 channel data converted to S32 or FLT samples interleaved
37  uint8_t *m_inbuf {nullptr};
38  // m_framebuf = 1 frame, deinterleaved into planar format
39  uint8_t *m_framebuf {nullptr};
40  ssize_t m_inSize {0};
41  int m_outlen {0};
42  // m_inlen = number of bytes available in m_inbuf
43  int m_inlen {0};
46  AVFrame *m_frame {nullptr};
47 };
48 
49 #endif
AudioOutputDigitalEncoder::~AudioOutputDigitalEncoder
~AudioOutputDigitalEncoder()
Definition: audiooutputdigitalencoder.cpp:37
AudioOutputDigitalEncoder::Init
bool Init(AVCodecID codec_id, int bitrate, int samplerate, int channels)
Definition: audiooutputdigitalencoder.cpp:102
AudioOutputDigitalEncoder::GetFrames
int GetFrames(void *ptr, int maxlen)
Definition: audiooutputdigitalencoder.cpp:342
spdifencoder.h
AudioOutputDigitalEncoder::m_outlen
int m_outlen
Definition: audiooutputdigitalencoder.h:41
AudioOutputDigitalEncoder::realloc
static void * realloc(void *ptr, size_t old_size, size_t new_size)
Definition: audiooutputdigitalencoder.cpp:69
OUTBUFSIZE
static constexpr ssize_t OUTBUFSIZE
Definition: audiooutputdigitalencoder.h:12
AudioOutputDigitalEncoder::clear
void clear()
Definition: audiooutputdigitalencoder.cpp:355
AudioOutputDigitalEncoder::m_outbuf
uint8_t * m_outbuf
Definition: audiooutputdigitalencoder.h:34
AudioOutputDigitalEncoder::m_framebuf
uint8_t * m_framebuf
Definition: audiooutputdigitalencoder.h:39
AudioOutputDigitalEncoder::m_inlen
int m_inlen
Definition: audiooutputdigitalencoder.h:43
AudioOutputDigitalEncoder::m_spdifEnc
SPDIFEncoder * m_spdifEnc
Definition: audiooutputdigitalencoder.h:45
AVFrame
struct AVFrame AVFrame
Definition: BorderDetector.h:15
AudioOutputDigitalEncoder
Definition: audiooutputdigitalencoder.h:14
AudioOutputDigitalEncoder::Buffered
int Buffered(void) const
Definition: audiooutputdigitalencoder.h:24
AudioOutputDigitalEncoder::m_inSize
ssize_t m_inSize
Definition: audiooutputdigitalencoder.h:40
AudioOutputDigitalEncoder::Encode
int Encode(void *input, int len, AudioFormat format)
Definition: audiooutputdigitalencoder.cpp:166
INBUFSIZE
static constexpr ssize_t INBUFSIZE
Definition: audiooutputdigitalencoder.h:11
AudioOutputDigitalEncoder::m_avContext
AVCodecContext * m_avContext
Definition: audiooutputdigitalencoder.h:33
AudioOutputDigitalEncoder::m_samplesPerFrame
int m_samplesPerFrame
Definition: audiooutputdigitalencoder.h:44
AudioOutputDigitalEncoder::AudioOutputDigitalEncoder
AudioOutputDigitalEncoder(void)
Definition: audiooutputdigitalencoder.cpp:22
AudioOutputDigitalEncoder::m_inbuf
uint8_t * m_inbuf
Definition: audiooutputdigitalencoder.h:37
SPDIFEncoder
Definition: spdifencoder.h:14
AudioFormat
AudioFormat
Definition: audiooutputsettings.h:24
audiooutputsettings.h
AudioOutputDigitalEncoder::m_outSize
ssize_t m_outSize
Definition: audiooutputdigitalencoder.h:35
AudioOutputDigitalEncoder::Reset
void Reset(void)
Definition: audiooutputdigitalencoder.cpp:56
AudioOutputDigitalEncoder::m_frame
AVFrame * m_frame
Definition: audiooutputdigitalencoder.h:46