diff options
-rw-r--r-- | pat.c | 10 | ||||
-rw-r--r-- | vdrttxtsubshooks.c | 2 | ||||
-rw-r--r-- | vdrttxtsubshooks.h | 4 |
3 files changed, 15 insertions, 1 deletions
@@ -13,6 +13,7 @@ #include "libsi/section.h" #include "libsi/descriptor.h" #include "thread.h" +#include "vdrttxtsubshooks.h" #define PMT_SCAN_TIMEOUT 10 // seconds @@ -458,6 +459,15 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length } if (Setup.UpdateChannels >= 2) { Channel->SetPids(Vpid, Ppid, Vtype, Apids, ALangs, Dpids, DLangs, Spids, SLangs, Tpid); + if (NumTPages < MAXTPAGES) { + int manualPageNumber = cVDRTtxtsubsHookListener::Hook()->ManualPageNumber(Channel); + if (manualPageNumber) { + char *s = TLangs[NumTPages]; + strn0cpy(s, "man", MAXLANGCODE1); + TPages[NumTPages] = manualPageNumber; + NumTPages++; + } + } Channel->SetTPidData(TLangs, TPages); Channel->SetCaIds(CaDescriptors->CaIds()); } diff --git a/vdrttxtsubshooks.c b/vdrttxtsubshooks.c index 081d107..01f5b5e 100644 --- a/vdrttxtsubshooks.c +++ b/vdrttxtsubshooks.c @@ -38,6 +38,8 @@ class cVDRTtxtsubsHookProxy : public cVDRTtxtsubsHookListener { if(gListener) gListener->PlayerTeletextData(p, length, IsPesRecording); }; virtual cTtxtSubsRecorderBase *NewTtxtSubsRecorder(cDevice *dev, const cChannel *ch) { if(gListener) return gListener->NewTtxtSubsRecorder(dev, ch); else return NULL; }; + virtual int ManualPageNumber(const cChannel *channel) + { if(gListener) return gListener->ManualPageNumber(channel); else return 0; }; }; diff --git a/vdrttxtsubshooks.h b/vdrttxtsubshooks.h index 5d3b7df..9f2eac2 100644 --- a/vdrttxtsubshooks.h +++ b/vdrttxtsubshooks.h @@ -41,12 +41,14 @@ class cVDRTtxtsubsHookListener { virtual ~cVDRTtxtsubsHookListener(); void HookAttach(void); - + virtual void HideOSD(void) {}; virtual void ShowOSD(void) {}; virtual void PlayerTeletextData(uint8_t *p, int length, bool IsPesRecording = true) {}; virtual cTtxtSubsRecorderBase *NewTtxtSubsRecorder(cDevice *dev, const cChannel *ch) { return NULL; }; + virtual int ManualPageNumber(const cChannel *channel) + { return 0; }; // used by VDR to call hook listeners static cVDRTtxtsubsHookListener *Hook(void); |