summaryrefslogtreecommitdiff
path: root/frontend.h
diff options
context:
space:
mode:
Diffstat (limited to 'frontend.h')
-rw-r--r--frontend.h143
1 files changed, 143 insertions, 0 deletions
diff --git a/frontend.h b/frontend.h
new file mode 100644
index 00000000..9110ad44
--- /dev/null
+++ b/frontend.h
@@ -0,0 +1,143 @@
+/*
+ * frontend.h:
+ *
+ * See the main source file 'xineliboutput.c' for copyright information and
+ * how to reach the author.
+ *
+ * $Id: frontend.h,v 1.1 2006-06-03 09:50:54 phintuka Exp $
+ *
+ */
+
+#ifndef __XINELIB_FRONTEND_H
+#define __XINELIB_FRONTEND_H
+
+#include <vdr/tools.h>
+#include <vdr/thread.h>
+
+//----------------------------- cXinelibThread --------------------------------
+
+class cXinelibThread : public cThread, public cListObject
+{
+ private:
+ cXinelibThread(cXinelibThread&); // no copy contructor
+
+ public:
+ cXinelibThread(const char *Description = NULL);
+ virtual ~cXinelibThread();
+
+ //
+ // Thread control
+ //
+
+ public:
+ virtual void Start(void);
+ virtual void Stop(void);
+ bool IsReady(void);
+ bool IsFinished(void);
+
+ protected:
+ void SetStopSignal(void);
+ bool GetStopSignal(void);
+
+ virtual void Action(void) = 0;
+
+ //
+ // Playback control
+ //
+
+ public:
+ void PauseOutput(void) { TrickSpeed(0); }
+ void ResumeOutput(void) { TrickSpeed(1); }
+ void TrickSpeed(int Speed);
+ void SetVolume(int NewVolume);
+ void SetLiveMode(bool);
+ void SetStillMode(bool);
+ void SetNoVideo(bool bVal);
+ void AudioStreamChanged(bool ac3, int StreamId);
+ void SpuStreamChanged(int StreamId);
+
+ protected:
+ int Xine_Control(const char *cmd, char *p1);
+ int Xine_Control(const char *cmd, int p1);
+ int Xine_Control(const char *cmd, int64_t p1);
+
+ virtual int Xine_Control(const char *cmd) = 0;
+
+ virtual void Xine_Sync(void) {};
+
+ //
+ // Data transfer
+ //
+
+ public:
+ virtual bool Poll(cPoller &Poller, int TimeoutMs);
+ virtual bool Flush(int TimeoutMs);
+ virtual void Clear(void);
+ virtual int Play_PES(const uchar *buf, int len);
+ virtual void OsdCmd(void *cmd) = 0;
+ virtual int64_t GetSTC(void) { return -1; }
+
+ // Stream type conversions
+ int Play_Mpeg1_PES(const uchar *data, int len);
+ bool Play_Mpeg2_ES(const uchar *data, int len, int streamID);
+
+ // Built-in still images
+ bool BlankDisplay(void);
+ bool QueueBlankDisplay(void);
+ bool LogoDisplay(void);
+ bool NoSignalDisplay(void);
+
+ // Playback files
+ virtual bool PlayFile(const char *FileName, int Position,
+ bool LoopPlay=false);
+ virtual int PlayFileCtrl(const char *Cmd) { return Xine_Control(Cmd); }
+ virtual bool EndOfStreamReached(void);
+
+ // Image grabbing
+ virtual uchar *GrabImage(int &Size, bool Jpeg, int Quality,
+ int SizeX, int SizeY) { return NULL; }
+
+ static void KeypressHandler(char *keymap, char *key,
+ bool repeat, bool release);
+
+ //
+ // Configuration
+ //
+
+ public:
+ virtual int ConfigureOSD(bool prescale_osd=false, bool unscaled_osd=false);
+ virtual int ConfigurePostprocessing(char *deinterlace_method,
+ int audio_delay,
+ int audio_compression,
+ int *audio_equalizer,
+ int audio_surround);
+ virtual int ConfigurePostprocessing(char *name, bool on, char *args);
+ virtual int ConfigureVideo(int hue, int saturation,
+ int brightness, int contrast);
+ // Local frontend:
+ virtual void ConfigureWindow(int fullscreen, int width, int height,
+ int modeswitch, char *modeline,
+ int aspect, int scale_video,
+ int field_order) {};
+ virtual void ConfigureDecoder(int pes_buffers, int priority) {};
+ // Remote frontend server:
+ virtual bool Listen(int port) { return false; }
+
+ //
+ // Data
+ //
+
+ protected:
+ bool m_bStopThread;
+ bool m_bReady;
+ bool m_bIsFinished;
+ bool m_bNoVideo;
+ bool m_bLiveMode;
+ bool m_bEndOfStreamReached;
+ bool m_bPlayingFile;
+ char *m_FileName;
+ uint64_t m_StreamPos;
+};
+
+
+#endif // __XINELIB_FRONTEND_H