gst-dvb-descriptor.h 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906
  1. /*
  2. * gstmpegtsdescriptor.h -
  3. * Copyright (C) 2013 Edward Hervey
  4. *
  5. * Authors:
  6. * Edward Hervey <[email protected]>
  7. *
  8. * This library is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU Library General Public
  10. * License as published by the Free Software Foundation; either
  11. * version 2 of the License, or (at your option) any later version.
  12. *
  13. * This library is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  16. * Library General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU Library General Public
  19. * License along with this library; if not, write to the
  20. * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
  21. * Boston, MA 02110-1301, USA.
  22. *
  23. * Some parts of this code come from the Fluendo MPEG Demuxer plugin.
  24. *
  25. * The Initial Developer of the Original Code is Fluendo, S.L.
  26. * Portions created by Fluendo, S.L. are Copyright (C) 2005
  27. * Fluendo, S.L. All Rights Reserved.
  28. *
  29. * Contributor(s): Wim Taymans <[email protected]>
  30. */
  31. #ifndef GST_DVB_DESCRIPTOR_H
  32. #define GST_DVB_DESCRIPTOR_H
  33. #include <gst/gst.h>
  34. G_BEGIN_DECLS
  35. /**
  36. * GstMpegtsDVBDescriptorType:
  37. *
  38. * The type of #GstMpegtsDescriptor
  39. *
  40. * These values correspond to the registered descriptor type from
  41. * the various DVB specifications.
  42. *
  43. * Consult the relevant specifications for more details.
  44. */
  45. typedef enum {
  46. /* 64-127 DVB tags ETSI EN 300 468
  47. * (Specification for Service Information (SI) in DVB systems)
  48. */
  49. GST_MTS_DESC_DVB_NETWORK_NAME = 0x40,
  50. GST_MTS_DESC_DVB_SERVICE_LIST = 0x41,
  51. GST_MTS_DESC_DVB_STUFFING = 0x42,
  52. GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM = 0x43,
  53. GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM = 0x44,
  54. GST_MTS_DESC_DVB_VBI_DATA = 0x45,
  55. GST_MTS_DESC_DVB_VBI_TELETEXT = 0x46,
  56. GST_MTS_DESC_DVB_BOUQUET_NAME = 0x47,
  57. GST_MTS_DESC_DVB_SERVICE = 0x48,
  58. GST_MTS_DESC_DVB_COUNTRY_AVAILABILITY = 0x49,
  59. GST_MTS_DESC_DVB_LINKAGE = 0x4A,
  60. GST_MTS_DESC_DVB_NVOD_REFERENCE = 0x4B,
  61. GST_MTS_DESC_DVB_TIME_SHIFTED_SERVICE = 0x4C,
  62. GST_MTS_DESC_DVB_SHORT_EVENT = 0x4D,
  63. GST_MTS_DESC_DVB_EXTENDED_EVENT = 0x4E,
  64. GST_MTS_DESC_DVB_TIME_SHIFTED_EVENT = 0x4F,
  65. GST_MTS_DESC_DVB_COMPONENT = 0x50,
  66. GST_MTS_DESC_DVB_MOSAIC = 0x51,
  67. GST_MTS_DESC_DVB_STREAM_IDENTIFIER = 0x52,
  68. GST_MTS_DESC_DVB_CA_IDENTIFIER = 0x53,
  69. GST_MTS_DESC_DVB_CONTENT = 0x54,
  70. GST_MTS_DESC_DVB_PARENTAL_RATING = 0x55,
  71. GST_MTS_DESC_DVB_TELETEXT = 0x56,
  72. GST_MTS_DESC_DVB_TELEPHONE = 0x57,
  73. GST_MTS_DESC_DVB_LOCAL_TIME_OFFSET = 0x58,
  74. GST_MTS_DESC_DVB_SUBTITLING = 0x59,
  75. GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM = 0x5A,
  76. GST_MTS_DESC_DVB_MULTILINGUAL_NETWORK_NAME = 0x5B,
  77. GST_MTS_DESC_DVB_MULTILINGUAL_BOUQUET_NAME = 0x5C,
  78. GST_MTS_DESC_DVB_MULTILINGUAL_SERVICE_NAME = 0x5D,
  79. GST_MTS_DESC_DVB_MULTILINGUAL_COMPONENT = 0x5E,
  80. GST_MTS_DESC_DVB_PRIVATE_DATA_SPECIFIER = 0x5F,
  81. GST_MTS_DESC_DVB_SERVICE_MOVE = 0x60,
  82. GST_MTS_DESC_DVB_SHORT_SMOOTHING_BUFFER = 0x61,
  83. GST_MTS_DESC_DVB_FREQUENCY_LIST = 0x62,
  84. GST_MTS_DESC_DVB_PARTIAL_TRANSPORT_STREAM = 0x63,
  85. GST_MTS_DESC_DVB_DATA_BROADCAST = 0x64,
  86. GST_MTS_DESC_DVB_SCRAMBLING = 0x65,
  87. GST_MTS_DESC_DVB_DATA_BROADCAST_ID = 0x66,
  88. GST_MTS_DESC_DVB_TRANSPORT_STREAM = 0x67,
  89. GST_MTS_DESC_DVB_DSNG = 0x68,
  90. GST_MTS_DESC_DVB_PDC = 0x69,
  91. GST_MTS_DESC_DVB_AC3 = 0x6A,
  92. GST_MTS_DESC_DVB_ANCILLARY_DATA = 0x6B,
  93. GST_MTS_DESC_DVB_CELL_LIST = 0x6C,
  94. GST_MTS_DESC_DVB_CELL_FREQUENCY_LINK = 0x6D,
  95. GST_MTS_DESC_DVB_ANNOUNCEMENT_SUPPORT = 0x6E,
  96. GST_MTS_DESC_DVB_APPLICATION_SIGNALLING = 0x6F,
  97. GST_MTS_DESC_DVB_ADAPTATION_FIELD_DATA = 0x70,
  98. GST_MTS_DESC_DVB_SERVICE_IDENTIFIER = 0x71,
  99. GST_MTS_DESC_DVB_SERVICE_AVAILABILITY = 0x72,
  100. GST_MTS_DESC_DVB_DEFAULT_AUTHORITY = 0x73,
  101. GST_MTS_DESC_DVB_RELATED_CONTENT = 0x74,
  102. GST_MTS_DESC_DVB_TVA_ID = 0x75,
  103. GST_MTS_DESC_DVB_CONTENT_IDENTIFIER = 0x76,
  104. GST_MTS_DESC_DVB_TIMESLICE_FEC_IDENTIFIER = 0x77,
  105. GST_MTS_DESC_DVB_ECM_REPETITION_RATE = 0x78,
  106. GST_MTS_DESC_DVB_S2_SATELLITE_DELIVERY_SYSTEM = 0x79,
  107. GST_MTS_DESC_DVB_ENHANCED_AC3 = 0x7A,
  108. GST_MTS_DESC_DVB_DTS = 0x7B,
  109. GST_MTS_DESC_DVB_AAC = 0x7C,
  110. GST_MTS_DESC_DVB_XAIT_LOCATION = 0x7D,
  111. GST_MTS_DESC_DVB_FTA_CONTENT_MANAGEMENT = 0x7E,
  112. GST_MTS_DESC_DVB_EXTENSION = 0x7F,
  113. } GstMpegtsDVBDescriptorType;
  114. /**
  115. * GstMpegtsDVBExtendedDescriptorType:
  116. *
  117. * The type of #GstMpegtsDescriptor
  118. *
  119. * These values correspond to the registered extended descriptor
  120. * type from the various DVB specifications.
  121. *
  122. * Consult the relevant specifications for more details.
  123. */
  124. typedef enum {
  125. /* 00 - 0x7F DVB extended tags ETSI EN 300 468
  126. * (Specification for Service Information (SI) in DVB systems)
  127. */
  128. GST_MTS_DESC_EXT_DVB_IMAGE_ICON = 0x00,
  129. /* TS/TR 102 825 */
  130. GST_MTS_DESC_EXT_DVB_CPCM_DELIVERY_SIGNALLING = 0x01,
  131. GST_MTS_DESC_EXT_DVB_CP = 0x02,
  132. GST_MTS_DESC_EXT_DVB_CP_IDENTIFIER = 0x03,
  133. GST_MTS_DESC_EXT_DVB_T2_DELIVERY_SYSTEM = 0x04,
  134. GST_MTS_DESC_EXT_DVB_SH_DELIVERY_SYSTEM = 0x05,
  135. GST_MTS_DESC_EXT_DVB_SUPPLEMENTARY_AUDIO = 0x06,
  136. GST_MTS_DESC_EXT_DVB_NETWORK_CHANGE_NOTIFY = 0x07,
  137. GST_MTS_DESC_EXT_DVB_MESSAGE = 0x08,
  138. GST_MTS_DESC_EXT_DVB_TARGET_REGION = 0x09,
  139. GST_MTS_DESC_EXT_DVB_TARGET_REGION_NAME = 0x0A,
  140. GST_MTS_DESC_EXT_DVB_SERVICE_RELOCATED = 0x0B,
  141. GST_MTS_DESC_EXT_DVB_XAIT_PID = 0x0C,
  142. GST_MTS_DESC_EXT_DVB_C2_DELIVERY_SYSTEM = 0x0D,
  143. GST_MTS_DESC_EXT_DVB_DTS_HD_AUDIO_STREAM = 0x0E,
  144. GST_MTS_DESC_EXT_DVB_DTS_NEUTRAL = 0x0F,
  145. GST_MTS_DESC_EXT_DVB_VIDEO_DEPTH_RANGE = 0x10,
  146. GST_MTS_DESC_EXT_DVB_T2MI = 0x11,
  147. GST_MTS_DESC_EXT_DVB_URI_LINKAGE = 0x13,
  148. } GstMpegtsDVBExtendedDescriptorType;
  149. /* GST_MTS_DESC_DVB_CAROUSEL_IDENTIFIER (0x13) */
  150. /* FIXME : Implement */
  151. /* GST_MTS_DESC_DVB_NETWORK_NAME (0x40) */
  152. gboolean gst_mpegts_descriptor_parse_dvb_network_name (const GstMpegtsDescriptor *descriptor,
  153. gchar **name);
  154. GstMpegtsDescriptor *gst_mpegts_descriptor_from_dvb_network_name (const gchar * name);
  155. /* GST_MTS_DESC_DVB_STUFFING (0x42) */
  156. gboolean gst_mpegts_descriptor_parse_dvb_stuffing (const GstMpegtsDescriptor * descriptor,
  157. guint8 ** stuffing_bytes);
  158. /* GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM (0x43) */
  159. typedef struct _GstMpegtsSatelliteDeliverySystemDescriptor GstMpegtsSatelliteDeliverySystemDescriptor;
  160. typedef enum {
  161. GST_MPEGTS_MODULATION_QPSK = 0,
  162. GST_MPEGTS_MODULATION_QAM_16,
  163. GST_MPEGTS_MODULATION_QAM_32,
  164. GST_MPEGTS_MODULATION_QAM_64,
  165. GST_MPEGTS_MODULATION_QAM_128,
  166. GST_MPEGTS_MODULATION_QAM_256,
  167. GST_MPEGTS_MODULATION_QAM_AUTO,
  168. GST_MPEGTS_MODULATION_VSB_8,
  169. GST_MPEGTS_MODULATION_VSB_16,
  170. GST_MPEGTS_MODULATION_PSK_8,
  171. GST_MPEGTS_MODULATION_APSK_16,
  172. GST_MPEGTS_MODULATION_APSK_32,
  173. GST_MPEGTS_MODULATION_DQPSK,
  174. GST_MPEGTS_MODULATION_QAM_4_NR_,
  175. GST_MPEGTS_MODULATION_NONE
  176. } GstMpegtsModulationType;
  177. typedef enum {
  178. GST_MPEGTS_FEC_NONE = 0,
  179. GST_MPEGTS_FEC_1_2,
  180. GST_MPEGTS_FEC_2_3,
  181. GST_MPEGTS_FEC_3_4,
  182. GST_MPEGTS_FEC_4_5,
  183. GST_MPEGTS_FEC_5_6,
  184. GST_MPEGTS_FEC_6_7,
  185. GST_MPEGTS_FEC_7_8,
  186. GST_MPEGTS_FEC_8_9,
  187. GST_MPEGTS_FEC_AUTO,
  188. GST_MPEGTS_FEC_3_5,
  189. GST_MPEGTS_FEC_9_10,
  190. GST_MPEGTS_FEC_2_5
  191. } GstMpegtsDVBCodeRate;
  192. typedef enum {
  193. GST_MPEGTS_ROLLOFF_35 = 0,
  194. GST_MPEGTS_ROLLOFF_20,
  195. GST_MPEGTS_ROLLOFF_25,
  196. GST_MPEGTS_ROLLOFF_RESERVED,
  197. GST_MPEGTS_ROLLOFF_AUTO
  198. } GstMpegtsSatelliteRolloff;
  199. typedef enum {
  200. GST_MPEGTS_POLARIZATION_LINEAR_HORIZONTAL = 0,
  201. GST_MPEGTS_POLARIZATION_LINEAR_VERTICAL,
  202. GST_MPEGTS_POLARIZATION_CIRCULAR_LEFT,
  203. GST_MPEGTS_POLARIZATION_CIRCULAR_RIGHT
  204. } GstMpegtsSatellitePolarizationType;
  205. /**
  206. * GstMpegtsSatelliteDeliverySystemDescriptor:
  207. * @frequency: the frequency in kHz (kiloHertz)
  208. * @orbital_position: the orbital position in degrees
  209. * @west_east: If %TRUE, the satellite is in the eastern part of the orbit,
  210. * else in the western part.
  211. * @polarization: The polarization of the transmitted signal
  212. * @roll_off: Roll-off factor used in DVB-S2
  213. * @modulation_system: modulation system, %TRUE if DVB-S2, else DVB-S
  214. * @modulation_type: Modulation scheme used
  215. * @symbol_rate: Symbol rate (in symbols per second)
  216. * @fec_inner: inner FEC scheme used
  217. *
  218. * Satellite Delivery System Descriptor (EN 300 468 v.1.13.1)
  219. */
  220. struct _GstMpegtsSatelliteDeliverySystemDescriptor
  221. {
  222. guint32 frequency;
  223. gfloat orbital_position;
  224. gboolean west_east;
  225. GstMpegtsSatellitePolarizationType polarization;
  226. GstMpegtsSatelliteRolloff roll_off;
  227. gboolean modulation_system;
  228. GstMpegtsModulationType modulation_type;
  229. guint32 symbol_rate;
  230. GstMpegtsDVBCodeRate fec_inner;
  231. };
  232. gboolean gst_mpegts_descriptor_parse_satellite_delivery_system (const GstMpegtsDescriptor *descriptor,
  233. GstMpegtsSatelliteDeliverySystemDescriptor *res);
  234. /* GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM (0x44) */
  235. typedef enum {
  236. GST_MPEGTS_CABLE_OUTER_FEC_UNDEFINED = 0,
  237. GST_MPEGTS_CABLE_OUTER_FEC_NONE,
  238. GST_MPEGTS_CABLE_OUTER_FEC_RS_204_188,
  239. } GstMpegtsCableOuterFECScheme;
  240. typedef struct _GstMpegtsCableDeliverySystemDescriptor GstMpegtsCableDeliverySystemDescriptor;
  241. /**
  242. * GstMpegtsCableDeliverySystemDescriptor:
  243. * @frequency: the frequency in Hz (Hertz)
  244. * @outer_fec: the outer FEC scheme used
  245. * @modulation: Modulation scheme used
  246. * @symbol_rate: Symbol rate (in symbols per second)
  247. * @fec_inner: inner FEC scheme used
  248. *
  249. * Cable Delivery System Descriptor (EN 300 468 v.1.13.1)
  250. */
  251. struct _GstMpegtsCableDeliverySystemDescriptor
  252. {
  253. guint32 frequency;
  254. GstMpegtsCableOuterFECScheme outer_fec;
  255. GstMpegtsModulationType modulation;
  256. guint32 symbol_rate;
  257. GstMpegtsDVBCodeRate fec_inner;
  258. };
  259. gboolean gst_mpegts_descriptor_parse_cable_delivery_system (const GstMpegtsDescriptor *descriptor,
  260. GstMpegtsCableDeliverySystemDescriptor *res);
  261. /* GST_MTS_DESC_DVB_BOUQUET_NAME (0x47) */
  262. gboolean gst_mpegts_descriptor_parse_dvb_bouquet_name (const GstMpegtsDescriptor * descriptor,
  263. gchar ** bouquet_name);
  264. /* GST_MTS_DESC_DVB_SERVICE (0x48) */
  265. /**
  266. * GstMpegtsDVBServiceType:
  267. *
  268. * The type of service of a channel.
  269. *
  270. * As specified in Table 87 of ETSI EN 300 468 v1.13.1
  271. */
  272. typedef enum {
  273. GST_DVB_SERVICE_RESERVED_00 = 0x00,
  274. GST_DVB_SERVICE_DIGITAL_TELEVISION,
  275. GST_DVB_SERVICE_DIGITAL_RADIO_SOUND,
  276. GST_DVB_SERVICE_TELETEXT,
  277. GST_DVB_SERVICE_NVOD_REFERENCE,
  278. GST_DVB_SERVICE_NVOD_TIME_SHIFTED,
  279. GST_DVB_SERVICE_MOSAIC,
  280. GST_DVB_SERVICE_FM_RADIO,
  281. GST_DVB_SERVICE_DVB_SRM,
  282. GST_DVB_SERVICE_RESERVED_09,
  283. GST_DVB_SERVICE_ADVANCED_CODEC_DIGITAL_RADIO_SOUND,
  284. GST_DVB_SERVICE_ADVANCED_CODEC_MOSAIC,
  285. GST_DVB_SERVICE_DATA_BROADCAST,
  286. GST_DVB_SERVICE_RESERVED_0D_COMMON_INTERFACE,
  287. GST_DVB_SERVICE_RCS_MAP,
  288. GST_DVB_SERVICE_RCS_FLS,
  289. GST_DVB_SERVICE_DVB_MHP,
  290. GST_DVB_SERVICE_MPEG2_HD_DIGITAL_TELEVISION,
  291. /* 0x12 - 015 Reserved for future use */
  292. GST_DVB_SERVICE_ADVANCED_CODEC_SD_DIGITAL_TELEVISION = 0x16,
  293. GST_DVB_SERVICE_ADVANCED_CODEC_SD_NVOD_TIME_SHIFTED,
  294. GST_DVB_SERVICE_ADVANCED_CODEC_SD_NVOD_REFERENCE,
  295. GST_DVB_SERVICE_ADVANCED_CODEC_HD_DIGITAL_TELEVISION,
  296. GST_DVB_SERVICE_ADVANCED_CODEC_HD_NVOD_TIME_SHIFTED,
  297. GST_DVB_SERVICE_ADVANCED_CODEC_HD_NVOD_REFERENCE,
  298. GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_DIGITAL_TELEVISION,
  299. GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_NVOD_TIME_SHIFTED,
  300. GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_NVOD_REFERENCE,
  301. /* 0x1F - 0x7f Reserved for future use */
  302. /* 0x80 - 0xfe user defined */
  303. /* 0xff Reserved for future use */
  304. GST_DVB_SERVICE_RESERVED_FF
  305. } GstMpegtsDVBServiceType;
  306. gboolean gst_mpegts_descriptor_parse_dvb_service (const GstMpegtsDescriptor *descriptor,
  307. GstMpegtsDVBServiceType *service_type,
  308. gchar **service_name,
  309. gchar **provider_name);
  310. GstMpegtsDescriptor *gst_mpegts_descriptor_from_dvb_service (GstMpegtsDVBServiceType service_type,
  311. const gchar * service_name,
  312. const gchar * service_provider);
  313. /* GST_MTS_DESC_DVB_SERVICE_LIST (0x41) */
  314. typedef struct _GstMpegtsDVBServiceListItem GstMpegtsDVBServiceListItem;
  315. /**
  316. * GstMpegtsDVBServiceListItem:
  317. * @service_id: the id of a service
  318. * @type: the type of a service
  319. */
  320. struct _GstMpegtsDVBServiceListItem
  321. {
  322. guint16 service_id;
  323. GstMpegtsDVBServiceType type;
  324. };
  325. gboolean gst_mpegts_descriptor_parse_dvb_service_list (const GstMpegtsDescriptor * descriptor,
  326. GPtrArray ** list);
  327. /* GST_MTS_DESC_DVB_LINKAGE (0x4A) */
  328. /**
  329. * GstMpegtsDVBLinkageType:
  330. *
  331. * Linkage Type (EN 300 468 v.1.13.1)
  332. */
  333. typedef enum {
  334. /* 0x00, 0x0F-0x7F reserved for future use */
  335. GST_MPEGTS_DVB_LINKAGE_RESERVED_00 = 0x00,
  336. GST_MPEGTS_DVB_LINKAGE_INFORMATION = 0x01,
  337. GST_MPEGTS_DVB_LINKAGE_EPG = 0x02,
  338. GST_MPEGTS_DVB_LINKAGE_CA_REPLACEMENT = 0x03,
  339. GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_COMPLETE_SI = 0x04,
  340. GST_MPEGTS_DVB_LINKAGE_SERVICE_REPLACEMENT = 0x05,
  341. GST_MPEGTS_DVB_LINKAGE_DATA_BROADCAST = 0x06,
  342. GST_MPEGTS_DVB_LINKAGE_RCS_MAP = 0x07,
  343. GST_MPEGTS_DVB_LINKAGE_MOBILE_HAND_OVER = 0x08,
  344. GST_MPEGTS_DVB_LINKAGE_SYSTEM_SOFTWARE_UPDATE = 0x09,
  345. GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_SSU = 0x0A,
  346. GST_MPEGTS_DVB_LINKAGE_IP_MAC_NOTIFICATION = 0x0B,
  347. GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_INT = 0x0C,
  348. GST_MPEGTS_DVB_LINKAGE_EVENT = 0x0D,
  349. GST_MPEGTS_DVB_LINKAGE_EXTENDED_EVENT = 0x0E,
  350. } GstMpegtsDVBLinkageType;
  351. typedef enum {
  352. GST_MPEGTS_DVB_LINKAGE_HAND_OVER_RESERVED = 0x00,
  353. GST_MPEGTS_DVB_LINKAGE_HAND_OVER_IDENTICAL = 0x01,
  354. GST_MPEGTS_DVB_LINKAGE_HAND_OVER_LOCAL_VARIATION = 0x02,
  355. GST_MPEGTS_DVB_LINKAGE_HAND_OVER_ASSOCIATED = 0x03,
  356. } GstMpegtsDVBLinkageHandOverType;
  357. typedef struct _GstMpegtsDVBLinkageMobileHandOver GstMpegtsDVBLinkageMobileHandOver;
  358. typedef struct _GstMpegtsDVBLinkageEvent GstMpegtsDVBLinkageEvent;
  359. typedef struct _GstMpegtsDVBLinkageExtendedEvent GstMpegtsDVBLinkageExtendedEvent;
  360. typedef struct _GstMpegtsDVBLinkageDescriptor GstMpegtsDVBLinkageDescriptor;
  361. struct _GstMpegtsDVBLinkageMobileHandOver
  362. {
  363. GstMpegtsDVBLinkageHandOverType hand_over_type;
  364. /* 0 = NIT, 1 = SDT */
  365. gboolean origin_type;
  366. guint16 network_id;
  367. guint16 initial_service_id;
  368. };
  369. struct _GstMpegtsDVBLinkageEvent
  370. {
  371. guint16 target_event_id;
  372. gboolean target_listed;
  373. gboolean event_simulcast;
  374. };
  375. struct _GstMpegtsDVBLinkageExtendedEvent
  376. {
  377. guint16 target_event_id;
  378. gboolean target_listed;
  379. gboolean event_simulcast;
  380. /* FIXME: */
  381. guint8 link_type;
  382. /* FIXME: */
  383. guint8 target_id_type;
  384. gboolean original_network_id_flag;
  385. gboolean service_id_flag;
  386. /* if (target_id_type == 3) */
  387. guint16 user_defined_id;
  388. /* else */
  389. guint16 target_transport_stream_id;
  390. guint16 target_original_network_id;
  391. guint16 target_service_id;
  392. };
  393. /**
  394. * GstMpegtsDVBLinkageDescriptor:
  395. * @transport_stream_id: the transport id
  396. * @original_network_id: the original network id
  397. * @service_id: the service id
  398. * @linkage_type: the type which %linkage_data has
  399. * @private_data_length: the length for %private_data_bytes
  400. * @private_data_bytes: additional data bytes
  401. */
  402. struct _GstMpegtsDVBLinkageDescriptor
  403. {
  404. guint16 transport_stream_id;
  405. guint16 original_network_id;
  406. guint16 service_id;
  407. GstMpegtsDVBLinkageType linkage_type;
  408. /*< private >*/
  409. gpointer linkage_data;
  410. /*< public >*/
  411. guint8 private_data_length;
  412. guint8 *private_data_bytes;
  413. };
  414. #define GST_TYPE_MPEGTS_DVB_LINKAGE_DESCRIPTOR ( gst_mpegts_dvb_linkage_descriptor_get_type())
  415. GType gst_mpegts_dvb_linkage_descriptor_get_type (void);
  416. void gst_mpegts_dvb_linkage_descriptor_free (GstMpegtsDVBLinkageDescriptor * source);
  417. const GstMpegtsDVBLinkageMobileHandOver * gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over
  418. (const GstMpegtsDVBLinkageDescriptor * desc);
  419. const GstMpegtsDVBLinkageEvent * gst_mpegts_dvb_linkage_descriptor_get_event
  420. (const GstMpegtsDVBLinkageDescriptor * desc);
  421. const GPtrArray * gst_mpegts_dvb_linkage_descriptor_get_extended_event
  422. (const GstMpegtsDVBLinkageDescriptor * desc);
  423. gboolean gst_mpegts_descriptor_parse_dvb_linkage (const GstMpegtsDescriptor * descriptor,
  424. GstMpegtsDVBLinkageDescriptor ** res);
  425. /* GST_MTS_DESC_DVB_SHORT_EVENT (0x4D) */
  426. gboolean gst_mpegts_descriptor_parse_dvb_short_event (const GstMpegtsDescriptor *descriptor,
  427. gchar **language_code,
  428. gchar **event_name,
  429. gchar **text);
  430. /* GST_MTS_DESC_DVB_EXTENDED_EVENT (0x4E) */
  431. typedef struct _GstMpegtsExtendedEventDescriptor GstMpegtsExtendedEventDescriptor;
  432. typedef struct _GstMpegtsExtendedEventItem GstMpegtsExtendedEventItem;
  433. /* FIXME : Maybe make a separate method for getting a specific item entry ? */
  434. struct _GstMpegtsExtendedEventItem
  435. {
  436. gchar *item_description;
  437. gchar *item;
  438. };
  439. /**
  440. * GstMpegtsExtendedEventDescriptor:
  441. * @desctiptor_number:
  442. * @last_descriptor_number:
  443. * @language_code: NULL terminated language code.
  444. * @items: (element-type GstMpegtsExtendedEventItem): the #GstMpegtsExtendedEventItem
  445. * @text:
  446. *
  447. * Extended Event Descriptor (EN 300 468 v.1.13.1)
  448. */
  449. struct _GstMpegtsExtendedEventDescriptor
  450. {
  451. guint8 descriptor_number;
  452. guint8 last_descriptor_number;
  453. gchar *language_code;
  454. GPtrArray *items;
  455. gchar *text;
  456. };
  457. #define GST_TYPE_MPEGTS_EXTENDED_EVENT_DESCRIPTOR (gst_mpegts_extended_event_descriptor_get_type())
  458. GType gst_mpegts_extended_event_descriptor_get_type (void);
  459. void gst_mpegts_extended_event_descriptor_free (GstMpegtsExtendedEventDescriptor * source);
  460. gboolean gst_mpegts_descriptor_parse_dvb_extended_event (const GstMpegtsDescriptor *descriptor,
  461. GstMpegtsExtendedEventDescriptor **res);
  462. /* GST_MTS_DESC_DVB_COMPONENT (0x50) */
  463. #define GST_TYPE_MPEGTS_COMPONENT_DESCRIPTOR (gst_mpegts_component_descriptor_get_type ())
  464. typedef enum {
  465. GST_MPEGTS_STREAM_CONTENT_MPEG2_VIDEO = 0x01,
  466. GST_MPEGTS_STREAM_CONTENT_MPEG1_LAYER2_AUDIO = 0x02,
  467. GST_MPEGTS_STREAM_CONTENT_TELETEXT_OR_SUBTITLE = 0x03,
  468. GST_MPEGTS_STREAM_CONTENT_AC_3 = 0x04,
  469. GST_MPEGTS_STREAM_CONTENT_AVC = 0x05,
  470. GST_MPEGTS_STREAM_CONTENT_AAC = 0x06,
  471. GST_MPEGTS_STREAM_CONTENT_DTS = 0x07,
  472. GST_MPEGTS_STREAM_CONTENT_SRM_CPCM = 0x08
  473. } GstMpegtsComponentStreamContent;
  474. typedef struct _GstMpegtsComponentDescriptor GstMpegtsComponentDescriptor;
  475. struct _GstMpegtsComponentDescriptor
  476. {
  477. guint8 stream_content;
  478. guint8 component_type;
  479. guint8 component_tag;
  480. gchar *language_code;
  481. gchar *text;
  482. };
  483. GType gst_mpegts_component_descriptor_get_type (void);
  484. void gst_mpegts_dvb_component_descriptor_free (GstMpegtsComponentDescriptor * source);
  485. gboolean gst_mpegts_descriptor_parse_dvb_component (const GstMpegtsDescriptor *descriptor,
  486. GstMpegtsComponentDescriptor **res);
  487. /* GST_MTS_DESC_DVB_STREAM_IDENTIFIER (0x52) */
  488. gboolean gst_mpegts_descriptor_parse_dvb_stream_identifier (const GstMpegtsDescriptor *descriptor,
  489. guint8 *component_tag);
  490. /* GST_MTS_DESC_DVB_CA_IDENTIFIER (0x53) */
  491. gboolean gst_mpegts_descriptor_parse_dvb_ca_identifier (const GstMpegtsDescriptor * descriptor,
  492. GArray ** list);
  493. /* GST_MTS_DESC_DVB_CONTENT (0x54) */
  494. typedef enum {
  495. GST_MPEGTS_CONTENT_MOVIE_DRAMA = 0x01,
  496. GST_MPEGTS_CONTENT_NEWS_CURRENT_AFFAIRS = 0x02,
  497. GST_MPEGTS_CONTENT_SHOW_GAME_SHOW = 0x03,
  498. GST_MPEGTS_CONTENT_SPORTS = 0x04,
  499. GST_MPEGTS_CONTENT_CHILDREN_YOUTH_PROGRAM = 0x05,
  500. GST_MPEGTS_CONTENT_MUSIC_BALLET_DANCE = 0x06,
  501. GST_MPEGTS_CONTENT_ARTS_CULTURE = 0x07,
  502. GST_MPEGTS_CONTENT_SOCIAL_POLITICAL_ECONOMICS = 0x08,
  503. GST_MPEGTS_CONTENT_EDUCATION_SCIENCE_FACTUAL = 0x09,
  504. GST_MPEGTS_CONTENT_LEISURE_HOBBIES = 0x0A,
  505. GST_MPEGTS_CONTENT_SPECIAL_CHARACTERISTICS = 0x0B
  506. } GstMpegtsContentNibbleHi;
  507. typedef struct _GstMpegtsContent GstMpegtsContent;
  508. struct _GstMpegtsContent
  509. {
  510. GstMpegtsContentNibbleHi content_nibble_1;
  511. guint8 content_nibble_2;
  512. guint8 user_byte;
  513. };
  514. gboolean gst_mpegts_descriptor_parse_dvb_content (const GstMpegtsDescriptor *
  515. descriptor, GPtrArray ** content);
  516. /* GST_MTS_DESC_DVB_PARENTAL_RATING (0x55) */
  517. typedef struct _GstMpegtsDVBParentalRatingItem GstMpegtsDVBParentalRatingItem;
  518. /**
  519. * GstMpegtsDVBParentalRating:
  520. * @country_code: This 24-bit field identifies a country using the 3-character
  521. * code as specified in ISO 3166
  522. * @rating: the rating age
  523. */
  524. struct _GstMpegtsDVBParentalRatingItem
  525. {
  526. gchar *country_code;
  527. guint8 rating;
  528. };
  529. gboolean gst_mpegts_descriptor_parse_dvb_parental_rating (const GstMpegtsDescriptor
  530. * descriptor, GPtrArray ** rating);
  531. /* GST_MTS_DESC_DVB_TELETEXT (0x56) */
  532. /**
  533. * GstMpegtsDVBTeletextType:
  534. *
  535. * The type of teletext page.
  536. *
  537. * As specified in Table 100 of ETSI EN 300 468 v1.13.1
  538. */
  539. typedef enum {
  540. INITIAL_PAGE = 0x01,
  541. SUBTITLE_PAGE,
  542. ADDITIONAL_INFO_PAGE,
  543. PROGRAMME_SCHEDULE_PAGE,
  544. HEARING_IMPAIRED_PAGE
  545. } GstMpegtsDVBTeletextType;
  546. gboolean gst_mpegts_descriptor_parse_dvb_teletext_idx (const GstMpegtsDescriptor *
  547. descriptor, guint idx, gchar ** language_code,
  548. GstMpegtsDVBTeletextType * teletext_type, guint8 * magazine_number,
  549. guint8 * page_number);
  550. guint gst_mpegts_descriptor_parse_dvb_teletext_nb (const GstMpegtsDescriptor *
  551. descriptor);
  552. /* GST_MTS_DESC_DVB_SUBTITLING (0x59) */
  553. gboolean gst_mpegts_descriptor_parse_dvb_subtitling_idx (const GstMpegtsDescriptor *descriptor,
  554. guint idx, gchar ** lang,
  555. guint8 *type, guint16 *composition_page_id,
  556. guint16 *ancillary_page_id);
  557. guint gst_mpegts_descriptor_parse_dvb_subtitling_nb (const GstMpegtsDescriptor *descriptor);
  558. GstMpegtsDescriptor * gst_mpegts_descriptor_from_dvb_subtitling (const gchar *lang,
  559. guint8 type, guint16 composition, guint16 ancillary);
  560. /* GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM (0x5A) */
  561. typedef struct _GstMpegtsTerrestrialDeliverySystemDescriptor GstMpegtsTerrestrialDeliverySystemDescriptor;
  562. typedef enum {
  563. GST_MPEGTS_TRANSMISSION_MODE_2K = 0,
  564. GST_MPEGTS_TRANSMISSION_MODE_8K,
  565. GST_MPEGTS_TRANSMISSION_MODE_AUTO,
  566. GST_MPEGTS_TRANSMISSION_MODE_4K,
  567. GST_MPEGTS_TRANSMISSION_MODE_1K,
  568. GST_MPEGTS_TRANSMISSION_MODE_16K,
  569. GST_MPEGTS_TRANSMISSION_MODE_32K,
  570. GST_MPEGTS_TRANSMISSION_MODE_C1,
  571. GST_MPEGTS_TRANSMISSION_MODE_C3780
  572. } GstMpegtsTerrestrialTransmissionMode;
  573. typedef enum {
  574. GST_MPEGTS_GUARD_INTERVAL_1_32 = 0,
  575. GST_MPEGTS_GUARD_INTERVAL_1_16,
  576. GST_MPEGTS_GUARD_INTERVAL_1_8,
  577. GST_MPEGTS_GUARD_INTERVAL_1_4,
  578. GST_MPEGTS_GUARD_INTERVAL_AUTO,
  579. GST_MPEGTS_GUARD_INTERVAL_1_128,
  580. GST_MPEGTS_GUARD_INTERVAL_19_128,
  581. GST_MPEGTS_GUARD_INTERVAL_19_256,
  582. GST_MPEGTS_GUARD_INTERVAL_PN420,
  583. GST_MPEGTS_GUARD_INTERVAL_PN595,
  584. GST_MPEGTS_GUARD_INTERVAL_PN945
  585. } GstMpegtsTerrestrialGuardInterval;
  586. typedef enum {
  587. GST_MPEGTS_HIERARCHY_NONE = 0,
  588. GST_MPEGTS_HIERARCHY_1,
  589. GST_MPEGTS_HIERARCHY_2,
  590. GST_MPEGTS_HIERARCHY_4,
  591. GST_MPEGTS_HIERARCHY_AUTO
  592. } GstMpegtsTerrestrialHierarchy;
  593. /**
  594. * GstMpegtsTerrestrialDeliverySystemDescriptor:
  595. * @frequency: the frequency in Hz (Hertz)
  596. * @bandwidth: the bandwidth in Hz (Hertz)
  597. * @priority: %TRUE High Priority %FALSE Low Priority
  598. * @time_slicing: %TRUE no time slicing %FALSE time slicing
  599. * @mpe_fec: %TRUE no mpe-fec is used %FALSE mpe-fec is use
  600. * @constellation: the constallation
  601. * @hierarchy: the hierarchy
  602. * @code_rate_hp:
  603. * @code_rate_lp:
  604. * @guard_interval:
  605. * @transmission_mode:
  606. * @other_frequency: %TRUE more frequency are use, else not
  607. *
  608. * Terrestrial Delivery System Descriptor (EN 300 468 v.1.13.1)
  609. */
  610. struct _GstMpegtsTerrestrialDeliverySystemDescriptor
  611. {
  612. guint32 frequency;
  613. guint32 bandwidth;
  614. gboolean priority;
  615. gboolean time_slicing;
  616. gboolean mpe_fec;
  617. GstMpegtsModulationType constellation;
  618. GstMpegtsTerrestrialHierarchy hierarchy;
  619. GstMpegtsDVBCodeRate code_rate_hp;
  620. GstMpegtsDVBCodeRate code_rate_lp;
  621. GstMpegtsTerrestrialGuardInterval guard_interval;
  622. GstMpegtsTerrestrialTransmissionMode transmission_mode;
  623. gboolean other_frequency;
  624. };
  625. gboolean gst_mpegts_descriptor_parse_terrestrial_delivery_system (const GstMpegtsDescriptor
  626. *descriptor, GstMpegtsTerrestrialDeliverySystemDescriptor * res);
  627. /* GST_MTS_DESC_DVB_MULTILINGUAL_NETWORK_NAME (0x5B) */
  628. typedef struct _GstMpegtsDvbMultilingualNetworkNameItem GstMpegtsDvbMultilingualNetworkNameItem;
  629. /**
  630. * GstMpegtsDvbMultilingualNetworkNameItem:
  631. * @language_code: the ISO 639 language code
  632. * @network_name: the network name
  633. *
  634. * a multilingual network name entry
  635. */
  636. struct _GstMpegtsDvbMultilingualNetworkNameItem
  637. {
  638. gchar *language_code;
  639. gchar *network_name;
  640. };
  641. gboolean gst_mpegts_descriptor_parse_dvb_multilingual_network_name (const GstMpegtsDescriptor
  642. *descriptor, GPtrArray ** network_name_items);
  643. /* GST_MTS_DESC_DVB_MULTILINGUAL_BOUQUET_NAME (0x5C) */
  644. typedef struct _GstMpegtsDvbMultilingualBouquetNameItem GstMpegtsDvbMultilingualBouquetNameItem;
  645. /**
  646. * GstMpegtsDvbMultilingualBouquetNameItem:
  647. * @language_code: the ISO 639 language code
  648. * @bouquet_name: the bouquet name
  649. *
  650. * a multilingual bouquet name entry
  651. */
  652. struct _GstMpegtsDvbMultilingualBouquetNameItem
  653. {
  654. gchar *language_code;
  655. gchar *bouquet_name;
  656. };
  657. gboolean gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name (const GstMpegtsDescriptor
  658. *descriptor, GPtrArray ** bouquet_name_items);
  659. /* GST_MTS_DESC_DVB_MULTILINGUAL_SERVICE_NAME (0x5D) */
  660. typedef struct _GstMpegtsDvbMultilingualServiceNameItem GstMpegtsDvbMultilingualServiceNameItem;
  661. /**
  662. * GstMpegtsDvbMultilingualServiceNameItem:
  663. * @language_code: the ISO 639 language code
  664. * @provider_name: the provider name
  665. * @service_name: the service name
  666. *
  667. * a multilingual service name entry
  668. */
  669. struct _GstMpegtsDvbMultilingualServiceNameItem
  670. {
  671. gchar *language_code;
  672. gchar *provider_name;
  673. gchar *service_name;
  674. };
  675. gboolean gst_mpegts_descriptor_parse_dvb_multilingual_service_name (const GstMpegtsDescriptor
  676. *descriptor, GPtrArray ** service_name_items);
  677. /* GST_MTS_DESC_DVB_MULTILINGUAL_COMPONENT (0x5E) */
  678. typedef struct _GstMpegtsDvbMultilingualComponentItem GstMpegtsDvbMultilingualComponentItem;
  679. /**
  680. * GstMpegtsDvbMultilingualComponentItem:
  681. * @language_code: the ISO 639 language code
  682. * @description: the component description
  683. */
  684. struct _GstMpegtsDvbMultilingualComponentItem
  685. {
  686. gchar *language_code;
  687. gchar *description;
  688. };
  689. gboolean gst_mpegts_descriptor_parse_dvb_multilingual_component (const GstMpegtsDescriptor
  690. *descriptor, guint8 * component_tag, GPtrArray ** component_description_items);
  691. /* GST_MTS_DESC_DVB_PRIVATE_DATA_SPECIFIER (0x5F) */
  692. gboolean gst_mpegts_descriptor_parse_dvb_private_data_specifier (const GstMpegtsDescriptor
  693. * descriptor, guint32 * private_data_specifier, guint8 ** private_data,
  694. guint8 * length);
  695. /* GST_MTS_DESC_DVB_FREQUENCY_LIST (0x62) */
  696. gboolean gst_mpegts_descriptor_parse_dvb_frequency_list (const GstMpegtsDescriptor
  697. * descriptor, gboolean * offset, GArray ** list);
  698. /* GST_MTS_DESC_DVB_DATA_BROADCAST (0x64) */
  699. typedef struct _GstMpegtsDataBroadcastDescriptor GstMpegtsDataBroadcastDescriptor;
  700. /**
  701. * GstMpegtsDataBroadcastDescriptor:
  702. * @data_broadcast_id: the data broadcast id
  703. * @component_tag: the component tag
  704. * @selector_bytes: the selector byte field
  705. * @language_code: language of @text
  706. * @text: description of data broadcast
  707. */
  708. struct _GstMpegtsDataBroadcastDescriptor
  709. {
  710. guint16 data_broadcast_id;
  711. guint8 component_tag;
  712. guint8 length;
  713. guint8 *selector_bytes;
  714. gchar *language_code;
  715. gchar *text;
  716. };
  717. #define GST_TYPE_MPEGTS_DVB_DATA_BROADCAST_DESCRIPTOR (gst_mpegts_dvb_data_broadcast_descriptor_get_type ())
  718. GType gst_mpegts_dvb_data_broadcast_descriptor_get_type (void);
  719. void gst_mpegts_dvb_data_broadcast_descriptor_free (GstMpegtsDataBroadcastDescriptor * source);
  720. gboolean gst_mpegts_descriptor_parse_dvb_data_broadcast (const GstMpegtsDescriptor
  721. *descriptor, GstMpegtsDataBroadcastDescriptor ** res);
  722. /* GST_MTS_DESC_DVB_SCRAMBLING (0x65) */
  723. typedef enum
  724. {
  725. GST_MPEGTS_DVB_SCRAMBLING_MODE_RESERVED = 0x00,
  726. GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA1 = 0x01,
  727. GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA2 = 0x02,
  728. GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_STANDARD = 0x03,
  729. GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_MINIMAL_ENHANCED = 0x04,
  730. GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_FULL_ENHANCED = 0x05,
  731. /* 0x06 - 0x0f reserved for future use */
  732. GST_MPEGTS_DVB_SCRAMBLING_MODE_CISSA = 0x10,
  733. /* 0x11 - 0x1f reserved for future DVB-CISSA versions */
  734. GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_0 = 0x70,
  735. GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_F = 0x7f,
  736. } GstMpegtsDVBScramblingModeType;
  737. gboolean gst_mpegts_descriptor_parse_dvb_scrambling (const GstMpegtsDescriptor * descriptor,
  738. GstMpegtsDVBScramblingModeType * scrambling_mode);
  739. /* GST_MTS_DESC_DVB_DATA_BROADCAST_ID (0x66) */
  740. gboolean gst_mpegts_descriptor_parse_dvb_data_broadcast_id (const GstMpegtsDescriptor
  741. * descriptor, guint16 * data_broadcast_id, guint8 ** id_selector_bytes, guint8 * len);
  742. /* GST_MTS_DESC_DVB_AC3 (0x6a) */
  743. /* FIXME : Implement */
  744. /* GST_MTS_DESC_EXT_DVB_T2_DELIVERY_SYSTEM (0x7F && 0x04) */
  745. typedef struct _GstMpegtsT2DeliverySystemCellExtension GstMpegtsT2DeliverySystemCellExtension;
  746. /**
  747. * GstMpegtsT2DeliverySystemCellExtension:
  748. * @cell_id_extension: id of the sub cell
  749. * @transposer_frequency: centre frequency of the sub cell in Hz
  750. */
  751. struct _GstMpegtsT2DeliverySystemCellExtension
  752. {
  753. guint8 cell_id_extension;
  754. guint32 transposer_frequency;
  755. };
  756. typedef struct _GstMpegtsT2DeliverySystemCell GstMpegtsT2DeliverySystemCell;
  757. /**
  758. * GstMpegtsT2DeliverySystemCell:
  759. * @cell_id: id of the cell
  760. * @centre_frequencies: (element-type guint32): centre frequencies in Hz
  761. * @sub_cells: (element-type GstMpegtsT2DeliverySystemCellExtension):
  762. */
  763. struct _GstMpegtsT2DeliverySystemCell
  764. {
  765. guint16 cell_id;
  766. GArray *centre_frequencies;
  767. GPtrArray *sub_cells;
  768. };
  769. typedef struct _GstMpegtsT2DeliverySystemDescriptor GstMpegtsT2DeliverySystemDescriptor;
  770. /**
  771. * GstMpegtsT2DeliverySystemDescriptor:
  772. * @plp_id:
  773. * @t2_system_id:
  774. * @siso_miso:
  775. * @bandwidth:
  776. * @guard_interval:
  777. * @transmission_mode:
  778. * @other_frequency:
  779. * @tfs:
  780. * @cells: (element-type GstMpegtsT2DeliverySystemCell):
  781. *
  782. * describe DVB-T2 transmissions according to EN 302 755
  783. */
  784. struct _GstMpegtsT2DeliverySystemDescriptor
  785. {
  786. guint8 plp_id;
  787. guint16 t2_system_id;
  788. /* FIXME: */
  789. guint8 siso_miso;
  790. guint32 bandwidth;
  791. GstMpegtsTerrestrialGuardInterval guard_interval;
  792. GstMpegtsTerrestrialTransmissionMode transmission_mode;
  793. gboolean other_frequency;
  794. gboolean tfs;
  795. GPtrArray *cells;
  796. };
  797. #define GST_TYPE_MPEGTS_T2_DELIVERY_SYSTEM_DESCRIPTOR (gst_mpegts_t2_delivery_system_descriptor_get_type ())
  798. GType gst_mpegts_t2_delivery_system_descriptor_get_type (void);
  799. void gst_mpegts_t2_delivery_system_descriptor_free (GstMpegtsT2DeliverySystemDescriptor * source);
  800. gboolean gst_mpegts_descriptor_parse_dvb_t2_delivery_system (const GstMpegtsDescriptor
  801. *descriptor, GstMpegtsT2DeliverySystemDescriptor ** res);
  802. G_END_DECLS
  803. #endif /* GST_MPEGTS_DESCRIPTOR_H */