Implemented handling the standard component descriptor for AC3

This commit is contained in:
Klaus Schmidinger 2008-05-01 15:41:04 +02:00
parent df12c00ff8
commit 7d1b84a997
7 changed files with 24 additions and 11 deletions

View File

@ -1329,6 +1329,8 @@ Marc Hoppe <MarcHoppe@gmx.de>
Michael Pennewiß <M.Pennewiss@ARD-Digital.de>
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 <minibbjd@gmx.de>
for adding some 3-letter language codes

View File

@ -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

4
eit.c
View File

@ -8,7 +8,7 @@
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
*
* $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)];

8
epg.c
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
*
* $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];
}

4
menu.c
View File

@ -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;
}
}
}

View File

@ -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))

4
vdr.5
View File

@ -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.
<title> @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