Fixed masking SubStreamType in cDevice::PlayPesPacket()

This commit is contained in:
Klaus Schmidinger 2005-01-30 13:38:06 +01:00
parent 250e79afbe
commit a430f64252
3 changed files with 6 additions and 2 deletions

View File

@ -266,6 +266,7 @@ Werner Fink <werner@suse.de>
overhead in the firmware overhead in the firmware
for a patch that was used as a base for implementing a modified PES packet for a patch that was used as a base for implementing a modified PES packet
handling in order to play AC3 audio over full featured DVB cards handling in order to play AC3 audio over full featured DVB cards
for pointing out an error in masking SubStreamType in cDevice::PlayPesPacket()
Rolf Hakenes <hakenes@hippomi.de> Rolf Hakenes <hakenes@hippomi.de>
for providing 'libdtv' and adapting the EIT mechanisms to it for providing 'libdtv' and adapting the EIT mechanisms to it

View File

@ -3343,3 +3343,5 @@ Video Disk Recorder Revision History
pointing this out). pointing this out).
- Fixed a buffer overflow in case a station defines all 32 audio PIDs (thanks to - Fixed a buffer overflow in case a station defines all 32 audio PIDs (thanks to
Christian Jacobsen for reporting this one). Christian Jacobsen for reporting this one).
- Fixed masking SubStreamType in cDevice::PlayPesPacket() (thanks to Werner Fink
for pointing out this one).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: device.c 1.79 2005/01/25 18:19:30 kls Exp $ * $Id: device.c 1.80 2005/01/30 12:52:45 kls Exp $
*/ */
#include "device.h" #include "device.h"
@ -842,7 +842,7 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
case 0xBD: { // private stream 1 case 0xBD: { // private stream 1
int PayloadOffset = Data[8] + 9; int PayloadOffset = Data[8] + 9;
uchar SubStreamId = Data[PayloadOffset]; uchar SubStreamId = Data[PayloadOffset];
uchar SubStreamType = SubStreamId & 0xE0; uchar SubStreamType = SubStreamId & 0xF0;
uchar SubStreamIndex = SubStreamId & 0x1F; uchar SubStreamIndex = SubStreamId & 0x1F;
// Compatibility mode for old VDR recordings, where 0xBD was only AC3: // Compatibility mode for old VDR recordings, where 0xBD was only AC3:
@ -857,6 +857,7 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
switch (SubStreamType) { switch (SubStreamType) {
case 0x20: // SPU case 0x20: // SPU
case 0x30: // SPU
break; break;
case 0x80: // AC3 & DTS case 0x80: // AC3 & DTS
if (Setup.UseDolbyDigital) { if (Setup.UseDolbyDigital) {