gstmpegtssection.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. /*
  2. * mpegtspacketizer.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. #ifndef GST_MPEGTS_SECTION_H
  24. #define GST_MPEGTS_SECTION_H
  25. #include <gst/gst.h>
  26. #include <gst/mpegts/gstmpegtsdescriptor.h>
  27. G_BEGIN_DECLS
  28. typedef struct _GstMpegtsSection GstMpegtsSection;
  29. #define GST_TYPE_MPEGTS_SECTION (gst_mpegts_section_get_type())
  30. #define GST_MPEGTS_SECTION(section) ((GstMpegtsSection*) section)
  31. #define GST_MPEGTS_SECTION_TYPE(section) (GST_MPEGTS_SECTION (section)->section_type)
  32. GType gst_mpegts_section_get_type (void);
  33. /**
  34. * GstMpegtsSectionType:
  35. * @GST_MPEGTS_SECTION_UNKNOWN: Unknown section type
  36. * @GST_MPEGTS_SECTION_PAT: Program Association Table (ISO/IEC 13818-1)
  37. * @GST_MPEGTS_SECTION_PMT: Program Map Table (ISO/IEC 13818-1)
  38. * @GST_MPEGTS_SECTION_CAT: Conditional Access Table (ISO/IEC 13818-1)
  39. * @GST_MPEGTS_SECTION_TSDT: Transport Stream Description Table (ISO/IEC 13818-1)
  40. * @GST_MPEGTS_SECTION_EIT: Event Information Table (EN 300 468)
  41. * @GST_MPEGTS_SECTION_NIT: Network Information Table (ISO/IEC 13818-1 / EN 300 468)
  42. * @GST_MPEGTS_SECTION_BAT: Bouquet Association Table ((EN 300 468)
  43. * @GST_MPEGTS_SECTION_SDT: Service Description Table (EN 300 468)
  44. * @GST_MPEGTS_SECTION_TDT: Time and Date Table (EN 300 468)
  45. * @GST_MPEGTS_SECTION_TOT: Time Offset Table (EN 300 468)
  46. * @GST_MPEGTS_SECTION_ATSC_TVCT: ATSC Terrestrial Virtual Channel Table (A65)
  47. * @GST_MPEGTS_SECTION_ATSC_CVCT: ATSC Cable Virtual Channel Table (A65)
  48. * @GST_MPEGTS_SECTION_ATSC_MGT: ATSC Master Guide Table (A65)
  49. * @GST_MPEGTS_SECTION_ATSC_ETT: ATSC Extended Text Table (A65)
  50. * @GST_MPEGTS_SECTION_ATSC_EIT: ATSC Event Information Table (A65)
  51. * @GST_MPEGTS_SECTION_ATSC_STT: ATSC System Time Table (A65)
  52. *
  53. * Types of #GstMpegtsSection that the library handles.
  54. */
  55. typedef enum {
  56. GST_MPEGTS_SECTION_UNKNOWN = 0,
  57. GST_MPEGTS_SECTION_PAT,
  58. GST_MPEGTS_SECTION_PMT,
  59. GST_MPEGTS_SECTION_CAT,
  60. GST_MPEGTS_SECTION_TSDT,
  61. GST_MPEGTS_SECTION_EIT,
  62. GST_MPEGTS_SECTION_NIT,
  63. GST_MPEGTS_SECTION_BAT,
  64. GST_MPEGTS_SECTION_SDT,
  65. GST_MPEGTS_SECTION_TDT,
  66. GST_MPEGTS_SECTION_TOT,
  67. GST_MPEGTS_SECTION_ATSC_TVCT,
  68. GST_MPEGTS_SECTION_ATSC_CVCT,
  69. GST_MPEGTS_SECTION_ATSC_MGT,
  70. GST_MPEGTS_SECTION_ATSC_ETT,
  71. GST_MPEGTS_SECTION_ATSC_EIT,
  72. GST_MPEGTS_SECTION_ATSC_STT
  73. } GstMpegtsSectionType;
  74. /**
  75. * GstMpegtsSectionTableID:
  76. *
  77. * Values for a #GstMpegtsSection table_id
  78. *
  79. * These are the registered ITU H.222.0 | ISO/IEC 13818-1 table_id variants.
  80. *
  81. * see also #GstMpegtsSectionATSCTableID, #GstMpegtsSectionDVBTableID, and
  82. * #GstMpegtsSectionSCTETableID
  83. */
  84. typedef enum {
  85. /* ITU H.222.0 / IEC 13818-1 */
  86. GST_MTS_TABLE_ID_PROGRAM_ASSOCIATION = 0x00,
  87. GST_MTS_TABLE_ID_CONDITIONAL_ACCESS = 0x01,
  88. GST_MTS_TABLE_ID_TS_PROGRAM_MAP = 0x02,
  89. GST_MTS_TABLE_ID_TS_DESCRIPTION = 0x03,
  90. GST_MTS_TABLE_ID_14496_SCENE_DESCRIPTION = 0x04,
  91. GST_MTS_TABLE_ID_14496_OBJET_DESCRIPTOR = 0x05,
  92. GST_MTS_TABLE_ID_METADATA = 0x06,
  93. GST_MTS_TABLE_ID_IPMP_CONTROL_INFORMATION = 0x07,
  94. /* 0x08 - 0x39 : ITU H.222.0 | ISO/IEC 13818-1 reserved */
  95. /* IEC 13818-6 (DSM-CC) */
  96. GST_MTS_TABLE_ID_DSM_CC_MULTIPROTO_ENCAPSULATED_DATA = 0x3A,
  97. GST_MTS_TABLE_ID_DSM_CC_U_N_MESSAGES = 0x3B,
  98. GST_MTS_TABLE_ID_DSM_CC_DOWNLOAD_DATA_MESSAGES = 0x3C,
  99. GST_MTS_TABLE_ID_DSM_CC_STREAM_DESCRIPTORS = 0x3D,
  100. GST_MTS_TABLE_ID_DSM_CC_PRIVATE_DATA = 0x3E,
  101. GST_MTS_TABLE_ID_DSM_CC_ADDRESSABLE_SECTIONS = 0x3F,
  102. /* Unset */
  103. GST_MTS_TABLE_ID_UNSET = 0xFF
  104. } GstMpegtsSectionTableID;
  105. typedef gboolean (*GstMpegtsPacketizeFunc) (GstMpegtsSection *section);
  106. /**
  107. * GstMpegtsSection:
  108. * @section_type: The type of section
  109. * @pid: The pid on which this section was found
  110. * @table_id: The table id of this section
  111. * @subtable_extension: This meaning differs per section. See the documentation
  112. * of the parsed section type for the meaning of this field
  113. * @version_number: Version of the section.
  114. * @current_next_indicator: Applies to current/next stream or not
  115. * @section_number: Number of the section (if multiple)
  116. * @last_section_number: Number of the last expected section (if multiple)
  117. * @crc: CRC
  118. *
  119. * Mpeg-TS Section Information (SI) (ISO/IEC 13818-1)
  120. */
  121. struct _GstMpegtsSection
  122. {
  123. /*< private >*/
  124. GstMiniObject parent;
  125. /*< public >*/
  126. GstMpegtsSectionType section_type;
  127. guint16 pid;
  128. guint8 table_id;
  129. guint16 subtable_extension;
  130. guint8 version_number;
  131. gboolean current_next_indicator;
  132. guint8 section_number;
  133. guint8 last_section_number;
  134. guint32 crc;
  135. /*< private >*/
  136. /* data: Points to beginning of section data
  137. * i.e. the first byte is the table_id field */
  138. guint8 *data;
  139. /* section_length: length of data (including final CRC if present) */
  140. guint section_length;
  141. /* cached_parsed: cached copy of parsed section */
  142. gpointer *cached_parsed;
  143. /* destroy_parsed: function to clear cached_parsed */
  144. GDestroyNotify destroy_parsed;
  145. /* offset: offset of the section within the container stream */
  146. guint64 offset;
  147. /* short_section: TRUE if section_syntax_indicator == 0
  148. * FIXME : Maybe make public later on when allowing creation of
  149. * sections to that people can create private short sections ? */
  150. gboolean short_section;
  151. GstMpegtsPacketizeFunc packetizer;
  152. /* Padding for future extension */
  153. gpointer _gst_reserved[GST_PADDING];
  154. };
  155. GBytes *gst_mpegts_section_get_data (GstMpegtsSection *section);
  156. /* PAT */
  157. #define GST_TYPE_MPEGTS_PAT_PROGRAM (gst_mpegts_pat_program_get_type())
  158. typedef struct _GstMpegtsPatProgram GstMpegtsPatProgram;
  159. /**
  160. * GstMpegtsPatProgram:
  161. * @program_number: the program number
  162. * @network_or_program_map_PID: the network of program map PID
  163. *
  164. * A program entry from a Program Association Table (ITU H.222.0, ISO/IEC 13818-1).
  165. */
  166. struct _GstMpegtsPatProgram
  167. {
  168. guint16 program_number;
  169. guint16 network_or_program_map_PID;
  170. };
  171. GPtrArray *gst_mpegts_section_get_pat (GstMpegtsSection *section);
  172. GType gst_mpegts_pat_program_get_type (void);
  173. GPtrArray *gst_mpegts_pat_new (void);
  174. GstMpegtsPatProgram *gst_mpegts_pat_program_new (void);
  175. GstMpegtsSection *gst_mpegts_section_from_pat (GPtrArray * programs,
  176. guint16 ts_id);
  177. /* CAT */
  178. GPtrArray *gst_mpegts_section_get_cat (GstMpegtsSection *section);
  179. /* PMT */
  180. typedef struct _GstMpegtsPMTStream GstMpegtsPMTStream;
  181. typedef struct _GstMpegtsPMT GstMpegtsPMT;
  182. #define GST_TYPE_MPEGTS_PMT (gst_mpegts_pmt_get_type())
  183. #define GST_TYPE_MPEGTS_PMT_STREAM (gst_mpegts_pmt_stream_get_type())
  184. /**
  185. * GstMpegtsStreamType:
  186. * @GST_MPEGTS_STREAM_TYPE_RESERVED_00: ITU-T | ISO/IEC Reserved
  187. * @GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1: ISO/IEC 11172-2 Video
  188. * @GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2: Rec. ITU-T H.262 | ISO/IEC 13818-2
  189. * Video or ISO/IEC 11172-2 constrained parameter video stream
  190. * @GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG1: ISO/IEC 11172-3 Audio
  191. * @GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG2: ISO/IEC 13818-3 Audio
  192. * @GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS: private sections
  193. * @GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS: PES packets containing private data
  194. * @GST_MPEGTS_STREAM_TYPE_MHEG: ISO/IEC 13522 MHEG
  195. * @GST_MPEGTS_STREAM_TYPE_DSM_CC: Annex A DSM-CC
  196. * @GST_MPEGTS_STREAM_TYPE_H_222_1: Rec. ITU-T H.222.1
  197. * @GST_MPEGTS_STREAM_TYPE_DSMCC_A: ISO/IEC 13818-6 type A
  198. * @GST_MPEGTS_STREAM_TYPE_DSMCC_B: ISO/IEC 13818-6 type B
  199. * @GST_MPEGTS_STREAM_TYPE_DSMCC_C: ISO/IEC 13818-6 type C
  200. * @GST_MPEGTS_STREAM_TYPE_DSMCC_D: ISO/IEC 13818-6 type D
  201. * @GST_MPEGTS_STREAM_TYPE_AUXILIARY: auxiliary streams
  202. * @GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_ADTS: ISO/IEC 13818-7 Audio with ADTS
  203. * transport syntax
  204. * @GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG4: ISO/IEC 14496-2 Visual
  205. * @GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_LATM: ISO/IEC 14496-3 Audio with the LATM
  206. * transport syntax as defined in ISO/IEC 14496-3
  207. * @GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_PES_PACKETS: ISO/IEC 14496-1
  208. * SL-packetized stream or FlexMux stream carried in PES packets
  209. * @GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS: ISO/IEC 14496-1 SL-packetized
  210. * stream or FlexMux stream carried in ISO/IEC 14496_sections
  211. * @GST_MPEGTS_STREAM_TYPE_SYNCHRONIZED_DOWNLOAD: ISO/IEC 13818-6 Synchronized
  212. * Download Protocol
  213. * @GST_MPEGTS_STREAM_TYPE_METADATA_PES_PACKETS: Metadata carried in PES packets
  214. * @GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS: Metadata carried in metadata_sections
  215. * @GST_MPEGTS_STREAM_TYPE_METADATA_DATA_CAROUSEL: Metadata carried in ISO/IEC
  216. * 13818-6 Data Carousel
  217. * @GST_MPEGTS_STREAM_TYPE_METADATA_OBJECT_CAROUSEL: Metadata carried in
  218. * ISO/IEC 13818-6 Object Carousel
  219. * @GST_MPEGTS_STREAM_TYPE_METADATA_SYNCHRONIZED_DOWNLOAD: Metadata carried in
  220. * ISO/IEC 13818-6 Synchronized Download Protocol
  221. * @GST_MPEGTS_STREAM_TYPE_MPEG2_IPMP: IPMP stream (defined in ISO/IEC 13818-11,
  222. * MPEG-2 IPMP)
  223. * @GST_MPEGTS_STREAM_TYPE_VIDEO_H264: AVC video stream conforming to one or
  224. * more profiles defined in Annex A of Rec. ITU-T H.264 | ISO/IEC 14496-10 or
  225. * AVC video sub-bitstream of SVC as defined in 2.1.78 or MVC base view
  226. * sub-bitstream, as defined in 2.1.85, or AVC video sub-bitstream of MVC, as
  227. * defined in 2.1.88
  228. * @GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_CLEAN: ISO/IEC 14496-3 Audio, without
  229. * using any additional transport syntax, such as DST, ALS and SLS
  230. * @GST_MPEGTS_STREAM_TYPE_MPEG4_TIMED_TEXT: ISO/IEC 14496-17 Text
  231. * @GST_MPEGTS_STREAM_TYPE_VIDEO_RVC: Auxiliary video stream as defined in
  232. * ISO/IEC 23002-3
  233. * @GST_MPEGTS_STREAM_TYPE_VIDEO_H264_SVC_SUB_BITSTREAM: SVC video sub-bitstream
  234. * of an AVC video stream conforming to one or more profiles defined in Annex G
  235. * of Rec. ITU-T H.264 | ISO/IEC 14496-10
  236. * @GST_MPEGTS_STREAM_TYPE_VIDEO_H264_MVC_SUB_BITSTREAM: MVC video sub-bitstream
  237. * of an AVC video stream conforming to one or more profiles defined in Annex H
  238. * of Rec. ITU-T H.264 | ISO/IEC 14496-10
  239. * @GST_MPEGTS_STREAM_TYPE_VIDEO_JP2K: Video stream conforming to one or more
  240. * profiles as defined in Rec. ITU-T T.800 | ISO/IEC 15444-1
  241. * @GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW: Additional view
  242. * Rec. ITU-T H.262 | ISO/IEC 13818-2 video stream for service-compatible
  243. * stereoscopic 3D services
  244. * @GST_MPEGTS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW: Additional view
  245. * Rec. ITU-T H.264 | ISO/IEC 14496-10 video stream conforming to one or more
  246. * profiles defined in Annex A for service-compatible stereoscopic 3D services
  247. * @GST_MPEGTS_STREAM_TYPE_IPMP_STREAM: IPMP stream
  248. *
  249. * Type of mpeg-ts stream type.
  250. *
  251. * These values correspond to the base standard registered types. Depending
  252. * on the variant of mpeg-ts being used (Bluray, ATSC, DVB, ...), other
  253. * types might also be used, but will not conflict with these.
  254. *
  255. * Corresponds to table 2-34 of ITU H.222.0 | ISO/IEC 13818-1
  256. */
  257. typedef enum {
  258. GST_MPEGTS_STREAM_TYPE_RESERVED_00 = 0x00,
  259. GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1 = 0x01,
  260. GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2 = 0x02,
  261. GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG1 = 0x03,
  262. GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG2 = 0x04,
  263. GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS = 0x05,
  264. GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS = 0x06,
  265. GST_MPEGTS_STREAM_TYPE_MHEG = 0x07,
  266. GST_MPEGTS_STREAM_TYPE_DSM_CC = 0x08,
  267. GST_MPEGTS_STREAM_TYPE_H_222_1 = 0x09,
  268. GST_MPEGTS_STREAM_TYPE_DSMCC_A = 0x0a,
  269. GST_MPEGTS_STREAM_TYPE_DSMCC_B = 0x0b,
  270. GST_MPEGTS_STREAM_TYPE_DSMCC_C = 0x0c,
  271. GST_MPEGTS_STREAM_TYPE_DSMCC_D = 0x0d,
  272. GST_MPEGTS_STREAM_TYPE_AUXILIARY = 0x0e,
  273. GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_ADTS = 0x0f,
  274. GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG4 = 0x10,
  275. GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_LATM = 0x11,
  276. GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_PES_PACKETS = 0x12,
  277. GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS = 0x13,
  278. GST_MPEGTS_STREAM_TYPE_SYNCHRONIZED_DOWNLOAD = 0x14,
  279. GST_MPEGTS_STREAM_TYPE_METADATA_PES_PACKETS = 0x15,
  280. GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS = 0x16,
  281. GST_MPEGTS_STREAM_TYPE_METADATA_DATA_CAROUSEL = 0x17,
  282. GST_MPEGTS_STREAM_TYPE_METADATA_OBJECT_CAROUSEL = 0x18,
  283. GST_MPEGTS_STREAM_TYPE_METADATA_SYNCHRONIZED_DOWNLOAD = 0x19,
  284. GST_MPEGTS_STREAM_TYPE_MPEG2_IPMP = 0x1a,
  285. GST_MPEGTS_STREAM_TYPE_VIDEO_H264 = 0x1b,
  286. GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_CLEAN = 0x1c,
  287. GST_MPEGTS_STREAM_TYPE_MPEG4_TIMED_TEXT = 0x1d,
  288. GST_MPEGTS_STREAM_TYPE_VIDEO_RVC = 0x1e,
  289. GST_MPEGTS_STREAM_TYPE_VIDEO_H264_SVC_SUB_BITSTREAM = 0x1f,
  290. GST_MPEGTS_STREAM_TYPE_VIDEO_H264_MVC_SUB_BITSTREAM = 0x20,
  291. GST_MPEGTS_STREAM_TYPE_VIDEO_JP2K = 0x21,
  292. GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW = 0x22,
  293. GST_MPEGTS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW = 0x23,
  294. GST_MPEGTS_STREAM_TYPE_VIDEO_HEVC = 0x24,
  295. /* 0x24 - 0x7e : Rec. ITU-T H.222.0 | ISO/IEC 13818-1 Reserved */
  296. GST_MPEGTS_STREAM_TYPE_IPMP_STREAM = 0x7f
  297. /* 0x80 - 0xff : User Private (or defined in other specs) */
  298. } GstMpegtsStreamType;
  299. /**
  300. * GstMpegtsPMTStream:
  301. * @stream_type: the type of stream. See #GstMpegtsStreamType
  302. * @pid: the PID of the stream
  303. * @descriptors: (element-type GstMpegtsDescriptor): the descriptors of the
  304. * stream
  305. *
  306. * An individual stream definition.
  307. */
  308. struct _GstMpegtsPMTStream
  309. {
  310. guint8 stream_type;
  311. guint16 pid;
  312. GPtrArray *descriptors;
  313. };
  314. /**
  315. * GstMpegtsPMT:
  316. * @pcr_pid: PID of the stream containing PCR
  317. * @descriptors: (element-type GstMpegtsDescriptor): array of #GstMpegtsDescriptor
  318. * @streams: (element-type GstMpegtsPMTStream): Array of #GstMpegtsPMTStream
  319. *
  320. * Program Map Table (ISO/IEC 13818-1).
  321. *
  322. * The program_number is contained in the subtable_extension field of the
  323. * container #GstMpegtsSection.
  324. */
  325. struct _GstMpegtsPMT
  326. {
  327. guint16 pcr_pid;
  328. guint16 program_number;
  329. GPtrArray *descriptors;
  330. GPtrArray *streams;
  331. };
  332. GType gst_mpegts_pmt_get_type (void);
  333. GType gst_mpegts_pmt_stream_get_type (void);
  334. GstMpegtsPMT *gst_mpegts_pmt_new (void);
  335. GstMpegtsPMTStream *gst_mpegts_pmt_stream_new (void);
  336. const GstMpegtsPMT *gst_mpegts_section_get_pmt (GstMpegtsSection *section);
  337. GstMpegtsSection *gst_mpegts_section_from_pmt (GstMpegtsPMT *pmt, guint16 pid);
  338. /* TSDT */
  339. GPtrArray *gst_mpegts_section_get_tsdt (GstMpegtsSection *section);
  340. /* generic */
  341. #define gst_mpegts_section_ref(section) ((GstMpegtsSection*) gst_mini_object_ref (GST_MINI_OBJECT_CAST (section)))
  342. #define gst_mpegts_section_unref(section) (gst_mini_object_unref (GST_MINI_OBJECT_CAST (section)))
  343. GstMessage *gst_message_new_mpegts_section (GstObject *parent, GstMpegtsSection *section);
  344. gboolean gst_mpegts_section_send_event (GstMpegtsSection * section, GstElement * element);
  345. GstMpegtsSection *gst_event_parse_mpegts_section (GstEvent * event);
  346. GstMpegtsSection *gst_message_parse_mpegts_section (GstMessage *message);
  347. GstMpegtsSection *gst_mpegts_section_new (guint16 pid,
  348. guint8 * data,
  349. gsize data_size);
  350. guint8 *gst_mpegts_section_packetize (GstMpegtsSection * section, gsize * output_size);
  351. G_END_DECLS
  352. #endif /* GST_MPEGTS_SECTION_H */