summaryrefslogtreecommitdiff
path: root/radioaudio.h
diff options
context:
space:
mode:
Diffstat (limited to 'radioaudio.h')
-rw-r--r--radioaudio.h241
1 files changed, 241 insertions, 0 deletions
diff --git a/radioaudio.h b/radioaudio.h
new file mode 100644
index 0000000..90c9cae
--- /dev/null
+++ b/radioaudio.h
@@ -0,0 +1,241 @@
+/*
+ * radioaudio.h - part of radio.c, a plugin for the Video Disk Recorder
+ *
+ * See the README file for copyright information and how to reach the author.
+ *
+ */
+
+#ifndef __RADIO_AUDIO_H
+#define __RADIO_AUDIO_H
+
+#include <linux/types.h>
+#include <linux/dvb/video.h>
+#include <vdr/player.h>
+#include <vdr/device.h>
+#include <vdr/audio.h>
+#include <vdr/osd.h>
+#include <vdr/menu.h>
+#include <vdr/receiver.h>
+
+extern char *ConfigDir;
+extern char *DataDir;
+extern char *ReplayFile;
+
+//Setup-Params
+extern int S_RtFunc;
+extern int S_StillPic;
+extern int S_RtOsdTitle;
+extern int S_RtOsdTags;
+extern int S_RtOsdPos;
+extern int S_RtOsdRows;
+extern int S_RtOsdLoop;
+extern int S_RtOsdTO;
+extern int S_RtSkinColor;
+extern int S_RtBgCol;
+extern int S_RtBgTra;
+extern int S_RtFgCol;
+extern int S_RtDispl;
+extern int S_RtMsgItems;
+extern int S_RassText;
+extern int S_RockAnt;
+extern uint32_t rt_color[9];
+extern int S_Verbose;
+//Radiotext
+#define RT_MEL 65
+extern char RT_Text[5][RT_MEL];
+extern char RTP_Artist[RT_MEL], RTP_Title[RT_MEL];
+extern int RT_Info, RT_Index, RT_PTY;
+extern time_t RTP_Starttime;
+extern bool RT_OsdTO, RTplus_Osd, RT_ReOpen;
+extern int Radio_CA;
+extern int RT_OsdTOTemp;
+extern int IsRadioOrReplay;
+extern int RT_Charset;
+// Info
+extern bool InfoRequest;
+
+void radioStatusMsg(void);
+
+// seperate thread for showing RadioImages
+class cRadioImage: public cThread {
+private:
+ char *imagepath;
+ bool imageShown;
+ void Show (const char *file);
+ void send_pes_packet(unsigned char *data, int len, int timestamp);
+protected:
+ virtual void Action(void);
+ void Stop(void);
+public:
+ cRadioImage(void);
+ virtual ~cRadioImage();
+ static void Init(void);
+ static void Exit(void);
+ void SetBackgroundImage(const char *Image);
+};
+
+// RDS-Receiver for seperate Data-Pids
+class cRDSReceiver : public cReceiver {
+private:
+ int pid;
+ bool rt_start;
+ bool rt_bstuff;
+protected:
+ virtual void Receive(uchar *Data, int Length);
+public:
+ cRDSReceiver(int Pid);
+ virtual ~cRDSReceiver(void);
+};
+
+class cRadioAudio : public cAudio {
+private:
+ bool enabled;
+ int first_packets;
+ int audiopid;
+ bool bratefound;
+ //Radiotext
+ cDevice *rdsdevice;
+ void RadiotextCheckPES(const uchar *Data, int Length);
+ void RadiotextCheckTS(const uchar *Data, int Length);
+ void AudioRecorderService(void);
+ void RassDecode(uchar *Data, int Length);
+protected:
+ virtual void Play(const uchar *Data, int Length, uchar Id);
+ virtual void PlayTs(const uchar *Data, int Length);
+ virtual void Mute(bool On) {};
+ virtual void Clear(void) {};
+public:
+ cRadioAudio(void);
+ virtual ~cRadioAudio(void);
+ char *bitrate;
+ void EnableRadioTextProcessing(const char *Titel, int apid, bool replay = false);
+ void DisableRadioTextProcessing();
+ void RadiotextDecode(uchar *Data, int Length);
+ void RDS_PsPtynDecode(bool PTYN, uchar *Data, int Length);
+};
+
+class cRadioTextOsd : public cOsdObject, public cCharSetConv {
+private:
+ cOsd *osd;
+ cOsd *qosd;
+ cOsd *qiosd;
+ const cFont *ftitel;
+ const cFont *ftext;
+ int fheight;
+ int bheight;
+ eKeys LastKey;
+ cTimeMs osdtimer;
+ void rtp_print(void);
+ bool rtclosed;
+ bool rassclosed;
+ static cBitmap rds, arec, rass, radio;
+ static cBitmap index, marker, page1, pages2, pages3, pages4, pageE;
+ static cBitmap no0, no1, no2, no3, no4, no5, no6, no7, no8, no9, bok;
+public:
+ cRadioTextOsd();
+ ~cRadioTextOsd();
+ virtual void Hide(void);
+ virtual void Show(void);
+ virtual void ShowText(void);
+ virtual void RTOsdClose(void);
+ int RassImage(int QArchiv, int QKey, bool DirUp);
+ virtual void RassOsd(void);
+ virtual void RassOsdTip(void);
+ virtual void RassOsdClose(void);
+ virtual void RassImgSave(const char *size, int pos);
+ virtual eOSState ProcessKey(eKeys Key);
+ virtual bool IsInteractive(void) { return false; }
+};
+
+class cRTplusOsd : public cOsdMenu, public cCharSetConv {
+private:
+ int bcount;
+ int helpmode;
+ const char *listtyp[7];
+ char *btext[7];
+ int rtptyp(char *btext);
+ void rtp_fileprint(void);
+public:
+ cRTplusOsd(void);
+ virtual ~cRTplusOsd();
+ virtual void Load(void);
+ virtual void Update(void);
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+class cRTplusList : public cOsdMenu, public cCharSetConv {
+private:
+ int typ;
+ bool refresh;
+public:
+ cRTplusList(int Typ = 0);
+ ~cRTplusList();
+ virtual void Load(void);
+ virtual void Update(void);
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+
+// Radiotext-Memory RT+Classes 2.1
+#define MAX_RTPC 50
+struct rtp_classes {
+ time_t start;
+ char temptext[RT_MEL];
+ char *radiotext[2*MAX_RTPC];
+ int rt_Index;
+ // Item
+ bool item_New;
+ char *item_Title[MAX_RTPC]; // 1
+ char *item_Artist[MAX_RTPC]; // 4
+ time_t item_Start[MAX_RTPC];
+ int item_Index;
+ // Info
+ char *info_News; // 12
+ char *info_NewsLocal; // 13
+ char *info_Stock[MAX_RTPC]; // 14
+ int info_StockIndex;
+ char *info_Sport[MAX_RTPC]; // 15
+ int info_SportIndex;
+ char *info_Lottery[MAX_RTPC]; // 16
+ int info_LotteryIndex;
+ char *info_DateTime; // 24
+ char *info_Weather[MAX_RTPC]; // 25
+ int info_WeatherIndex;
+ char *info_Traffic; // 26
+ char *info_Alarm; // 27
+ char *info_Advert; // 28
+ char *info_Url; // 29
+ char *info_Other[MAX_RTPC]; // 30
+ int info_OtherIndex;
+ // Programme
+ char *prog_StatShort; // 31
+ char *prog_Station; // 32
+ char *prog_Now; // 33
+ char *prog_Next; // 34
+ char *prog_Part; // 35
+ char *prog_Host; // 36
+ char *prog_EditStaff; // 37
+ char *prog_Homepage; // 39
+ // Interactivity
+ char *phone_Hotline; // 41
+ char *phone_Studio; // 42
+ char *sms_Studio; // 44
+ char *email_Hotline; // 46
+ char *email_Studio; // 47
+// to be continue...
+};
+
+// plugin audiorecorder service
+struct Audiorecorder_StatusRtpChannel_v1_0 {
+ const cChannel *channel;
+ int status;
+ /*
+ * 0 = channel is unknown ...
+ * 1 = no receiver is attached
+ * 2 = receiver is attached
+ * 3 = actual recording
+ */
+};
+extern const cChannel *chan;
+
+#endif //__RADIO_AUDIO_H