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