diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 6da4a699..f4e2b6a5 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1329,6 +1329,8 @@ Marc Hoppe Michael Pennewiß for pointing out that an empty EPG event means there is currently no running event + for advance information about the use of the standard component descriptor for AC3 + (stream=4) on the German ARD channels Marcus Mönnig for adding some 3-letter language codes diff --git a/HISTORY b/HISTORY index ba7318d3..e8ece147 100644 --- a/HISTORY +++ b/HISTORY @@ -5762,12 +5762,17 @@ Video Disk Recorder Revision History - Increased the time between checking the CAM status to 500ms to avoid problems with some CAMs (reported by Arthur Konovalov). -2008-04-19: Version 1.7.1 +2008-05-01: Version 1.7.1 - Adapted the tuning code to the new DVBFE_SET_DELSYS API (thanks to Reinhard Nissl). VDR now uses the driver from http://jusst.de/hg/multiproto_plus. - Updated the Italian OSD texts (thanks to Diego Pierotto). - Removed obsolete $(NCURSESLIB) from the Makefile. +- Implemented handling the standard component descriptor for AC3 (stream=4), as it + will soon be used by the German ARD channels (thanks to Michael Pennewiß for + advance information about this change). The previously used "Premiere pseudo + standard" (stream=2, type=5) still works, but has apparently been wrongfully used + by broadcasters from the beginning. 2008-04-19: Version 1.6.0-2 diff --git a/eit.c b/eit.c index d32629ef..774b6671 100644 --- a/eit.c +++ b/eit.c @@ -8,7 +8,7 @@ * Robert Schneider and Rolf Hakenes . * Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg . * - * $Id: eit.c 2.1 2008/04/13 11:27:06 kls Exp $ + * $Id: eit.c 2.2 2008/05/01 15:33:27 kls Exp $ */ #include "eit.h" @@ -219,7 +219,7 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data, bo SI::ComponentDescriptor *cd = (SI::ComponentDescriptor *)d; uchar Stream = cd->getStreamContent(); uchar Type = cd->getComponentType(); - if (1 <= Stream && Stream <= 3 && Type != 0) { // 1=video, 2=audio, 3=subtitles + if (1 <= Stream && Stream <= 4 && Type != 0) { // 1=video, 2=audio, 3=subtitles, 4=AC3 if (!Components) Components = new cComponents; char buffer[Utf8BufSize(256)]; diff --git a/epg.c b/epg.c index e01a7827..0c52a0c8 100644 --- a/epg.c +++ b/epg.c @@ -7,7 +7,7 @@ * Original version (as used in VDR before 1.3.0) written by * Robert Schneider and Rolf Hakenes . * - * $Id: epg.c 1.83 2008/02/16 16:09:12 kls Exp $ + * $Id: epg.c 2.1 2008/05/01 14:53:55 kls Exp $ */ #include "epg.h" @@ -88,8 +88,10 @@ void cComponents::SetComponent(int Index, uchar Stream, uchar Type, const char * tComponent *cComponents::GetComponent(int Index, uchar Stream, uchar Type) { for (int i = 0; i < numComponents; i++) { - // In case of an audio stream the 'type' check actually just distinguishes between "normal" and "Dolby Digital": - if (components[i].stream == Stream && (Stream != 2 || (components[i].type < 5) == (Type < 5))) { + if (components[i].stream == Stream && ( + Type == 0 || // don't care about the actual Type + Stream == 2 && (components[i].type < 5) == (Type < 5) // fallback "Dolby" component according to the "Premiere pseudo standard" + )) { if (!Index--) return &components[i]; } diff --git a/menu.c b/menu.c index da90018b..7fa1e3f1 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 2.1 2008/04/12 11:37:17 kls Exp $ + * $Id: menu.c 2.2 2008/05/01 14:37:24 kls Exp $ */ #include "menu.h" @@ -3147,6 +3147,8 @@ static void SetTrackDescriptions(int LiveChannel) break; case 3: cDevice::PrimaryDevice()->SetAvailableTrack(ttSubtitle, indexSubtitle++, 0, LiveChannel ? NULL : p->language, p->description); break; + case 4: cDevice::PrimaryDevice()->SetAvailableTrack(ttDolby, indexDolby++, 0, LiveChannel ? NULL : p->language, p->description); + break; } } } diff --git a/recording.c b/recording.c index 1535b46b..e0172ed7 100644 --- a/recording.c +++ b/recording.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.c 1.162 2008/02/24 10:28:53 kls Exp $ + * $Id: recording.c 2.1 2008/05/01 15:33:39 kls Exp $ */ #include "recording.h" @@ -297,7 +297,9 @@ cRecordingInfo::cRecordingInfo(const cChannel *Channel, const cEvent *Event) for (int i = 0; i < MAXDPIDS; i++) { const char *s = Channel->Dlang(i); if (*s) { - tComponent *Component = Components->GetComponent(i, 2, 5); + tComponent *Component = Components->GetComponent(i, 4, 0); // AC3 component according to the DVB standard + if (!Component) + Component = Components->GetComponent(i, 2, 5); // fallback "Dolby" component according to the "Premiere pseudo standard" if (!Component) Components->SetComponent(Components->NumComponents(), 2, 5, s, NULL); else if (strlen(s) > strlen(Component->language)) diff --git a/vdr.5 b/vdr.5 index 6f35e86a..de1a369a 100644 --- a/vdr.5 +++ b/vdr.5 @@ -8,7 +8,7 @@ .\" License as specified in the file COPYING that comes with the .\" vdr distribution. .\" -.\" $Id: vdr.5 2.1 2008/04/12 10:46:32 kls Exp $ +.\" $Id: vdr.5 2.2 2008/05/01 15:33:49 kls Exp $ .\" .TH vdr 5 "10 Feb 2008" "1.6" "Video Disk Recorder Files" .SH NAME @@ -652,7 +652,7 @@ l l. @is the title of the event <short text> @is the short text of the event (typically the name of the episode etc.) <description> @is the description of the event (any '|' characters will be interpreted as newlines) -<stream> @is the stream content (1 = video, 2 = audio, 3 = subtitles) +<stream> @is the stream content (1 = video, 2 = audio, 3 = subtitles, 4 = AC3) <type> @is the stream type according to ETSI EN 300 468 <language> @is the three letter language code (optionally two codes, separated by '+') <descr> @is the description of this stream component