blob: 071f22ff9cb3eefdd9622ef6306d0a62fcd84e6c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
/*
* See the README file for copyright information and how to reach the author.
*
* $Id$
*/
#ifndef AUDIO_H
#define AUDIO_H
extern "C" {
#include <libavcodec/avcodec.h>
}
#include <vdr/thread.h>
#include "tools.h"
#include "omx.h"
class cAudioParser;
class cAudioDecoder : public cThread
{
public:
cAudioDecoder(cOmx *omx);
virtual ~cAudioDecoder();
virtual int Init(void);
virtual int DeInit(void);
virtual bool WriteData(const unsigned char *buf, unsigned int length, uint64_t pts = 0);
virtual bool Poll(void);
virtual void Reset(void);
protected:
virtual void Action(void);
void SetCodec(cAudioCodec::eCodec codec, unsigned int &channels, unsigned int samplingRate);
struct Codec
{
AVCodec *codec;
AVCodecContext *context;
};
private:
Codec m_codecs[cAudioCodec::eNumCodecs];
bool m_passthrough;
bool m_reset;
bool m_ready;
uint64_t m_pts;
cCondWait *m_wait;
cAudioParser *m_parser;
cOmx *m_omx;
};
#endif
|