Renamed the "plp id" to a more general "stream id" and added support for DVB-S2 "Input Stream Identifier" (ISI)

This commit is contained in:
Klaus Schmidinger 2013-03-07 09:51:06 +01:00
parent 0a0db91018
commit 16c931453d
35 changed files with 91 additions and 65 deletions

View File

@ -1159,6 +1159,8 @@ Rolf Ahrenberg <Rolf.Ahrenberg@saunalahti.fi>
for fixing reduced bpp support for DVB subtitles
for implementing "DVB Standard compliance" handling
for fixing the call to ChannelString() in cSkinLCARSDisplayChannel::SetChannel()
for a patch that was used to rename the "plp id" to a more general "stream id"
and add support for DVB-S2 "Input Stream Identifier" (ISI)
Ralf Klueber <ralf.klueber@vodafone.com>
for reporting a bug in cutting a recording if there is only a single editing mark

View File

@ -7689,7 +7689,7 @@ Video Disk Recorder Revision History
- When sorting recordings by name, folders are now always at the top of the list.
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
2013-03-06: Version 1.7.40
2013-03-07: Version 1.7.40
- The "Recording info" page of the skins that come with VDR now displays the name of
the channel (if available) from which this recording was taken.
@ -7717,3 +7717,6 @@ Video Disk Recorder Revision History
- Updated the Finnish OSD texts (thanks to Matti Lehtimäki).
- Updated the Arabic OSD texts (thanks to Osama Alrawab).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Renamed the "plp id" to a more general "stream id" and added support for DVB-S2
"Input Stream Identifier" (ISI) (based on a patch from Rolf Ahrenberg).
With this VDR now supports "multi streaming" on DVB-S2 and DVB-T2 transponders.

View File

