Bugfix in stripping audio packets

This commit is contained in:
Klaus Schmidinger 2001-06-16 09:43:03 +02:00
parent d17452dcfa
commit 7caf38b527
1 changed files with 11 additions and 8 deletions

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: dvbapi.c 1.74 2001/06/15 14:11:21 kls Exp $ * $Id: dvbapi.c 1.75 2001/06/16 09:43:03 kls Exp $
*/ */
#include "dvbapi.h" #include "dvbapi.h"
@ -797,13 +797,16 @@ void cReplayBuffer::StripAudioPackets(uchar *b, int Length, uchar Except)
uchar c = b[i + 3]; uchar c = b[i + 3];
switch (c) { switch (c) {
case 0xC0 ... 0xDF: // audio case 0xC0 ... 0xDF: // audio
if (c == 0xC1) {
canToggleAudioTrack = true; int n = b[i + 4] * 256 + b[i + 5];
if (!Except || c != Except) { if (c == 0xC1)
int n = b[i + 4] * 256 + b[i + 5]; canToggleAudioTrack = true;
for (int j = i; j < Length && n--; j++) if (!Except || c != Except) {
b[j] = 0x00; for (int j = i; j < Length && n--; j++)
} b[j] = 0x00;
}
i += n;
}
break; break;
case 0xE0 ... 0xEF: // video case 0xE0 ... 0xEF: // video
i += b[i + 4] * 256 + b[i + 5]; i += b[i + 4] * 256 + b[i + 5];