mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Implemented the TerrestrialDeliverySystemDescriptor in libdtv
This commit is contained in:
parent
848e79eec8
commit
7b9f3dc568
@ -203,6 +203,7 @@ Andreas Schultz <aschultz@warp10.net>
|
|||||||
for suggesting to remove the Mute() call from cDvbDevice::StillPicture()
|
for suggesting to remove the Mute() call from cDvbDevice::StillPicture()
|
||||||
for suggesting to separate the startup of a plugin into an "early" and a "late" phase
|
for suggesting to separate the startup of a plugin into an "early" and a "late" phase
|
||||||
for changing C++ style comments in libdtv into C style to avoid warnings in gcc 3.x
|
for changing C++ style comments in libdtv into C style to avoid warnings in gcc 3.x
|
||||||
|
for implementing the TerrestrialDeliverySystemDescriptor in libdtv
|
||||||
|
|
||||||
Aaron Holtzman
|
Aaron Holtzman
|
||||||
for writing 'ac3dec'
|
for writing 'ac3dec'
|
||||||
|
3
HISTORY
3
HISTORY
@ -2115,7 +2115,8 @@ Video Disk Recorder Revision History
|
|||||||
the startup of a plugin into an "early" (Initialize()) and "late" (Start()) phase
|
the startup of a plugin into an "early" (Initialize()) and "late" (Start()) phase
|
||||||
(suggested by Andreas Schultz). Plugin authors should please read the section
|
(suggested by Andreas Schultz). Plugin authors should please read the section
|
||||||
about "Getting started" in PLUGINS.html and adapt their code if applicable.
|
about "Getting started" in PLUGINS.html and adapt their code if applicable.
|
||||||
- Implemented the CableDeliverySystemDescriptor in libdtv (thanks to Sven Grothklags)
|
- Implemented the CableDeliverySystemDescriptor and TerrestrialDeliverySystemDescriptor
|
||||||
|
in libdtv (thanks to Sven Grothklags and Andreas Schultz)
|
||||||
- Fixed keeping live video active in case the primary device doesn't have an MPEG
|
- Fixed keeping live video active in case the primary device doesn't have an MPEG
|
||||||
decoder (thanks to Wolfgang Goeller for reporting this one).
|
decoder (thanks to Wolfgang Goeller for reporting this one).
|
||||||
- Implemented cDevice::ActualDevice(), which returns the actual receiving device in
|
- Implemented cDevice::ActualDevice(), which returns the actual receiving device in
|
||||||
|
@ -1037,18 +1037,20 @@ struct SatelliteDeliverySystemDescriptor {
|
|||||||
unsigned short Tag;
|
unsigned short Tag;
|
||||||
long Frequency;
|
long Frequency;
|
||||||
short OrbitalPosition;
|
short OrbitalPosition;
|
||||||
|
short Modulation;
|
||||||
char Polarization;
|
char Polarization;
|
||||||
long SymbolRate;
|
long SymbolRate;
|
||||||
char FEC;
|
char FEC;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CreateSatelliteDeliverySystemDescriptor(descr, freq, orb, polar, sr, fec) \
|
#define CreateSatelliteDeliverySystemDescriptor(descr, freq, orb, mod, polar, sr, fec) \
|
||||||
do \
|
do \
|
||||||
{ \
|
{ \
|
||||||
xCreateNode (((struct SatelliteDeliverySystemDescriptor *)descr), NULL); \
|
xCreateNode (((struct SatelliteDeliverySystemDescriptor *)descr), NULL); \
|
||||||
((struct SatelliteDeliverySystemDescriptor *)descr)->Tag = DESCR_SAT_DEL_SYS; \
|
((struct SatelliteDeliverySystemDescriptor *)descr)->Tag = DESCR_SAT_DEL_SYS; \
|
||||||
((struct SatelliteDeliverySystemDescriptor *)descr)->Frequency = freq; \
|
((struct SatelliteDeliverySystemDescriptor *)descr)->Frequency = freq; \
|
||||||
((struct SatelliteDeliverySystemDescriptor *)descr)->OrbitalPosition = orb; \
|
((struct SatelliteDeliverySystemDescriptor *)descr)->OrbitalPosition = orb; \
|
||||||
|
((struct SatelliteDeliverySystemDescriptor *)descr)->Modulation = mod; \
|
||||||
((struct SatelliteDeliverySystemDescriptor *)descr)->Polarization = polar; \
|
((struct SatelliteDeliverySystemDescriptor *)descr)->Polarization = polar; \
|
||||||
((struct SatelliteDeliverySystemDescriptor *)descr)->SymbolRate = sr; \
|
((struct SatelliteDeliverySystemDescriptor *)descr)->SymbolRate = sr; \
|
||||||
((struct SatelliteDeliverySystemDescriptor *)descr)->FEC = fec; \
|
((struct SatelliteDeliverySystemDescriptor *)descr)->FEC = fec; \
|
||||||
@ -1061,21 +1063,55 @@ struct CableDeliverySystemDescriptor {
|
|||||||
unsigned short Tag;
|
unsigned short Tag;
|
||||||
long Frequency;
|
long Frequency;
|
||||||
long SymbolRate;
|
long SymbolRate;
|
||||||
char FEC;
|
char FECouter;
|
||||||
|
char FECinner;
|
||||||
char Modulation;
|
char Modulation;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CreateCableDeliverySystemDescriptor(descr, freq, sr, fec, mod) \
|
#define CreateCableDeliverySystemDescriptor(descr, freq, sr, fec_o, fec_i, mod) \
|
||||||
do \
|
do \
|
||||||
{ \
|
{ \
|
||||||
xCreateNode (((struct CableDeliverySystemDescriptor *)descr), NULL); \
|
xCreateNode (((struct CableDeliverySystemDescriptor *)descr), NULL); \
|
||||||
((struct CableDeliverySystemDescriptor *)descr)->Tag = DESCR_CABLE_DEL_SYS; \
|
((struct CableDeliverySystemDescriptor *)descr)->Tag = DESCR_CABLE_DEL_SYS; \
|
||||||
((struct CableDeliverySystemDescriptor *)descr)->Frequency = freq; \
|
((struct CableDeliverySystemDescriptor *)descr)->Frequency = freq; \
|
||||||
((struct CableDeliverySystemDescriptor *)descr)->SymbolRate = sr; \
|
((struct CableDeliverySystemDescriptor *)descr)->SymbolRate = sr; \
|
||||||
((struct CableDeliverySystemDescriptor *)descr)->FEC = fec; \
|
((struct CableDeliverySystemDescriptor *)descr)->FECouter = fec_o; \
|
||||||
|
((struct CableDeliverySystemDescriptor *)descr)->FECinner = fec_i; \
|
||||||
((struct CableDeliverySystemDescriptor *)descr)->Modulation = mod; \
|
((struct CableDeliverySystemDescriptor *)descr)->Modulation = mod; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
/* TerrestrialDeliverySystemDescriptor */
|
||||||
|
|
||||||
|
struct TerrestrialDeliverySystemDescriptor {
|
||||||
|
struct NODE Node;
|
||||||
|
unsigned short Tag;
|
||||||
|
long Frequency;
|
||||||
|
char Bandwidth;
|
||||||
|
char Constellation;
|
||||||
|
char Hierarchy;
|
||||||
|
char CodeRateHP;
|
||||||
|
char CodeRateLP;
|
||||||
|
char GuardInterval;
|
||||||
|
char TransmissionMode;
|
||||||
|
char OtherFrequencyFlag;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define CreateTerrestrialDeliverySystemDescriptor(descr, freq, bw, cst, hr, crh, crl, gi, tm, ofm) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
xCreateNode (((struct CableDeliverySystemDescriptor *)descr), NULL); \
|
||||||
|
((struct TerrestrialDeliverySystemDescriptor *)descr)->Tag = DESCR_TERR_DEL_SYS; \
|
||||||
|
((struct TerrestrialDeliverySystemDescriptor *)descr)->Frequency = freq; \
|
||||||
|
((struct TerrestrialDeliverySystemDescriptor *)descr)->Bandwidth = bw; \
|
||||||
|
((struct TerrestrialDeliverySystemDescriptor *)descr)->Constellation = cst; \
|
||||||
|
((struct TerrestrialDeliverySystemDescriptor *)descr)->Hierarchy = hr; \
|
||||||
|
((struct TerrestrialDeliverySystemDescriptor *)descr)->CodeRateHP = crh; \
|
||||||
|
((struct TerrestrialDeliverySystemDescriptor *)descr)->CodeRateLP = crl; \
|
||||||
|
((struct TerrestrialDeliverySystemDescriptor *)descr)->GuardInterval = gi; \
|
||||||
|
((struct TerrestrialDeliverySystemDescriptor *)descr)->TransmissionMode = tm; \
|
||||||
|
((struct TerrestrialDeliverySystemDescriptor *)descr)->OtherFrequencyFlag = ofm; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
/* ServiceListDescriptor */
|
/* ServiceListDescriptor */
|
||||||
|
|
||||||
struct ServiceListDescriptor {
|
struct ServiceListDescriptor {
|
||||||
|
@ -1126,7 +1126,41 @@ typedef struct item_subtitling_struct {
|
|||||||
typedef struct descr_terrestrial_delivery_struct {
|
typedef struct descr_terrestrial_delivery_struct {
|
||||||
u_char descriptor_tag :8;
|
u_char descriptor_tag :8;
|
||||||
u_char descriptor_length :8;
|
u_char descriptor_length :8;
|
||||||
/* TBD */
|
u_char frequency1 :8;
|
||||||
|
u_char frequency2 :8;
|
||||||
|
u_char frequency3 :8;
|
||||||
|
u_char frequency4 :8;
|
||||||
|
#if BYTE_ORDER == BIG_ENDIAN
|
||||||
|
u_char bandwidth :3;
|
||||||
|
u_char reserved1 :5;
|
||||||
|
#else
|
||||||
|
u_char reserved1 :5;
|
||||||
|
u_char bandwidth :3;
|
||||||
|
#endif
|
||||||
|
#if BYTE_ORDER == BIG_ENDIAN
|
||||||
|
u_char constellation :2;
|
||||||
|
u_char hierarchy :3;
|
||||||
|
u_char code_rate_HP :3;
|
||||||
|
#else
|
||||||
|
u_char code_rate_HP :3;
|
||||||
|
u_char hierarchy :3;
|
||||||
|
u_char constellation :2;
|
||||||
|
#endif
|
||||||
|
#if BYTE_ORDER == BIG_ENDIAN
|
||||||
|
u_char code_rate_LP :3;
|
||||||
|
u_char guard_interval :2;
|
||||||
|
u_char transmission_mode :2;
|
||||||
|
u_char other_frequency_flag :1;
|
||||||
|
#else
|
||||||
|
u_char other_frequency_flag :1;
|
||||||
|
u_char transmission_mode :2;
|
||||||
|
u_char guard_interval :2;
|
||||||
|
u_char code_rate_LP :3;
|
||||||
|
#endif
|
||||||
|
u_char reserver2 :8;
|
||||||
|
u_char reserver3 :8;
|
||||||
|
u_char reserver4 :8;
|
||||||
|
u_char reserver5 :8;
|
||||||
} descr_terrestrial_delivery_system_t;
|
} descr_terrestrial_delivery_system_t;
|
||||||
#define CastTerrestrialDeliverySystemDescriptor(x) ((descr_terrestrial_delivery_system_t *)(x))
|
#define CastTerrestrialDeliverySystemDescriptor(x) ((descr_terrestrial_delivery_system_t *)(x))
|
||||||
|
|
||||||
|
@ -535,6 +535,7 @@ void siDebugDescriptors (char *Prepend, struct LIST *Descriptors)
|
|||||||
printf ("%s Frequency: %ld\n", Prepend, sds->Frequency);
|
printf ("%s Frequency: %ld\n", Prepend, sds->Frequency);
|
||||||
printf ("%s OrbitalPosition: %d\n", Prepend, sds->OrbitalPosition);
|
printf ("%s OrbitalPosition: %d\n", Prepend, sds->OrbitalPosition);
|
||||||
printf ("%s Polarization: %c\n", Prepend, sds->Polarization);
|
printf ("%s Polarization: %c\n", Prepend, sds->Polarization);
|
||||||
|
printf ("%s Modulation: %c\n", Prepend, sds->Modulation);
|
||||||
printf ("%s SymbolRate: %ld\n", Prepend, sds->SymbolRate);
|
printf ("%s SymbolRate: %ld\n", Prepend, sds->SymbolRate);
|
||||||
printf ("%s FEC: %c\n", Prepend, sds->FEC);
|
printf ("%s FEC: %c\n", Prepend, sds->FEC);
|
||||||
}
|
}
|
||||||
@ -548,11 +549,30 @@ void siDebugDescriptors (char *Prepend, struct LIST *Descriptors)
|
|||||||
printf ("%sDescriptor: Cable Delivery System\n", Prepend);
|
printf ("%sDescriptor: Cable Delivery System\n", Prepend);
|
||||||
printf ("%s Frequency: %ld\n", Prepend, cds->Frequency);
|
printf ("%s Frequency: %ld\n", Prepend, cds->Frequency);
|
||||||
printf ("%s SymbolRate: %ld\n", Prepend, cds->SymbolRate);
|
printf ("%s SymbolRate: %ld\n", Prepend, cds->SymbolRate);
|
||||||
printf ("%s FEC: %d\n", Prepend, cds->FEC);
|
printf ("%s FEC outer: %d\n", Prepend, cds->FECouter);
|
||||||
|
printf ("%s FEC inner: %d\n", Prepend, cds->FECinner);
|
||||||
printf ("%s Modulation: %d\n", Prepend, cds->Modulation);
|
printf ("%s Modulation: %d\n", Prepend, cds->Modulation);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DESCR_TERR_DEL_SYS:
|
||||||
|
{
|
||||||
|
struct TerrestrialDeliverySystemDescriptor *tds =
|
||||||
|
(struct TerrestrialDeliverySystemDescriptor *)Descriptor;
|
||||||
|
|
||||||
|
printf ("%sDescriptor: Terrestrial Delivery System\n", Prepend);
|
||||||
|
printf ("%s Frequency: %ld\n", Prepend, tds->Frequency);
|
||||||
|
printf ("%s Bandwidth: %d\n", Prepend, tds->Bandwidth);
|
||||||
|
printf ("%s Constellation: %d\n", Prepend, tds->Constellation);
|
||||||
|
printf ("%s Hierarchy: %d\n", Prepend, tds->Hierarchy);
|
||||||
|
printf ("%s CodeRateHP: %d\n", Prepend, tds->CodeRateHP);
|
||||||
|
printf ("%s CodeRateLP: %d\n", Prepend, tds->CodeRateLP);
|
||||||
|
printf ("%s GuardInterval: %d\n", Prepend, tds->GuardInterval);
|
||||||
|
printf ("%s TransmissionMode: %d\n", Prepend, tds->TransmissionMode);
|
||||||
|
printf ("%s OtherFrequencyFlag: %d\n", Prepend, tds->OtherFrequencyFlag);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case DESCR_SERVICE_LIST:
|
case DESCR_SERVICE_LIST:
|
||||||
{
|
{
|
||||||
struct ServiceListEntry *Entry;
|
struct ServiceListEntry *Entry;
|
||||||
@ -589,7 +609,6 @@ void siDebugDescriptors (char *Prepend, struct LIST *Descriptors)
|
|||||||
case DESCR_VBI_TELETEXT:
|
case DESCR_VBI_TELETEXT:
|
||||||
case DESCR_MOSAIC:
|
case DESCR_MOSAIC:
|
||||||
case DESCR_TELEPHONE:
|
case DESCR_TELEPHONE:
|
||||||
case DESCR_TERR_DEL_SYS:
|
|
||||||
case DESCR_ML_NW_NAME:
|
case DESCR_ML_NW_NAME:
|
||||||
case DESCR_ML_BQ_NAME:
|
case DESCR_ML_BQ_NAME:
|
||||||
case DESCR_ML_SERVICE_NAME:
|
case DESCR_ML_SERVICE_NAME:
|
||||||
|
@ -1050,6 +1050,7 @@ void siParseDescriptor (struct LIST *Descriptors, u_char *Buffer)
|
|||||||
(sds->west_east_flag ? 1 : -1) *
|
(sds->west_east_flag ? 1 : -1) *
|
||||||
(BcdCharToInt (sds->orbital_position1) * 100 +
|
(BcdCharToInt (sds->orbital_position1) * 100 +
|
||||||
BcdCharToInt (sds->orbital_position2)),
|
BcdCharToInt (sds->orbital_position2)),
|
||||||
|
sds->modulation,
|
||||||
sds->polarization,
|
sds->polarization,
|
||||||
BcdCharToInt (sds->symbol_rate1) * 10 * 1000 +
|
BcdCharToInt (sds->symbol_rate1) * 10 * 1000 +
|
||||||
BcdCharToInt (sds->symbol_rate2) * 100 +
|
BcdCharToInt (sds->symbol_rate2) * 100 +
|
||||||
@ -1082,6 +1083,7 @@ void siParseDescriptor (struct LIST *Descriptors, u_char *Buffer)
|
|||||||
BcdCharToInt (cds->symbol_rate1) * 10 * 1000 +
|
BcdCharToInt (cds->symbol_rate1) * 10 * 1000 +
|
||||||
BcdCharToInt (cds->symbol_rate2) * 100 +
|
BcdCharToInt (cds->symbol_rate2) * 100 +
|
||||||
BcdCharToInt (cds->symbol_rate3),
|
BcdCharToInt (cds->symbol_rate3),
|
||||||
|
cds->fec_outer,
|
||||||
cds->fec_inner,
|
cds->fec_inner,
|
||||||
cds->modulation
|
cds->modulation
|
||||||
);
|
);
|
||||||
@ -1094,6 +1096,37 @@ void siParseDescriptor (struct LIST *Descriptors, u_char *Buffer)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DESCR_TERR_DEL_SYS:
|
||||||
|
// fprintf (stderr, "got descriptor 0x%x\n", GetDescriptorTag(Buffer));
|
||||||
|
{
|
||||||
|
descr_terrestrial_delivery_system_t *tds;
|
||||||
|
tds = (descr_terrestrial_delivery_system_t *) Ptr;
|
||||||
|
if (CheckBcdChar (tds->frequency1) && CheckBcdChar (tds->frequency2) &&
|
||||||
|
CheckBcdChar (tds->frequency3) && CheckBcdChar (tds->frequency4))
|
||||||
|
{
|
||||||
|
CreateTerrestrialDeliverySystemDescriptor (Descriptor,
|
||||||
|
BcdCharToInt (tds->frequency1) * 100 * 1000 * 1000 +
|
||||||
|
BcdCharToInt (tds->frequency2) * 1000 * 1000 +
|
||||||
|
BcdCharToInt (tds->frequency3) * 10 * 1000 +
|
||||||
|
BcdCharToInt (tds->frequency4) * 100,
|
||||||
|
tds->bandwidth,
|
||||||
|
tds->constellation,
|
||||||
|
tds->hierarchy,
|
||||||
|
tds->code_rate_HP,
|
||||||
|
tds->code_rate_LP,
|
||||||
|
tds->guard_interval,
|
||||||
|
tds->transmission_mode,
|
||||||
|
tds->other_frequency_flag
|
||||||
|
);
|
||||||
|
}
|
||||||
|
/* else
|
||||||
|
{
|
||||||
|
fprintf (stderr, "Illegal cds descriptor\n");
|
||||||
|
siDumpDescriptor (Buffer);
|
||||||
|
} */
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case DESCR_SERVICE_LIST:
|
case DESCR_SERVICE_LIST:
|
||||||
// fprintf (stderr, "got descriptor 0x%x\n", GetDescriptorTag(Buffer));
|
// fprintf (stderr, "got descriptor 0x%x\n", GetDescriptorTag(Buffer));
|
||||||
CreateServiceListDescriptor (Descriptor);
|
CreateServiceListDescriptor (Descriptor);
|
||||||
@ -1153,7 +1186,6 @@ void siParseDescriptor (struct LIST *Descriptors, u_char *Buffer)
|
|||||||
case DESCR_VBI_TELETEXT:
|
case DESCR_VBI_TELETEXT:
|
||||||
case DESCR_MOSAIC:
|
case DESCR_MOSAIC:
|
||||||
case DESCR_TELEPHONE:
|
case DESCR_TELEPHONE:
|
||||||
case DESCR_TERR_DEL_SYS:
|
|
||||||
case DESCR_ML_NW_NAME:
|
case DESCR_ML_NW_NAME:
|
||||||
case DESCR_ML_BQ_NAME:
|
case DESCR_ML_BQ_NAME:
|
||||||
case DESCR_ML_SERVICE_NAME:
|
case DESCR_ML_SERVICE_NAME:
|
||||||
|
Loading…
Reference in New Issue
Block a user