@ -194,6 +194,7 @@ Devices:
handling of a CAM.
- The new functions cDevice::CanScaleVideo() and cDevice::ScaleVideo() can be used by
derived output devices to implement scaling the video to a given size and location.
- Added support for DVB-S2 and DVB-T2 transponders that use "multi streaming".
DiSEqC:

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: dvbdevice.c 2.83 2013/02/20 09:12:12 kls Exp $
* $Id: dvbdevice.c 2.84 2013/03/07 09:42:29 kls Exp $
*/
#include "dvbdevice.h"
@ -23,6 +23,7 @@
#if (DVB_API_VERSION << 8 | DVB_API_VERSION_MINOR) < 0x0508
#define DTV_STREAM_ID DTV_DVBT2_PLP_ID
#define FE_CAN_MULTISTREAM 0x4000000
#endif
#define DVBS_TUNE_TIMEOUT 9000 //ms
@ -207,7 +208,7 @@ cDvbTransponderParameters::cDvbTransponderParameters(const char *Parameters)
guard = GUARD_INTERVAL_AUTO;
hierarchy = HIERARCHY_AUTO;
rollOff = ROLLOFF_AUTO;
plpId = 0;
streamId = 0;
Parse(Parameters);
}
@ -230,7 +231,7 @@ cString cDvbTransponderParameters::ToString(char Type) const
ST("ACST*") q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
ST("ACST*") q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
ST(" S 2") q += PrintParameter(q, 'O', MapToUser(rollOff, RollOffValues));
ST(" T2") q += PrintParameter(q, 'P', plpId);
ST(" ST2") q += PrintParameter(q, 'P', streamId);
ST(" ST*") q += PrintParameter(q, 'S', MapToUser(system, SystemValuesSat)); // we only need the numerical value, so Sat or Terr doesn't matter
ST(" T*") q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
ST(" T*") q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues));
@ -266,7 +267,7 @@ bool cDvbTransponderParameters::Parse(const char *s)
case 'L': polarization = 'L'; s++; break;
case 'M': s = ParseParameter(s, modulation, ModulationValues); break;
case 'O': s = ParseParameter(s, rollOff, RollOffValues); break;
case 'P': s = ParseParameter(s, plpId); break;
case 'P': s = ParseParameter(s, streamId); break;
case 'R': polarization = 'R'; s++; break;
case 'S': s = ParseParameter(s, system, SystemValuesSat); break; // we only need the numerical value, so Sat or Terr doesn't matter
case 'T': s = ParseParameter(s, transmission, TransmissionValues); break;
@ -795,6 +796,7 @@ bool cDvbTuner::SetFrontend(void)
// DVB-S2
SETCMD(DTV_PILOT, PILOT_AUTO);
SETCMD(DTV_ROLLOFF, dtp.RollOff());
SETCMD(DTV_STREAM_ID, dtp.StreamId());
}
else {
// DVB-S
@ -828,7 +830,7 @@ bool cDvbTuner::SetFrontend(void)
SETCMD(DTV_HIERARCHY, dtp.Hierarchy());
if (frontendType == SYS_DVBT2) {
// DVB-T2
SETCMD(DTV_STREAM_ID, dtp.PlpId());
SETCMD(DTV_STREAM_ID, dtp.StreamId());
}
tuneTimeout = DVBT_TUNE_TIMEOUT;
@ -968,7 +970,7 @@ cOsdItem *cDvbSourceParam::GetOsdItem(void)
case 9: ST(" T") return new cMenuEditMapItem( tr("Guard"), &dtp.guard, GuardValues); else return GetOsdItem();
case 10: ST(" T") return new cMenuEditMapItem( tr("Hierarchy"), &dtp.hierarchy, HierarchyValues); else return GetOsdItem();
case 11: ST(" S ") return new cMenuEditMapItem( tr("Rolloff"), &dtp.rollOff, RollOffValues); else return GetOsdItem();
case 12: ST(" T") return new cMenuEditIntItem( tr("PlpId"), &dtp.plpId, 0, 255); else return GetOsdItem();
case 12: ST(" ST") return new cMenuEditIntItem( tr("StreamId"), &dtp.streamId, 0, 255); else return GetOsdItem();
default: return NULL;
}
return NULL;
@ -1436,6 +1438,7 @@ bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const
return false; // doesn't provide source
cDvbTransponderParameters dtp(Channel->Parameters());
if (!ProvidesDeliverySystem(GetRequiredDeliverySystem(Channel, &dtp)) ||
dtp.StreamId() != 0 && !(frontendInfo.caps & FE_CAN_MULTISTREAM) ||
dtp.Modulation() == QPSK && !(frontendInfo.caps & FE_CAN_QPSK) ||
dtp.Modulation() == QAM_16 && !(frontendInfo.caps & FE_CAN_QAM_16) ||
dtp.Modulation() == QAM_32 && !(frontendInfo.caps & FE_CAN_QAM_32) ||

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: dvbdevice.h 2.28 2013/02/16 15:20:17 kls Exp $
* $Id: dvbdevice.h 2.29 2013/03/07 09:42:29 kls Exp $
*/
#ifndef __DVBDEVICE_H
@ -69,7 +69,7 @@ private:
int guard;
int hierarchy;
int rollOff;
int plpId;
int streamId;
int PrintParameter(char *p, char Name, int Value) const;
const char *ParseParameter(const char *s, int &Value, const tDvbParameterMap *Map = NULL);
public:
@ -85,7 +85,7 @@ public:
int Guard(void) const { return guard; }
int Hierarchy(void) const { return hierarchy; }
int RollOff(void) const { return rollOff; }
int PlpId(void) const { return plpId; }
int StreamId(void) const { return streamId; }
void SetPolarization(char Polarization) { polarization = Polarization; }
void SetInversion(int Inversion) { inversion = Inversion; }
void SetBandwidth(int Bandwidth) { bandwidth = Bandwidth; }
@ -97,7 +97,7 @@ public:
void SetGuard(int Guard) { guard = Guard; }
void SetHierarchy(int Hierarchy) { hierarchy = Hierarchy; }
void SetRollOff(int RollOff) { rollOff = RollOff; }
void SetPlpId(int PlpId) { plpId = PlpId; }
void SetStreamId(int StreamId) { streamId = StreamId; }
cString ToString(char Type) const;
bool Parse(const char *s);
};

