summaryrefslogtreecommitdiff
path: root/VDR.1.1.25.patch
diff options
context:
space:
mode:
Diffstat (limited to 'VDR.1.1.25.patch')
-rw-r--r--VDR.1.1.25.patch250
1 files changed, 0 insertions, 250 deletions
diff --git a/VDR.1.1.25.patch b/VDR.1.1.25.patch
deleted file mode 100644
index 3c825c3..0000000
--- a/VDR.1.1.25.patch
+++ /dev/null
@@ -1,250 +0,0 @@
-diff -upr ./DIST/vdr-1.1.25/Makefile ./Makefile
---- ./DIST/vdr-1.1.25/Makefile 2003-01-06 13:28:09.000000000 +0100
-+++ ./Makefile 2003-03-07 03:19:33.000000000 +0100
-@@ -36,7 +36,8 @@ OBJS = audio.o channels.o ci.o config.o
- dvbplayer.o dvbspu.o eit.o eitscan.o font.o i18n.o interface.o keys.o\
- lirc.o menu.o menuitems.o osdbase.o osd.o player.o plugin.o rcu.o\
- receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sources.o\
-- spu.o status.o svdrp.o thread.o timers.o tools.o transfer.o vdr.o videodir.o
-+ spu.o status.o svdrp.o thread.o timers.o tools.o transfer.o vdr.o videodir.o\
-+ vdrttxtsubshooks.o
-
- OSDFONT = -adobe-helvetica-medium-r-normal--23-*-100-100-p-*-iso8859-1
- FIXFONT = -adobe-courier-bold-r-normal--25-*-100-100-m-*-iso8859-1
-diff -upr ./DIST/vdr-1.1.25/dvbplayer.c ./dvbplayer.c
---- ./DIST/vdr-1.1.25/dvbplayer.c 2003-02-15 11:38:59.000000000 +0100
-+++ ./dvbplayer.c 2003-03-07 03:52:55.000000000 +0100
-@@ -13,6 +13,7 @@
- #include "ringbuffer.h"
- #include "thread.h"
- #include "tools.h"
-+#include "vdrttxtsubshooks.h"
-
- // --- cBackTrace ----------------------------------------------------------
-
-@@ -318,6 +319,12 @@ void cDvbPlayer::StripAudioPackets(uchar
- int l = b[i + 4] * 256 + b[i + 5] + 6;
- switch (c) {
- case 0xBD: // dolby
-+#ifdef VDRTTXTSUBSHOOKS
-+ if (b[i + 8] == 0x24 && b[i + 45] >= 0x10 && b[i + 45] < 0x20) {
-+ break; // run these through the ring buffer to get somewhat correct
-+ // timing for the subtitles
-+ } else
-+#endif
- if (Except)
- PlayAudio(&b[i], l);
- // continue with deleting the data - otherwise it disturbs DVB replay
-@@ -347,6 +354,40 @@ void cDvbPlayer::StripAudioPackets(uchar
- }
- }
-
-+#ifdef VDRTTXTSUBSHOOKS
-+static void StripTtxtPackets(uchar *b, int Length)
-+{
-+ for (int i = 0; i < Length - 6; i++) {
-+ if (b[i] == 0x00 && b[i + 1] == 0x00 && b[i + 2] == 0x01) {
-+ uchar c = b[i + 3];
-+ int l = b[i + 4] * 256 + b[i + 5] + 6;
-+ switch (c) {
-+ case 0xBD: // dolby
-+ {
-+ if (b[i + 8] == 0x24 && b[i + 45] >= 0x10 && b[i + 45] < 0x20) {
-+ // EBU Teletext data, ETSI EN 300 472
-+ cVDRTtxtsubsHookListener::Hook()->PlayerTeletextData(&b[i], l);
-+ }
-+ // continue with deleting the data - otherwise it disturbs DVB replay
-+ int n = l;
-+ for (int j = i; j < Length && n--; j++)
-+ b[j] = 0x00;
-+ break;
-+ }
-+ default:
-+ break;
-+ }
-+ if (l)
-+ i += l - 1; // the loop increments, too!
-+ }
-+ /*XXX
-+ else
-+ esyslog("ERROR: broken packet header");
-+ XXX*/
-+ }
-+}
-+#endif
-+
- bool cDvbPlayer::NextFile(uchar FileNumber, int FileOffset)
- {
- if (FileNumber > 0)
-@@ -514,6 +555,11 @@ void cDvbPlayer::Action(void)
- p = playFrame->Data();
- pc = playFrame->Count();
- }
-+#ifdef VDRTTXTSUBSHOOKS
-+ // pick out the teletext packets here
-+ if(p)
-+ StripTtxtPackets((uchar *) p, pc);
-+#endif
- if (p) {
- int w = PlayVideo(p, pc);
- if (w > 0) {
-diff -upr ./DIST/vdr-1.1.25/menu.c ./menu.c
---- ./DIST/vdr-1.1.25/menu.c 2003-02-09 13:55:38.000000000 +0100
-+++ ./menu.c 2003-03-07 03:38:14.000000000 +0100
-@@ -2931,8 +2931,18 @@ cRecordControl::cRecordControl(cDevice *
- fileName = strdup(Recording.FileName());
- cRecordingUserCommand::InvokeCommand(RUC_BEFORERECORDING, fileName);
- const cChannel *ch = timer->Channel();
-+#ifdef VDRTTXTSUBSHOOKS
-+ cTtxtSubsRecorderBase *subsRecorder = cVDRTtxtsubsHookListener::Hook()
-+ ->NewTtxtSubsRecorder(device, ch);
-+ recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2(), subsRecorder);
-+#else
- recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2());
-+#endif
- if (device->AttachReceiver(recorder)) {
-+#ifdef VDRTTXTSUBSHOOKS
-+ if(subsRecorder)
-+ subsRecorder->DeviceAttach();
-+#endif
- Recording.WriteSummary();
- cStatus::MsgRecording(device, Recording.Name());
- }
-diff -upr ./DIST/vdr-1.1.25/menu.h ./menu.h
---- ./DIST/vdr-1.1.25/menu.h 2003-01-12 15:54:05.000000000 +0100
-+++ ./menu.h 2003-03-07 03:33:28.000000000 +0100
-@@ -14,6 +14,7 @@
- #include "device.h"
- #include "osd.h"
- #include "dvbplayer.h"
-+#include "vdrttxtsubshooks.h"
- #include "recorder.h"
- #include "recording.h"
-
-diff -upr ./DIST/vdr-1.1.25/osd.c ./osd.c
---- ./DIST/vdr-1.1.25/osd.c 2002-12-08 14:17:13.000000000 +0100
-+++ ./osd.c 2003-03-07 03:55:32.000000000 +0100
-@@ -12,6 +12,7 @@
- #include "device.h"
- #include "i18n.h"
- #include "status.h"
-+#include "vdrttxtsubshooks.h"
-
- // --- cOsd ------------------------------------------------------------------
-
-@@ -96,6 +97,9 @@ void cOsd::Open(int w, int h)
- d *= lineHeight;
- int x = (720 - w + charWidth) / 2; //TODO PAL vs. NTSC???
- int y = (576 - Setup.OSDheight * lineHeight) / 2 + d;
-+#ifdef VDRTTXTSUBSHOOKS
-+ cVDRTtxtsubsHookListener::Hook()->HideOSD();
-+#endif
- //XXX
- osd = OpenRaw(x, y);
- //XXX TODO this should be transferred to the places where the individual windows are requested (there's too much detailed knowledge here!)
-@@ -136,6 +140,9 @@ void cOsd::Close(void)
- delete osd;
- osd = NULL;
- #endif
-+#ifdef VDRTTXTSUBSHOOKS
-+ cVDRTtxtsubsHookListener::Hook()->ShowOSD();
-+#endif
- }
-
- void cOsd::Clear(void)
-diff -upr ./DIST/vdr-1.1.25/recorder.c ./recorder.c
---- ./DIST/vdr-1.1.25/recorder.c 2003-01-25 17:23:36.000000000 +0100
-+++ ./recorder.c 2003-03-07 03:54:10.000000000 +0100
-@@ -10,6 +10,8 @@
- #include <stdarg.h>
- #include <stdio.h>
- #include <unistd.h>
-+#include <stdint.h>
-+#include "vdrttxtsubshooks.h"
- #include "recorder.h"
-
- // The size of the array used to buffer video data:
-@@ -19,7 +21,11 @@
- #define MINFREEDISKSPACE (512) // MB
- #define DISKCHECKINTERVAL 100 // seconds
-
-+#ifdef VDRTTXTSUBSHOOKS
-+cRecorder::cRecorder(const char *FileName, int Ca, int Priority, int VPid, int APid1, int APid2, int DPid1, int DPid2, cTtxtSubsRecorderBase *tsr)
-+#else
- cRecorder::cRecorder(const char *FileName, int Ca, int Priority, int VPid, int APid1, int APid2, int DPid1, int DPid2)
-+#endif
- :cReceiver(Ca, Priority, 5, VPid, APid1, APid2, DPid1, DPid2)
- {
- ringBuffer = NULL;
-@@ -30,6 +36,9 @@ cRecorder::cRecorder(const char *FileNam
- fileSize = 0;
- active = false;
- lastDiskSpaceCheck = time(NULL);
-+#ifdef VDRTTXTSUBSHOOKS
-+ ttxtSubsRecorder = tsr;
-+#endif
- isyslog("record %s", FileName);
-
- // Create directories if necessary:
-@@ -57,6 +66,10 @@ cRecorder::cRecorder(const char *FileNam
- cRecorder::~cRecorder()
- {
- Detach();
-+#ifdef VDRTTXTSUBSHOOKS
-+ if(ttxtSubsRecorder)
-+ delete ttxtSubsRecorder;
-+#endif
- delete index;
- delete fileName;
- delete remux;
-@@ -130,6 +143,19 @@ void cRecorder::Action(void)
- break;
- }
- fileSize += Result;
-+#ifdef VDRTTXTSUBSHOOKS
-+ // not sure if the pictureType test is needed, but it seems we can get
-+ // incomplete pes packets from remux if we are not getting pictures?
-+ if (ttxtSubsRecorder && pictureType != NO_PICTURE) {
-+ uint8_t *subsp;
-+ size_t len;
-+ if(ttxtSubsRecorder->GetPacket(&subsp, &len)) {
-+ safe_write(recordFile, subsp, len);
-+ fileSize += len;
-+ // fprintf(stderr, "cRecorder::Action: Wrote ttxtsubs data len %d\n", len); // XXX
-+ }
-+ }
-+#endif
- }
- else
- break;
-diff -upr ./DIST/vdr-1.1.25/recorder.h ./recorder.h
---- ./DIST/vdr-1.1.25/recorder.h 2002-06-08 11:35:03.000000000 +0200
-+++ ./recorder.h 2003-03-07 03:50:33.000000000 +0100
-@@ -15,6 +15,7 @@
- #include "remux.h"
- #include "ringbuffer.h"
- #include "thread.h"
-+#include "vdrttxtsubshooks.h"
-
- class cRecorder : public cReceiver, cThread {
- private:
-@@ -29,12 +30,19 @@ private:
- time_t lastDiskSpaceCheck;
- bool RunningLowOnDiskSpace(void);
- bool NextFile(void);
-+#ifdef VDRTTXTSUBSHOOKS
-+ cTtxtSubsRecorderBase *ttxtSubsRecorder;
-+#endif
- protected:
- virtual void Activate(bool On);
- virtual void Receive(uchar *Data, int Length);
- virtual void Action(void);
- public:
-+#ifdef VDRTTXTSUBSHOOKS
-+ cRecorder(const char *FileName, int Ca, int Priority, int VPid, int APid1, int APid2, int DPid1, int DPid2, cTtxtSubsRecorderBase *tsr);
-+#else
- cRecorder(const char *FileName, int Ca, int Priority, int VPid, int APid1, int APid2, int DPid1, int DPid2);
-+#endif
- // Creates a new recorder that requires conditional access Ca, has
- // the given Priority and will record the given PIDs into the file FileName.
- virtual ~cRecorder();