From a430f64252f5b38bb19dc151c3793d66d64a8fb7 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 30 Jan 2005 13:38:06 +0100 Subject: [PATCH] Fixed masking SubStreamType in cDevice::PlayPesPacket() --- CONTRIBUTORS | 1 + HISTORY | 2 ++ device.c | 5 +++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 8e5425f7..2e540271 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -266,6 +266,7 @@ Werner Fink overhead in the firmware 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 + for pointing out an error in masking SubStreamType in cDevice::PlayPesPacket() Rolf Hakenes for providing 'libdtv' and adapting the EIT mechanisms to it diff --git a/HISTORY b/HISTORY index 030db1c2..e5e47abb 100644 --- a/HISTORY +++ b/HISTORY @@ -3343,3 +3343,5 @@ Video Disk Recorder Revision History pointing this out). - Fixed a buffer overflow in case a station defines all 32 audio PIDs (thanks to Christian Jacobsen for reporting this one). +- Fixed masking SubStreamType in cDevice::PlayPesPacket() (thanks to Werner Fink + for pointing out this one). diff --git a/device.c b/device.c index 723d23df..425ee6a9 100644 --- a/device.c +++ b/device.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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" @@ -842,7 +842,7 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly) case 0xBD: { // private stream 1 int PayloadOffset = Data[8] + 9; uchar SubStreamId = Data[PayloadOffset]; - uchar SubStreamType = SubStreamId & 0xE0; + uchar SubStreamType = SubStreamId & 0xF0; uchar SubStreamIndex = SubStreamId & 0x1F; // 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) { case 0x20: // SPU + case 0x30: // SPU break; case 0x80: // AC3 & DTS if (Setup.UseDolbyDigital) {