19
nit.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: nit.c 2.9 2012/01/12 08:43:52 kls Exp $
* $Id: nit.c 2.10 2013/03/07 09:42:29 kls Exp $
*/
#include "nit.h"
@ -185,6 +185,21 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
}
}
break;
case SI::S2SatelliteDeliverySystemDescriptorTag: {
if (Setup.UpdateChannels >= 5) {
for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
if (!Channel->GroupSep() && cSource::IsSat(Channel->Source()) && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
SI::S2SatelliteDeliverySystemDescriptor *sd = (SI::S2SatelliteDeliverySystemDescriptor *)d;
cDvbTransponderParameters dtp(Channel->Parameters());
dtp.SetSystem(DVB_SYSTEM_2);
dtp.SetStreamId(sd->getInputStreamIdentifier());
Channel->SetTransponderData(Channel->Source(), Channel->Frequency(), Channel->Srate(), dtp.ToString('S'));
break;
}
}
}
}
break;
case SI::CableDeliverySystemDescriptorTag: {
SI::CableDeliverySystemDescriptor *sd = (SI::CableDeliverySystemDescriptor *)d;
cDvbTransponderParameters dtp;
@ -317,7 +332,7 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
//int SystemId = td->getSystemId();
cDvbTransponderParameters dtp(Channel->Parameters());
dtp.SetSystem(DVB_SYSTEM_2);
dtp.SetPlpId(td->getPlpId());
dtp.SetStreamId(td->getPlpId());
if (td->getExtendedDataFlag()) {
static int T2Bandwidths[] = { 8000000, 7000000, 6000000, 5000000, 10000000, 1712000, 0, 0 };
dtp.SetBandwidth(T2Bandwidths[td->getBandwidth()]);

View File

@ -77,8 +77,8 @@ msgstr "الهرمية"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "EPG ا لبدء بالبحث على دليل القنوات الالكترونى "

View File

@ -76,8 +76,8 @@ msgstr "Jerarquia"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Iniciant exploració EPG"

View File

@ -76,8 +76,8 @@ msgstr "Hierarchický mód"
msgid "Rolloff"
msgstr "RollOff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Začíná prohledávání EPG"

View File

@ -73,7 +73,7 @@ msgstr "Hierarki"
msgid "Rolloff"
msgstr ""
msgid "PlpId"
msgid "StreamId"
msgstr ""
msgid "Starting EPG scan"

View File

@ -73,8 +73,8 @@ msgstr "Hierarchie"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Aktualisiere EPG-Daten"

View File

@ -73,7 +73,7 @@ msgstr "
msgid "Rolloff"
msgstr ""
msgid "PlpId"
msgid "StreamId"
msgstr ""
msgid "Starting EPG scan"

View File

@ -74,8 +74,8 @@ msgstr "Jerarqu
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Iniciando la exploración de EPG"

View File

@ -73,8 +73,8 @@ msgstr "Hierarhia"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PLP-tunnus"
msgid "StreamId"
msgstr "Stream-tunnus"
msgid "Starting EPG scan"
msgstr "EPG skaneerimine käivitatud"

View File

@ -77,8 +77,8 @@ msgstr "Hierarkia"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PLP-tunniste"
msgid "StreamId"
msgstr "Lähetetunniste"
msgid "Starting EPG scan"
msgstr "Ohjelmaoppaan päivitys aloitettu"

View File

@ -83,8 +83,8 @@ msgstr "Hiérarchie"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Mise à jour du guide des programmes"

View File

@ -75,7 +75,7 @@ msgstr "Hijerarhija"
msgid "Rolloff"
msgstr ""
msgid "PlpId"
msgid "StreamId"
msgstr ""
msgid "Starting EPG scan"

View File

@ -77,8 +77,8 @@ msgstr "Hierarhia"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PLP azonosító"
msgid "StreamId"
msgstr "Stream azonosító"
msgid "Starting EPG scan"
msgstr "EPG adatok aktualizálása"

View File

@ -80,8 +80,8 @@ msgstr "Gerarchia"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Inizio scansione EPG"

View File

@ -73,8 +73,8 @@ msgstr "Hierarchija"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Pradedamas EPG skanavimas"

View File

@ -74,8 +74,8 @@ msgstr "Хиерархија"
msgid "Rolloff"
msgstr "Рол-оф"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Започнувам скенирање на EPG"

View File

@ -78,8 +78,8 @@ msgstr "Hierarchie"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Bezig met starten EPG scan"

View File

@ -74,7 +74,7 @@ msgstr "Hierarchy"
msgid "Rolloff"
msgstr ""
msgid "PlpId"
msgid "StreamId"
msgstr ""
msgid "Starting EPG scan"

View File

@ -75,8 +75,8 @@ msgstr "Hierarchia"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Rozpoczynam skanowanie EPG"

View File

@ -74,7 +74,7 @@ msgstr "Hierarquia"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgid "StreamId"
msgstr ""
msgid "Starting EPG scan"

View File

@ -75,8 +75,8 @@ msgstr "Ierarhie"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "Identificator PLP"
msgid "StreamId"
msgstr "Identificator Stream"
msgid "Starting EPG scan"
msgstr "Pornesc achiziţia EPG"

View File

@ -74,8 +74,8 @@ msgstr "
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "½ÐçØÝÐî EPG-áÚÐÝØàÞÒÐÝØÕ"

View File

@ -73,8 +73,8 @@ msgstr "Hierarchia"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Spú¹»a sa snímanie EPG"

View File

@ -74,8 +74,8 @@ msgstr "Hierarhija"
msgid "Rolloff"
msgstr "Odpadanje"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Prièenjam EPG-scan"

View File

@ -73,7 +73,7 @@ msgstr "Hijerarhija"
msgid "Rolloff"
msgstr ""
msgid "PlpId"
msgid "StreamId"
msgstr ""
msgid "Starting EPG scan"

View File

@ -77,8 +77,8 @@ msgstr "Hierarchy"
msgid "Rolloff"
msgstr "Rolloff"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Påbörjar EPG-avsökning"

View File

@ -73,7 +73,7 @@ msgstr "Hiyerar
msgid "Rolloff"
msgstr ""
msgid "PlpId"
msgid "StreamId"
msgstr ""
msgid "Starting EPG scan"

View File

@ -74,8 +74,8 @@ msgstr "Ієрархія"
msgid "Rolloff"
msgstr "Крен"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "Починаю EPG-сканування"

View File

@ -75,8 +75,8 @@ msgstr "层次"
msgid "Rolloff"
msgstr "越零率"
msgid "PlpId"
msgstr "PlpId"
msgid "StreamId"
msgstr "StreamId"
msgid "Starting EPG scan"
msgstr "开始节目单扫描"

8
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.30 2012/10/15 10:50:23 kls Exp $
.\" $Id: vdr.5 2.31 2013/03/07 09:42:29 kls Exp $
.\"
.TH vdr 5 "10 Feb 2008" "1.6" "Video Disk Recorder Files"
.SH NAME
@ -96,7 +96,7 @@ l l.
\fBL\fR@Left circular polarization
\fBM\fR@Modulation (2, 5, 6, 10, 11, 16, 32, 64, 128, 256, 998)
\fBO\fR@rollOff (0, 20, 25, 35)
\fBP\fR@Plp id (0-255)
\fBP\fR@stream id (0-255)
\fBR\fR@Right circular polarization
\fBS\fR@delivery System (0, 1)
\fBT\fR@Transmission mode (1, 2, 4, 8, 16, 32)
@ -137,7 +137,9 @@ l l.
\fBRolloff:\fR The Nyquist filter rolloff factor for DVB-S (\fB35\fR) and DVB-S2 (\fB35\fR, 25, 20),
35 = 0.35, 25 = 0.25, 20 = 0.20, DVB-S/DVB-S2 default value is 0.35
\fBPLP id:\fR Physical Layer Pipe (PLP) id (\fB0\fR-255) for DVB-T2 multiplex (DVB-T2 only).
\fBStream id:\fR Input Stream Identifier (ISI) (\fB0\fR-255) for DVB-S2 multiplex or
Physical Layer Pipe (PLP) id (\fB0\fR-255) for DVB-T2 multiplex (DVB-S2/DVB-T2 only,
with devices that support "multi streaming").
\fBTransmission mode:\fR Number of DVB-T OFDM carriers, 32 = 32k, 16 = 16k, 8 = 8k, 4 = 4k, 2 = 2k, 1 = 1k. If in doubt, try 8k.