summaryrefslogtreecommitdiff
path: root/remux.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <kls (at) cadsoft (dot) de>2001-08-18 18:00:00 +0200
committerKlaus Schmidinger <kls (at) cadsoft (dot) de>2001-08-18 18:00:00 +0200
commit371bf0665eda455c67926999f52b4850cd8529e4 (patch)
tree383f39f92ef1f3846d89e4ae6ad7e39699334f01 /remux.c
parentefea0f64d08052b0189d962101e1a3634d4adfc8 (diff)
downloadvdr-patch-lnbsharing-371bf0665eda455c67926999f52b4850cd8529e4.tar.gz
vdr-patch-lnbsharing-371bf0665eda455c67926999f52b4850cd8529e4.tar.bz2
Version 0.92vdr-0.92
- The "channel not sync'ed" log message now also lists the card number. - Now using the EIT services from 'libdtv' (thanks to Rolf Hakenes), which provides EPG information for NVOD ("Near Video On Demand") channels. - Doing some bug fixing on the EPG data (some tv stations apparently have their own idea on how to fill in the data...). The level up to which EPG bugs are fixed can be controlled with the EPGBugfixLevel parameter in the "Setup" menu (see MANUAL for details, and cEventInfo::FixEpgBugs() in eit.c for the actual implementation). - Fixed broken recordings after a driver buffer overflow. - Fixed the chirping sound after Pause/Play of a DVD (thanks to Andreas Schultz).
Diffstat (limited to 'remux.c')
-rw-r--r--remux.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/remux.c b/remux.c
index 3c7ec6e..f89b897 100644
--- a/remux.c
+++ b/remux.c
@@ -8,7 +8,7 @@
* the Linux DVB driver's 'tuxplayer' example and were rewritten to suit
* VDR's needs.
*
- * $Id: remux.c 1.5 2001/06/24 16:37:23 kls Exp $
+ * $Id: remux.c 1.6 2001/08/19 11:52:05 kls Exp $
*/
/* The calling interface of the 'cRemux::Process()' function is defined
@@ -489,6 +489,8 @@ void cRemux::SetAudioPid(int APid)
resultCount = resultDelivered = 0;
}
+#define TS_SYNC_BYTE 0x47
+
const uchar *cRemux::Process(const uchar *Data, int &Count, int &Result, uchar *PictureType)
{
uchar dummyPictureType;
@@ -511,12 +513,27 @@ XXX*/
resultDelivered = 0;
}
+ int used = 0;
+
+ // Make sure we are looking at a TS packet:
+
+ while (Count > TS_SIZE) {
+ if (Data[0] == TS_SYNC_BYTE && Data[TS_SIZE] == TS_SYNC_BYTE)
+ break;
+ Data++;
+ Count--;
+ used++;
+ }
+ if (used)
+ esyslog(LOG_ERR, "ERROR: skipped %d byte to sync on TS packet", used);
+
// Convert incoming TS data into multiplexed PES:
- int used = 0;
for (int i = 0; i < Count; i += TS_SIZE) {
if (Count - i < TS_SIZE)
break;
+ if (Data[i] != TS_SYNC_BYTE)
+ break;
int pid = GetPid(Data + i + 1);
if (Data[i + 3] & 0x10) { // got payload
if (pid == vPid) vTS2PES->ts_to_pes(Data + i);