diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2001-08-18 18:00:00 +0200 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2001-08-18 18:00:00 +0200 |
commit | 371bf0665eda455c67926999f52b4850cd8529e4 (patch) | |
tree | 383f39f92ef1f3846d89e4ae6ad7e39699334f01 /remux.c | |
parent | efea0f64d08052b0189d962101e1a3634d4adfc8 (diff) | |
download | vdr-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.c | 21 |
1 files changed, 19 insertions, 2 deletions
@@ -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); |