From 29c0f9e1e07e0ca00870e7b8e2f2c9457af80ec5 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 7 Oct 2006 13:59:21 +0200 Subject: [PATCH] Fixed handling language codes and descriptions of recorded audio tracks --- CONTRIBUTORS | 2 ++ HISTORY | 3 +++ epg.c | 5 +++-- epg.h | 3 ++- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index be608e76..6e79bc39 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2013,3 +2013,5 @@ Boguslaw Juza for reporting that events without an ExtendedEventDescriptor may get duplicate information in their ShortText through the EPG bugfixes in case they are received again + for reporting a problem with language codes of recorded audio tracks on channels with + multiple tracks diff --git a/HISTORY b/HISTORY index 0b680988..9ab232a3 100644 --- a/HISTORY +++ b/HISTORY @@ -4945,3 +4945,6 @@ Video Disk Recorder Revision History are received again). - Fixed handling video directory updates in case an other process has touched the .update file after the last NeedsUpdate() check (thanks to Petri Hintukainen). +- Fixed handling language codes and descriptions of recorded audio tracks on channels + with multiple tracks where not all of them appear in the event data (reported by + Boguslaw Juza). diff --git a/epg.c b/epg.c index b8b6b64d..960934ff 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.79 2006/08/05 10:04:17 kls Exp $ + * $Id: epg.c 1.80 2006/10/07 13:47:28 kls Exp $ */ #include "epg.h" @@ -87,7 +87,8 @@ 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++) { - if (components[i].stream == Stream && components[i].type == Type) { + // 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 (!Index--) return &components[i]; } diff --git a/epg.h b/epg.h index a937ff7d..792bb136 100644 --- a/epg.h +++ b/epg.h @@ -7,7 +7,7 @@ * Original version (as used in VDR before 1.3.0) written by * Robert Schneider and Rolf Hakenes . * - * $Id: epg.h 1.34 2006/03/25 12:39:39 kls Exp $ + * $Id: epg.h 1.35 2006/10/07 13:47:19 kls Exp $ */ #ifndef __EPG_H @@ -43,6 +43,7 @@ public: void SetComponent(int Index, uchar Stream, uchar Type, const char *Language, const char *Description); tComponent *Component(int Index) const { return (Index < numComponents) ? &components[Index] : NULL; } tComponent *GetComponent(int Index, uchar Stream, uchar Type); // Gets the Index'th component of Stream and Type, skipping other components + // In case of an audio stream the 'type' check actually just distinguishes between "normal" and "Dolby Digital" }; class cSchedule;