diff options
author | Edward Hervey <edward@centricular.com> | 2020-12-14 10:50:02 +0100 |
---|---|---|
committer | GStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2020-12-14 14:48:03 +0000 |
commit | 5d3a0ca6a9e703a77338ab84df97c2d4a18310ca (patch) | |
tree | 76bbd2ca639101416f757520f035ef869949d51d /gst-libs/gst/mpegts/gstmpegtssection.h | |
parent | 76bc578bae093944fbf86335a99bff2d2927a58f (diff) | |
download | gstreamer-plugins-bad-5d3a0ca6a9e703a77338ab84df97c2d4a18310ca.tar.gz |
mpegts: Update documentation
* Split up into appropriate individual header files
* Document more sections and structures
* Add well-known list of registration id
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1879>
Diffstat (limited to 'gst-libs/gst/mpegts/gstmpegtssection.h')
-rw-r--r-- | gst-libs/gst/mpegts/gstmpegtssection.h | 123 |
1 files changed, 93 insertions, 30 deletions
diff --git a/gst-libs/gst/mpegts/gstmpegtssection.h b/gst-libs/gst/mpegts/gstmpegtssection.h index b25418352..95a72085a 100644 --- a/gst-libs/gst/mpegts/gstmpegtssection.h +++ b/gst-libs/gst/mpegts/gstmpegtssection.h @@ -58,9 +58,12 @@ GType gst_mpegts_section_get_type (void); * @GST_MPEGTS_SECTION_ATSC_ETT: ATSC Extended Text Table (A65) * @GST_MPEGTS_SECTION_ATSC_EIT: ATSC Event Information Table (A65) * @GST_MPEGTS_SECTION_ATSC_STT: ATSC System Time Table (A65) + * @GST_MPEGTS_SECTION_ATSC_RRT: ATSC Rating Region Table (A65) * @GST_MPEGTS_SECTION_SCTE_SIT: SCTE Splice Information Table (SCTE-35) * - * Types of #GstMpegtsSection that the library handles. + * Types of #GstMpegtsSection that the library handles. This covers all the + * MPEG-TS and derivate specification that the library can properly identify and + * use. */ typedef enum { GST_MPEGTS_SECTION_UNKNOWN = 0, @@ -86,6 +89,21 @@ typedef enum { /** * GstMpegtsSectionTableID: + * @GST_MTS_TABLE_ID_PROGRAM_ASSOCIATION: Program Association Table (PAT) + * @GST_MTS_TABLE_ID_CONDITIONAL_ACCESS: Conditional Access Table (CAT) + * @GST_MTS_TABLE_ID_TS_PROGRAM_MAP: Program Map Table (PMT) + * @GST_MTS_TABLE_ID_TS_DESCRIPTION: Transport Stream Description Table + * @GST_MTS_TABLE_ID_14496_SCENE_DESCRIPTION: ISO/IEC 14496 Scene Description Table + * @GST_MTS_TABLE_ID_14496_OBJET_DESCRIPTOR: ISO/IEC 14496 Object Descriptor Table + * @GST_MTS_TABLE_ID_METADATA: Metadata Section + * @GST_MTS_TABLE_ID_IPMP_CONTROL_INFORMATION: IPMP Control Information + * @GST_MTS_TABLE_ID_DSM_CC_MULTIPROTO_ENCAPSULATED_DATA: DSM-CC Multi-Protocol Encapsulated (MPE) Data + * @GST_MTS_TABLE_ID_DSM_CC_U_N_MESSAGES: DSM-CC U-N Messages + * @GST_MTS_TABLE_ID_DSM_CC_DOWNLOAD_DATA_MESSAGES: DSM-CC Download Data Messages + * @GST_MTS_TABLE_ID_DSM_CC_STREAM_DESCRIPTORS: DSM-CC Stream Descriptors + * @GST_MTS_TABLE_ID_DSM_CC_PRIVATE_DATA: DSM-CC Private Data + * @GST_MTS_TABLE_ID_DSM_CC_ADDRESSABLE_SECTIONS: DSM-CC Addressable Section + * @GST_MTS_TABLE_ID_UNSET: Unset section table_id (value is forbidden to use in actual sections) * * Values for a #GstMpegtsSection table_id * @@ -104,6 +122,32 @@ typedef enum { GST_MTS_TABLE_ID_14496_OBJET_DESCRIPTOR = 0x05, GST_MTS_TABLE_ID_METADATA = 0x06, GST_MTS_TABLE_ID_IPMP_CONTROL_INFORMATION = 0x07, + /** + * GST_MTS_TABLE_ID_14496_SECTION: + * + * ISO/IEC 14496 Section. + * + * Since: 1.20 + */ + GST_MTS_TABLE_ID_14496_SECTION = 0x08, + + /** + * GST_MTS_TABLE_ID_23001_11_SECTION: + * + * ISO/IEC 23001-11 (Green Access Unit) Section. + * + * Since: 1.20 + */ + GST_MTS_TABLE_ID_23001_11_SECTION = 0x09, + + /** + * GST_MTS_TABLE_ID_23001_10_SECTION: + * + * ISO/ISO 23001-10 (Quality Access Unit) Section. + * + * Since: 1.20 + */ + GST_MTS_TABLE_ID_23001_10_SECTION = 0x0A, /* 0x08 - 0x39 : ITU H.222.0 | ISO/IEC 13818-1 reserved */ @@ -120,22 +164,26 @@ typedef enum { } GstMpegtsSectionTableID; +/** + * GstMpegtsPacketizeFunc: (attributes doc.skip=true) + */ typedef gboolean (*GstMpegtsPacketizeFunc) (GstMpegtsSection *section); /** * GstMpegtsSection: - * @section_type: The type of section - * @pid: The pid on which this section was found - * @table_id: The table id of this section + * @section_type: The type of section. + * @pid: The PID on which this section was found or belongs to. + * @table_id: The table id of this section. See %GstMpegtsSectionTableID and + * derivates for more information. * @subtable_extension: This meaning differs per section. See the documentation - * of the parsed section type for the meaning of this field + * of the parsed section type for the meaning of this field * @version_number: Version of the section. * @current_next_indicator: Applies to current/next stream or not * @section_number: Number of the section (if multiple) * @last_section_number: Number of the last expected section (if multiple) - * @crc: CRC + * @crc: Checksum (if applicable) * - * Mpeg-TS Section Information (SI) (ISO/IEC 13818-1) + * Mpeg-TS Section Information (SI) (ISO/IEC 13818-1) object. */ struct _GstMpegtsSection { @@ -174,6 +222,7 @@ struct _GstMpegtsSection * FIXME : Maybe make public later on when allowing creation of * sections to that people can create private short sections ? */ gboolean short_section; + GstMpegtsPacketizeFunc packetizer; /* Padding for future extension */ @@ -230,9 +279,10 @@ typedef struct _GstMpegtsPMT GstMpegtsPMT; /** * GstMpegtsStreamType: * @GST_MPEGTS_STREAM_TYPE_RESERVED_00: ITU-T | ISO/IEC Reserved - * @GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1: ISO/IEC 11172-2 Video + * @GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1: ISO/IEC 11172-2 Video (i.e. MPEG-1 Video) * @GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2: Rec. ITU-T H.262 | ISO/IEC 13818-2 - * Video or ISO/IEC 11172-2 constrained parameter video stream + * Video or ISO/IEC 11172-2 constrained parameter video stream (i.e. + * MPEG-2 Video) * @GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG1: ISO/IEC 11172-3 Audio * @GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG2: ISO/IEC 13818-3 Audio * @GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS: private sections @@ -245,34 +295,34 @@ typedef struct _GstMpegtsPMT GstMpegtsPMT; * @GST_MPEGTS_STREAM_TYPE_DSMCC_C: ISO/IEC 13818-6 type C * @GST_MPEGTS_STREAM_TYPE_DSMCC_D: ISO/IEC 13818-6 type D * @GST_MPEGTS_STREAM_TYPE_AUXILIARY: auxiliary streams - * @GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_ADTS: ISO/IEC 13818-7 Audio with ADTS - * transport syntax - * @GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG4: ISO/IEC 14496-2 Visual - * @GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_LATM: ISO/IEC 14496-3 Audio with the LATM - * transport syntax as defined in ISO/IEC 14496-3 + * @GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_ADTS: ISO/IEC 13818-7 Audio (AAC) with ADTS + * transport syntax + * @GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG4: ISO/IEC 14496-2 Visual (MPEG-4 Video) + * @GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_LATM: ISO/IEC 14496-3 Audio (AAC) with the LATM + * transport syntax as defined in ISO/IEC 14496-3 * @GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_PES_PACKETS: ISO/IEC 14496-1 - * SL-packetized stream or FlexMux stream carried in PES packets + * SL-packetized stream or FlexMux stream carried in PES packets * @GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS: ISO/IEC 14496-1 SL-packetized - * stream or FlexMux stream carried in ISO/IEC 14496_sections + * stream or FlexMux stream carried in ISO/IEC 14496_sections * @GST_MPEGTS_STREAM_TYPE_SYNCHRONIZED_DOWNLOAD: ISO/IEC 13818-6 Synchronized - * Download Protocol + * Download Protocol * @GST_MPEGTS_STREAM_TYPE_METADATA_PES_PACKETS: Metadata carried in PES packets * @GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS: Metadata carried in metadata_sections * @GST_MPEGTS_STREAM_TYPE_METADATA_DATA_CAROUSEL: Metadata carried in ISO/IEC - * 13818-6 Data Carousel + * 13818-6 Data Carousel * @GST_MPEGTS_STREAM_TYPE_METADATA_OBJECT_CAROUSEL: Metadata carried in - * ISO/IEC 13818-6 Object Carousel + * ISO/IEC 13818-6 Object Carousel * @GST_MPEGTS_STREAM_TYPE_METADATA_SYNCHRONIZED_DOWNLOAD: Metadata carried in - * ISO/IEC 13818-6 Synchronized Download Protocol + * ISO/IEC 13818-6 Synchronized Download Protocol * @GST_MPEGTS_STREAM_TYPE_MPEG2_IPMP: IPMP stream (defined in ISO/IEC 13818-11, - * MPEG-2 IPMP) + * MPEG-2 IPMP) * @GST_MPEGTS_STREAM_TYPE_VIDEO_H264: AVC video stream conforming to one or * more profiles defined in Annex A of Rec. ITU-T H.264 | ISO/IEC 14496-10 or * AVC video sub-bitstream of SVC as defined in 2.1.78 or MVC base view * sub-bitstream, as defined in 2.1.85, or AVC video sub-bitstream of MVC, as * defined in 2.1.88 - * @GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_CLEAN: ISO/IEC 14496-3 Audio, without - * using any additional transport syntax, such as DST, ALS and SLS + * @GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_CLEAN: ISO/IEC 14496-3 (AAC) Audio, without + * using any additional transport syntax, such as DST, ALS and SLS * @GST_MPEGTS_STREAM_TYPE_MPEG4_TIMED_TEXT: ISO/IEC 14496-17 Text * @GST_MPEGTS_STREAM_TYPE_VIDEO_RVC: Auxiliary video stream as defined in * ISO/IEC 23002-3 @@ -283,16 +333,18 @@ typedef struct _GstMpegtsPMT GstMpegtsPMT; * of an AVC video stream conforming to one or more profiles defined in Annex H * of Rec. ITU-T H.264 | ISO/IEC 14496-10 * @GST_MPEGTS_STREAM_TYPE_VIDEO_JP2K: Video stream conforming to one or more - * profiles as defined in Rec. ITU-T T.800 | ISO/IEC 15444-1 + * profiles as defined in Rec. ITU-T T.800 | ISO/IEC 15444-1 (i.e. JPEG 2000) * @GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW: Additional view * Rec. ITU-T H.262 | ISO/IEC 13818-2 video stream for service-compatible * stereoscopic 3D services * @GST_MPEGTS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW: Additional view * Rec. ITU-T H.264 | ISO/IEC 14496-10 video stream conforming to one or more * profiles defined in Annex A for service-compatible stereoscopic 3D services + * @GST_MPEGTS_STREAM_TYPE_VIDEO_HEVC: Rec. ITU-T H.265 | ISO/IEC 23008-2 video + * stream or an HEVC temporal video sub-bitstream * @GST_MPEGTS_STREAM_TYPE_IPMP_STREAM: IPMP stream * - * Type of mpeg-ts stream type. + * Type of MPEG-TS stream type. * * These values correspond to the base standard registered types. Depending * on the variant of mpeg-ts being used (Bluray, ATSC, DVB, ...), other @@ -339,8 +391,17 @@ typedef enum { GST_MPEGTS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW = 0x23, GST_MPEGTS_STREAM_TYPE_VIDEO_HEVC = 0x24, /* 0x24 - 0x7e : Rec. ITU-T H.222.0 | ISO/IEC 13818-1 Reserved */ - GST_MPEGTS_STREAM_TYPE_IPMP_STREAM = 0x7f + GST_MPEGTS_STREAM_TYPE_IPMP_STREAM = 0x7f, /* 0x80 - 0xff : User Private (or defined in other specs) */ + + /** + * GST_MPEGTS_STREAM_TYPE_USER_PRIVATE_EA: + * + * User Private stream id (used for VC-1) as defined by SMPTE RP227. + * + * Since: 1.20 + */ + GST_MPEGTS_STREAM_TYPE_USER_PRIVATE_EA = 0xea, } GstMpegtsStreamType; /** @@ -350,7 +411,7 @@ typedef enum { * @descriptors: (element-type GstMpegtsDescriptor): the descriptors of the * stream * - * An individual stream definition. + * An individual stream definition of a #GstMpegtsPMT. */ struct _GstMpegtsPMTStream { @@ -362,11 +423,13 @@ struct _GstMpegtsPMTStream /** * GstMpegtsPMT: - * @pcr_pid: PID of the stream containing PCR - * @descriptors: (element-type GstMpegtsDescriptor): array of #GstMpegtsDescriptor + * @pcr_pid: PID of the stream containing the PCR for this program. + * @program_number: The program to which this PMT is applicable. + * @descriptors: (element-type GstMpegtsDescriptor): Array of #GstMpegtsDescriptor * @streams: (element-type GstMpegtsPMTStream): Array of #GstMpegtsPMTStream * - * Program Map Table (ISO/IEC 13818-1). + * Program Map Table (ISO/IEC 13818-1). Provides the mappings between program + * numbers and the program elements that comprise them. * * The program_number is contained in the subtable_extension field of the * container #GstMpegtsSection. |