mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
cPatPmtParser::ParsePmt() now also recognizes stream type 0x81 as "AC3"
This commit is contained in:
parent
ed456adc80
commit
e11908cae6
@ -2946,3 +2946,8 @@ Oliver Schinagl <oliver@schinagl.nl>
|
||||
Andrey Pridvorov <ua0lnj@bk.ru>
|
||||
for reporting a problem with detecting frames in MPEG 4 video, and pointing towards
|
||||
a better way of doing it
|
||||
|
||||
Jens Vogel <jens.vogel@akjv.de>
|
||||
for suggesting to make cPatPmtParser::ParsePmt() also recognize stream type 0x81
|
||||
as "AC3", so that recordings that have been converted from the old PES format to
|
||||
TS can be played
|
||||
|
5
HISTORY
5
HISTORY
@ -7235,7 +7235,7 @@ Video Disk Recorder Revision History
|
||||
function in order to make use of this new feature. See, for instance, the function
|
||||
cSkinClassicDisplayMenu::SetButtons() in skinclassic.c for details.
|
||||
|
||||
2012-09-18: Version 1.7.31
|
||||
2012-09-19: Version 1.7.31
|
||||
|
||||
- If regenerating an index file fails and no data is written to the file, VDR now
|
||||
reports this error and removes the empty index file.
|
||||
@ -7246,3 +7246,6 @@ Video Disk Recorder Revision History
|
||||
- The script given to VDR with the '-r' option is now also called whenever a
|
||||
recording is deleted (thanks to Alexander Wenzel).
|
||||
- Improved detecting frames in MPEG 4 video (reported by Andrey Pridvorov).
|
||||
- cPatPmtParser::ParsePmt() now also recognizes stream type 0x81 as "AC3", so that
|
||||
recordings that have been converted from the old PES format to TS can be played
|
||||
(suggested by Jens Vogel).
|
||||
|
30
remux.c
30
remux.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: remux.c 2.66 2012/09/18 09:11:24 kls Exp $
|
||||
* $Id: remux.c 2.67 2012/09/19 10:28:42 kls Exp $
|
||||
*/
|
||||
|
||||
#include "remux.h"
|
||||
@ -622,6 +622,34 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x81: // STREAMTYPE_USER_PRIVATE
|
||||
{
|
||||
dbgpatpmt(" AC3");
|
||||
char lang[MAXLANGCODE1] = { 0 };
|
||||
SI::Descriptor *d;
|
||||
for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) {
|
||||
switch (d->getDescriptorTag()) {
|
||||
case SI::ISO639LanguageDescriptorTag: {
|
||||
SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
|
||||
dbgpatpmt(" '%s'", ld->languageCode);
|
||||
strn0cpy(lang, I18nNormalizeLanguageCode(ld->languageCode), MAXLANGCODE1);
|
||||
}
|
||||
break;
|
||||
default: ;
|
||||
}
|
||||
delete d;
|
||||
}
|
||||
if (NumDpids < MAXDPIDS) {
|
||||
dpids[NumDpids] = stream.getPid();
|
||||
dtypes[NumDpids] = SI::AC3DescriptorTag;
|
||||
strn0cpy(dlangs[NumDpids], lang, sizeof(dlangs[NumDpids]));
|
||||
if (updatePrimaryDevice && Setup.UseDolbyDigital)
|
||||
cDevice::PrimaryDevice()->SetAvailableTrack(ttDolby, NumDpids, stream.getPid(), lang);
|
||||
NumDpids++;
|
||||
dpids[NumDpids]= 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default: ;
|
||||
}
|
||||
dbgpatpmt("\n");
|
||||
|
Loading…
Reference in New Issue
Block a user