openATV enigma2
openATV is an open source SetTopBox Graphical user interface.
amldecoder.h
Go to the documentation of this file.
1 
21 #ifndef __amldecoder_h
22 #define __amldecoder_h
23 
24 #include <lib/base/object.h>
25 #include <lib/dvb/demux.h>
26 // Amlogic includes
27 extern "C" {
28 #include <codec.h>
29 }
30 
31 class eSocketNotifier;
32 
33 
34 class eAMLTSMPEGDecoder: public sigc::trackable, public iTSMPEGDecoder
35 {
36  DECLARE_REF(eAMLTSMPEGDecoder);
37 private:
38  static int m_pcm_delay;
39  static int m_ac3_delay;
40  static int m_audio_channel;
41  std::string m_radio_pic;
42  ePtr<eDVBDemux> m_demux;
43  int m_vpid, m_vtype, m_apid, m_atype, m_pcrpid, m_textpid;
44  int m_width, m_height, m_framerate, m_aspect, m_progressive;
45  enum
46  {
47  changeVideo = 1,
48  changeAudio = 2,
49  changePCR = 4,
50  changeText = 8,
51  changeState = 16,
52  };
53  int m_changed, m_decoder;
54  int m_radio_pic_on;
55  int m_state;
56  int m_ff_sm_ratio;
57  bool m_has_audio;
58  int setState();
59  ePtr<eConnection> m_demux_event_conn;
60  ePtr<eConnection> m_video_event_conn;
61 
62 
63  void demux_event(int event);
64  void video_event(struct videoEvent);
65  sigc::signal1<void, struct videoEvent> m_video_event;
66  int m_video_clip_fd;
67  ePtr<eTimer> m_showSinglePicTimer;
68  void finishShowSinglePic(); // called by timer
69  ePtr<eTimer> m_VideoRead;
70  void parseVideoInfo(); // called by timer
71 
72  //Amcodec related
73  codec_para_t m_codec;
74 
75 public:
77  enum { pidNone = -1 };
78  eAMLTSMPEGDecoder(eDVBDemux *demux, int decoder);
79  virtual ~eAMLTSMPEGDecoder();
80  RESULT setVideoPID(int vpid, int type);
81  RESULT setAudioPID(int apid, int type);
82  RESULT setAudioChannel(int channel);
83  int getAudioChannel();
84  RESULT setPCMDelay(int delay);
85  int getPCMDelay() { return m_pcm_delay; }
86  RESULT setAC3Delay(int delay);
87  int getAC3Delay() { return m_ac3_delay; }
88  RESULT setSyncPCR(int pcrpid);
89  RESULT setTextPID(int textpid);
90  RESULT setSyncMaster(int who);
91 
92  /*
93  The following states exist:
94 
95  - stop: data source closed, no playback
96  - pause: data source active, decoder paused
97  - play: data source active, decoder consuming
98  - decoder fast forward: data source linear, decoder drops frames
99  - trickmode, highspeed reverse: data source fast forwards / reverses, decoder just displays frames as fast as it can
100  - slow motion: decoder displays frames multiple times
101  */
102  enum {
109  };
110  RESULT set(); /* just apply settings, keep state */
111  RESULT play(); /* -> play */
112  RESULT pause(); /* -> pause */
113  RESULT setFastForward(int frames_to_skip); /* -> decoder fast forward */
114  RESULT setSlowMotion(int repeat); /* -> slow motion **/
115  RESULT setTrickmode(); /* -> highspeed fast forward */
116 
117  RESULT flush();
118  RESULT showSinglePic(const char *filename);
119  RESULT setRadioPic(const std::string &filename);
120  /* what 0=auto, 1=video, 2=audio. */
121  RESULT getPTS(int what, pts_t &pts);
122  RESULT connectVideoEvent(const sigc::slot1<void, struct videoEvent> &event, ePtr<eConnection> &connection);
123  int getVideoWidth();
124  int getVideoHeight();
125  int getVideoProgressive();
126  int getVideoFrameRate();
127  int getVideoAspect();
128  int getVideoGamma();
129  static RESULT setHwPCMDelay(int delay);
130  static RESULT setHwAC3Delay(int delay);
131 };
132 
133 #endif
long long pts_t
Definition: cfile.h:7
Definition: amldecoder.h:35
RESULT setFastForward(int frames_to_skip)
Definition: amldecoder.cpp:349
@ stateTrickmode
Definition: amldecoder.h:107
@ stateStop
Definition: amldecoder.h:103
@ stateDecoderFastForward
Definition: amldecoder.h:106
@ statePause
Definition: amldecoder.h:104
@ statePlay
Definition: amldecoder.h:105
@ stateSlowMotion
Definition: amldecoder.h:108
int getPCMDelay()
Definition: amldecoder.h:85
@ pidNone
Definition: amldecoder.h:77
RESULT setRadioPic(const std::string &filename)
Definition: amldecoder.cpp:400
RESULT play()
Definition: amldecoder.cpp:278
int getAC3Delay()
Definition: amldecoder.h:87
RESULT setSlowMotion(int repeat)
Definition: amldecoder.cpp:358
@ AVS
Definition: amldecoder.h:76
@ H265_HEVC
Definition: amldecoder.h:76
@ aAC3
Definition: amldecoder.h:76
@ aAAC
Definition: amldecoder.h:76
@ MPEG1
Definition: amldecoder.h:76
@ MPEG4_H264
Definition: amldecoder.h:76
@ aMPEG
Definition: amldecoder.h:76
@ VC1
Definition: amldecoder.h:76
@ aDDP
Definition: amldecoder.h:76
@ MPEG4_Part2
Definition: amldecoder.h:76
@ MPEG2
Definition: amldecoder.h:76
@ VC1_SM
Definition: amldecoder.h:76
@ aLPCM
Definition: amldecoder.h:76
@ aDTSHD
Definition: amldecoder.h:76
@ UNKNOWN
Definition: amldecoder.h:76
@ aAACHE
Definition: amldecoder.h:76
@ aDTS
Definition: amldecoder.h:76
RESULT setAC3Delay(int delay)
Definition: amldecoder.cpp:142
RESULT showSinglePic(const char *filename)
Definition: amldecoder.cpp:407
RESULT connectVideoEvent(const sigc::slot1< void, struct videoEvent > &event, ePtr< eConnection > &connection)
Definition: amldecoder.cpp:534
RESULT setSyncPCR(int pcrpid)
Definition: amldecoder.cpp:250
int getVideoGamma()
Definition: amldecoder.cpp:595
eAMLTSMPEGDecoder(eDVBDemux *demux, int decoder)
Definition: amldecoder.cpp:65
int getVideoHeight()
Definition: amldecoder.cpp:557
RESULT set()
Definition: amldecoder.cpp:271
RESULT getPTS(int what, pts_t &pts)
Definition: amldecoder.cpp:393
RESULT setVideoPID(int vpid, int type)
Definition: amldecoder.cpp:148
RESULT setSyncMaster(int who)
Definition: amldecoder.cpp:265
RESULT setAudioChannel(int channel)
Definition: amldecoder.cpp:236
RESULT setTrickmode()
Definition: amldecoder.cpp:367
RESULT flush()
Definition: amldecoder.cpp:374
int getVideoAspect()
Definition: amldecoder.cpp:585
virtual ~eAMLTSMPEGDecoder()
Definition: amldecoder.cpp:90
int getAudioChannel()
Definition: amldecoder.cpp:244
RESULT setTextPID(int textpid)
Definition: amldecoder.cpp:258
int getVideoWidth()
Definition: amldecoder.cpp:547
RESULT setAudioPID(int apid, int type)
Definition: amldecoder.cpp:188
RESULT pause()
Definition: amldecoder.cpp:333
static RESULT setHwAC3Delay(int delay)
Definition: amldecoder.cpp:130
int getVideoFrameRate()
Definition: amldecoder.cpp:577
static RESULT setHwPCMDelay(int delay)
Definition: amldecoder.cpp:124
int getVideoProgressive()
Definition: amldecoder.cpp:567
RESULT setPCMDelay(int delay)
Definition: amldecoder.cpp:136
Definition: demux.h:11
Gives a callback when data on a file descriptor is ready.
Definition: ebase.h:146
Definition: idvb.h:770
const char * filename
Definition: epng.h:36
int repeat
Definition: SystemInfo.py:305
decoder
Definition: Extensions/MiniTV/plugin.py:9
int RESULT
Definition: object.h:12
Definition: idvb.h:832