diff options
Diffstat (limited to 'libdtv/libsi/include')
-rw-r--r-- | libdtv/libsi/include/libsi.h | 60 | ||||
-rw-r--r-- | libdtv/libsi/include/si_tables.h | 36 |
2 files changed, 94 insertions, 2 deletions
diff --git a/libdtv/libsi/include/libsi.h b/libdtv/libsi/include/libsi.h index 715d18b..b2f8ba2 100644 --- a/libdtv/libsi/include/libsi.h +++ b/libdtv/libsi/include/libsi.h @@ -1037,23 +1037,81 @@ struct SatelliteDeliverySystemDescriptor { unsigned short Tag; long Frequency; short OrbitalPosition; + short Modulation; char Polarization; long SymbolRate; char FEC; }; -#define CreateSatelliteDeliverySystemDescriptor(descr, freq, orb, polar, sr, fec) \ +#define CreateSatelliteDeliverySystemDescriptor(descr, freq, orb, mod, polar, sr, fec) \ do \ { \ xCreateNode (((struct SatelliteDeliverySystemDescriptor *)descr), NULL); \ ((struct SatelliteDeliverySystemDescriptor *)descr)->Tag = DESCR_SAT_DEL_SYS; \ ((struct SatelliteDeliverySystemDescriptor *)descr)->Frequency = freq; \ ((struct SatelliteDeliverySystemDescriptor *)descr)->OrbitalPosition = orb; \ + ((struct SatelliteDeliverySystemDescriptor *)descr)->Modulation = mod; \ ((struct SatelliteDeliverySystemDescriptor *)descr)->Polarization = polar; \ ((struct SatelliteDeliverySystemDescriptor *)descr)->SymbolRate = sr; \ ((struct SatelliteDeliverySystemDescriptor *)descr)->FEC = fec; \ } while (0) +/* CableDeliverySystemDescriptor */ + +struct CableDeliverySystemDescriptor { + struct NODE Node; + unsigned short Tag; + long Frequency; + long SymbolRate; + char FECouter; + char FECinner; + char Modulation; +}; + +#define CreateCableDeliverySystemDescriptor(descr, freq, sr, fec_o, fec_i, mod) \ + do \ + { \ + xCreateNode (((struct CableDeliverySystemDescriptor *)descr), NULL); \ + ((struct CableDeliverySystemDescriptor *)descr)->Tag = DESCR_CABLE_DEL_SYS; \ + ((struct CableDeliverySystemDescriptor *)descr)->Frequency = freq; \ + ((struct CableDeliverySystemDescriptor *)descr)->SymbolRate = sr; \ + ((struct CableDeliverySystemDescriptor *)descr)->FECouter = fec_o; \ + ((struct CableDeliverySystemDescriptor *)descr)->FECinner = fec_i; \ + ((struct CableDeliverySystemDescriptor *)descr)->Modulation = mod; \ + } 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 */ struct ServiceListDescriptor { diff --git a/libdtv/libsi/include/si_tables.h b/libdtv/libsi/include/si_tables.h index b7cfea2..24c316d 100644 --- a/libdtv/libsi/include/si_tables.h +++ b/libdtv/libsi/include/si_tables.h @@ -1126,7 +1126,41 @@ typedef struct item_subtitling_struct { typedef struct descr_terrestrial_delivery_struct { u_char descriptor_tag :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; #define CastTerrestrialDeliverySystemDescriptor(x) ((descr_terrestrial_delivery_system_t *)(x)) |