Version 1.3.30

- Improved responsiveness inside CAM menus.
- Added handling of the 'Close MMI' tag to avoid error log messages with CAMs
  that actually use it.
- Now waiting at startup until all DVB devices are ready. This includes having
  all CAMs initialized and ready to decrypt, so that no more "channel not
  available" happens if VDR is started with the current channel being an encrypted
  one, or a timer on such a channel hits right after starting VDR.
- Fixed cVideoRepacker to better handle errors in data (thanks to Reinhard Nissl).
- Fixed cDvbTuner to avoid lockups on NPTL systems (thanks to Marcel Wiesweg).
- Added 'Service' functions to the plugin interface (thanks to Udo Richter).
  See PLUGINS.html, section "Custom services" for details.
- Replaced the get/put_unaligned() macros from <asm/unaligned.h> with own inline
  functions to avoid problems on platforms that don't provide these (thanks to
  David Woodhouse for his help).
This commit is contained in:
Klaus Schmidinger
2005-08-21 18:00:00 +02:00
parent ddd1e13e53
commit dab203efe9
23 changed files with 911 additions and 94 deletions

20
remux.c
View File

@@ -11,7 +11,7 @@
* The cDolbyRepacker code was originally written by Reinhard Nissl <rnissl@gmx.de>,
* and adapted to the VDR coding style by Klaus.Schmidinger@cadsoft.de.
*
* $Id: remux.c 1.36 2005/07/30 10:23:00 kls Exp $
* $Id: remux.c 1.37 2005/08/21 08:58:58 kls Exp $
*/
#include "remux.h"
@@ -171,11 +171,9 @@ bool cVideoRepacker::PushOutPacket(cRingBufferLinear *ResultBuffer, const uchar
int Bite = fragmentLen + (Count >= 0 ? 0 : Count);
// put data into result buffer
int n = Put(ResultBuffer, fragmentData, Bite);
if (n != Bite) {
Reset();
return false;
}
fragmentLen = 0;
if (n != Bite)
return false;
}
else if (pesHeaderLen > 0) { // ... which is contained in the PES header buffer
int PacketLen = pesHeaderLen + Count - 6;
@@ -186,11 +184,9 @@ bool cVideoRepacker::PushOutPacket(cRingBufferLinear *ResultBuffer, const uchar
int Bite = pesHeaderLen + (Count >= 0 ? 0 : Count);
// put data into result buffer
int n = Put(ResultBuffer, pesHeader, Bite);
if (n != Bite) {
Reset();
return false;
}
pesHeaderLen = 0;
if (n != Bite)
return false;
}
// append further payload
if (Count > 0) {
@@ -198,10 +194,8 @@ bool cVideoRepacker::PushOutPacket(cRingBufferLinear *ResultBuffer, const uchar
int Bite = Count;
// put data into result buffer
int n = Put(ResultBuffer, Data, Bite);
if (n != Bite) {
Reset();
if (n != Bite)
return false;
}
}
// we did it ;-)
return true;
@@ -250,12 +244,10 @@ void cVideoRepacker::Repack(cRingBufferLinear *ResultBuffer, const uchar *Data,
switch (*data) {
case 0xB9 ... 0xFF: // system start codes
esyslog("cVideoRepacker: found system start code: stream seems to be scrambled or not demultiplexed");
Reset();
break;
case 0xB0 ... 0xB1: // reserved start codes
case 0xB6:
esyslog("cVideoRepacker: found reserved start code: stream seems to be scrambled");
Reset();
break;
case 0xB4: // sequence error code
isyslog("cVideoRepacker: found sequence error code: stream seems to be damaged");