Fixed the "pre 1.3.19" compatibility mode for old Dolby Digital recordings

This commit is contained in:
Klaus Schmidinger 2005-02-06 13:19:19 +01:00
parent 20b213201a
commit e57611dfd3
3 changed files with 12 additions and 4 deletions

View File

@ -267,6 +267,8 @@ Werner Fink <werner@suse.de>
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() for pointing out an error in masking SubStreamType in cDevice::PlayPesPacket()
for pointing out that the "pre 1.3.19" compatibility mode for old Dolby Digital
recordings can be triggered in the default branch
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

@ -3367,3 +3367,5 @@ Video Disk Recorder Revision History
that has DD and selecting the DD audio track). that has DD and selecting the DD audio track).
- Removed 'flags' from tTrackId (thought we would need this, but apparently we don't). - Removed 'flags' from tTrackId (thought we would need this, but apparently we don't).
- Making sure the "Mute" and "Volume+/-" keys don't interfere with digital audio. - Making sure the "Mute" and "Volume+/-" keys don't interfere with digital audio.
- Fixed the "pre 1.3.19" compatibility mode for old Dolby Digital recordings (thanks
to Werner Fink for pointing out that this can be triggered in the default branch).

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.84 2005/02/06 12:30:01 kls Exp $ * $Id: device.c 1.85 2005/02/06 13:13:31 kls Exp $
*/ */
#include "device.h" #include "device.h"
@ -857,9 +857,6 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
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:
//TODO apparently this doesn't work for old ORF Dolby Digital recordings
if (!pre_1_3_19_PrivateStream && (Data[6] & 4) && Data[PayloadOffset] == 0x0B && Data[PayloadOffset + 1] == 0x77)
pre_1_3_19_PrivateStream = true;
if (pre_1_3_19_PrivateStream) { if (pre_1_3_19_PrivateStream) {
SubStreamId = c; SubStreamId = c;
SubStreamType = 0x80; SubStreamType = 0x80;
@ -885,6 +882,13 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
if (!VideoOnly && SubStreamId == availableTracks[currentAudioTrack].id) if (!VideoOnly && SubStreamId == availableTracks[currentAudioTrack].id)
w = PlayAudio(Start, d); w = PlayAudio(Start, d);
break; break;
default:
// Compatibility mode for old VDR recordings, where 0xBD was only AC3:
if (!pre_1_3_19_PrivateStream) {
dsyslog("switching to pre 1.3.19 Dolby Digital compatibility mode");
ClrAvailableTracks();
pre_1_3_19_PrivateStream = true;
}
} }
} }
break; break;