mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 16:50:47 +00:00
mpegts: Unify API : GstMpegts / gst_mpegts_ / GST_*_MPEGTS_
It was previously a mix and match of both variants, introducing just too much confusion. The prefix are from now on: * GstMpegts for structures and type names (and not GstMpegTs) * gst_mpegts_ for functions (and not gst_mpeg_ts_) * GST_MPEGTS_ for enums/flags (and not GST_MPEG_TS_) * GST_TYPE_MPEGTS_ for types (and not GST_TYPE_MPEG_TS_) The rationale for chosing that is: * the namespace is shorter/direct (it's mpegts, not mpeg_ts nor mpeg-ts) * the namespace is one word under Gst * it's shorter (yah)
This commit is contained in:
parent
cddabd751c
commit
22dfd9aef3
37 changed files with 1552 additions and 1552 deletions
|
@ -184,101 +184,101 @@ gst_mpegts_initialize
|
|||
<SECTION>
|
||||
<FILE>gstmpegtsdescriptor</FILE>
|
||||
<SUBSECTION Common>
|
||||
GstMpegTsDescriptor
|
||||
GstMpegTsDescriptorType
|
||||
GstMpegTsMiscDescriptorType
|
||||
GstMpegtsDescriptor
|
||||
GstMpegtsDescriptorType
|
||||
GstMpegtsMiscDescriptorType
|
||||
gst_mpegts_find_descriptor
|
||||
gst_mpegts_parse_descriptors
|
||||
gst_mpegts_descriptor_from_custom
|
||||
<SUBSECTION registration>
|
||||
gst_mpegts_descriptor_from_registration
|
||||
<SUBSECTION iso639>
|
||||
GstMpegTsISO639LanguageDescriptor
|
||||
GstMpegTsIso639AudioType
|
||||
GstMpegtsISO639LanguageDescriptor
|
||||
GstMpegtsIso639AudioType
|
||||
gst_mpegts_descriptor_parse_iso_639_language
|
||||
gst_mpegts_descriptor_parse_iso_639_language_idx
|
||||
gst_mpegts_descriptor_parse_iso_639_language_nb
|
||||
gst_mpegts_iso_639_language_descriptor_free
|
||||
<SUBSECTION logical_channel>
|
||||
GstMpegTsLogicalChannel
|
||||
GstMpegTsLogicalChannelDescriptor
|
||||
GstMpegtsLogicalChannel
|
||||
GstMpegtsLogicalChannelDescriptor
|
||||
gst_mpegts_descriptor_parse_logical_channel
|
||||
<SUBSECTION Standard>
|
||||
GST_TYPE_MPEG_TS_DVB_CODE_RATE
|
||||
GST_TYPE_MPEG_TS_CABLE_OUTER_FEC_SCHEME
|
||||
GST_TYPE_MPEG_TS_MODULATION_TYPE
|
||||
GST_TYPE_MPEG_TS_SATELLITE_POLARIZATION_TYPE
|
||||
GST_TYPE_MPEG_TS_SATELLITE_ROLLOFF
|
||||
GST_TYPE_MPEGTS_DVB_CODE_RATE
|
||||
GST_TYPE_MPEGTS_CABLE_OUTER_FEC_SCHEME
|
||||
GST_TYPE_MPEGTS_MODULATION_TYPE
|
||||
GST_TYPE_MPEGTS_SATELLITE_POLARIZATION_TYPE
|
||||
GST_TYPE_MPEGTS_SATELLITE_ROLLOFF
|
||||
GST_TYPE_MPEGTS_ISO_639_LANGUAGE
|
||||
GST_TYPE_MPEGTS_DESCRIPTOR
|
||||
GST_TYPE_MPEG_TS_DVB_SERVICE_TYPE
|
||||
GST_TYPE_MPEG_TS_DESCRIPTOR_TYPE
|
||||
GST_TYPE_MPEG_TS_ISO639_AUDIO_TYPE
|
||||
GST_TYPE_MPEG_TS_ATSC_DESCRIPTOR_TYPE
|
||||
GST_TYPE_MPEG_TS_DVB_DESCRIPTOR_TYPE
|
||||
GST_TYPE_MPEG_TS_ISDB_DESCRIPTOR_TYPE
|
||||
GST_TYPE_MPEG_TS_MISC_DESCRIPTOR_TYPE
|
||||
GST_TYPE_MPEGTS_DVB_SERVICE_TYPE
|
||||
GST_TYPE_MPEGTS_DESCRIPTOR_TYPE
|
||||
GST_TYPE_MPEGTS_ISO639_AUDIO_TYPE
|
||||
GST_TYPE_MPEGTS_ATSC_DESCRIPTOR_TYPE
|
||||
GST_TYPE_MPEGTS_DVB_DESCRIPTOR_TYPE
|
||||
GST_TYPE_MPEGTS_ISDB_DESCRIPTOR_TYPE
|
||||
GST_TYPE_MPEGTS_MISC_DESCRIPTOR_TYPE
|
||||
gst_mpegts_descriptor_get_type
|
||||
gst_mpegts_iso_639_language_get_type
|
||||
gst_mpeg_ts_cable_outer_fec_scheme_get_type
|
||||
gst_mpeg_ts_modulation_type_get_type
|
||||
gst_mpeg_ts_satellite_polarization_type_get_type
|
||||
gst_mpeg_ts_satellite_rolloff_get_type
|
||||
gst_mpeg_ts_dvb_code_rate_get_type
|
||||
gst_mpeg_ts_descriptor_type_get_type
|
||||
gst_mpeg_ts_atsc_descriptor_type_get_type
|
||||
gst_mpeg_ts_dvb_descriptor_type_get_type
|
||||
gst_mpeg_ts_isdb_descriptor_type_get_type
|
||||
gst_mpeg_ts_misc_descriptor_type_get_type
|
||||
gst_mpeg_ts_iso639_audio_type_get_type
|
||||
gst_mpeg_ts_dvb_service_type_get_type
|
||||
gst_mpegts_cable_outer_fec_scheme_get_type
|
||||
gst_mpegts_modulation_type_get_type
|
||||
gst_mpegts_satellite_polarization_type_get_type
|
||||
gst_mpegts_satellite_rolloff_get_type
|
||||
gst_mpegts_dvb_code_rate_get_type
|
||||
gst_mpegts_descriptor_type_get_type
|
||||
gst_mpegts_atsc_descriptor_type_get_type
|
||||
gst_mpegts_dvb_descriptor_type_get_type
|
||||
gst_mpegts_isdb_descriptor_type_get_type
|
||||
gst_mpegts_misc_descriptor_type_get_type
|
||||
gst_mpegts_iso639_audio_type_get_type
|
||||
gst_mpegts_dvb_service_type_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gst-atsc-descriptor</FILE>
|
||||
GstMpegTsATSCDescriptorType
|
||||
GstMpegtsATSCDescriptorType
|
||||
<SUBSECTION Standard>
|
||||
GST_TYPE_MPEG_TS_ATSC_DESCRIPTOR_TYPE
|
||||
gst_mpeg_ts_atsc_descriptor_type_get_type
|
||||
GST_TYPE_MPEGTS_ATSC_DESCRIPTOR_TYPE
|
||||
gst_mpegts_atsc_descriptor_type_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gst-dvb-descriptor</FILE>
|
||||
GstMpegTsDVBDescriptorType
|
||||
GstMpegTsDVBExtendedDescriptorType
|
||||
GstMpegtsDVBDescriptorType
|
||||
GstMpegtsDVBExtendedDescriptorType
|
||||
<SUBSECTION content>
|
||||
GstMpegTsContent
|
||||
GstMpegtsContent
|
||||
gst_mpegts_descriptor_parse_dvb_content
|
||||
<SUBSECTION component>
|
||||
GstMpegTsComponentDescriptor
|
||||
GstMpegtsComponentDescriptor
|
||||
gst_mpegts_descriptor_parse_dvb_component
|
||||
<SUBSECTION extended_event>
|
||||
GstMpegTsExtendedEventItem
|
||||
GstMpegTsExtendedEventDescriptor
|
||||
GstMpegtsExtendedEventItem
|
||||
GstMpegtsExtendedEventDescriptor
|
||||
gst_mpegts_descriptor_parse_dvb_extended_event
|
||||
<SUBSECTION satellite_delivery>
|
||||
GstMpegTsSatelliteDeliverySystemDescriptor
|
||||
GstMpegTsDVBCodeRate
|
||||
GstMpegTsModulationType
|
||||
GstMpegTsSatellitePolarizationType
|
||||
GstMpegTsSatelliteRolloff
|
||||
GstMpegtsSatelliteDeliverySystemDescriptor
|
||||
GstMpegtsDVBCodeRate
|
||||
GstMpegtsModulationType
|
||||
GstMpegtsSatellitePolarizationType
|
||||
GstMpegtsSatelliteRolloff
|
||||
gst_mpegts_descriptor_parse_satellite_delivery_system
|
||||
<SUBSECTION cable_delivery>
|
||||
GstMpegTsCableDeliverySystemDescriptor
|
||||
GstMpegTsCableOuterFECScheme
|
||||
GstMpegtsCableDeliverySystemDescriptor
|
||||
GstMpegtsCableOuterFECScheme
|
||||
gst_mpegts_descriptor_parse_cable_delivery_system
|
||||
<SUBSECTION terrestrial_delivery>
|
||||
GstMpegTsTerrestrialDeliverySystemDescriptor
|
||||
GstMpegTsTerrestrialTransmissionMode
|
||||
GstMpegTsTerrestrialGuardInterval
|
||||
GstMpegTsTerrestrialHierarchy
|
||||
GstMpegTsModulationType
|
||||
GstMpegTsDVBCodeRate
|
||||
GstMpegtsTerrestrialDeliverySystemDescriptor
|
||||
GstMpegtsTerrestrialTransmissionMode
|
||||
GstMpegtsTerrestrialGuardInterval
|
||||
GstMpegtsTerrestrialHierarchy
|
||||
GstMpegtsModulationType
|
||||
GstMpegtsDVBCodeRate
|
||||
gst_mpegts_descriptor_parse_terrestrial_delivery_system
|
||||
<SUBSECTION t2_delivery>
|
||||
GstMpegTsT2DeliverySystemCellExtension
|
||||
GstMpegTsT2DeliverySystemCell
|
||||
GstMpegTsT2DeliverySystemDescriptor
|
||||
GstMpegtsT2DeliverySystemCellExtension
|
||||
GstMpegtsT2DeliverySystemCell
|
||||
GstMpegtsT2DeliverySystemDescriptor
|
||||
gst_mpegts_descriptor_parse_dvb_t2_delivery_system
|
||||
<SUBSECTION short_event>
|
||||
gst_mpegts_descriptor_parse_dvb_short_event
|
||||
|
@ -286,11 +286,11 @@ gst_mpegts_descriptor_parse_dvb_short_event
|
|||
gst_mpegts_descriptor_parse_dvb_network_name
|
||||
gst_mpegts_descriptor_from_dvb_network_name
|
||||
<SUBSECTION service>
|
||||
GstMpegTsDVBServiceType
|
||||
GstMpegtsDVBServiceType
|
||||
gst_mpegts_descriptor_parse_dvb_service
|
||||
gst_mpegts_descriptor_from_dvb_service
|
||||
<SUBSECTION teletext>
|
||||
GstMpegTsDVBTeletextType
|
||||
GstMpegtsDVBTeletextType
|
||||
gst_mpegts_descriptor_parse_dvb_teletext_idx
|
||||
gst_mpegts_descriptor_parse_dvb_teletext_nb
|
||||
<SUBSECTION subtitling>
|
||||
|
@ -298,53 +298,53 @@ gst_mpegts_descriptor_parse_dvb_subtitling_idx
|
|||
gst_mpegts_descriptor_parse_dvb_subtitling_nb
|
||||
gst_mpegts_descriptor_from_dvb_subtitling
|
||||
<SUBSECTION linkage>
|
||||
GstMpegTsDVBLinkageType
|
||||
GstMpegTsDVBLinkageHandOverType
|
||||
GstMpegTsDVBLinkageMobileHandOver
|
||||
GstMpegTsDVBLinkageEvent
|
||||
GstMpegTsDVBLinkageExtendedEvent
|
||||
GstMpegTsDVBLinkageDescriptor
|
||||
GstMpegtsDVBLinkageType
|
||||
GstMpegtsDVBLinkageHandOverType
|
||||
GstMpegtsDVBLinkageMobileHandOver
|
||||
GstMpegtsDVBLinkageEvent
|
||||
GstMpegtsDVBLinkageExtendedEvent
|
||||
GstMpegtsDVBLinkageDescriptor
|
||||
gst_mpegts_descriptor_parse_dvb_linkage
|
||||
<SUBSECTION private_data_specifier>
|
||||
gst_mpegts_descriptor_parse_dvb_private_data_specifier
|
||||
<SUBSECTION frequency_list>
|
||||
gst_mpegts_descriptor_parse_dvb_frequency_list
|
||||
<SUBSECTION data_broadcast>
|
||||
GstMpegTsDataBroadcastDescriptor
|
||||
GstMpegtsDataBroadcastDescriptor
|
||||
gst_mpegts_descriptor_parse_dvb_data_broadcast
|
||||
<SUBSECTION scrambling>
|
||||
GstMpegTsDVBScramblingModeType
|
||||
GstMpegtsDVBScramblingModeType
|
||||
gst_mpegts_descriptor_parse_dvb_scrambling
|
||||
<SUBSECTION data_broadcast_id>
|
||||
gst_mpegts_descriptor_parse_dvb_data_broadcast_id
|
||||
<SUBSECTION parental_rating>
|
||||
GstMpegTsDVBParentalRatingItem
|
||||
GstMpegtsDVBParentalRatingItem
|
||||
gst_mpegts_descriptor_parse_dvb_parental_rating
|
||||
<SUBSECTION stream_identifier>
|
||||
gst_mpegts_descriptor_parse_dvb_stream_identifier
|
||||
<SUBSECTION ca_identifier>
|
||||
gst_mpegts_descriptor_parse_dvb_ca_identifier
|
||||
<SUBSECTION service_list>
|
||||
GstMpegTsDVBServiceListItem
|
||||
GstMpegtsDVBServiceListItem
|
||||
gst_mpegts_descriptor_parse_dvb_service_list
|
||||
<SUBSECTION stuffing>
|
||||
gst_mpegts_descriptor_parse_dvb_stuffing
|
||||
<SUBSECTION bouquet_name>
|
||||
gst_mpegts_descriptor_parse_dvb_bouquet_name
|
||||
<SUBSECTION multilingual_network_name>
|
||||
GstMpegTsDvbMultilingualNetworkNameItem
|
||||
GstMpegtsDvbMultilingualNetworkNameItem
|
||||
gst_mpegts_descriptor_parse_dvb_multilingual_network_name
|
||||
<SUBSECTION multilingual_bouquet_name>
|
||||
GstMpegTsDvbMultilingualBouquetNameItem
|
||||
GstMpegtsDvbMultilingualBouquetNameItem
|
||||
gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name
|
||||
<SUBSECTION multilingual_service_name>
|
||||
GstMpegTsDvbMultilingualServiceNameItem
|
||||
GstMpegtsDvbMultilingualServiceNameItem
|
||||
gst_mpegts_descriptor_parse_dvb_multilingual_service_name
|
||||
<SUBSECTION multilingual_component>
|
||||
GstMpegTsDvbMultilingualComponentItem
|
||||
GstMpegtsDvbMultilingualComponentItem
|
||||
gst_mpegts_descriptor_parse_dvb_multilingual_component
|
||||
<SUBSECTION Standard>
|
||||
GST_TYPE_MPEG_TS_DVB_CODE_RATE
|
||||
GST_TYPE_MPEGTS_DVB_CODE_RATE
|
||||
GST_TYPE_MPEGTS_COMPONENT_DESCRIPTOR
|
||||
GST_TYPE_MPEGTS_DVB_DATA_BROADCAST_DESCRIPTOR
|
||||
GST_TYPE_MPEGTS_DVB_LINKAGE_DESCRIPTOR
|
||||
|
@ -360,19 +360,19 @@ gst_mpegts_t2_delivery_system_descriptor_get_type
|
|||
|
||||
<SECTION>
|
||||
<FILE>gst-isdb-descriptor</FILE>
|
||||
GstMpegTsISDBDescriptorType
|
||||
GstMpegtsISDBDescriptorType
|
||||
<SUBSECTION Standard>
|
||||
GST_TYPE_MPEG_TS_ISDB_DESCRIPTOR_TYPE
|
||||
gst_mpeg_ts_isdb_descriptor_type_get_type
|
||||
GST_TYPE_MPEGTS_ISDB_DESCRIPTOR_TYPE
|
||||
gst_mpegts_isdb_descriptor_type_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gstmpegtssection</FILE>
|
||||
<SUBSECTION section>
|
||||
GST_MPEGTS_SECTION_TYPE
|
||||
GstMpegTsSection
|
||||
GstMpegTsSectionTableID
|
||||
GstMpegTsSectionType
|
||||
GstMpegtsSection
|
||||
GstMpegtsSectionTableID
|
||||
GstMpegtsSectionType
|
||||
gst_message_new_mpegts_section
|
||||
gst_message_parse_mpegts_section
|
||||
gst_mpegts_section_send_event
|
||||
|
@ -382,15 +382,15 @@ gst_mpegts_section_new
|
|||
gst_mpegts_section_ref
|
||||
gst_mpegts_section_unref
|
||||
<SUBSECTION PAT>
|
||||
GstMpegTsPatProgram
|
||||
GstMpegtsPatProgram
|
||||
gst_mpegts_section_get_pat
|
||||
gst_mpegts_pat_new
|
||||
gst_mpegts_pat_program_new
|
||||
gst_mpegts_section_from_pat
|
||||
<SUBSECTION PMT>
|
||||
GstMpegTsPMT
|
||||
GstMpegTsPMTStream
|
||||
GstMpegTsStreamType
|
||||
GstMpegtsPMT
|
||||
GstMpegtsPMTStream
|
||||
GstMpegtsStreamType
|
||||
gst_mpegts_section_get_pmt
|
||||
gst_mpegts_pmt_new
|
||||
gst_mpegts_pmt_stream_new
|
||||
|
@ -400,41 +400,41 @@ gst_mpegts_section_get_tsdt
|
|||
<SUBSECTION CAT>
|
||||
gst_mpegts_section_get_cat
|
||||
<SUBSECTION Standard>
|
||||
GST_TYPE_MPEG_TS_SECTION_TABLE_ID
|
||||
GST_TYPE_MPEG_TS_SECTION_TYPE
|
||||
GST_TYPE_MPEG_TS_SECTION_DVB_TABLE_ID
|
||||
GST_TYPE_MPEGTS_SECTION_TABLE_ID
|
||||
GST_TYPE_MPEGTS_SECTION_TYPE
|
||||
GST_TYPE_MPEGTS_SECTION_DVB_TABLE_ID
|
||||
GST_MPEGTS_SECTION
|
||||
GST_TYPE_MPEG_TS_STREAM_TYPE
|
||||
GST_TYPE_MPEGTS_STREAM_TYPE
|
||||
GST_TYPE_MPEGTS_PMT
|
||||
GST_TYPE_MPEGTS_PMT_STREAM
|
||||
GST_TYPE_MPEGTS_SECTION
|
||||
gst_mpeg_ts_section_table_id_get_type
|
||||
gst_mpeg_ts_section_type_get_type
|
||||
gst_mpegts_section_table_id_get_type
|
||||
gst_mpegts_section_type_get_type
|
||||
gst_mpegts_pmt_get_type
|
||||
gst_mpegts_pmt_stream_get_type
|
||||
gst_mpegts_section_get_type
|
||||
gst_mpeg_ts_stream_type_get_type
|
||||
gst_mpegts_stream_type_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gst-atsc-section</FILE>
|
||||
GstMpegTsSectionATSCTableID
|
||||
GstMpegTsAtscVCTSource
|
||||
GstMpegTsAtscVCT
|
||||
GstMpegtsSectionATSCTableID
|
||||
GstMpegtsAtscVCTSource
|
||||
GstMpegtsAtscVCT
|
||||
gst_mpegts_section_get_atsc_tvct
|
||||
gst_mpegts_section_get_atsc_cvct
|
||||
GstMpegTsAtscMGTTableType
|
||||
GstMpegTsAtscMGTTable
|
||||
GstMpegTsAtscMGT
|
||||
GstMpegtsAtscMGTTableType
|
||||
GstMpegtsAtscMGTTable
|
||||
GstMpegtsAtscMGT
|
||||
gst_mpegts_section_get_atsc_mgt
|
||||
gst_mpegts_atsc_string_segment_get_string
|
||||
GstMpegTsAtscMultString
|
||||
GstMpegTsAtscEITEvent
|
||||
GstMpegTsAtscEIT
|
||||
GstMpegtsAtscMultString
|
||||
GstMpegtsAtscEITEvent
|
||||
GstMpegtsAtscEIT
|
||||
gst_mpegts_section_get_atsc_eit
|
||||
GstMpegTsAtscETT
|
||||
GstMpegtsAtscETT
|
||||
gst_mpegts_section_get_atsc_ett
|
||||
GstMpegTsAtscSTT
|
||||
GstMpegtsAtscSTT
|
||||
gst_mpegts_section_get_atsc_stt
|
||||
gst_mpegts_atsc_stt_get_datetime_utc
|
||||
<SUBSECTION Standard>
|
||||
|
@ -448,7 +448,7 @@ GST_TYPE_MPEGTS_ATSC_STRING_SEGMENT
|
|||
GST_TYPE_MPEGTS_ATSC_STT
|
||||
GST_TYPE_MPEGTS_ATSC_VCT
|
||||
GST_TYPE_MPEGTS_ATSC_VCT_SOURCE
|
||||
GstMpegTsAtscStringSegment
|
||||
GstMpegtsAtscStringSegment
|
||||
gst_mpegts_atsc_eit_event_get_type
|
||||
gst_mpegts_atsc_eit_get_type
|
||||
gst_mpegts_atsc_ett_get_type
|
||||
|
@ -463,34 +463,34 @@ gst_mpegts_atsc_vct_source_get_type
|
|||
|
||||
<SECTION>
|
||||
<FILE>gst-dvb-section</FILE>
|
||||
GstMpegTsSectionDVBTableID
|
||||
GstMpegtsSectionDVBTableID
|
||||
<SUBSECTION NIT>
|
||||
GstMpegTsNIT
|
||||
GstMpegTsNITStream
|
||||
GstMpegtsNIT
|
||||
GstMpegtsNITStream
|
||||
gst_mpegts_section_get_nit
|
||||
gst_mpegts_nit_new
|
||||
gst_mpegts_nit_stream_new
|
||||
gst_mpegts_section_from_nit
|
||||
<SUBSECTION BAT>
|
||||
GstMpegTsBAT
|
||||
GstMpegTsBATStream
|
||||
GstMpegtsBAT
|
||||
GstMpegtsBATStream
|
||||
gst_mpegts_section_get_bat
|
||||
<SUBSECTION SDT>
|
||||
GstMpegTsSDT
|
||||
GstMpegTsSDTService
|
||||
GstMpegtsSDT
|
||||
GstMpegtsSDTService
|
||||
gst_mpegts_section_get_sdt
|
||||
gst_mpegts_sdt_new
|
||||
gst_mpegts_sdt_service_new
|
||||
gst_mpegts_section_from_sdt
|
||||
<SUBSECTION EIT>
|
||||
GstMpegTsEIT
|
||||
GstMpegTsEITEvent
|
||||
GstMpegTsRunningStatus
|
||||
GstMpegtsEIT
|
||||
GstMpegtsEITEvent
|
||||
GstMpegtsRunningStatus
|
||||
gst_mpegts_section_get_eit
|
||||
<SUBSECTION TDT>
|
||||
gst_mpegts_section_get_tdt
|
||||
<SUBSECTION TOT>
|
||||
GstMpegTsTOT
|
||||
GstMpegtsTOT
|
||||
gst_mpegts_section_get_tot
|
||||
<SUBSECTION Standard>
|
||||
GST_TYPE_MPEGTS_BAT
|
||||
|
@ -502,10 +502,10 @@ GST_TYPE_MPEGTS_NIT_STREAM
|
|||
GST_TYPE_MPEGTS_SDT
|
||||
GST_TYPE_MPEGTS_SDT_SERVICE
|
||||
GST_TYPE_MPEGTS_TOT
|
||||
GST_TYPE_MPEG_TS_SECTION_DVB_TABLE_ID
|
||||
GST_TYPE_MPEG_TS_RUNNING_STATUS
|
||||
gst_mpeg_ts_running_status_get_type
|
||||
gst_mpeg_ts_section_dvb_table_id_get_type
|
||||
GST_TYPE_MPEGTS_SECTION_DVB_TABLE_ID
|
||||
GST_TYPE_MPEGTS_RUNNING_STATUS
|
||||
gst_mpegts_running_status_get_type
|
||||
gst_mpegts_section_dvb_table_id_get_type
|
||||
gst_mpegts_bat_stream_get_type
|
||||
gst_mpegts_bat_get_type
|
||||
gst_mpegts_eit_event_get_type
|
||||
|
|
|
@ -7,20 +7,20 @@
|
|||
#include <gst/gl/gl.h>
|
||||
|
||||
gst_mpegts_section_get_type
|
||||
gst_mpeg_ts_section_type_get_type
|
||||
gst_mpeg_ts_section_table_id_get_type
|
||||
gst_mpegts_section_type_get_type
|
||||
gst_mpegts_section_table_id_get_type
|
||||
|
||||
gst_mpegts_descriptor_get_type
|
||||
gst_mpeg_ts_cable_outer_fec_scheme_get_type
|
||||
gst_mpeg_ts_modulation_type_get_type
|
||||
gst_mpeg_ts_satellite_polarization_type_get_type
|
||||
gst_mpeg_ts_satellite_rolloff_get_type
|
||||
gst_mpeg_ts_dvb_code_rate_get_type
|
||||
gst_mpeg_ts_descriptor_type_get_type
|
||||
gst_mpeg_ts_iso639_audio_type_get_type
|
||||
gst_mpeg_ts_running_status_get_type
|
||||
gst_mpeg_ts_dvb_service_type_get_type
|
||||
gst_mpeg_ts_stream_type_get_type
|
||||
gst_mpegts_cable_outer_fec_scheme_get_type
|
||||
gst_mpegts_modulation_type_get_type
|
||||
gst_mpegts_satellite_polarization_type_get_type
|
||||
gst_mpegts_satellite_rolloff_get_type
|
||||
gst_mpegts_dvb_code_rate_get_type
|
||||
gst_mpegts_descriptor_type_get_type
|
||||
gst_mpegts_iso639_audio_type_get_type
|
||||
gst_mpegts_running_status_get_type
|
||||
gst_mpegts_dvb_service_type_get_type
|
||||
gst_mpegts_stream_type_get_type
|
||||
|
||||
|
||||
gst_insert_bin_get_type
|
||||
|
|
|
@ -67,7 +67,7 @@ GstMpegts-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstmpegts-@GST_API_
|
|||
GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
|
||||
$(INTROSPECTION_SCANNER) -v --namespace GstMpegts \
|
||||
--nsversion=@GST_API_VERSION@ \
|
||||
--identifier-prefix=GstMpegTs \
|
||||
--identifier-prefix=GstMpegts \
|
||||
--symbol-prefix=gst_mpegts \
|
||||
--symbol-prefix=gst \
|
||||
--warn-all -v \
|
||||
|
|
|
@ -35,35 +35,35 @@
|
|||
*/
|
||||
|
||||
/* Terrestrial/Cable Virtual Channel Table TVCT/CVCT */
|
||||
static GstMpegTsAtscVCTSource *
|
||||
_gst_mpegts_atsc_vct_source_copy (GstMpegTsAtscVCTSource * source)
|
||||
static GstMpegtsAtscVCTSource *
|
||||
_gst_mpegts_atsc_vct_source_copy (GstMpegtsAtscVCTSource * source)
|
||||
{
|
||||
GstMpegTsAtscVCTSource *copy;
|
||||
GstMpegtsAtscVCTSource *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsAtscVCTSource, source);
|
||||
copy = g_slice_dup (GstMpegtsAtscVCTSource, source);
|
||||
copy->descriptors = g_ptr_array_ref (source->descriptors);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_atsc_vct_source_free (GstMpegTsAtscVCTSource * source)
|
||||
_gst_mpegts_atsc_vct_source_free (GstMpegtsAtscVCTSource * source)
|
||||
{
|
||||
if (source->descriptors)
|
||||
g_ptr_array_unref (source->descriptors);
|
||||
g_slice_free (GstMpegTsAtscVCTSource, source);
|
||||
g_slice_free (GstMpegtsAtscVCTSource, source);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsAtscVCTSource, gst_mpegts_atsc_vct_source,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsAtscVCTSource, gst_mpegts_atsc_vct_source,
|
||||
(GBoxedCopyFunc) _gst_mpegts_atsc_vct_source_copy,
|
||||
(GFreeFunc) _gst_mpegts_atsc_vct_source_free);
|
||||
|
||||
static GstMpegTsAtscVCT *
|
||||
_gst_mpegts_atsc_vct_copy (GstMpegTsAtscVCT * vct)
|
||||
static GstMpegtsAtscVCT *
|
||||
_gst_mpegts_atsc_vct_copy (GstMpegtsAtscVCT * vct)
|
||||
{
|
||||
GstMpegTsAtscVCT *copy;
|
||||
GstMpegtsAtscVCT *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsAtscVCT, vct);
|
||||
copy = g_slice_dup (GstMpegtsAtscVCT, vct);
|
||||
copy->sources = g_ptr_array_ref (vct->sources);
|
||||
copy->descriptors = g_ptr_array_ref (vct->descriptors);
|
||||
|
||||
|
@ -71,30 +71,30 @@ _gst_mpegts_atsc_vct_copy (GstMpegTsAtscVCT * vct)
|
|||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_atsc_vct_free (GstMpegTsAtscVCT * vct)
|
||||
_gst_mpegts_atsc_vct_free (GstMpegtsAtscVCT * vct)
|
||||
{
|
||||
if (vct->sources)
|
||||
g_ptr_array_unref (vct->sources);
|
||||
if (vct->descriptors)
|
||||
g_ptr_array_unref (vct->descriptors);
|
||||
g_slice_free (GstMpegTsAtscVCT, vct);
|
||||
g_slice_free (GstMpegtsAtscVCT, vct);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsAtscVCT, gst_mpegts_atsc_vct,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsAtscVCT, gst_mpegts_atsc_vct,
|
||||
(GBoxedCopyFunc) _gst_mpegts_atsc_vct_copy,
|
||||
(GFreeFunc) _gst_mpegts_atsc_vct_free);
|
||||
|
||||
static gpointer
|
||||
_parse_atsc_vct (GstMpegTsSection * section)
|
||||
_parse_atsc_vct (GstMpegtsSection * section)
|
||||
{
|
||||
GstMpegTsAtscVCT *vct = NULL;
|
||||
GstMpegtsAtscVCT *vct = NULL;
|
||||
guint8 *data, *end, source_nb;
|
||||
guint32 tmp32;
|
||||
guint16 descriptors_loop_length, tmp16;
|
||||
guint i;
|
||||
GError *err = NULL;
|
||||
|
||||
vct = g_slice_new0 (GstMpegTsAtscVCT);
|
||||
vct = g_slice_new0 (GstMpegtsAtscVCT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -118,14 +118,14 @@ _parse_atsc_vct (GstMpegTsSection * section)
|
|||
(GDestroyNotify) _gst_mpegts_atsc_vct_source_free);
|
||||
|
||||
for (i = 0; i < source_nb; i++) {
|
||||
GstMpegTsAtscVCTSource *source;
|
||||
GstMpegtsAtscVCTSource *source;
|
||||
|
||||
/* minimum 32 bytes for a entry, 2 bytes second descriptor
|
||||
loop-length, 4 bytes crc */
|
||||
if (end - data < 32 + 2 + 4)
|
||||
goto error;
|
||||
|
||||
source = g_slice_new0 (GstMpegTsAtscVCTSource);
|
||||
source = g_slice_new0 (GstMpegtsAtscVCTSource);
|
||||
g_ptr_array_add (vct->sources, source);
|
||||
|
||||
source->short_name =
|
||||
|
@ -204,15 +204,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_atsc_tvct:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_ATSC_TVCT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_TVCT
|
||||
*
|
||||
* Returns the #GstMpegTsAtscVCT contained in the @section
|
||||
* Returns the #GstMpegtsAtscVCT contained in the @section
|
||||
*
|
||||
* Returns: The #GstMpegTsAtscVCT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegtsAtscVCT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTsAtscVCT *
|
||||
gst_mpegts_section_get_atsc_tvct (GstMpegTsSection * section)
|
||||
const GstMpegtsAtscVCT *
|
||||
gst_mpegts_section_get_atsc_tvct (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_ATSC_TVCT,
|
||||
NULL);
|
||||
|
@ -223,20 +223,20 @@ gst_mpegts_section_get_atsc_tvct (GstMpegTsSection * section)
|
|||
__common_section_checks (section, 16, _parse_atsc_vct,
|
||||
(GDestroyNotify) _gst_mpegts_atsc_vct_free);
|
||||
|
||||
return (const GstMpegTsAtscVCT *) section->cached_parsed;
|
||||
return (const GstMpegtsAtscVCT *) section->cached_parsed;
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_mpegts_section_get_atsc_cvct:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_ATSC_CVCT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_CVCT
|
||||
*
|
||||
* Returns the #GstMpegTsAtscVCT contained in the @section
|
||||
* Returns the #GstMpegtsAtscVCT contained in the @section
|
||||
*
|
||||
* Returns: The #GstMpegTsAtscVCT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegtsAtscVCT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTsAtscVCT *
|
||||
gst_mpegts_section_get_atsc_cvct (GstMpegTsSection * section)
|
||||
const GstMpegtsAtscVCT *
|
||||
gst_mpegts_section_get_atsc_cvct (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_ATSC_CVCT,
|
||||
NULL);
|
||||
|
@ -247,39 +247,39 @@ gst_mpegts_section_get_atsc_cvct (GstMpegTsSection * section)
|
|||
__common_section_checks (section, 16, _parse_atsc_vct,
|
||||
(GDestroyNotify) _gst_mpegts_atsc_vct_free);
|
||||
|
||||
return (const GstMpegTsAtscVCT *) section->cached_parsed;
|
||||
return (const GstMpegtsAtscVCT *) section->cached_parsed;
|
||||
}
|
||||
|
||||
/* MGT */
|
||||
|
||||
static GstMpegTsAtscMGTTable *
|
||||
_gst_mpegts_atsc_mgt_table_copy (GstMpegTsAtscMGTTable * mgt_table)
|
||||
static GstMpegtsAtscMGTTable *
|
||||
_gst_mpegts_atsc_mgt_table_copy (GstMpegtsAtscMGTTable * mgt_table)
|
||||
{
|
||||
GstMpegTsAtscMGTTable *copy;
|
||||
GstMpegtsAtscMGTTable *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsAtscMGTTable, mgt_table);
|
||||
copy = g_slice_dup (GstMpegtsAtscMGTTable, mgt_table);
|
||||
copy->descriptors = g_ptr_array_ref (mgt_table->descriptors);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_atsc_mgt_table_free (GstMpegTsAtscMGTTable * mgt_table)
|
||||
_gst_mpegts_atsc_mgt_table_free (GstMpegtsAtscMGTTable * mgt_table)
|
||||
{
|
||||
g_ptr_array_unref (mgt_table->descriptors);
|
||||
g_slice_free (GstMpegTsAtscMGTTable, mgt_table);
|
||||
g_slice_free (GstMpegtsAtscMGTTable, mgt_table);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsAtscMGTTable, gst_mpegts_atsc_mgt_table,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsAtscMGTTable, gst_mpegts_atsc_mgt_table,
|
||||
(GBoxedCopyFunc) _gst_mpegts_atsc_mgt_table_copy,
|
||||
(GFreeFunc) _gst_mpegts_atsc_mgt_table_free);
|
||||
|
||||
static GstMpegTsAtscMGT *
|
||||
_gst_mpegts_atsc_mgt_copy (GstMpegTsAtscMGT * mgt)
|
||||
static GstMpegtsAtscMGT *
|
||||
_gst_mpegts_atsc_mgt_copy (GstMpegtsAtscMGT * mgt)
|
||||
{
|
||||
GstMpegTsAtscMGT *copy;
|
||||
GstMpegtsAtscMGT *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsAtscMGT, mgt);
|
||||
copy = g_slice_dup (GstMpegtsAtscMGT, mgt);
|
||||
copy->tables = g_ptr_array_ref (mgt->tables);
|
||||
copy->descriptors = g_ptr_array_ref (mgt->descriptors);
|
||||
|
||||
|
@ -287,26 +287,26 @@ _gst_mpegts_atsc_mgt_copy (GstMpegTsAtscMGT * mgt)
|
|||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_atsc_mgt_free (GstMpegTsAtscMGT * mgt)
|
||||
_gst_mpegts_atsc_mgt_free (GstMpegtsAtscMGT * mgt)
|
||||
{
|
||||
g_ptr_array_unref (mgt->tables);
|
||||
g_ptr_array_unref (mgt->descriptors);
|
||||
g_slice_free (GstMpegTsAtscMGT, mgt);
|
||||
g_slice_free (GstMpegtsAtscMGT, mgt);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsAtscMGT, gst_mpegts_atsc_mgt,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsAtscMGT, gst_mpegts_atsc_mgt,
|
||||
(GBoxedCopyFunc) _gst_mpegts_atsc_mgt_copy,
|
||||
(GFreeFunc) _gst_mpegts_atsc_mgt_free);
|
||||
|
||||
static gpointer
|
||||
_parse_atsc_mgt (GstMpegTsSection * section)
|
||||
_parse_atsc_mgt (GstMpegtsSection * section)
|
||||
{
|
||||
GstMpegTsAtscMGT *mgt = NULL;
|
||||
GstMpegtsAtscMGT *mgt = NULL;
|
||||
guint i = 0;
|
||||
guint8 *data, *end;
|
||||
guint16 descriptors_loop_length;
|
||||
|
||||
mgt = g_slice_new0 (GstMpegTsAtscMGT);
|
||||
mgt = g_slice_new0 (GstMpegtsAtscMGT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -321,14 +321,14 @@ _parse_atsc_mgt (GstMpegTsSection * section)
|
|||
mgt->tables = g_ptr_array_new_full (mgt->tables_defined,
|
||||
(GDestroyNotify) _gst_mpegts_atsc_mgt_table_free);
|
||||
for (i = 0; i < mgt->tables_defined && data + 11 < end; i++) {
|
||||
GstMpegTsAtscMGTTable *mgt_table;
|
||||
GstMpegtsAtscMGTTable *mgt_table;
|
||||
|
||||
if (data + 11 >= end) {
|
||||
GST_WARNING ("MGT data too short to parse inner table num %d", i);
|
||||
goto error;
|
||||
}
|
||||
|
||||
mgt_table = g_slice_new0 (GstMpegTsAtscMGTTable);
|
||||
mgt_table = g_slice_new0 (GstMpegtsAtscMGTTable);
|
||||
g_ptr_array_add (mgt->tables, mgt_table);
|
||||
|
||||
mgt_table->table_type = GST_READ_UINT16_BE (data);
|
||||
|
@ -373,15 +373,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_atsc_mgt:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_ATSC_MGT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_MGT
|
||||
*
|
||||
* Returns the #GstMpegTsAtscMGT contained in the @section.
|
||||
* Returns the #GstMpegtsAtscMGT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTsAtscMGT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegtsAtscMGT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTsAtscMGT *
|
||||
gst_mpegts_section_get_atsc_mgt (GstMpegTsSection * section)
|
||||
const GstMpegtsAtscMGT *
|
||||
gst_mpegts_section_get_atsc_mgt (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_ATSC_MGT,
|
||||
NULL);
|
||||
|
@ -392,31 +392,31 @@ gst_mpegts_section_get_atsc_mgt (GstMpegTsSection * section)
|
|||
__common_section_checks (section, 17, _parse_atsc_mgt,
|
||||
(GDestroyNotify) _gst_mpegts_atsc_mgt_free);
|
||||
|
||||
return (const GstMpegTsAtscMGT *) section->cached_parsed;
|
||||
return (const GstMpegtsAtscMGT *) section->cached_parsed;
|
||||
}
|
||||
|
||||
/* Multi string structure */
|
||||
|
||||
static GstMpegTsAtscStringSegment *
|
||||
_gst_mpegts_atsc_string_segment_copy (GstMpegTsAtscStringSegment * seg)
|
||||
static GstMpegtsAtscStringSegment *
|
||||
_gst_mpegts_atsc_string_segment_copy (GstMpegtsAtscStringSegment * seg)
|
||||
{
|
||||
GstMpegTsAtscStringSegment *copy;
|
||||
GstMpegtsAtscStringSegment *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsAtscStringSegment, seg);
|
||||
copy = g_slice_dup (GstMpegtsAtscStringSegment, seg);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_atsc_string_segment_free (GstMpegTsAtscStringSegment * seg)
|
||||
_gst_mpegts_atsc_string_segment_free (GstMpegtsAtscStringSegment * seg)
|
||||
{
|
||||
if (seg->cached_string)
|
||||
g_free (seg->cached_string);
|
||||
g_slice_free (GstMpegTsAtscStringSegment, seg);
|
||||
g_slice_free (GstMpegtsAtscStringSegment, seg);
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_atsc_string_segment_decode_string (GstMpegTsAtscStringSegment * seg)
|
||||
_gst_mpegts_atsc_string_segment_decode_string (GstMpegtsAtscStringSegment * seg)
|
||||
{
|
||||
const gchar *from_encoding;
|
||||
|
||||
|
@ -457,7 +457,7 @@ _gst_mpegts_atsc_string_segment_decode_string (GstMpegTsAtscStringSegment * seg)
|
|||
}
|
||||
|
||||
const gchar *
|
||||
gst_mpegts_atsc_string_segment_get_string (GstMpegTsAtscStringSegment * seg)
|
||||
gst_mpegts_atsc_string_segment_get_string (GstMpegtsAtscStringSegment * seg)
|
||||
{
|
||||
if (!seg->cached_string)
|
||||
_gst_mpegts_atsc_string_segment_decode_string (seg);
|
||||
|
@ -465,29 +465,29 @@ gst_mpegts_atsc_string_segment_get_string (GstMpegTsAtscStringSegment * seg)
|
|||
return seg->cached_string;
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsAtscStringSegment, gst_mpegts_atsc_string_segment,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsAtscStringSegment, gst_mpegts_atsc_string_segment,
|
||||
(GBoxedCopyFunc) _gst_mpegts_atsc_string_segment_copy,
|
||||
(GFreeFunc) _gst_mpegts_atsc_string_segment_free);
|
||||
|
||||
static GstMpegTsAtscMultString *
|
||||
_gst_mpegts_atsc_mult_string_copy (GstMpegTsAtscMultString * mstring)
|
||||
static GstMpegtsAtscMultString *
|
||||
_gst_mpegts_atsc_mult_string_copy (GstMpegtsAtscMultString * mstring)
|
||||
{
|
||||
GstMpegTsAtscMultString *copy;
|
||||
GstMpegtsAtscMultString *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsAtscMultString, mstring);
|
||||
copy = g_slice_dup (GstMpegtsAtscMultString, mstring);
|
||||
copy->segments = g_ptr_array_ref (mstring->segments);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_atsc_mult_string_free (GstMpegTsAtscMultString * mstring)
|
||||
_gst_mpegts_atsc_mult_string_free (GstMpegtsAtscMultString * mstring)
|
||||
{
|
||||
g_ptr_array_unref (mstring->segments);
|
||||
g_slice_free (GstMpegTsAtscMultString, mstring);
|
||||
g_slice_free (GstMpegtsAtscMultString, mstring);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsAtscMultString, gst_mpegts_atsc_mult_string,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsAtscMultString, gst_mpegts_atsc_mult_string,
|
||||
(GBoxedCopyFunc) _gst_mpegts_atsc_mult_string_copy,
|
||||
(GFreeFunc) _gst_mpegts_atsc_mult_string_free);
|
||||
|
||||
|
@ -509,11 +509,11 @@ _parse_atsc_mult_string (guint8 * data, guint datasize)
|
|||
(GDestroyNotify) _gst_mpegts_atsc_mult_string_free);
|
||||
|
||||
for (i = 0; i < num_strings; i++) {
|
||||
GstMpegTsAtscMultString *mstring;
|
||||
GstMpegtsAtscMultString *mstring;
|
||||
guint8 num_segments;
|
||||
gint j;
|
||||
|
||||
mstring = g_slice_new0 (GstMpegTsAtscMultString);
|
||||
mstring = g_slice_new0 (GstMpegtsAtscMultString);
|
||||
g_ptr_array_add (res, mstring);
|
||||
mstring->segments =
|
||||
g_ptr_array_new_full (num_strings,
|
||||
|
@ -536,9 +536,9 @@ _parse_atsc_mult_string (guint8 * data, guint datasize)
|
|||
data += 1;
|
||||
|
||||
for (j = 0; j < num_segments; j++) {
|
||||
GstMpegTsAtscStringSegment *seg;
|
||||
GstMpegtsAtscStringSegment *seg;
|
||||
|
||||
seg = g_slice_new0 (GstMpegTsAtscStringSegment);
|
||||
seg = g_slice_new0 (GstMpegtsAtscStringSegment);
|
||||
g_ptr_array_add (mstring->segments, seg);
|
||||
|
||||
/* each entry needs at least 3 bytes */
|
||||
|
@ -576,12 +576,12 @@ error:
|
|||
|
||||
/* EIT */
|
||||
|
||||
static GstMpegTsAtscEITEvent *
|
||||
_gst_mpegts_atsc_eit_event_copy (GstMpegTsAtscEITEvent * event)
|
||||
static GstMpegtsAtscEITEvent *
|
||||
_gst_mpegts_atsc_eit_event_copy (GstMpegtsAtscEITEvent * event)
|
||||
{
|
||||
GstMpegTsAtscEITEvent *copy;
|
||||
GstMpegtsAtscEITEvent *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsAtscEITEvent, event);
|
||||
copy = g_slice_dup (GstMpegtsAtscEITEvent, event);
|
||||
copy->titles = g_ptr_array_ref (event->titles);
|
||||
copy->descriptors = g_ptr_array_ref (event->descriptors);
|
||||
|
||||
|
@ -589,51 +589,51 @@ _gst_mpegts_atsc_eit_event_copy (GstMpegTsAtscEITEvent * event)
|
|||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_atsc_eit_event_free (GstMpegTsAtscEITEvent * event)
|
||||
_gst_mpegts_atsc_eit_event_free (GstMpegtsAtscEITEvent * event)
|
||||
{
|
||||
if (event->titles)
|
||||
g_ptr_array_unref (event->titles);
|
||||
if (event->descriptors)
|
||||
g_ptr_array_unref (event->descriptors);
|
||||
g_slice_free (GstMpegTsAtscEITEvent, event);
|
||||
g_slice_free (GstMpegtsAtscEITEvent, event);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsAtscEITEvent, gst_mpegts_atsc_eit_event,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsAtscEITEvent, gst_mpegts_atsc_eit_event,
|
||||
(GBoxedCopyFunc) _gst_mpegts_atsc_eit_event_copy,
|
||||
(GFreeFunc) _gst_mpegts_atsc_eit_event_free);
|
||||
|
||||
static GstMpegTsAtscEIT *
|
||||
_gst_mpegts_atsc_eit_copy (GstMpegTsAtscEIT * eit)
|
||||
static GstMpegtsAtscEIT *
|
||||
_gst_mpegts_atsc_eit_copy (GstMpegtsAtscEIT * eit)
|
||||
{
|
||||
GstMpegTsAtscEIT *copy;
|
||||
GstMpegtsAtscEIT *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsAtscEIT, eit);
|
||||
copy = g_slice_dup (GstMpegtsAtscEIT, eit);
|
||||
copy->events = g_ptr_array_ref (eit->events);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_atsc_eit_free (GstMpegTsAtscEIT * eit)
|
||||
_gst_mpegts_atsc_eit_free (GstMpegtsAtscEIT * eit)
|
||||
{
|
||||
if (eit->events)
|
||||
g_ptr_array_unref (eit->events);
|
||||
g_slice_free (GstMpegTsAtscEIT, eit);
|
||||
g_slice_free (GstMpegtsAtscEIT, eit);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsAtscEIT, gst_mpegts_atsc_eit,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsAtscEIT, gst_mpegts_atsc_eit,
|
||||
(GBoxedCopyFunc) _gst_mpegts_atsc_eit_copy,
|
||||
(GFreeFunc) _gst_mpegts_atsc_eit_free);
|
||||
|
||||
static gpointer
|
||||
_parse_atsc_eit (GstMpegTsSection * section)
|
||||
_parse_atsc_eit (GstMpegtsSection * section)
|
||||
{
|
||||
GstMpegTsAtscEIT *eit = NULL;
|
||||
GstMpegtsAtscEIT *eit = NULL;
|
||||
guint i = 0;
|
||||
guint8 *data, *end;
|
||||
guint8 num_events;
|
||||
|
||||
eit = g_slice_new0 (GstMpegTsAtscEIT);
|
||||
eit = g_slice_new0 (GstMpegtsAtscEIT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -652,7 +652,7 @@ _parse_atsc_eit (GstMpegTsSection * section)
|
|||
_gst_mpegts_atsc_eit_event_free);
|
||||
|
||||
for (i = 0; i < num_events; i++) {
|
||||
GstMpegTsAtscEITEvent *event;
|
||||
GstMpegtsAtscEITEvent *event;
|
||||
guint32 tmp;
|
||||
guint8 text_length;
|
||||
guint16 descriptors_loop_length;
|
||||
|
@ -663,7 +663,7 @@ _parse_atsc_eit (GstMpegTsSection * section)
|
|||
goto error;
|
||||
}
|
||||
|
||||
event = g_slice_new0 (GstMpegTsAtscEITEvent);
|
||||
event = g_slice_new0 (GstMpegtsAtscEITEvent);
|
||||
g_ptr_array_add (eit->events, event);
|
||||
|
||||
event->event_id = GST_READ_UINT16_BE (data) & 0x3FFF;
|
||||
|
@ -716,15 +716,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_atsc_eit:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_ATSC_EIT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_EIT
|
||||
*
|
||||
* Returns the #GstMpegTsAtscEIT contained in the @section.
|
||||
* Returns the #GstMpegtsAtscEIT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTsAtscEIT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegtsAtscEIT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTsAtscEIT *
|
||||
gst_mpegts_section_get_atsc_eit (GstMpegTsSection * section)
|
||||
const GstMpegtsAtscEIT *
|
||||
gst_mpegts_section_get_atsc_eit (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_ATSC_EIT,
|
||||
NULL);
|
||||
|
@ -735,40 +735,40 @@ gst_mpegts_section_get_atsc_eit (GstMpegTsSection * section)
|
|||
__common_section_checks (section, 14, _parse_atsc_eit,
|
||||
(GDestroyNotify) _gst_mpegts_atsc_eit_free);
|
||||
|
||||
return (const GstMpegTsAtscEIT *) section->cached_parsed;
|
||||
return (const GstMpegtsAtscEIT *) section->cached_parsed;
|
||||
}
|
||||
|
||||
|
||||
static GstMpegTsAtscETT *
|
||||
_gst_mpegts_atsc_ett_copy (GstMpegTsAtscETT * ett)
|
||||
static GstMpegtsAtscETT *
|
||||
_gst_mpegts_atsc_ett_copy (GstMpegtsAtscETT * ett)
|
||||
{
|
||||
GstMpegTsAtscETT *copy;
|
||||
GstMpegtsAtscETT *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsAtscETT, ett);
|
||||
copy = g_slice_dup (GstMpegtsAtscETT, ett);
|
||||
copy->messages = g_ptr_array_ref (ett->messages);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_atsc_ett_free (GstMpegTsAtscETT * ett)
|
||||
_gst_mpegts_atsc_ett_free (GstMpegtsAtscETT * ett)
|
||||
{
|
||||
if (ett->messages)
|
||||
g_ptr_array_unref (ett->messages);
|
||||
g_slice_free (GstMpegTsAtscETT, ett);
|
||||
g_slice_free (GstMpegtsAtscETT, ett);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsAtscETT, gst_mpegts_atsc_ett,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsAtscETT, gst_mpegts_atsc_ett,
|
||||
(GBoxedCopyFunc) _gst_mpegts_atsc_ett_copy,
|
||||
(GFreeFunc) _gst_mpegts_atsc_ett_free);
|
||||
|
||||
static gpointer
|
||||
_parse_ett (GstMpegTsSection * section)
|
||||
_parse_ett (GstMpegtsSection * section)
|
||||
{
|
||||
GstMpegTsAtscETT *ett = NULL;
|
||||
GstMpegtsAtscETT *ett = NULL;
|
||||
guint8 *data, *end;
|
||||
|
||||
ett = g_slice_new0 (GstMpegTsAtscETT);
|
||||
ett = g_slice_new0 (GstMpegtsAtscETT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -803,15 +803,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_atsc_ett:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_ATSC_ETT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_ETT
|
||||
*
|
||||
* Returns the #GstMpegTsAtscETT contained in the @section.
|
||||
* Returns the #GstMpegtsAtscETT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTsAtscETT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegtsAtscETT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTsAtscETT *
|
||||
gst_mpegts_section_get_atsc_ett (GstMpegTsSection * section)
|
||||
const GstMpegtsAtscETT *
|
||||
gst_mpegts_section_get_atsc_ett (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_ATSC_ETT,
|
||||
NULL);
|
||||
|
@ -821,42 +821,42 @@ gst_mpegts_section_get_atsc_ett (GstMpegTsSection * section)
|
|||
section->cached_parsed = __common_section_checks (section, 17, _parse_ett,
|
||||
(GDestroyNotify) _gst_mpegts_atsc_ett_free);
|
||||
|
||||
return (const GstMpegTsAtscETT *) section->cached_parsed;
|
||||
return (const GstMpegtsAtscETT *) section->cached_parsed;
|
||||
}
|
||||
|
||||
/* STT */
|
||||
|
||||
static GstMpegTsAtscSTT *
|
||||
_gst_mpegts_atsc_stt_copy (GstMpegTsAtscSTT * stt)
|
||||
static GstMpegtsAtscSTT *
|
||||
_gst_mpegts_atsc_stt_copy (GstMpegtsAtscSTT * stt)
|
||||
{
|
||||
GstMpegTsAtscSTT *copy;
|
||||
GstMpegtsAtscSTT *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsAtscSTT, stt);
|
||||
copy = g_slice_dup (GstMpegtsAtscSTT, stt);
|
||||
copy->descriptors = g_ptr_array_ref (stt->descriptors);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_atsc_stt_free (GstMpegTsAtscSTT * stt)
|
||||
_gst_mpegts_atsc_stt_free (GstMpegtsAtscSTT * stt)
|
||||
{
|
||||
if (stt->descriptors)
|
||||
g_ptr_array_unref (stt->descriptors);
|
||||
g_slice_free (GstMpegTsAtscSTT, stt);
|
||||
g_slice_free (GstMpegtsAtscSTT, stt);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsAtscSTT, gst_mpegts_atsc_stt,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsAtscSTT, gst_mpegts_atsc_stt,
|
||||
(GBoxedCopyFunc) _gst_mpegts_atsc_stt_copy,
|
||||
(GFreeFunc) _gst_mpegts_atsc_stt_free);
|
||||
|
||||
static gpointer
|
||||
_parse_atsc_stt (GstMpegTsSection * section)
|
||||
_parse_atsc_stt (GstMpegtsSection * section)
|
||||
{
|
||||
GstMpegTsAtscSTT *stt = NULL;
|
||||
GstMpegtsAtscSTT *stt = NULL;
|
||||
guint8 *data, *end;
|
||||
guint16 daylight_saving;
|
||||
|
||||
stt = g_slice_new0 (GstMpegTsAtscSTT);
|
||||
stt = g_slice_new0 (GstMpegtsAtscSTT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -892,15 +892,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_atsc_stt:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_ATSC_STT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_STT
|
||||
*
|
||||
* Returns the #GstMpegTsAtscSTT contained in the @section.
|
||||
* Returns the #GstMpegtsAtscSTT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTsAtscSTT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegtsAtscSTT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTsAtscSTT *
|
||||
gst_mpegts_section_get_atsc_stt (GstMpegTsSection * section)
|
||||
const GstMpegtsAtscSTT *
|
||||
gst_mpegts_section_get_atsc_stt (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_ATSC_STT,
|
||||
NULL);
|
||||
|
@ -911,7 +911,7 @@ gst_mpegts_section_get_atsc_stt (GstMpegTsSection * section)
|
|||
__common_section_checks (section, 20, _parse_atsc_stt,
|
||||
(GDestroyNotify) _gst_mpegts_atsc_stt_free);
|
||||
|
||||
return (const GstMpegTsAtscSTT *) section->cached_parsed;
|
||||
return (const GstMpegtsAtscSTT *) section->cached_parsed;
|
||||
}
|
||||
|
||||
#define GPS_TO_UTC_TICKS G_GINT64_CONSTANT(315964800)
|
||||
|
@ -923,7 +923,7 @@ _gst_mpegts_atsc_gps_time_to_datetime (guint32 systemtime, guint8 gps_offset)
|
|||
}
|
||||
|
||||
GstDateTime *
|
||||
gst_mpegts_atsc_stt_get_datetime_utc (GstMpegTsAtscSTT * stt)
|
||||
gst_mpegts_atsc_stt_get_datetime_utc (GstMpegtsAtscSTT * stt)
|
||||
{
|
||||
if (stt->utc_datetime == NULL)
|
||||
stt->utc_datetime = _gst_mpegts_atsc_gps_time_to_datetime (stt->system_time,
|
||||
|
|
|
@ -31,13 +31,13 @@
|
|||
G_BEGIN_DECLS
|
||||
|
||||
/**
|
||||
* GstMpegTsSectionATSCTableID:
|
||||
* GstMpegtsSectionATSCTableID:
|
||||
*
|
||||
* Values for a #GstMpegTsSection table_id.
|
||||
* Values for a #GstMpegtsSection table_id.
|
||||
*
|
||||
* These are the registered ATSC table_id variants.
|
||||
*
|
||||
* see also: #GstMpegTsSectionTableID
|
||||
* see also: #GstMpegtsSectionTableID
|
||||
*/
|
||||
typedef enum {
|
||||
|
||||
|
@ -64,22 +64,22 @@ typedef enum {
|
|||
/* 0xD8 ?? */
|
||||
GST_MTS_TABLE_ID_ATSC_AGGREGATE_DATA_EVENT = 0xD9,
|
||||
GST_MTS_TABLE_ID_ATSC_SATELLITE_VIRTUAL_CHANNEL = 0xDA,
|
||||
} GstMpegTsSectionATSCTableID;
|
||||
} GstMpegtsSectionATSCTableID;
|
||||
|
||||
/* TVCT/CVCT */
|
||||
#define GST_TYPE_MPEGTS_ATSC_VCT (gst_mpegts_atsc_vct_get_type ())
|
||||
#define GST_TYPE_MPEGTS_ATSC_VCT_SOURCE (gst_mpegts_atsc_vct_source_get_type ())
|
||||
|
||||
typedef struct _GstMpegTsAtscVCTSource GstMpegTsAtscVCTSource;
|
||||
typedef struct _GstMpegTsAtscVCT GstMpegTsAtscVCT;
|
||||
typedef struct _GstMpegtsAtscVCTSource GstMpegtsAtscVCTSource;
|
||||
typedef struct _GstMpegtsAtscVCT GstMpegtsAtscVCT;
|
||||
|
||||
/**
|
||||
* GstMpegTsAtscVCTSource:
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): descriptors
|
||||
* GstMpegtsAtscVCTSource:
|
||||
* @descriptors: (element-type GstMpegtsDescriptor): descriptors
|
||||
*
|
||||
* Source from a @GstMpegTsAtscVCT, can be used both for TVCT and CVCT tables
|
||||
* Source from a @GstMpegtsAtscVCT, can be used both for TVCT and CVCT tables
|
||||
*/
|
||||
struct _GstMpegTsAtscVCTSource
|
||||
struct _GstMpegtsAtscVCTSource
|
||||
{
|
||||
gchar *short_name;
|
||||
guint16 major_channel_number;
|
||||
|
@ -102,16 +102,16 @@ struct _GstMpegTsAtscVCTSource
|
|||
};
|
||||
|
||||
/**
|
||||
* GstMpegTsAtscVCT:
|
||||
* @sources: (element-type GstMpegTsAtscVCTSource): sources
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): descriptors
|
||||
* GstMpegtsAtscVCT:
|
||||
* @sources: (element-type GstMpegtsAtscVCTSource): sources
|
||||
* @descriptors: (element-type GstMpegtsDescriptor): descriptors
|
||||
*
|
||||
* Represents both:
|
||||
* Terrestrial Virtual Channel Table (A65)
|
||||
* Cable Virtual Channel Table (A65)
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTsAtscVCT
|
||||
struct _GstMpegtsAtscVCT
|
||||
{
|
||||
guint16 transport_stream_id;
|
||||
guint8 protocol_version;
|
||||
|
@ -122,30 +122,30 @@ struct _GstMpegTsAtscVCT
|
|||
GType gst_mpegts_atsc_vct_get_type (void);
|
||||
GType gst_mpegts_atsc_vct_source_get_type (void);
|
||||
|
||||
const GstMpegTsAtscVCT * gst_mpegts_section_get_atsc_tvct (GstMpegTsSection * section);
|
||||
const GstMpegTsAtscVCT * gst_mpegts_section_get_atsc_cvct (GstMpegTsSection * section);
|
||||
const GstMpegtsAtscVCT * gst_mpegts_section_get_atsc_tvct (GstMpegtsSection * section);
|
||||
const GstMpegtsAtscVCT * gst_mpegts_section_get_atsc_cvct (GstMpegtsSection * section);
|
||||
|
||||
/* MGT */
|
||||
#define GST_TYPE_MPEGTS_ATSC_MGT (gst_mpegts_atsc_mgt_get_type ())
|
||||
#define GST_TYPE_MPEGTS_ATSC_MGT_TABLE (gst_mpegts_atsc_mgt_table_get_type ())
|
||||
|
||||
typedef struct _GstMpegTsAtscMGTTable GstMpegTsAtscMGTTable;
|
||||
typedef struct _GstMpegTsAtscMGT GstMpegTsAtscMGT;
|
||||
typedef struct _GstMpegtsAtscMGTTable GstMpegtsAtscMGTTable;
|
||||
typedef struct _GstMpegtsAtscMGT GstMpegtsAtscMGT;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEG_TS_ATSC_MGT_TABLE_TYPE_EIT0 = 0x0100,
|
||||
GST_MPEG_TS_ATSC_MGT_TABLE_TYPE_EIT127 = 0x017F,
|
||||
GST_MPEG_TS_ATSC_MGT_TABLE_TYPE_ETT0 = 0x0200,
|
||||
GST_MPEG_TS_ATSC_MGT_TABLE_TYPE_ETT127 = 0x027F
|
||||
} GstMpegTsAtscMGTTableType;
|
||||
GST_MPEGTS_ATSC_MGT_TABLE_TYPE_EIT0 = 0x0100,
|
||||
GST_MPEGTS_ATSC_MGT_TABLE_TYPE_EIT127 = 0x017F,
|
||||
GST_MPEGTS_ATSC_MGT_TABLE_TYPE_ETT0 = 0x0200,
|
||||
GST_MPEGTS_ATSC_MGT_TABLE_TYPE_ETT127 = 0x027F
|
||||
} GstMpegtsAtscMGTTableType;
|
||||
|
||||
/**
|
||||
* GstMpegTsAtscMGTTable:
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): descriptors
|
||||
* GstMpegtsAtscMGTTable:
|
||||
* @descriptors: (element-type GstMpegtsDescriptor): descriptors
|
||||
*
|
||||
* Source from a @GstMpegTsAtscMGT
|
||||
* Source from a @GstMpegtsAtscMGT
|
||||
*/
|
||||
struct _GstMpegTsAtscMGTTable
|
||||
struct _GstMpegtsAtscMGTTable
|
||||
{
|
||||
guint16 table_type;
|
||||
guint16 pid;
|
||||
|
@ -155,14 +155,14 @@ struct _GstMpegTsAtscMGTTable
|
|||
};
|
||||
|
||||
/**
|
||||
* GstMpegTsAtscMGT:
|
||||
* @tables: (element-type GstMpegTsAtscMGTTable): the tables
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): descriptors
|
||||
* GstMpegtsAtscMGT:
|
||||
* @tables: (element-type GstMpegtsAtscMGTTable): the tables
|
||||
* @descriptors: (element-type GstMpegtsDescriptor): descriptors
|
||||
*
|
||||
* Master Guide Table (A65)
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTsAtscMGT
|
||||
struct _GstMpegtsAtscMGT
|
||||
{
|
||||
guint8 protocol_version;
|
||||
guint16 tables_defined;
|
||||
|
@ -173,17 +173,17 @@ struct _GstMpegTsAtscMGT
|
|||
GType gst_mpegts_atsc_mgt_get_type (void);
|
||||
GType gst_mpegts_atsc_mgt_table_get_type (void);
|
||||
|
||||
const GstMpegTsAtscMGT * gst_mpegts_section_get_atsc_mgt (GstMpegTsSection * section);
|
||||
const GstMpegtsAtscMGT * gst_mpegts_section_get_atsc_mgt (GstMpegtsSection * section);
|
||||
|
||||
/* Multiple string structure (used in ETT and EIT */
|
||||
|
||||
#define GST_TYPE_MPEGTS_ATSC_STRING_SEGMENT (gst_mpegts_atsc_string_segment_get_type())
|
||||
#define GST_TYPE_MPEGTS_ATSC_MULT_STRING (gst_mpegts_atsc_mult_string_get_type())
|
||||
|
||||
typedef struct _GstMpegTsAtscStringSegment GstMpegTsAtscStringSegment;
|
||||
typedef struct _GstMpegTsAtscMultString GstMpegTsAtscMultString;
|
||||
typedef struct _GstMpegtsAtscStringSegment GstMpegtsAtscStringSegment;
|
||||
typedef struct _GstMpegtsAtscMultString GstMpegtsAtscMultString;
|
||||
|
||||
struct _GstMpegTsAtscStringSegment {
|
||||
struct _GstMpegtsAtscStringSegment {
|
||||
guint8 compression_type;
|
||||
guint8 mode;
|
||||
guint8 compressed_data_size;
|
||||
|
@ -192,14 +192,14 @@ struct _GstMpegTsAtscStringSegment {
|
|||
gchar *cached_string;
|
||||
};
|
||||
|
||||
const gchar * gst_mpegts_atsc_string_segment_get_string (GstMpegTsAtscStringSegment * seg);
|
||||
const gchar * gst_mpegts_atsc_string_segment_get_string (GstMpegtsAtscStringSegment * seg);
|
||||
|
||||
/**
|
||||
* GstMpegTsAtscMultString:
|
||||
* @segments: (element-type GstMpegTsAtscStringSegment)
|
||||
* GstMpegtsAtscMultString:
|
||||
* @segments: (element-type GstMpegtsAtscStringSegment)
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTsAtscMultString {
|
||||
struct _GstMpegtsAtscMultString {
|
||||
gchar iso_639_langcode[4];
|
||||
GPtrArray *segments;
|
||||
};
|
||||
|
@ -212,17 +212,17 @@ GType gst_mpegts_atsc_mult_string_get_type (void);
|
|||
#define GST_TYPE_MPEGTS_ATSC_EIT_EVENT (gst_mpegts_atsc_eit_event_get_type())
|
||||
#define GST_TYPE_MPEGTS_ATSC_EIT (gst_mpegts_atsc_eit_get_type())
|
||||
|
||||
typedef struct _GstMpegTsAtscEITEvent GstMpegTsAtscEITEvent;
|
||||
typedef struct _GstMpegTsAtscEIT GstMpegTsAtscEIT;
|
||||
typedef struct _GstMpegtsAtscEITEvent GstMpegtsAtscEITEvent;
|
||||
typedef struct _GstMpegtsAtscEIT GstMpegtsAtscEIT;
|
||||
|
||||
/**
|
||||
* GstMpegTsAtscEITEvent:
|
||||
* @titles: (element-type GstMpegTsAtscMultString): the titles
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): descriptors
|
||||
* GstMpegtsAtscEITEvent:
|
||||
* @titles: (element-type GstMpegtsAtscMultString): the titles
|
||||
* @descriptors: (element-type GstMpegtsDescriptor): descriptors
|
||||
*
|
||||
* An ATSC EIT Event
|
||||
*/
|
||||
struct _GstMpegTsAtscEITEvent {
|
||||
struct _GstMpegtsAtscEITEvent {
|
||||
guint16 event_id;
|
||||
guint32 start_time;
|
||||
guint8 etm_location;
|
||||
|
@ -233,13 +233,13 @@ struct _GstMpegTsAtscEITEvent {
|
|||
};
|
||||
|
||||
/**
|
||||
* GstMpegTsAtscEIT:
|
||||
* @events: (element-type GstMpegTsAtscEITEvent): Events
|
||||
* GstMpegtsAtscEIT:
|
||||
* @events: (element-type GstMpegtsAtscEITEvent): Events
|
||||
*
|
||||
* Event Information Table (ATSC)
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTsAtscEIT
|
||||
struct _GstMpegtsAtscEIT
|
||||
{
|
||||
guint16 source_id;
|
||||
guint8 protocol_version;
|
||||
|
@ -250,22 +250,22 @@ struct _GstMpegTsAtscEIT
|
|||
GType gst_mpegts_atsc_eit_event_get_type (void);
|
||||
GType gst_mpegts_atsc_eit_get_type (void);
|
||||
|
||||
const GstMpegTsAtscEIT *gst_mpegts_section_get_atsc_eit (GstMpegTsSection *section);
|
||||
const GstMpegtsAtscEIT *gst_mpegts_section_get_atsc_eit (GstMpegtsSection *section);
|
||||
|
||||
/* ETT */
|
||||
|
||||
#define GST_TYPE_MPEGTS_ATSC_ETT (gst_mpegts_atsc_ett_get_type())
|
||||
|
||||
typedef struct _GstMpegTsAtscETT GstMpegTsAtscETT;
|
||||
typedef struct _GstMpegtsAtscETT GstMpegtsAtscETT;
|
||||
|
||||
/**
|
||||
* GstMpegTsAtscETT:
|
||||
* @messages: (element-type GstMpegTsAtscMultString): List of texts
|
||||
* GstMpegtsAtscETT:
|
||||
* @messages: (element-type GstMpegtsAtscMultString): List of texts
|
||||
*
|
||||
* Extended Text Table (ATSC)
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTsAtscETT
|
||||
struct _GstMpegtsAtscETT
|
||||
{
|
||||
guint16 ett_table_id_extension;
|
||||
guint16 protocol_version;
|
||||
|
@ -276,21 +276,21 @@ struct _GstMpegTsAtscETT
|
|||
|
||||
GType gst_mpegts_atsc_ett_get_type (void);
|
||||
|
||||
const GstMpegTsAtscETT *gst_mpegts_section_get_atsc_ett (GstMpegTsSection *section);
|
||||
const GstMpegtsAtscETT *gst_mpegts_section_get_atsc_ett (GstMpegtsSection *section);
|
||||
|
||||
/* STT */
|
||||
#define GST_TYPE_MPEGTS_ATSC_STT (gst_mpegts_atsc_stt_get_type ())
|
||||
|
||||
typedef struct _GstMpegTsAtscSTT GstMpegTsAtscSTT;
|
||||
typedef struct _GstMpegtsAtscSTT GstMpegtsAtscSTT;
|
||||
|
||||
/**
|
||||
* GstMpegTsAtscSTT:
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): descriptors
|
||||
* GstMpegtsAtscSTT:
|
||||
* @descriptors: (element-type GstMpegtsDescriptor): descriptors
|
||||
*
|
||||
* System Time Table (A65)
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTsAtscSTT
|
||||
struct _GstMpegtsAtscSTT
|
||||
{
|
||||
guint8 protocol_version;
|
||||
guint32 system_time;
|
||||
|
@ -305,9 +305,9 @@ struct _GstMpegTsAtscSTT
|
|||
|
||||
GType gst_mpegts_atsc_stt_get_type (void);
|
||||
|
||||
const GstMpegTsAtscSTT * gst_mpegts_section_get_atsc_stt (GstMpegTsSection * section);
|
||||
const GstMpegtsAtscSTT * gst_mpegts_section_get_atsc_stt (GstMpegtsSection * section);
|
||||
/* FIXME receive a non-const parameter but we only provide a const getter */
|
||||
GstDateTime * gst_mpegts_atsc_stt_get_datetime_utc (GstMpegTsAtscSTT * stt);
|
||||
GstDateTime * gst_mpegts_atsc_stt_get_datetime_utc (GstMpegtsAtscSTT * stt);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -37,9 +37,9 @@
|
|||
G_BEGIN_DECLS
|
||||
|
||||
/**
|
||||
* GstMpegTsDVBDescriptorType:
|
||||
* GstMpegtsDVBDescriptorType:
|
||||
*
|
||||
* The type of #GstMpegTsDescriptor
|
||||
* The type of #GstMpegtsDescriptor
|
||||
*
|
||||
* These values correspond to the registered descriptor type from
|
||||
* the various DVB specifications.
|
||||
|
@ -114,12 +114,12 @@ typedef enum {
|
|||
GST_MTS_DESC_DVB_XAIT_LOCATION = 0x7D,
|
||||
GST_MTS_DESC_DVB_FTA_CONTENT_MANAGEMENT = 0x7E,
|
||||
GST_MTS_DESC_DVB_EXTENSION = 0x7F,
|
||||
} GstMpegTsDVBDescriptorType;
|
||||
} GstMpegtsDVBDescriptorType;
|
||||
|
||||
/**
|
||||
* GstMpegTsDVBExtendedDescriptorType:
|
||||
* GstMpegtsDVBExtendedDescriptorType:
|
||||
*
|
||||
* The type of #GstMpegTsDescriptor
|
||||
* The type of #GstMpegtsDescriptor
|
||||
*
|
||||
* These values correspond to the registered extended descriptor
|
||||
* type from the various DVB specifications.
|
||||
|
@ -150,24 +150,24 @@ typedef enum {
|
|||
GST_MTS_DESC_EXT_DVB_VIDEO_DEPTH_RANGE = 0x10,
|
||||
GST_MTS_DESC_EXT_DVB_T2MI = 0x11,
|
||||
GST_MTS_DESC_EXT_DVB_URI_LINKAGE = 0x13,
|
||||
} GstMpegTsDVBExtendedDescriptorType;
|
||||
} GstMpegtsDVBExtendedDescriptorType;
|
||||
|
||||
/* GST_MTS_DESC_DVB_CAROUSEL_IDENTIFIER (0x13) */
|
||||
/* FIXME : Implement */
|
||||
|
||||
/* GST_MTS_DESC_DVB_NETWORK_NAME (0x40) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_network_name (const GstMpegTsDescriptor *descriptor,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_network_name (const GstMpegtsDescriptor *descriptor,
|
||||
gchar **name);
|
||||
|
||||
GstMpegTsDescriptor *gst_mpegts_descriptor_from_dvb_network_name (const gchar * name);
|
||||
GstMpegtsDescriptor *gst_mpegts_descriptor_from_dvb_network_name (const gchar * name);
|
||||
|
||||
/* GST_MTS_DESC_DVB_STUFFING (0x42) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_stuffing (const GstMpegTsDescriptor * descriptor,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_stuffing (const GstMpegtsDescriptor * descriptor,
|
||||
guint8 ** stuffing_bytes);
|
||||
|
||||
|
||||
/* GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM (0x43) */
|
||||
typedef struct _GstMpegTsSatelliteDeliverySystemDescriptor GstMpegTsSatelliteDeliverySystemDescriptor;
|
||||
typedef struct _GstMpegtsSatelliteDeliverySystemDescriptor GstMpegtsSatelliteDeliverySystemDescriptor;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEGTS_MODULATION_QPSK = 0,
|
||||
|
@ -185,7 +185,7 @@ typedef enum {
|
|||
GST_MPEGTS_MODULATION_DQPSK,
|
||||
GST_MPEGTS_MODULATION_QAM_4_NR_,
|
||||
GST_MPEGTS_MODULATION_NONE
|
||||
} GstMpegTsModulationType;
|
||||
} GstMpegtsModulationType;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEGTS_FEC_NONE = 0,
|
||||
|
@ -201,7 +201,7 @@ typedef enum {
|
|||
GST_MPEGTS_FEC_3_5,
|
||||
GST_MPEGTS_FEC_9_10,
|
||||
GST_MPEGTS_FEC_2_5
|
||||
} GstMpegTsDVBCodeRate;
|
||||
} GstMpegtsDVBCodeRate;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEGTS_ROLLOFF_35 = 0,
|
||||
|
@ -209,17 +209,17 @@ typedef enum {
|
|||
GST_MPEGTS_ROLLOFF_25,
|
||||
GST_MPEGTS_ROLLOFF_RESERVED,
|
||||
GST_MPEGTS_ROLLOFF_AUTO
|
||||
} GstMpegTsSatelliteRolloff;
|
||||
} GstMpegtsSatelliteRolloff;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEGTS_POLARIZATION_LINEAR_HORIZONTAL = 0,
|
||||
GST_MPEGTS_POLARIZATION_LINEAR_VERTICAL,
|
||||
GST_MPEGTS_POLARIZATION_CIRCULAR_LEFT,
|
||||
GST_MPEGTS_POLARIZATION_CIRCULAR_RIGHT
|
||||
} GstMpegTsSatellitePolarizationType;
|
||||
} GstMpegtsSatellitePolarizationType;
|
||||
|
||||
/**
|
||||
* GstMpegTsSatelliteDeliverySystemDescriptor:
|
||||
* GstMpegtsSatelliteDeliverySystemDescriptor:
|
||||
* @frequency: the frequency in kHz (kiloHertz)
|
||||
* @orbital_position: the orbital position in degrees
|
||||
* @west_east: If %TRUE, the satellite is in the eastern part of the orbit,
|
||||
|
@ -233,23 +233,23 @@ typedef enum {
|
|||
*
|
||||
* Satellite Delivery System Descriptor (EN 300 468 v.1.13.1)
|
||||
*/
|
||||
struct _GstMpegTsSatelliteDeliverySystemDescriptor
|
||||
struct _GstMpegtsSatelliteDeliverySystemDescriptor
|
||||
{
|
||||
guint32 frequency;
|
||||
gfloat orbital_position;
|
||||
gboolean west_east;
|
||||
GstMpegTsSatellitePolarizationType polarization;
|
||||
GstMpegtsSatellitePolarizationType polarization;
|
||||
|
||||
GstMpegTsSatelliteRolloff roll_off;
|
||||
GstMpegtsSatelliteRolloff roll_off;
|
||||
gboolean modulation_system;
|
||||
GstMpegTsModulationType modulation_type;
|
||||
GstMpegtsModulationType modulation_type;
|
||||
|
||||
guint32 symbol_rate;
|
||||
GstMpegTsDVBCodeRate fec_inner;
|
||||
GstMpegtsDVBCodeRate fec_inner;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_satellite_delivery_system (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsSatelliteDeliverySystemDescriptor *res);
|
||||
gboolean gst_mpegts_descriptor_parse_satellite_delivery_system (const GstMpegtsDescriptor *descriptor,
|
||||
GstMpegtsSatelliteDeliverySystemDescriptor *res);
|
||||
|
||||
|
||||
/* GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM (0x44) */
|
||||
|
@ -257,11 +257,11 @@ typedef enum {
|
|||
GST_MPEGTS_CABLE_OUTER_FEC_UNDEFINED = 0,
|
||||
GST_MPEGTS_CABLE_OUTER_FEC_NONE,
|
||||
GST_MPEGTS_CABLE_OUTER_FEC_RS_204_188,
|
||||
} GstMpegTsCableOuterFECScheme;
|
||||
} GstMpegtsCableOuterFECScheme;
|
||||
|
||||
typedef struct _GstMpegTsCableDeliverySystemDescriptor GstMpegTsCableDeliverySystemDescriptor;
|
||||
typedef struct _GstMpegtsCableDeliverySystemDescriptor GstMpegtsCableDeliverySystemDescriptor;
|
||||
/**
|
||||
* GstMpegTsCableDeliverySystemDescriptor:
|
||||
* GstMpegtsCableDeliverySystemDescriptor:
|
||||
* @frequency: the frequency in Hz (Hertz)
|
||||
* @outer_fec: the outer FEC scheme used
|
||||
* @modulation: Modulation scheme used
|
||||
|
@ -270,26 +270,26 @@ typedef struct _GstMpegTsCableDeliverySystemDescriptor GstMpegTsCableDeliverySys
|
|||
*
|
||||
* Cable Delivery System Descriptor (EN 300 468 v.1.13.1)
|
||||
*/
|
||||
struct _GstMpegTsCableDeliverySystemDescriptor
|
||||
struct _GstMpegtsCableDeliverySystemDescriptor
|
||||
{
|
||||
guint32 frequency;
|
||||
GstMpegTsCableOuterFECScheme outer_fec;
|
||||
GstMpegTsModulationType modulation;
|
||||
GstMpegtsCableOuterFECScheme outer_fec;
|
||||
GstMpegtsModulationType modulation;
|
||||
|
||||
guint32 symbol_rate;
|
||||
GstMpegTsDVBCodeRate fec_inner;
|
||||
GstMpegtsDVBCodeRate fec_inner;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_cable_delivery_system (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsCableDeliverySystemDescriptor *res);
|
||||
gboolean gst_mpegts_descriptor_parse_cable_delivery_system (const GstMpegtsDescriptor *descriptor,
|
||||
GstMpegtsCableDeliverySystemDescriptor *res);
|
||||
|
||||
/* GST_MTS_DESC_DVB_BOUQUET_NAME (0x47) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_bouquet_name (const GstMpegTsDescriptor * descriptor,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_bouquet_name (const GstMpegtsDescriptor * descriptor,
|
||||
gchar ** bouquet_name);
|
||||
|
||||
/* GST_MTS_DESC_DVB_SERVICE (0x48) */
|
||||
/**
|
||||
* GstMpegTsDVBServiceType:
|
||||
* GstMpegtsDVBServiceType:
|
||||
*
|
||||
* The type of service of a channel.
|
||||
*
|
||||
|
@ -328,37 +328,37 @@ typedef enum {
|
|||
/* 0x80 - 0xfe user defined */
|
||||
/* 0xff Reserved for future use */
|
||||
GST_DVB_SERVICE_RESERVED_FF
|
||||
} GstMpegTsDVBServiceType;
|
||||
} GstMpegtsDVBServiceType;
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_service (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsDVBServiceType *service_type,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_service (const GstMpegtsDescriptor *descriptor,
|
||||
GstMpegtsDVBServiceType *service_type,
|
||||
gchar **service_name,
|
||||
gchar **provider_name);
|
||||
|
||||
GstMpegTsDescriptor *gst_mpegts_descriptor_from_dvb_service (GstMpegTsDVBServiceType service_type,
|
||||
GstMpegtsDescriptor *gst_mpegts_descriptor_from_dvb_service (GstMpegtsDVBServiceType service_type,
|
||||
const gchar * service_name,
|
||||
const gchar * service_provider);
|
||||
|
||||
/* GST_MTS_DESC_DVB_SERVICE_LIST (0x41) */
|
||||
typedef struct _GstMpegTsDVBServiceListItem GstMpegTsDVBServiceListItem;
|
||||
typedef struct _GstMpegtsDVBServiceListItem GstMpegtsDVBServiceListItem;
|
||||
|
||||
/**
|
||||
* GstMpegTsDVBServiceListItem:
|
||||
* GstMpegtsDVBServiceListItem:
|
||||
* @service_id: the id of a service
|
||||
* @type: the type of a service
|
||||
*/
|
||||
struct _GstMpegTsDVBServiceListItem
|
||||
struct _GstMpegtsDVBServiceListItem
|
||||
{
|
||||
guint16 service_id;
|
||||
GstMpegTsDVBServiceType type;
|
||||
GstMpegtsDVBServiceType type;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_service_list (const GstMpegTsDescriptor * descriptor,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_service_list (const GstMpegtsDescriptor * descriptor,
|
||||
GPtrArray ** list);
|
||||
|
||||
/* GST_MTS_DESC_DVB_LINKAGE (0x4A) */
|
||||
/**
|
||||
* GstMpegTsDVBLinkageType:
|
||||
* GstMpegtsDVBLinkageType:
|
||||
*
|
||||
* Linkage Type (EN 300 468 v.1.13.1)
|
||||
*/
|
||||
|
@ -379,37 +379,37 @@ typedef enum {
|
|||
GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_INT = 0x0C,
|
||||
GST_MPEGTS_DVB_LINKAGE_EVENT = 0x0D,
|
||||
GST_MPEGTS_DVB_LINKAGE_EXTENDED_EVENT = 0x0E,
|
||||
} GstMpegTsDVBLinkageType;
|
||||
} GstMpegtsDVBLinkageType;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEGTS_DVB_LINKAGE_HAND_OVER_RESERVED = 0x00,
|
||||
GST_MPEGTS_DVB_LINKAGE_HAND_OVER_IDENTICAL = 0x01,
|
||||
GST_MPEGTS_DVB_LINKAGE_HAND_OVER_LOCAL_VARIATION = 0x02,
|
||||
GST_MPEGTS_DVB_LINKAGE_HAND_OVER_ASSOCIATED = 0x03,
|
||||
} GstMpegTsDVBLinkageHandOverType;
|
||||
} GstMpegtsDVBLinkageHandOverType;
|
||||
|
||||
typedef struct _GstMpegTsDVBLinkageMobileHandOver GstMpegTsDVBLinkageMobileHandOver;
|
||||
typedef struct _GstMpegTsDVBLinkageEvent GstMpegTsDVBLinkageEvent;
|
||||
typedef struct _GstMpegTsDVBLinkageExtendedEvent GstMpegTsDVBLinkageExtendedEvent;
|
||||
typedef struct _GstMpegTsDVBLinkageDescriptor GstMpegTsDVBLinkageDescriptor;
|
||||
typedef struct _GstMpegtsDVBLinkageMobileHandOver GstMpegtsDVBLinkageMobileHandOver;
|
||||
typedef struct _GstMpegtsDVBLinkageEvent GstMpegtsDVBLinkageEvent;
|
||||
typedef struct _GstMpegtsDVBLinkageExtendedEvent GstMpegtsDVBLinkageExtendedEvent;
|
||||
typedef struct _GstMpegtsDVBLinkageDescriptor GstMpegtsDVBLinkageDescriptor;
|
||||
|
||||
struct _GstMpegTsDVBLinkageMobileHandOver
|
||||
struct _GstMpegtsDVBLinkageMobileHandOver
|
||||
{
|
||||
GstMpegTsDVBLinkageHandOverType hand_over_type;
|
||||
GstMpegtsDVBLinkageHandOverType hand_over_type;
|
||||
/* 0 = NIT, 1 = SDT */
|
||||
gboolean origin_type;
|
||||
guint16 network_id;
|
||||
guint16 initial_service_id;
|
||||
};
|
||||
|
||||
struct _GstMpegTsDVBLinkageEvent
|
||||
struct _GstMpegtsDVBLinkageEvent
|
||||
{
|
||||
guint16 target_event_id;
|
||||
gboolean target_listed;
|
||||
gboolean event_simulcast;
|
||||
};
|
||||
|
||||
struct _GstMpegTsDVBLinkageExtendedEvent
|
||||
struct _GstMpegtsDVBLinkageExtendedEvent
|
||||
{
|
||||
guint16 target_event_id;
|
||||
gboolean target_listed;
|
||||
|
@ -429,7 +429,7 @@ struct _GstMpegTsDVBLinkageExtendedEvent
|
|||
};
|
||||
|
||||
/**
|
||||
* GstMpegTsDVBLinkageDescriptor:
|
||||
* GstMpegtsDVBLinkageDescriptor:
|
||||
* @transport_stream_id: the transport id
|
||||
* @original_network_id: the original network id
|
||||
* @service_id: the service id
|
||||
|
@ -438,12 +438,12 @@ struct _GstMpegTsDVBLinkageExtendedEvent
|
|||
* @private_data_length: the length for %private_data_bytes
|
||||
* @private_data_bytes: additional data bytes
|
||||
*/
|
||||
struct _GstMpegTsDVBLinkageDescriptor
|
||||
struct _GstMpegtsDVBLinkageDescriptor
|
||||
{
|
||||
guint16 transport_stream_id;
|
||||
guint16 original_network_id;
|
||||
guint16 service_id;
|
||||
GstMpegTsDVBLinkageType linkage_type;
|
||||
GstMpegtsDVBLinkageType linkage_type;
|
||||
gpointer linkage_data;
|
||||
guint8 private_data_length;
|
||||
guint8 *private_data_bytes;
|
||||
|
@ -453,39 +453,39 @@ struct _GstMpegTsDVBLinkageDescriptor
|
|||
|
||||
GType gst_mpegts_dvb_linkage_descriptor_get_type (void);
|
||||
|
||||
void gst_mpegts_dvb_linkage_descriptor_free (GstMpegTsDVBLinkageDescriptor * source);
|
||||
void gst_mpegts_dvb_linkage_descriptor_free (GstMpegtsDVBLinkageDescriptor * source);
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_linkage (const GstMpegTsDescriptor * descriptor,
|
||||
GstMpegTsDVBLinkageDescriptor ** res);
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_linkage (const GstMpegtsDescriptor * descriptor,
|
||||
GstMpegtsDVBLinkageDescriptor ** res);
|
||||
|
||||
/* GST_MTS_DESC_DVB_SHORT_EVENT (0x4D) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_short_event (const GstMpegTsDescriptor *descriptor,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_short_event (const GstMpegtsDescriptor *descriptor,
|
||||
gchar **language_code,
|
||||
gchar **event_name,
|
||||
gchar **text);
|
||||
|
||||
/* GST_MTS_DESC_DVB_EXTENDED_EVENT (0x4E) */
|
||||
typedef struct _GstMpegTsExtendedEventDescriptor GstMpegTsExtendedEventDescriptor;
|
||||
typedef struct _GstMpegTsExtendedEventItem GstMpegTsExtendedEventItem;
|
||||
typedef struct _GstMpegtsExtendedEventDescriptor GstMpegtsExtendedEventDescriptor;
|
||||
typedef struct _GstMpegtsExtendedEventItem GstMpegtsExtendedEventItem;
|
||||
|
||||
/* FIXME : Maybe make a separate method for getting a specific item entry ? */
|
||||
struct _GstMpegTsExtendedEventItem
|
||||
struct _GstMpegtsExtendedEventItem
|
||||
{
|
||||
gchar *item_description;
|
||||
gchar *item;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpegTsExtendedEventDescriptor:
|
||||
* GstMpegtsExtendedEventDescriptor:
|
||||
* @desctiptor_number:
|
||||
* @last_descriptor_number:
|
||||
* @language_code: NULL terminated language code.
|
||||
* @items: (element-type GstMpegTsExtendedEventItem): the #GstMpegTsExtendedEventItem
|
||||
* @items: (element-type GstMpegtsExtendedEventItem): the #GstMpegtsExtendedEventItem
|
||||
* @text:
|
||||
*
|
||||
* Extended Event Descriptor (EN 300 468 v.1.13.1)
|
||||
*/
|
||||
struct _GstMpegTsExtendedEventDescriptor
|
||||
struct _GstMpegtsExtendedEventDescriptor
|
||||
{
|
||||
guint8 descriptor_number;
|
||||
guint8 last_descriptor_number;
|
||||
|
@ -497,9 +497,9 @@ struct _GstMpegTsExtendedEventDescriptor
|
|||
#define GST_TYPE_MPEGTS_EXTENDED_EVENT_DESCRIPTOR (gst_mpegts_extended_event_descriptor_get_type())
|
||||
|
||||
GType gst_mpegts_extended_event_descriptor_get_type (void);
|
||||
void gst_mpegts_extended_event_descriptor_free (GstMpegTsExtendedEventDescriptor * source);
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_extended_event (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsExtendedEventDescriptor **res);
|
||||
void gst_mpegts_extended_event_descriptor_free (GstMpegtsExtendedEventDescriptor * source);
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_extended_event (const GstMpegtsDescriptor *descriptor,
|
||||
GstMpegtsExtendedEventDescriptor **res);
|
||||
|
||||
/* GST_MTS_DESC_DVB_COMPONENT (0x50) */
|
||||
#define GST_TYPE_MPEGTS_COMPONENT_DESCRIPTOR (gst_mpegts_component_descriptor_get_type ())
|
||||
|
@ -512,10 +512,10 @@ typedef enum {
|
|||
GST_MPEGTS_STREAM_CONTENT_AAC = 0x06,
|
||||
GST_MPEGTS_STREAM_CONTENT_DTS = 0x07,
|
||||
GST_MPEGTS_STREAM_CONTENT_SRM_CPCM = 0x08
|
||||
} GstMpegTsComponentStreamContent;
|
||||
} GstMpegtsComponentStreamContent;
|
||||
|
||||
typedef struct _GstMpegTsComponentDescriptor GstMpegTsComponentDescriptor;
|
||||
struct _GstMpegTsComponentDescriptor
|
||||
typedef struct _GstMpegtsComponentDescriptor GstMpegtsComponentDescriptor;
|
||||
struct _GstMpegtsComponentDescriptor
|
||||
{
|
||||
guint8 stream_content;
|
||||
guint8 component_type;
|
||||
|
@ -525,16 +525,16 @@ struct _GstMpegTsComponentDescriptor
|
|||
};
|
||||
|
||||
GType gst_mpegts_component_descriptor_get_type (void);
|
||||
void gst_mpegts_dvb_component_descriptor_free (GstMpegTsComponentDescriptor * source);
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_component (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsComponentDescriptor **res);
|
||||
void gst_mpegts_dvb_component_descriptor_free (GstMpegtsComponentDescriptor * source);
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_component (const GstMpegtsDescriptor *descriptor,
|
||||
GstMpegtsComponentDescriptor **res);
|
||||
|
||||
/* GST_MTS_DESC_DVB_STREAM_IDENTIFIER (0x52) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_stream_identifier (const GstMpegTsDescriptor *descriptor,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_stream_identifier (const GstMpegtsDescriptor *descriptor,
|
||||
guint8 *component_tag);
|
||||
|
||||
/* GST_MTS_DESC_DVB_CA_IDENTIFIER (0x53) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_ca_identifier (const GstMpegTsDescriptor * descriptor,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_ca_identifier (const GstMpegtsDescriptor * descriptor,
|
||||
GArray ** list);
|
||||
|
||||
/* GST_MTS_DESC_DVB_CONTENT (0x54) */
|
||||
|
@ -550,40 +550,40 @@ typedef enum {
|
|||
GST_MPEGTS_CONTENT_EDUCATION_SCIENCE_FACTUAL = 0x09,
|
||||
GST_MPEGTS_CONTENT_LEISURE_HOBBIES = 0x0A,
|
||||
GST_MPEGTS_CONTENT_SPECIAL_CHARACTERISTICS = 0x0B
|
||||
} GstMpegTsContentNibbleHi;
|
||||
} GstMpegtsContentNibbleHi;
|
||||
|
||||
typedef struct _GstMpegTsContent GstMpegTsContent;
|
||||
struct _GstMpegTsContent
|
||||
typedef struct _GstMpegtsContent GstMpegtsContent;
|
||||
struct _GstMpegtsContent
|
||||
{
|
||||
GstMpegTsContentNibbleHi content_nibble_1;
|
||||
GstMpegtsContentNibbleHi content_nibble_1;
|
||||
guint8 content_nibble_2;
|
||||
guint8 user_byte;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_content (const GstMpegTsDescriptor *
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_content (const GstMpegtsDescriptor *
|
||||
descriptor, GPtrArray ** content);
|
||||
|
||||
/* GST_MTS_DESC_DVB_PARENTAL_RATING (0x55) */
|
||||
typedef struct _GstMpegTsDVBParentalRatingItem GstMpegTsDVBParentalRatingItem;
|
||||
typedef struct _GstMpegtsDVBParentalRatingItem GstMpegtsDVBParentalRatingItem;
|
||||
|
||||
/**
|
||||
* GstMpegTsDVBParentalRating:
|
||||
* GstMpegtsDVBParentalRating:
|
||||
* @country_code: This 24-bit field identifies a country using the 3-character
|
||||
* code as specified in ISO 3166
|
||||
* @rating: the rating age
|
||||
*/
|
||||
struct _GstMpegTsDVBParentalRatingItem
|
||||
struct _GstMpegtsDVBParentalRatingItem
|
||||
{
|
||||
gchar *country_code;
|
||||
guint8 rating;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_parental_rating (const GstMpegTsDescriptor
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_parental_rating (const GstMpegtsDescriptor
|
||||
* descriptor, GPtrArray ** rating);
|
||||
|
||||
/* GST_MTS_DESC_DVB_TELETEXT (0x56) */
|
||||
/**
|
||||
* GstMpegTsDVBTeletextType:
|
||||
* GstMpegtsDVBTeletextType:
|
||||
*
|
||||
* The type of teletext page.
|
||||
*
|
||||
|
@ -595,30 +595,30 @@ typedef enum {
|
|||
ADDITIONAL_INFO_PAGE,
|
||||
PROGRAMME_SCHEDULE_PAGE,
|
||||
HEARING_IMPAIRED_PAGE
|
||||
} GstMpegTsDVBTeletextType;
|
||||
} GstMpegtsDVBTeletextType;
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_teletext_idx (const GstMpegTsDescriptor *
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_teletext_idx (const GstMpegtsDescriptor *
|
||||
descriptor, guint idx, gchar ** language_code,
|
||||
GstMpegTsDVBTeletextType * teletext_type, guint8 * magazine_number,
|
||||
GstMpegtsDVBTeletextType * teletext_type, guint8 * magazine_number,
|
||||
guint8 * page_number);
|
||||
|
||||
guint gst_mpegts_descriptor_parse_dvb_teletext_nb (const GstMpegTsDescriptor *
|
||||
guint gst_mpegts_descriptor_parse_dvb_teletext_nb (const GstMpegtsDescriptor *
|
||||
descriptor);
|
||||
|
||||
/* GST_MTS_DESC_DVB_SUBTITLING (0x59) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_subtitling_idx (const GstMpegTsDescriptor *descriptor,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_subtitling_idx (const GstMpegtsDescriptor *descriptor,
|
||||
guint idx, gchar ** lang,
|
||||
guint8 *type, guint16 *composition_page_id,
|
||||
guint16 *ancillary_page_id);
|
||||
guint gst_mpegts_descriptor_parse_dvb_subtitling_nb (const GstMpegTsDescriptor *descriptor);
|
||||
guint gst_mpegts_descriptor_parse_dvb_subtitling_nb (const GstMpegtsDescriptor *descriptor);
|
||||
|
||||
GstMpegTsDescriptor * gst_mpegts_descriptor_from_dvb_subtitling (const gchar *lang,
|
||||
GstMpegtsDescriptor * gst_mpegts_descriptor_from_dvb_subtitling (const gchar *lang,
|
||||
guint8 type, guint16 composition, guint16 ancillary);
|
||||
|
||||
|
||||
|
||||
/* GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM (0x5A) */
|
||||
typedef struct _GstMpegTsTerrestrialDeliverySystemDescriptor GstMpegTsTerrestrialDeliverySystemDescriptor;
|
||||
typedef struct _GstMpegtsTerrestrialDeliverySystemDescriptor GstMpegtsTerrestrialDeliverySystemDescriptor;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEGTS_TRANSMISSION_MODE_2K = 0,
|
||||
|
@ -630,7 +630,7 @@ typedef enum {
|
|||
GST_MPEGTS_TRANSMISSION_MODE_32K,
|
||||
GST_MPEGTS_TRANSMISSION_MODE_C1,
|
||||
GST_MPEGTS_TRANSMISSION_MODE_C3780
|
||||
} GstMpegTsTerrestrialTransmissionMode;
|
||||
} GstMpegtsTerrestrialTransmissionMode;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEGTS_GUARD_INTERVAL_1_32 = 0,
|
||||
|
@ -644,7 +644,7 @@ typedef enum {
|
|||
GST_MPEGTS_GUARD_INTERVAL_PN420,
|
||||
GST_MPEGTS_GUARD_INTERVAL_PN595,
|
||||
GST_MPEGTS_GUARD_INTERVAL_PN945
|
||||
} GstMpegTsTerrestrialGuardInterval;
|
||||
} GstMpegtsTerrestrialGuardInterval;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEGTS_HIERARCHY_NONE = 0,
|
||||
|
@ -652,10 +652,10 @@ typedef enum {
|
|||
GST_MPEGTS_HIERARCHY_2,
|
||||
GST_MPEGTS_HIERARCHY_4,
|
||||
GST_MPEGTS_HIERARCHY_AUTO
|
||||
} GstMpegTsTerrestrialHierarchy;
|
||||
} GstMpegtsTerrestrialHierarchy;
|
||||
|
||||
/**
|
||||
* GstMpegTsTerrestrialDeliverySystemDescriptor:
|
||||
* GstMpegtsTerrestrialDeliverySystemDescriptor:
|
||||
* @frequency: the frequency in Hz (Hertz)
|
||||
* @bandwidth: the bandwidth in Hz (Hertz)
|
||||
* @priority: %TRUE High Priority %FALSE Low Priority
|
||||
|
@ -672,122 +672,122 @@ typedef enum {
|
|||
* Terrestrial Delivery System Descriptor (EN 300 468 v.1.13.1)
|
||||
*/
|
||||
|
||||
struct _GstMpegTsTerrestrialDeliverySystemDescriptor
|
||||
struct _GstMpegtsTerrestrialDeliverySystemDescriptor
|
||||
{
|
||||
guint32 frequency;
|
||||
guint32 bandwidth;
|
||||
gboolean priority;
|
||||
gboolean time_slicing;
|
||||
gboolean mpe_fec;
|
||||
GstMpegTsModulationType constellation;
|
||||
GstMpegTsTerrestrialHierarchy hierarchy;
|
||||
GstMpegTsDVBCodeRate code_rate_hp;
|
||||
GstMpegTsDVBCodeRate code_rate_lp;
|
||||
GstMpegTsTerrestrialGuardInterval guard_interval;
|
||||
GstMpegTsTerrestrialTransmissionMode transmission_mode;
|
||||
GstMpegtsModulationType constellation;
|
||||
GstMpegtsTerrestrialHierarchy hierarchy;
|
||||
GstMpegtsDVBCodeRate code_rate_hp;
|
||||
GstMpegtsDVBCodeRate code_rate_lp;
|
||||
GstMpegtsTerrestrialGuardInterval guard_interval;
|
||||
GstMpegtsTerrestrialTransmissionMode transmission_mode;
|
||||
gboolean other_frequency;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_terrestrial_delivery_system (const GstMpegTsDescriptor
|
||||
*descriptor, GstMpegTsTerrestrialDeliverySystemDescriptor * res);
|
||||
gboolean gst_mpegts_descriptor_parse_terrestrial_delivery_system (const GstMpegtsDescriptor
|
||||
*descriptor, GstMpegtsTerrestrialDeliverySystemDescriptor * res);
|
||||
|
||||
/* GST_MTS_DESC_DVB_MULTILINGUAL_NETWORK_NAME (0x5B) */
|
||||
typedef struct _GstMpegTsDvbMultilingualNetworkNameItem GstMpegTsDvbMultilingualNetworkNameItem;
|
||||
typedef struct _GstMpegtsDvbMultilingualNetworkNameItem GstMpegtsDvbMultilingualNetworkNameItem;
|
||||
|
||||
/**
|
||||
* GstMpegTsDvbMultilingualNetworkNameItem:
|
||||
* GstMpegtsDvbMultilingualNetworkNameItem:
|
||||
* @language_code: the ISO 639 language code
|
||||
* @network_name: the network name
|
||||
*
|
||||
* a multilingual network name entry
|
||||
*/
|
||||
struct _GstMpegTsDvbMultilingualNetworkNameItem
|
||||
struct _GstMpegtsDvbMultilingualNetworkNameItem
|
||||
{
|
||||
gchar *language_code;
|
||||
gchar *network_name;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_multilingual_network_name (const GstMpegTsDescriptor
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_multilingual_network_name (const GstMpegtsDescriptor
|
||||
*descriptor, GPtrArray ** network_name_items);
|
||||
|
||||
/* GST_MTS_DESC_DVB_MULTILINGUAL_BOUQUET_NAME (0x5C) */
|
||||
typedef struct _GstMpegTsDvbMultilingualBouquetNameItem GstMpegTsDvbMultilingualBouquetNameItem;
|
||||
typedef struct _GstMpegtsDvbMultilingualBouquetNameItem GstMpegtsDvbMultilingualBouquetNameItem;
|
||||
|
||||
/**
|
||||
* GstMpegTsDvbMultilingualBouquetNameItem:
|
||||
* GstMpegtsDvbMultilingualBouquetNameItem:
|
||||
* @language_code: the ISO 639 language code
|
||||
* @bouquet_name: the bouquet name
|
||||
*
|
||||
* a multilingual bouquet name entry
|
||||
*/
|
||||
struct _GstMpegTsDvbMultilingualBouquetNameItem
|
||||
struct _GstMpegtsDvbMultilingualBouquetNameItem
|
||||
{
|
||||
gchar *language_code;
|
||||
gchar *bouquet_name;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name (const GstMpegTsDescriptor
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name (const GstMpegtsDescriptor
|
||||
*descriptor, GPtrArray ** bouquet_name_items);
|
||||
|
||||
/* GST_MTS_DESC_DVB_MULTILINGUAL_SERVICE_NAME (0x5D) */
|
||||
typedef struct _GstMpegTsDvbMultilingualServiceNameItem GstMpegTsDvbMultilingualServiceNameItem;
|
||||
typedef struct _GstMpegtsDvbMultilingualServiceNameItem GstMpegtsDvbMultilingualServiceNameItem;
|
||||
|
||||
/**
|
||||
* GstMpegTsDvbMultilingualServiceNameItem:
|
||||
* GstMpegtsDvbMultilingualServiceNameItem:
|
||||
* @language_code: the ISO 639 language code
|
||||
* @provider_name: the provider name
|
||||
* @service_name: the service name
|
||||
*
|
||||
* a multilingual service name entry
|
||||
*/
|
||||
struct _GstMpegTsDvbMultilingualServiceNameItem
|
||||
struct _GstMpegtsDvbMultilingualServiceNameItem
|
||||
{
|
||||
gchar *language_code;
|
||||
gchar *provider_name;
|
||||
gchar *service_name;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_multilingual_service_name (const GstMpegTsDescriptor
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_multilingual_service_name (const GstMpegtsDescriptor
|
||||
*descriptor, GPtrArray ** service_name_items);
|
||||
|
||||
/* GST_MTS_DESC_DVB_MULTILINGUAL_COMPONENT (0x5E) */
|
||||
typedef struct _GstMpegTsDvbMultilingualComponentItem GstMpegTsDvbMultilingualComponentItem;
|
||||
typedef struct _GstMpegtsDvbMultilingualComponentItem GstMpegtsDvbMultilingualComponentItem;
|
||||
|
||||
/**
|
||||
* GstMpegTsDvbMultilingualComponentItem:
|
||||
* GstMpegtsDvbMultilingualComponentItem:
|
||||
* @language_code: the ISO 639 language code
|
||||
* @description: the component description
|
||||
*/
|
||||
struct _GstMpegTsDvbMultilingualComponentItem
|
||||
struct _GstMpegtsDvbMultilingualComponentItem
|
||||
{
|
||||
gchar *language_code;
|
||||
gchar *description;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_multilingual_component (const GstMpegTsDescriptor
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_multilingual_component (const GstMpegtsDescriptor
|
||||
*descriptor, guint8 * component_tag, GPtrArray ** component_description_items);
|
||||
|
||||
/* GST_MTS_DESC_DVB_PRIVATE_DATA_SPECIFIER (0x5F) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_private_data_specifier (const GstMpegTsDescriptor
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_private_data_specifier (const GstMpegtsDescriptor
|
||||
* descriptor, guint32 * private_data_specifier, guint8 ** private_data,
|
||||
guint8 * length);
|
||||
|
||||
/* GST_MTS_DESC_DVB_FREQUENCY_LIST (0x62) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_frequency_list (const GstMpegTsDescriptor
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_frequency_list (const GstMpegtsDescriptor
|
||||
* descriptor, gboolean * offset, GArray ** list);
|
||||
|
||||
/* GST_MTS_DESC_DVB_DATA_BROADCAST (0x64) */
|
||||
typedef struct _GstMpegTsDataBroadcastDescriptor GstMpegTsDataBroadcastDescriptor;
|
||||
typedef struct _GstMpegtsDataBroadcastDescriptor GstMpegtsDataBroadcastDescriptor;
|
||||
|
||||
/**
|
||||
* GstMpegTsDataBroadcastDescriptor:
|
||||
* GstMpegtsDataBroadcastDescriptor:
|
||||
* @data_broadcast_id: the data broadcast id
|
||||
* @component_tag: the component tag
|
||||
* @selector_bytes: the selector byte field
|
||||
* @language_code: language of @text
|
||||
* @text: description of data broadcast
|
||||
*/
|
||||
struct _GstMpegTsDataBroadcastDescriptor
|
||||
struct _GstMpegtsDataBroadcastDescriptor
|
||||
{
|
||||
guint16 data_broadcast_id;
|
||||
guint8 component_tag;
|
||||
|
@ -800,9 +800,9 @@ struct _GstMpegTsDataBroadcastDescriptor
|
|||
|
||||
#define GST_TYPE_MPEGTS_DVB_DATA_BROADCAST_DESCRIPTOR (gst_mpegts_dvb_data_broadcast_descriptor_get_type ())
|
||||
GType gst_mpegts_dvb_data_broadcast_descriptor_get_type (void);
|
||||
void gst_mpegts_dvb_data_broadcast_descriptor_free (GstMpegTsDataBroadcastDescriptor * source);
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_data_broadcast (const GstMpegTsDescriptor
|
||||
*descriptor, GstMpegTsDataBroadcastDescriptor ** res);
|
||||
void gst_mpegts_dvb_data_broadcast_descriptor_free (GstMpegtsDataBroadcastDescriptor * source);
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_data_broadcast (const GstMpegtsDescriptor
|
||||
*descriptor, GstMpegtsDataBroadcastDescriptor ** res);
|
||||
|
||||
/* GST_MTS_DESC_DVB_SCRAMBLING (0x65) */
|
||||
typedef enum
|
||||
|
@ -818,51 +818,51 @@ typedef enum
|
|||
/* 0x11 - 0x1f reserved for future DVB-CISSA versions */
|
||||
GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_0 = 0x70,
|
||||
GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_F = 0x7f,
|
||||
} GstMpegTsDVBScramblingModeType;
|
||||
} GstMpegtsDVBScramblingModeType;
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_scrambling (const GstMpegTsDescriptor * descriptor,
|
||||
GstMpegTsDVBScramblingModeType * scrambling_mode);
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_scrambling (const GstMpegtsDescriptor * descriptor,
|
||||
GstMpegtsDVBScramblingModeType * scrambling_mode);
|
||||
|
||||
/* GST_MTS_DESC_DVB_DATA_BROADCAST_ID (0x66) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_data_broadcast_id (const GstMpegTsDescriptor
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_data_broadcast_id (const GstMpegtsDescriptor
|
||||
* descriptor, guint16 * data_broadcast_id, guint8 ** id_selector_bytes, guint8 * len);
|
||||
|
||||
/* GST_MTS_DESC_DVB_AC3 (0x6a) */
|
||||
/* FIXME : Implement */
|
||||
|
||||
/* GST_MTS_DESC_EXT_DVB_T2_DELIVERY_SYSTEM (0x7F && 0x04) */
|
||||
typedef struct _GstMpegTsT2DeliverySystemCellExtension GstMpegTsT2DeliverySystemCellExtension;
|
||||
typedef struct _GstMpegtsT2DeliverySystemCellExtension GstMpegtsT2DeliverySystemCellExtension;
|
||||
|
||||
/**
|
||||
* GstMpegTsT2DeliverySystemCellExtension:
|
||||
* GstMpegtsT2DeliverySystemCellExtension:
|
||||
* @cell_id_extension: id of the sub cell
|
||||
* @transposer_frequency: centre frequency of the sub cell in Hz
|
||||
*/
|
||||
struct _GstMpegTsT2DeliverySystemCellExtension
|
||||
struct _GstMpegtsT2DeliverySystemCellExtension
|
||||
{
|
||||
guint8 cell_id_extension;
|
||||
guint32 transposer_frequency;
|
||||
};
|
||||
|
||||
typedef struct _GstMpegTsT2DeliverySystemCell GstMpegTsT2DeliverySystemCell;
|
||||
typedef struct _GstMpegtsT2DeliverySystemCell GstMpegtsT2DeliverySystemCell;
|
||||
|
||||
/**
|
||||
* GstMpegTsT2DeliverySystemCell:
|
||||
* GstMpegtsT2DeliverySystemCell:
|
||||
* @cell_id: id of the cell
|
||||
* @centre_frequencies: centre frequencies in Hz
|
||||
* @sub_cells: (element-type GstMpegTsT2DeliverySystemCellExtension):
|
||||
* @sub_cells: (element-type GstMpegtsT2DeliverySystemCellExtension):
|
||||
*/
|
||||
struct _GstMpegTsT2DeliverySystemCell
|
||||
struct _GstMpegtsT2DeliverySystemCell
|
||||
{
|
||||
guint16 cell_id;
|
||||
GArray *centre_frequencies;
|
||||
GPtrArray *sub_cells;
|
||||
};
|
||||
|
||||
typedef struct _GstMpegTsT2DeliverySystemDescriptor GstMpegTsT2DeliverySystemDescriptor;
|
||||
typedef struct _GstMpegtsT2DeliverySystemDescriptor GstMpegtsT2DeliverySystemDescriptor;
|
||||
|
||||
/**
|
||||
* GstMpegTsT2DeliverySystemDescriptor:
|
||||
* GstMpegtsT2DeliverySystemDescriptor:
|
||||
* @plp_id:
|
||||
* @t2_system_id:
|
||||
* @siso_miso:
|
||||
|
@ -871,19 +871,19 @@ typedef struct _GstMpegTsT2DeliverySystemDescriptor GstMpegTsT2DeliverySystemDes
|
|||
* @transmission_mode:
|
||||
* @other_frequency:
|
||||
* @tfs:
|
||||
* @cells: (element-type GstMpegTsT2DeliverySystemCell):
|
||||
* @cells: (element-type GstMpegtsT2DeliverySystemCell):
|
||||
*
|
||||
* describe DVB-T2 transmissions according to EN 302 755
|
||||
*/
|
||||
struct _GstMpegTsT2DeliverySystemDescriptor
|
||||
struct _GstMpegtsT2DeliverySystemDescriptor
|
||||
{
|
||||
guint8 plp_id;
|
||||
guint16 t2_system_id;
|
||||
/* FIXME: */
|
||||
guint8 siso_miso;
|
||||
guint32 bandwidth;
|
||||
GstMpegTsTerrestrialGuardInterval guard_interval;
|
||||
GstMpegTsTerrestrialTransmissionMode transmission_mode;
|
||||
GstMpegtsTerrestrialGuardInterval guard_interval;
|
||||
GstMpegtsTerrestrialTransmissionMode transmission_mode;
|
||||
gboolean other_frequency;
|
||||
gboolean tfs;
|
||||
GPtrArray *cells;
|
||||
|
@ -891,9 +891,9 @@ struct _GstMpegTsT2DeliverySystemDescriptor
|
|||
|
||||
#define GST_TYPE_MPEGTS_T2_DELIVERY_SYSTEM_DESCRIPTOR (gst_mpegts_t2_delivery_system_descriptor_get_type ())
|
||||
GType gst_mpegts_t2_delivery_system_descriptor_get_type (void);
|
||||
void gst_mpegts_t2_delivery_system_descriptor_free (GstMpegTsT2DeliverySystemDescriptor * source);
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_t2_delivery_system (const GstMpegTsDescriptor
|
||||
*descriptor, GstMpegTsT2DeliverySystemDescriptor ** res);
|
||||
void gst_mpegts_t2_delivery_system_descriptor_free (GstMpegtsT2DeliverySystemDescriptor * source);
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_t2_delivery_system (const GstMpegtsDescriptor
|
||||
*descriptor, GstMpegtsT2DeliverySystemDescriptor ** res);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
|
@ -101,12 +101,12 @@ _parse_utc_time (guint8 * data)
|
|||
}
|
||||
|
||||
/* Event Information Table */
|
||||
static GstMpegTsEITEvent *
|
||||
_gst_mpegts_eit_event_copy (GstMpegTsEITEvent * eit)
|
||||
static GstMpegtsEITEvent *
|
||||
_gst_mpegts_eit_event_copy (GstMpegtsEITEvent * eit)
|
||||
{
|
||||
GstMpegTsEITEvent *copy;
|
||||
GstMpegtsEITEvent *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsEITEvent, eit);
|
||||
copy = g_slice_dup (GstMpegtsEITEvent, eit);
|
||||
copy->start_time = gst_date_time_ref (eit->start_time);
|
||||
copy->descriptors = g_ptr_array_ref (eit->descriptors);
|
||||
|
||||
|
@ -114,49 +114,49 @@ _gst_mpegts_eit_event_copy (GstMpegTsEITEvent * eit)
|
|||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_eit_event_free (GstMpegTsEITEvent * eit)
|
||||
_gst_mpegts_eit_event_free (GstMpegtsEITEvent * eit)
|
||||
{
|
||||
if (eit->start_time)
|
||||
gst_date_time_unref (eit->start_time);
|
||||
if (eit->descriptors)
|
||||
g_ptr_array_unref (eit->descriptors);
|
||||
g_slice_free (GstMpegTsEITEvent, eit);
|
||||
g_slice_free (GstMpegtsEITEvent, eit);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsEITEvent, gst_mpegts_eit_event,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsEITEvent, gst_mpegts_eit_event,
|
||||
(GBoxedCopyFunc) _gst_mpegts_eit_event_copy,
|
||||
(GFreeFunc) _gst_mpegts_eit_event_free);
|
||||
|
||||
static GstMpegTsEIT *
|
||||
_gst_mpegts_eit_copy (GstMpegTsEIT * eit)
|
||||
static GstMpegtsEIT *
|
||||
_gst_mpegts_eit_copy (GstMpegtsEIT * eit)
|
||||
{
|
||||
GstMpegTsEIT *copy;
|
||||
GstMpegtsEIT *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsEIT, eit);
|
||||
copy = g_slice_dup (GstMpegtsEIT, eit);
|
||||
copy->events = g_ptr_array_ref (eit->events);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_eit_free (GstMpegTsEIT * eit)
|
||||
_gst_mpegts_eit_free (GstMpegtsEIT * eit)
|
||||
{
|
||||
g_ptr_array_unref (eit->events);
|
||||
g_slice_free (GstMpegTsEIT, eit);
|
||||
g_slice_free (GstMpegtsEIT, eit);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsEIT, gst_mpegts_eit,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsEIT, gst_mpegts_eit,
|
||||
(GBoxedCopyFunc) _gst_mpegts_eit_copy, (GFreeFunc) _gst_mpegts_eit_free);
|
||||
|
||||
static gpointer
|
||||
_parse_eit (GstMpegTsSection * section)
|
||||
_parse_eit (GstMpegtsSection * section)
|
||||
{
|
||||
GstMpegTsEIT *eit = NULL;
|
||||
GstMpegtsEIT *eit = NULL;
|
||||
guint i = 0, allocated_events = 12;
|
||||
guint8 *data, *end, *duration_ptr;
|
||||
guint16 descriptors_loop_length;
|
||||
|
||||
eit = g_slice_new0 (GstMpegTsEIT);
|
||||
eit = g_slice_new0 (GstMpegtsEIT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -181,7 +181,7 @@ _parse_eit (GstMpegTsSection * section)
|
|||
(GDestroyNotify) _gst_mpegts_eit_event_free);
|
||||
|
||||
while (data < end - 4) {
|
||||
GstMpegTsEITEvent *event;
|
||||
GstMpegtsEITEvent *event;
|
||||
|
||||
/* 12 is the minimum entry size + CRC */
|
||||
if (end - data < 12 + 4) {
|
||||
|
@ -190,7 +190,7 @@ _parse_eit (GstMpegTsSection * section)
|
|||
goto error;
|
||||
}
|
||||
|
||||
event = g_slice_new0 (GstMpegTsEITEvent);
|
||||
event = g_slice_new0 (GstMpegtsEITEvent);
|
||||
g_ptr_array_add (eit->events, event);
|
||||
|
||||
event->event_id = GST_READ_UINT16_BE (data);
|
||||
|
@ -238,15 +238,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_eit:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_EIT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_EIT
|
||||
*
|
||||
* Returns the #GstMpegTsEIT contained in the @section.
|
||||
* Returns the #GstMpegtsEIT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTsEIT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegtsEIT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTsEIT *
|
||||
gst_mpegts_section_get_eit (GstMpegTsSection * section)
|
||||
const GstMpegtsEIT *
|
||||
gst_mpegts_section_get_eit (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_EIT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -255,39 +255,39 @@ gst_mpegts_section_get_eit (GstMpegTsSection * section)
|
|||
section->cached_parsed = __common_section_checks (section, 18, _parse_eit,
|
||||
(GDestroyNotify) _gst_mpegts_eit_free);
|
||||
|
||||
return (const GstMpegTsEIT *) section->cached_parsed;
|
||||
return (const GstMpegtsEIT *) section->cached_parsed;
|
||||
}
|
||||
|
||||
/* Bouquet Association Table */
|
||||
static GstMpegTsBATStream *
|
||||
_gst_mpegts_bat_stream_copy (GstMpegTsBATStream * bat)
|
||||
static GstMpegtsBATStream *
|
||||
_gst_mpegts_bat_stream_copy (GstMpegtsBATStream * bat)
|
||||
{
|
||||
GstMpegTsBATStream *copy;
|
||||
GstMpegtsBATStream *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsBATStream, bat);
|
||||
copy = g_slice_dup (GstMpegtsBATStream, bat);
|
||||
copy->descriptors = g_ptr_array_ref (bat->descriptors);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_bat_stream_free (GstMpegTsBATStream * bat)
|
||||
_gst_mpegts_bat_stream_free (GstMpegtsBATStream * bat)
|
||||
{
|
||||
if (bat->descriptors)
|
||||
g_ptr_array_unref (bat->descriptors);
|
||||
g_slice_free (GstMpegTsBATStream, bat);
|
||||
g_slice_free (GstMpegtsBATStream, bat);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsBATStream, gst_mpegts_bat_stream,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsBATStream, gst_mpegts_bat_stream,
|
||||
(GBoxedCopyFunc) _gst_mpegts_bat_stream_copy,
|
||||
(GFreeFunc) _gst_mpegts_bat_stream_free);
|
||||
|
||||
static GstMpegTsBAT *
|
||||
_gst_mpegts_bat_copy (GstMpegTsBAT * bat)
|
||||
static GstMpegtsBAT *
|
||||
_gst_mpegts_bat_copy (GstMpegtsBAT * bat)
|
||||
{
|
||||
GstMpegTsBAT *copy;
|
||||
GstMpegtsBAT *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsBAT, bat);
|
||||
copy = g_slice_dup (GstMpegtsBAT, bat);
|
||||
copy->descriptors = g_ptr_array_ref (bat->descriptors);
|
||||
copy->streams = g_ptr_array_ref (bat->streams);
|
||||
|
||||
|
@ -295,29 +295,29 @@ _gst_mpegts_bat_copy (GstMpegTsBAT * bat)
|
|||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_bat_free (GstMpegTsBAT * bat)
|
||||
_gst_mpegts_bat_free (GstMpegtsBAT * bat)
|
||||
{
|
||||
if (bat->descriptors)
|
||||
g_ptr_array_unref (bat->descriptors);
|
||||
if (bat->streams)
|
||||
g_ptr_array_unref (bat->streams);
|
||||
g_slice_free (GstMpegTsBAT, bat);
|
||||
g_slice_free (GstMpegtsBAT, bat);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsBAT, gst_mpegts_bat,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsBAT, gst_mpegts_bat,
|
||||
(GBoxedCopyFunc) _gst_mpegts_bat_copy, (GFreeFunc) _gst_mpegts_bat_free);
|
||||
|
||||
static gpointer
|
||||
_parse_bat (GstMpegTsSection * section)
|
||||
_parse_bat (GstMpegtsSection * section)
|
||||
{
|
||||
GstMpegTsBAT *bat = NULL;
|
||||
GstMpegtsBAT *bat = NULL;
|
||||
guint i = 0, allocated_streams = 12;
|
||||
guint8 *data, *end, *entry_begin;
|
||||
guint16 descriptors_loop_length, transport_stream_loop_length;
|
||||
|
||||
GST_DEBUG ("BAT");
|
||||
|
||||
bat = g_slice_new0 (GstMpegTsBAT);
|
||||
bat = g_slice_new0 (GstMpegtsBAT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -355,7 +355,7 @@ _parse_bat (GstMpegTsSection * section)
|
|||
|
||||
/* read up to the CRC */
|
||||
while (transport_stream_loop_length - 4 > 0) {
|
||||
GstMpegTsBATStream *stream = g_slice_new0 (GstMpegTsBATStream);
|
||||
GstMpegtsBATStream *stream = g_slice_new0 (GstMpegtsBATStream);
|
||||
|
||||
g_ptr_array_add (bat->streams, stream);
|
||||
|
||||
|
@ -414,15 +414,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_bat:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_BAT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_BAT
|
||||
*
|
||||
* Returns the #GstMpegTsBAT contained in the @section.
|
||||
* Returns the #GstMpegtsBAT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTsBAT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegtsBAT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTsBAT *
|
||||
gst_mpegts_section_get_bat (GstMpegTsSection * section)
|
||||
const GstMpegtsBAT *
|
||||
gst_mpegts_section_get_bat (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_BAT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -432,39 +432,39 @@ gst_mpegts_section_get_bat (GstMpegTsSection * section)
|
|||
__common_section_checks (section, 16, _parse_bat,
|
||||
(GDestroyNotify) _gst_mpegts_bat_free);
|
||||
|
||||
return (const GstMpegTsBAT *) section->cached_parsed;
|
||||
return (const GstMpegtsBAT *) section->cached_parsed;
|
||||
}
|
||||
|
||||
|
||||
/* Network Information Table */
|
||||
|
||||
static GstMpegTsNITStream *
|
||||
_gst_mpegts_nit_stream_copy (GstMpegTsNITStream * nit)
|
||||
static GstMpegtsNITStream *
|
||||
_gst_mpegts_nit_stream_copy (GstMpegtsNITStream * nit)
|
||||
{
|
||||
GstMpegTsNITStream *copy;
|
||||
GstMpegtsNITStream *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsNITStream, nit);
|
||||
copy = g_slice_dup (GstMpegtsNITStream, nit);
|
||||
copy->descriptors = g_ptr_array_ref (nit->descriptors);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_nit_stream_free (GstMpegTsNITStream * nit)
|
||||
_gst_mpegts_nit_stream_free (GstMpegtsNITStream * nit)
|
||||
{
|
||||
if (nit->descriptors)
|
||||
g_ptr_array_unref (nit->descriptors);
|
||||
g_slice_free (GstMpegTsNITStream, nit);
|
||||
g_slice_free (GstMpegtsNITStream, nit);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsNITStream, gst_mpegts_nit_stream,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsNITStream, gst_mpegts_nit_stream,
|
||||
(GBoxedCopyFunc) _gst_mpegts_nit_stream_copy,
|
||||
(GFreeFunc) _gst_mpegts_nit_stream_free);
|
||||
|
||||
static GstMpegTsNIT *
|
||||
_gst_mpegts_nit_copy (GstMpegTsNIT * nit)
|
||||
static GstMpegtsNIT *
|
||||
_gst_mpegts_nit_copy (GstMpegtsNIT * nit)
|
||||
{
|
||||
GstMpegTsNIT *copy = g_slice_dup (GstMpegTsNIT, nit);
|
||||
GstMpegtsNIT *copy = g_slice_dup (GstMpegtsNIT, nit);
|
||||
|
||||
copy->descriptors = g_ptr_array_ref (nit->descriptors);
|
||||
copy->streams = g_ptr_array_ref (nit->streams);
|
||||
|
@ -473,29 +473,29 @@ _gst_mpegts_nit_copy (GstMpegTsNIT * nit)
|
|||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_nit_free (GstMpegTsNIT * nit)
|
||||
_gst_mpegts_nit_free (GstMpegtsNIT * nit)
|
||||
{
|
||||
if (nit->descriptors)
|
||||
g_ptr_array_unref (nit->descriptors);
|
||||
g_ptr_array_unref (nit->streams);
|
||||
g_slice_free (GstMpegTsNIT, nit);
|
||||
g_slice_free (GstMpegtsNIT, nit);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsNIT, gst_mpegts_nit,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsNIT, gst_mpegts_nit,
|
||||
(GBoxedCopyFunc) _gst_mpegts_nit_copy, (GFreeFunc) _gst_mpegts_nit_free);
|
||||
|
||||
|
||||
static gpointer
|
||||
_parse_nit (GstMpegTsSection * section)
|
||||
_parse_nit (GstMpegtsSection * section)
|
||||
{
|
||||
GstMpegTsNIT *nit = NULL;
|
||||
GstMpegtsNIT *nit = NULL;
|
||||
guint i = 0, allocated_streams = 12;
|
||||
guint8 *data, *end, *entry_begin;
|
||||
guint16 descriptors_loop_length, transport_stream_loop_length;
|
||||
|
||||
GST_DEBUG ("NIT");
|
||||
|
||||
nit = g_slice_new0 (GstMpegTsNIT);
|
||||
nit = g_slice_new0 (GstMpegtsNIT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -536,7 +536,7 @@ _parse_nit (GstMpegTsSection * section)
|
|||
|
||||
/* read up to the CRC */
|
||||
while (transport_stream_loop_length - 4 > 0) {
|
||||
GstMpegTsNITStream *stream = g_slice_new0 (GstMpegTsNITStream);
|
||||
GstMpegtsNITStream *stream = g_slice_new0 (GstMpegtsNITStream);
|
||||
|
||||
g_ptr_array_add (nit->streams, stream);
|
||||
|
||||
|
@ -595,15 +595,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_nit:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_NIT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_NIT
|
||||
*
|
||||
* Returns the #GstMpegTsNIT contained in the @section.
|
||||
* Returns the #GstMpegtsNIT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTsNIT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegtsNIT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTsNIT *
|
||||
gst_mpegts_section_get_nit (GstMpegTsSection * section)
|
||||
const GstMpegtsNIT *
|
||||
gst_mpegts_section_get_nit (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_NIT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -613,22 +613,22 @@ gst_mpegts_section_get_nit (GstMpegTsSection * section)
|
|||
__common_section_checks (section, 16, _parse_nit,
|
||||
(GDestroyNotify) _gst_mpegts_nit_free);
|
||||
|
||||
return (const GstMpegTsNIT *) section->cached_parsed;
|
||||
return (const GstMpegtsNIT *) section->cached_parsed;
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_mpegts_nit_new:
|
||||
*
|
||||
* Allocates and initializes a #GstMpegTsNIT.
|
||||
* Allocates and initializes a #GstMpegtsNIT.
|
||||
*
|
||||
* Returns: (transfer full): A newly allocated #GstMpegTsNIT
|
||||
* Returns: (transfer full): A newly allocated #GstMpegtsNIT
|
||||
*/
|
||||
GstMpegTsNIT *
|
||||
GstMpegtsNIT *
|
||||
gst_mpegts_nit_new (void)
|
||||
{
|
||||
GstMpegTsNIT *nit;
|
||||
GstMpegtsNIT *nit;
|
||||
|
||||
nit = g_slice_new0 (GstMpegTsNIT);
|
||||
nit = g_slice_new0 (GstMpegtsNIT);
|
||||
|
||||
nit->descriptors =
|
||||
g_ptr_array_new_with_free_func ((GDestroyNotify) _free_descriptor);
|
||||
|
@ -641,16 +641,16 @@ gst_mpegts_nit_new (void)
|
|||
/**
|
||||
* gst_mpegts_nit_stream_new:
|
||||
*
|
||||
* Allocates and initializes a #GstMpegTsNITStream
|
||||
* Allocates and initializes a #GstMpegtsNITStream
|
||||
*
|
||||
* Returns: (transfer full): A newly allocated #GstMpegTsNITStream
|
||||
* Returns: (transfer full): A newly allocated #GstMpegtsNITStream
|
||||
*/
|
||||
GstMpegTsNITStream *
|
||||
GstMpegtsNITStream *
|
||||
gst_mpegts_nit_stream_new (void)
|
||||
{
|
||||
GstMpegTsNITStream *stream;
|
||||
GstMpegtsNITStream *stream;
|
||||
|
||||
stream = g_slice_new0 (GstMpegTsNITStream);
|
||||
stream = g_slice_new0 (GstMpegtsNITStream);
|
||||
|
||||
stream->descriptors = g_ptr_array_new_with_free_func (
|
||||
(GDestroyNotify) _free_descriptor);
|
||||
|
@ -659,12 +659,12 @@ gst_mpegts_nit_stream_new (void)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
_packetize_nit (GstMpegTsSection * section)
|
||||
_packetize_nit (GstMpegtsSection * section)
|
||||
{
|
||||
gsize length, network_length, loop_length;
|
||||
const GstMpegTsNIT *nit;
|
||||
GstMpegTsNITStream *stream;
|
||||
GstMpegTsDescriptor *descriptor;
|
||||
const GstMpegtsNIT *nit;
|
||||
GstMpegtsNITStream *stream;
|
||||
GstMpegtsDescriptor *descriptor;
|
||||
guint i, j;
|
||||
guint8 *data, *pos;
|
||||
|
||||
|
@ -754,16 +754,16 @@ _packetize_nit (GstMpegTsSection * section)
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_from_nit:
|
||||
* @nit: (transfer full): a #GstMpegTsNIT to create the #GstMpegTsSection from
|
||||
* @nit: (transfer full): a #GstMpegtsNIT to create the #GstMpegtsSection from
|
||||
*
|
||||
* Ownership of @nit is taken. The data in @nit is managed by the #GstMpegTsSection
|
||||
* Ownership of @nit is taken. The data in @nit is managed by the #GstMpegtsSection
|
||||
*
|
||||
* Returns: (transfer full): the #GstMpegTsSection
|
||||
* Returns: (transfer full): the #GstMpegtsSection
|
||||
*/
|
||||
GstMpegTsSection *
|
||||
gst_mpegts_section_from_nit (GstMpegTsNIT * nit)
|
||||
GstMpegtsSection *
|
||||
gst_mpegts_section_from_nit (GstMpegtsNIT * nit)
|
||||
{
|
||||
GstMpegTsSection *section;
|
||||
GstMpegtsSection *section;
|
||||
|
||||
g_return_val_if_fail (nit != NULL, NULL);
|
||||
|
||||
|
@ -784,10 +784,10 @@ gst_mpegts_section_from_nit (GstMpegTsNIT * nit)
|
|||
|
||||
/* Service Description Table (SDT) */
|
||||
|
||||
static GstMpegTsSDTService *
|
||||
_gst_mpegts_sdt_service_copy (GstMpegTsSDTService * sdt)
|
||||
static GstMpegtsSDTService *
|
||||
_gst_mpegts_sdt_service_copy (GstMpegtsSDTService * sdt)
|
||||
{
|
||||
GstMpegTsSDTService *copy = g_slice_dup (GstMpegTsSDTService, sdt);
|
||||
GstMpegtsSDTService *copy = g_slice_dup (GstMpegtsSDTService, sdt);
|
||||
|
||||
copy->descriptors = g_ptr_array_ref (sdt->descriptors);
|
||||
|
||||
|
@ -795,21 +795,21 @@ _gst_mpegts_sdt_service_copy (GstMpegTsSDTService * sdt)
|
|||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_sdt_service_free (GstMpegTsSDTService * sdt)
|
||||
_gst_mpegts_sdt_service_free (GstMpegtsSDTService * sdt)
|
||||
{
|
||||
if (sdt->descriptors)
|
||||
g_ptr_array_unref (sdt->descriptors);
|
||||
g_slice_free (GstMpegTsSDTService, sdt);
|
||||
g_slice_free (GstMpegtsSDTService, sdt);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsSDTService, gst_mpegts_sdt_service,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsSDTService, gst_mpegts_sdt_service,
|
||||
(GBoxedCopyFunc) _gst_mpegts_sdt_service_copy,
|
||||
(GFreeFunc) _gst_mpegts_sdt_service_free);
|
||||
|
||||
static GstMpegTsSDT *
|
||||
_gst_mpegts_sdt_copy (GstMpegTsSDT * sdt)
|
||||
static GstMpegtsSDT *
|
||||
_gst_mpegts_sdt_copy (GstMpegtsSDT * sdt)
|
||||
{
|
||||
GstMpegTsSDT *copy = g_slice_dup (GstMpegTsSDT, sdt);
|
||||
GstMpegtsSDT *copy = g_slice_dup (GstMpegtsSDT, sdt);
|
||||
|
||||
copy->services = g_ptr_array_ref (sdt->services);
|
||||
|
||||
|
@ -817,20 +817,20 @@ _gst_mpegts_sdt_copy (GstMpegTsSDT * sdt)
|
|||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_sdt_free (GstMpegTsSDT * sdt)
|
||||
_gst_mpegts_sdt_free (GstMpegtsSDT * sdt)
|
||||
{
|
||||
g_ptr_array_unref (sdt->services);
|
||||
g_slice_free (GstMpegTsSDT, sdt);
|
||||
g_slice_free (GstMpegtsSDT, sdt);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsSDT, gst_mpegts_sdt,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsSDT, gst_mpegts_sdt,
|
||||
(GBoxedCopyFunc) _gst_mpegts_sdt_copy, (GFreeFunc) _gst_mpegts_sdt_free);
|
||||
|
||||
|
||||
static gpointer
|
||||
_parse_sdt (GstMpegTsSection * section)
|
||||
_parse_sdt (GstMpegtsSection * section)
|
||||
{
|
||||
GstMpegTsSDT *sdt = NULL;
|
||||
GstMpegtsSDT *sdt = NULL;
|
||||
guint i = 0, allocated_services = 8;
|
||||
guint8 *data, *end, *entry_begin;
|
||||
guint tmp;
|
||||
|
@ -839,7 +839,7 @@ _parse_sdt (GstMpegTsSection * section)
|
|||
|
||||
GST_DEBUG ("SDT");
|
||||
|
||||
sdt = g_slice_new0 (GstMpegTsSDT);
|
||||
sdt = g_slice_new0 (GstMpegtsSDT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -864,7 +864,7 @@ _parse_sdt (GstMpegTsSection * section)
|
|||
|
||||
/* read up to the CRC */
|
||||
while (sdt_info_length - 4 > 0) {
|
||||
GstMpegTsSDTService *service = g_slice_new0 (GstMpegTsSDTService);
|
||||
GstMpegtsSDTService *service = g_slice_new0 (GstMpegtsSDTService);
|
||||
g_ptr_array_add (sdt->services, service);
|
||||
|
||||
entry_begin = data;
|
||||
|
@ -923,15 +923,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_sdt:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_SDT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_SDT
|
||||
*
|
||||
* Returns the #GstMpegTsSDT contained in the @section.
|
||||
* Returns the #GstMpegtsSDT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTsSDT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegtsSDT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTsSDT *
|
||||
gst_mpegts_section_get_sdt (GstMpegTsSection * section)
|
||||
const GstMpegtsSDT *
|
||||
gst_mpegts_section_get_sdt (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_SDT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -941,22 +941,22 @@ gst_mpegts_section_get_sdt (GstMpegTsSection * section)
|
|||
__common_section_checks (section, 15, _parse_sdt,
|
||||
(GDestroyNotify) _gst_mpegts_sdt_free);
|
||||
|
||||
return (const GstMpegTsSDT *) section->cached_parsed;
|
||||
return (const GstMpegtsSDT *) section->cached_parsed;
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_mpegts_sdt_new:
|
||||
*
|
||||
* Allocates and initializes a #GstMpegTsSDT.
|
||||
* Allocates and initializes a #GstMpegtsSDT.
|
||||
*
|
||||
* Returns: (transfer full): A newly allocated #GstMpegTsSDT
|
||||
* Returns: (transfer full): A newly allocated #GstMpegtsSDT
|
||||
*/
|
||||
GstMpegTsSDT *
|
||||
GstMpegtsSDT *
|
||||
gst_mpegts_sdt_new (void)
|
||||
{
|
||||
GstMpegTsSDT *sdt;
|
||||
GstMpegtsSDT *sdt;
|
||||
|
||||
sdt = g_slice_new0 (GstMpegTsSDT);
|
||||
sdt = g_slice_new0 (GstMpegtsSDT);
|
||||
|
||||
sdt->services = g_ptr_array_new_with_free_func ((GDestroyNotify)
|
||||
_gst_mpegts_sdt_service_free);
|
||||
|
@ -967,16 +967,16 @@ gst_mpegts_sdt_new (void)
|
|||
/**
|
||||
* gst_mpegts_sdt_service_new:
|
||||
*
|
||||
* Allocates and initializes a #GstMpegTsSDTService.
|
||||
* Allocates and initializes a #GstMpegtsSDTService.
|
||||
*
|
||||
* Returns: (transfer full): A newly allocated #GstMpegTsSDTService
|
||||
* Returns: (transfer full): A newly allocated #GstMpegtsSDTService
|
||||
*/
|
||||
GstMpegTsSDTService *
|
||||
GstMpegtsSDTService *
|
||||
gst_mpegts_sdt_service_new (void)
|
||||
{
|
||||
GstMpegTsSDTService *service;
|
||||
GstMpegtsSDTService *service;
|
||||
|
||||
service = g_slice_new0 (GstMpegTsSDTService);
|
||||
service = g_slice_new0 (GstMpegtsSDTService);
|
||||
|
||||
service->descriptors = g_ptr_array_new_with_free_func ((GDestroyNotify)
|
||||
_free_descriptor);
|
||||
|
@ -985,12 +985,12 @@ gst_mpegts_sdt_service_new (void)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
_packetize_sdt (GstMpegTsSection * section)
|
||||
_packetize_sdt (GstMpegtsSection * section)
|
||||
{
|
||||
gsize length, service_length;
|
||||
const GstMpegTsSDT *sdt;
|
||||
GstMpegTsSDTService *service;
|
||||
GstMpegTsDescriptor *descriptor;
|
||||
const GstMpegtsSDT *sdt;
|
||||
GstMpegtsSDTService *service;
|
||||
GstMpegtsDescriptor *descriptor;
|
||||
guint i, j;
|
||||
guint8 *data, *pos;
|
||||
|
||||
|
@ -1075,16 +1075,16 @@ _packetize_sdt (GstMpegTsSection * section)
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_from_sdt:
|
||||
* @sdt: (transfer full): a #GstMpegTsSDT to create the #GstMpegTsSection from
|
||||
* @sdt: (transfer full): a #GstMpegtsSDT to create the #GstMpegtsSection from
|
||||
*
|
||||
* Ownership of @sdt is taken. The data in @sdt is managed by the #GstMpegTsSection
|
||||
* Ownership of @sdt is taken. The data in @sdt is managed by the #GstMpegtsSection
|
||||
*
|
||||
* Returns: (transfer full): the #GstMpegTsSection
|
||||
* Returns: (transfer full): the #GstMpegtsSection
|
||||
*/
|
||||
GstMpegTsSection *
|
||||
gst_mpegts_section_from_sdt (GstMpegTsSDT * sdt)
|
||||
GstMpegtsSection *
|
||||
gst_mpegts_section_from_sdt (GstMpegtsSDT * sdt)
|
||||
{
|
||||
GstMpegTsSection *section;
|
||||
GstMpegtsSection *section;
|
||||
|
||||
g_return_val_if_fail (sdt != NULL, NULL);
|
||||
|
||||
|
@ -1105,14 +1105,14 @@ gst_mpegts_section_from_sdt (GstMpegTsSDT * sdt)
|
|||
|
||||
/* Time and Date Table (TDT) */
|
||||
static gpointer
|
||||
_parse_tdt (GstMpegTsSection * section)
|
||||
_parse_tdt (GstMpegtsSection * section)
|
||||
{
|
||||
return (gpointer) _parse_utc_time (section->data + 3);
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_mpegts_section_get_tdt:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_TDT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_TDT
|
||||
*
|
||||
* Returns the #GstDateTime of the TDT
|
||||
*
|
||||
|
@ -1120,7 +1120,7 @@ _parse_tdt (GstMpegTsSection * section)
|
|||
* if an error happened. Release with #gst_date_time_unref when done.
|
||||
*/
|
||||
GstDateTime *
|
||||
gst_mpegts_section_get_tdt (GstMpegTsSection * section)
|
||||
gst_mpegts_section_get_tdt (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_TDT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -1137,10 +1137,10 @@ gst_mpegts_section_get_tdt (GstMpegTsSection * section)
|
|||
|
||||
|
||||
/* Time Offset Table (TOT) */
|
||||
static GstMpegTsTOT *
|
||||
_gst_mpegts_tot_copy (GstMpegTsTOT * tot)
|
||||
static GstMpegtsTOT *
|
||||
_gst_mpegts_tot_copy (GstMpegtsTOT * tot)
|
||||
{
|
||||
GstMpegTsTOT *copy = g_slice_dup (GstMpegTsTOT, tot);
|
||||
GstMpegtsTOT *copy = g_slice_dup (GstMpegtsTOT, tot);
|
||||
|
||||
if (tot->utc_time)
|
||||
copy->utc_time = gst_date_time_ref (tot->utc_time);
|
||||
|
@ -1150,28 +1150,28 @@ _gst_mpegts_tot_copy (GstMpegTsTOT * tot)
|
|||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_tot_free (GstMpegTsTOT * tot)
|
||||
_gst_mpegts_tot_free (GstMpegtsTOT * tot)
|
||||
{
|
||||
if (tot->utc_time)
|
||||
gst_date_time_unref (tot->utc_time);
|
||||
if (tot->descriptors)
|
||||
g_ptr_array_unref (tot->descriptors);
|
||||
g_slice_free (GstMpegTsTOT, tot);
|
||||
g_slice_free (GstMpegtsTOT, tot);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsTOT, gst_mpegts_tot,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsTOT, gst_mpegts_tot,
|
||||
(GBoxedCopyFunc) _gst_mpegts_tot_copy, (GFreeFunc) _gst_mpegts_tot_free);
|
||||
|
||||
static gpointer
|
||||
_parse_tot (GstMpegTsSection * section)
|
||||
_parse_tot (GstMpegtsSection * section)
|
||||
{
|
||||
guint8 *data;
|
||||
GstMpegTsTOT *tot;
|
||||
GstMpegtsTOT *tot;
|
||||
guint16 desc_len;
|
||||
|
||||
GST_DEBUG ("TOT");
|
||||
|
||||
tot = g_slice_new0 (GstMpegTsTOT);
|
||||
tot = g_slice_new0 (GstMpegtsTOT);
|
||||
|
||||
tot->utc_time = _parse_utc_time (section->data + 3);
|
||||
|
||||
|
@ -1187,15 +1187,15 @@ _parse_tot (GstMpegTsSection * section)
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_tot:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_TOT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_TOT
|
||||
*
|
||||
* Returns the #GstMpegTsTOT contained in the @section.
|
||||
* Returns the #GstMpegtsTOT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTsTOT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegtsTOT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTsTOT *
|
||||
gst_mpegts_section_get_tot (GstMpegTsSection * section)
|
||||
const GstMpegtsTOT *
|
||||
gst_mpegts_section_get_tot (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_TOT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -1205,5 +1205,5 @@ gst_mpegts_section_get_tot (GstMpegTsSection * section)
|
|||
__common_section_checks (section, 14, _parse_tot,
|
||||
(GDestroyNotify) _gst_mpegts_tot_free);
|
||||
|
||||
return (const GstMpegTsTOT *) section->cached_parsed;
|
||||
return (const GstMpegtsTOT *) section->cached_parsed;
|
||||
}
|
||||
|
|
|
@ -31,13 +31,13 @@
|
|||
G_BEGIN_DECLS
|
||||
|
||||
/**
|
||||
* GstMpegTsSectionDVBTableID:
|
||||
* GstMpegtsSectionDVBTableID:
|
||||
*
|
||||
* Values for a #GstMpegTsSection table_id.
|
||||
* Values for a #GstMpegtsSection table_id.
|
||||
*
|
||||
* These are the registered DVB table_id variants.
|
||||
*
|
||||
* see also: #GstMpegTsSectionTableID
|
||||
* see also: #GstMpegtsSectionTableID
|
||||
*/
|
||||
typedef enum {
|
||||
/* EN 300 468 (DVB) v 1.12.1 */
|
||||
|
@ -98,10 +98,10 @@ typedef enum {
|
|||
GST_MTS_TABLE_ID_TIM = 0xB0,
|
||||
GST_MTS_TABLE_ID_LL_FEC_PARITY_DATA_TABLE = 0xB1
|
||||
|
||||
} GstMpegTsSectionDVBTableID;
|
||||
} GstMpegtsSectionDVBTableID;
|
||||
|
||||
/**
|
||||
* GstMpegTsRunningStatus:
|
||||
* GstMpegtsRunningStatus:
|
||||
*
|
||||
* Running status of a service.
|
||||
*
|
||||
|
@ -115,26 +115,26 @@ typedef enum
|
|||
GST_MPEGTS_RUNNING_STATUS_PAUSING,
|
||||
GST_MPEGTS_RUNNING_STATUS_RUNNING,
|
||||
GST_MPEGTS_RUNNING_STATUS_OFF_AIR
|
||||
} GstMpegTsRunningStatus;
|
||||
} GstMpegtsRunningStatus;
|
||||
|
||||
|
||||
|
||||
/* NIT */
|
||||
|
||||
typedef struct _GstMpegTsNITStream GstMpegTsNITStream;
|
||||
typedef struct _GstMpegTsNIT GstMpegTsNIT;
|
||||
typedef struct _GstMpegtsNITStream GstMpegtsNITStream;
|
||||
typedef struct _GstMpegtsNIT GstMpegtsNIT;
|
||||
|
||||
#define GST_TYPE_MPEGTS_NIT (gst_mpegts_nit_get_type())
|
||||
#define GST_TYPE_MPEGTS_NIT_STREAM (gst_mpegts_nit_stream_get_type())
|
||||
|
||||
/**
|
||||
* GstMpegTsNITStream:
|
||||
* GstMpegtsNITStream:
|
||||
* @transport_stream_id:
|
||||
* @original_network_id:
|
||||
* @descriptors: (element-type GstMpegTsDescriptor):
|
||||
* @descriptors: (element-type GstMpegtsDescriptor):
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTsNITStream
|
||||
struct _GstMpegtsNITStream
|
||||
{
|
||||
guint16 transport_stream_id;
|
||||
guint16 original_network_id;
|
||||
|
@ -143,16 +143,16 @@ struct _GstMpegTsNITStream
|
|||
};
|
||||
|
||||
/**
|
||||
* GstMpegTsNIT:
|
||||
* GstMpegtsNIT:
|
||||
* @actual_network: Whether this NIT corresponds to the actual stream
|
||||
* @network_id: ID of the network that this NIT describes
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): the global descriptors
|
||||
* @streams: (element-type GstMpegTsNITStream): the streams
|
||||
* @descriptors: (element-type GstMpegtsDescriptor): the global descriptors
|
||||
* @streams: (element-type GstMpegtsNITStream): the streams
|
||||
*
|
||||
* Network Information Table (ISO/IEC 13818-1 / EN 300 468)
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTsNIT
|
||||
struct _GstMpegtsNIT
|
||||
{
|
||||
gboolean actual_network;
|
||||
guint16 network_id;
|
||||
|
@ -165,22 +165,22 @@ struct _GstMpegTsNIT
|
|||
GType gst_mpegts_nit_get_type (void);
|
||||
GType gst_mpegts_nit_stream_get_type (void);
|
||||
|
||||
const GstMpegTsNIT *gst_mpegts_section_get_nit (GstMpegTsSection *section);
|
||||
GstMpegTsSection *gst_mpegts_section_from_nit (GstMpegTsNIT *nit);
|
||||
const GstMpegtsNIT *gst_mpegts_section_get_nit (GstMpegtsSection *section);
|
||||
GstMpegtsSection *gst_mpegts_section_from_nit (GstMpegtsNIT *nit);
|
||||
|
||||
GstMpegTsNIT *gst_mpegts_nit_new (void);
|
||||
GstMpegTsNITStream *gst_mpegts_nit_stream_new (void);
|
||||
GstMpegtsNIT *gst_mpegts_nit_new (void);
|
||||
GstMpegtsNITStream *gst_mpegts_nit_stream_new (void);
|
||||
|
||||
|
||||
/* BAT */
|
||||
|
||||
typedef struct _GstMpegTsBATStream GstMpegTsBATStream;
|
||||
typedef struct _GstMpegTsBAT GstMpegTsBAT;
|
||||
typedef struct _GstMpegtsBATStream GstMpegtsBATStream;
|
||||
typedef struct _GstMpegtsBAT GstMpegtsBAT;
|
||||
|
||||
#define GST_TYPE_MPEGTS_BAT (gst_mpegts_bat_get_type())
|
||||
#define GST_TYPE_MPEGTS_BAT_STREAM (gst_mpegts_bat_get_type())
|
||||
|
||||
struct _GstMpegTsBATStream
|
||||
struct _GstMpegtsBATStream
|
||||
{
|
||||
guint16 transport_stream_id;
|
||||
guint16 original_network_id;
|
||||
|
@ -189,13 +189,13 @@ struct _GstMpegTsBATStream
|
|||
};
|
||||
|
||||
/**
|
||||
* GstMpegTsBAT:
|
||||
* @descriptors: (element-type GstMpegTsDescriptor):
|
||||
* @streams: (element-type GstMpegTsBATStream):
|
||||
* GstMpegtsBAT:
|
||||
* @descriptors: (element-type GstMpegtsDescriptor):
|
||||
* @streams: (element-type GstMpegtsBATStream):
|
||||
*
|
||||
* DVB Bouquet Association Table (EN 300 468)
|
||||
*/
|
||||
struct _GstMpegTsBAT
|
||||
struct _GstMpegtsBAT
|
||||
{
|
||||
GPtrArray *descriptors;
|
||||
|
||||
|
@ -205,48 +205,48 @@ struct _GstMpegTsBAT
|
|||
GType gst_mpegts_bat_get_type (void);
|
||||
GType gst_mpegts_bat_stream_get_type (void);
|
||||
|
||||
const GstMpegTsBAT *gst_mpegts_section_get_bat (GstMpegTsSection *section);
|
||||
const GstMpegtsBAT *gst_mpegts_section_get_bat (GstMpegtsSection *section);
|
||||
|
||||
/* SDT */
|
||||
#define GST_TYPE_MPEGTS_SDT (gst_mpegts_sdt_get_type())
|
||||
#define GST_TYPE_MPEGTS_SDT_SERVICE (gst_mpegts_sdt_service_get_type())
|
||||
|
||||
typedef struct _GstMpegTsSDTService GstMpegTsSDTService;
|
||||
typedef struct _GstMpegTsSDT GstMpegTsSDT;
|
||||
typedef struct _GstMpegtsSDTService GstMpegtsSDTService;
|
||||
typedef struct _GstMpegtsSDT GstMpegtsSDT;
|
||||
|
||||
/**
|
||||
* GstMpegTsSDTService:
|
||||
* GstMpegtsSDTService:
|
||||
* @service_id: The program number this table belongs to
|
||||
* @EIT_schedule_flag: EIT schedule information is present in this transport stream
|
||||
* @EIT_present_following_flag: EIT present/following information is present in this transport stream
|
||||
* @running_status: Status of this service
|
||||
* @free_CA_mode: True if one or more streams is controlled by a CA system
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): List of descriptors
|
||||
* @descriptors: (element-type GstMpegtsDescriptor): List of descriptors
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTsSDTService
|
||||
struct _GstMpegtsSDTService
|
||||
{
|
||||
guint16 service_id;
|
||||
|
||||
gboolean EIT_schedule_flag;
|
||||
gboolean EIT_present_following_flag;
|
||||
GstMpegTsRunningStatus running_status;
|
||||
GstMpegtsRunningStatus running_status;
|
||||
gboolean free_CA_mode;
|
||||
|
||||
GPtrArray *descriptors;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpegTsSDT:
|
||||
* GstMpegtsSDT:
|
||||
* @original_network_id: Network ID of the originating delivery system
|
||||
* @actual_ts: True if the table describes this transport stream
|
||||
* @transport_stream_id: ID of this transport stream
|
||||
* @services: (element-type GstMpegTsSDTService): List of services
|
||||
* @services: (element-type GstMpegtsSDTService): List of services
|
||||
*
|
||||
* Service Description Table (EN 300 468)
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTsSDT
|
||||
struct _GstMpegtsSDT
|
||||
{
|
||||
guint16 original_network_id;
|
||||
gboolean actual_ts;
|
||||
|
@ -258,48 +258,48 @@ struct _GstMpegTsSDT
|
|||
GType gst_mpegts_sdt_get_type (void);
|
||||
GType gst_mpegts_sdt_service_get_type (void);
|
||||
|
||||
const GstMpegTsSDT *gst_mpegts_section_get_sdt (GstMpegTsSection *section);
|
||||
const GstMpegtsSDT *gst_mpegts_section_get_sdt (GstMpegtsSection *section);
|
||||
|
||||
GstMpegTsSection *gst_mpegts_section_from_sdt (GstMpegTsSDT * sdt);
|
||||
GstMpegtsSection *gst_mpegts_section_from_sdt (GstMpegtsSDT * sdt);
|
||||
|
||||
GstMpegTsSDT *gst_mpegts_sdt_new (void);
|
||||
GstMpegTsSDTService *gst_mpegts_sdt_service_new (void);
|
||||
GstMpegtsSDT *gst_mpegts_sdt_new (void);
|
||||
GstMpegtsSDTService *gst_mpegts_sdt_service_new (void);
|
||||
|
||||
/* EIT */
|
||||
|
||||
#define GST_TYPE_MPEGTS_EIT (gst_mpegts_eit_get_type())
|
||||
#define GST_TYPE_MPEGTS_EIT_EVENT (gst_mpegts_eit_event_get_type())
|
||||
|
||||
typedef struct _GstMpegTsEITEvent GstMpegTsEITEvent;
|
||||
typedef struct _GstMpegTsEIT GstMpegTsEIT;
|
||||
typedef struct _GstMpegtsEITEvent GstMpegtsEITEvent;
|
||||
typedef struct _GstMpegtsEIT GstMpegtsEIT;
|
||||
|
||||
/**
|
||||
* GstMpegTsEITEvent:
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): List of descriptors
|
||||
* GstMpegtsEITEvent:
|
||||
* @descriptors: (element-type GstMpegtsDescriptor): List of descriptors
|
||||
*
|
||||
* Event from a @GstMpegTsEIT
|
||||
* Event from a @GstMpegtsEIT
|
||||
*/
|
||||
struct _GstMpegTsEITEvent
|
||||
struct _GstMpegtsEITEvent
|
||||
{
|
||||
guint16 event_id;
|
||||
|
||||
GstDateTime *start_time;
|
||||
guint32 duration;
|
||||
|
||||
GstMpegTsRunningStatus running_status;
|
||||
GstMpegtsRunningStatus running_status;
|
||||
gboolean free_CA_mode;
|
||||
|
||||
GPtrArray *descriptors;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpegTsEIT:
|
||||
* @events: (element-type GstMpegTsEITEvent): List of events
|
||||
* GstMpegtsEIT:
|
||||
* @events: (element-type GstMpegtsEITEvent): List of events
|
||||
*
|
||||
* Event Information Table (EN 300 468)
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTsEIT
|
||||
struct _GstMpegtsEIT
|
||||
{
|
||||
guint16 transport_stream_id;
|
||||
guint16 original_network_id;
|
||||
|
@ -315,23 +315,23 @@ struct _GstMpegTsEIT
|
|||
GType gst_mpegts_eit_get_type (void);
|
||||
GType gst_mpegts_eit_event_get_type (void);
|
||||
|
||||
const GstMpegTsEIT *gst_mpegts_section_get_eit (GstMpegTsSection *section);
|
||||
const GstMpegtsEIT *gst_mpegts_section_get_eit (GstMpegtsSection *section);
|
||||
|
||||
/* TDT */
|
||||
GstDateTime *gst_mpegts_section_get_tdt (GstMpegTsSection *section);
|
||||
GstDateTime *gst_mpegts_section_get_tdt (GstMpegtsSection *section);
|
||||
|
||||
/* TOT */
|
||||
|
||||
typedef struct _GstMpegTsTOT GstMpegTsTOT;
|
||||
typedef struct _GstMpegtsTOT GstMpegtsTOT;
|
||||
#define GST_TYPE_MPEGTS_TOT (gst_mpegts_tot_get_type())
|
||||
/**
|
||||
* GstMpegTsTOT:
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): List of descriptors
|
||||
* GstMpegtsTOT:
|
||||
* @descriptors: (element-type GstMpegtsDescriptor): List of descriptors
|
||||
*
|
||||
* Time Offset Table (EN 300 468)
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTsTOT
|
||||
struct _GstMpegtsTOT
|
||||
{
|
||||
GstDateTime *utc_time;
|
||||
|
||||
|
@ -339,7 +339,7 @@ struct _GstMpegTsTOT
|
|||
};
|
||||
|
||||
GType gst_mpegts_tot_get_type (void);
|
||||
const GstMpegTsTOT *gst_mpegts_section_get_tot (GstMpegTsSection *section);
|
||||
const GstMpegtsTOT *gst_mpegts_section_get_tot (GstMpegtsSection *section);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
|
@ -31,17 +31,17 @@
|
|||
G_BEGIN_DECLS
|
||||
|
||||
/**
|
||||
* GstMpegTsScteStreamType:
|
||||
* @GST_MPEG_TS_STREAM_TYPE_SCTE_SUBTITLING: SCTE-27 Subtitling
|
||||
* @GST_MPEG_TS_STREAM_TYPE_SCTE_ISOCH_DATA: SCTE-19 Isochronous data
|
||||
* @GST_MPEG_TS_STREAM_TYPE_SCTE_DST_NRT: SCTE-07 Data Service or
|
||||
* GstMpegtsScteStreamType:
|
||||
* @GST_MPEGTS_STREAM_TYPE_SCTE_SUBTITLING: SCTE-27 Subtitling
|
||||
* @GST_MPEGTS_STREAM_TYPE_SCTE_ISOCH_DATA: SCTE-19 Isochronous data
|
||||
* @GST_MPEGTS_STREAM_TYPE_SCTE_DST_NRT: SCTE-07 Data Service or
|
||||
* Network Resource Table
|
||||
* @GST_MPEG_TS_STREAM_TYPE_SCTE_DSMCC_DCB: Type B - DSM-CC Data Carousel
|
||||
* @GST_MPEGTS_STREAM_TYPE_SCTE_DSMCC_DCB: Type B - DSM-CC Data Carousel
|
||||
* [IEC 13818-6])
|
||||
* @GST_MPEG_TS_STREAM_TYPE_SCTE_SIGNALING: Enhanced Television Application
|
||||
* @GST_MPEGTS_STREAM_TYPE_SCTE_SIGNALING: Enhanced Television Application
|
||||
* Signaling (OC-SP-ETV-AM1.0.1-120614)
|
||||
* @GST_MPEG_TS_STREAM_TYPE_SCTE_SYNC_DATA: SCTE-07 Synchronous data
|
||||
* @GST_MPEG_TS_STREAM_TYPE_SCTE_ASYNC_DATA: SCTE-53 Asynchronous data
|
||||
* @GST_MPEGTS_STREAM_TYPE_SCTE_SYNC_DATA: SCTE-07 Synchronous data
|
||||
* @GST_MPEGTS_STREAM_TYPE_SCTE_ASYNC_DATA: SCTE-53 Asynchronous data
|
||||
*
|
||||
* Type of mpeg-ts streams for SCTE
|
||||
*
|
||||
|
@ -49,23 +49,23 @@ G_BEGIN_DECLS
|
|||
typedef enum {
|
||||
|
||||
/* 0x01 - 0x82 : defined in other specs */
|
||||
GST_MPEG_TS_STREAM_TYPE_SCTE_SUBTITLING = 0x82, /* Subtitling data */
|
||||
GST_MPEG_TS_STREAM_TYPE_SCTE_ISOCH_DATA = 0x83, /* Isochronous data */
|
||||
GST_MPEGTS_STREAM_TYPE_SCTE_SUBTITLING = 0x82, /* Subtitling data */
|
||||
GST_MPEGTS_STREAM_TYPE_SCTE_ISOCH_DATA = 0x83, /* Isochronous data */
|
||||
/* 0x84 - 0x94 : defined in other specs */
|
||||
GST_MPEG_TS_STREAM_TYPE_SCTE_DST_NRT = 0x95, /* DST / NRT data */
|
||||
GST_MPEGTS_STREAM_TYPE_SCTE_DST_NRT = 0x95, /* DST / NRT data */
|
||||
/* 0x96 - 0xaf : defined in other specs */
|
||||
GST_MPEG_TS_STREAM_TYPE_SCTE_DSMCC_DCB = 0xb0, /* Data Carousel Type B */
|
||||
GST_MPEGTS_STREAM_TYPE_SCTE_DSMCC_DCB = 0xb0, /* Data Carousel Type B */
|
||||
/* 0xb1 - 0xbf : User Private (or defined in other specs) */
|
||||
GST_MPEG_TS_STREAM_TYPE_SCTE_SIGNALING = 0xc0, /* EBIF Signaling */
|
||||
GST_MPEG_TS_STREAM_TYPE_SCTE_SYNC_DATA = 0xc2, /* Synchronous data */
|
||||
GST_MPEG_TS_STREAM_TYPE_SCTE_ASYNC_DATA = 0xc3, /* Asynchronous data */
|
||||
GST_MPEGTS_STREAM_TYPE_SCTE_SIGNALING = 0xc0, /* EBIF Signaling */
|
||||
GST_MPEGTS_STREAM_TYPE_SCTE_SYNC_DATA = 0xc2, /* Synchronous data */
|
||||
GST_MPEGTS_STREAM_TYPE_SCTE_ASYNC_DATA = 0xc3, /* Asynchronous data */
|
||||
/* 0xc4 - 0xff : User Private (or defined in other specs) */
|
||||
|
||||
} GstMpegTsScteStreamType;
|
||||
} GstMpegtsScteStreamType;
|
||||
|
||||
|
||||
/**
|
||||
* GstMpegTsSectionSCTETableID:
|
||||
* GstMpegtsSectionSCTETableID:
|
||||
* @GST_MTS_TABLE_ID_SCTE_EAS: SCTE-18 Emergency Alert System
|
||||
* @GST_MTS_TABLE_ID_SCTE_EBIF: CL-SP-ETV-AM 1.0.1 EBIF message
|
||||
* @GST_MTS_TABLE_ID_SCTE_EISS: CL-SP-ETV-AM 1.0.1 EBIF Int. Signaling Sect.
|
||||
|
@ -76,11 +76,11 @@ typedef enum {
|
|||
* Splice Event notifications to remain associated with the program and pass
|
||||
* through multiplexers.
|
||||
*
|
||||
* Values for a #GstMpegTsSection table_id.
|
||||
* Values for a #GstMpegtsSection table_id.
|
||||
*
|
||||
* These are the registered SCTE table_id variants.
|
||||
*
|
||||
* see also: #GstMpegTsSectionTableID
|
||||
* see also: #GstMpegtsSectionTableID
|
||||
*/
|
||||
typedef enum {
|
||||
|
||||
|
@ -95,7 +95,7 @@ typedef enum {
|
|||
/* 0xe5 - 0xfb : defined in other specs */
|
||||
GST_MTS_TABLE_ID_SCTE_SPLICE = 0xfc, /* splice information table */
|
||||
|
||||
} GstMpegTsSectionSCTETableID;
|
||||
} GstMpegtsSectionSCTETableID;
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
|
@ -34,19 +34,19 @@ G_GNUC_INTERNAL guint32 _calc_crc32 (const guint8 *data, guint datalen);
|
|||
G_GNUC_INTERNAL gchar *get_encoding_and_convert (const gchar *text, guint length);
|
||||
G_GNUC_INTERNAL gchar *convert_lang_code (guint8 * data);
|
||||
G_GNUC_INTERNAL guint8 *dvb_text_from_utf8 (const gchar * text, gsize *out_size);
|
||||
G_GNUC_INTERNAL void _free_descriptor (GstMpegTsDescriptor *descriptor);
|
||||
G_GNUC_INTERNAL GstMpegTsDescriptor *_new_descriptor (guint8 tag, guint8 length);
|
||||
G_GNUC_INTERNAL GstMpegTsDescriptor *_new_descriptor_with_extension (guint8 tag,
|
||||
G_GNUC_INTERNAL void _free_descriptor (GstMpegtsDescriptor *descriptor);
|
||||
G_GNUC_INTERNAL GstMpegtsDescriptor *_new_descriptor (guint8 tag, guint8 length);
|
||||
G_GNUC_INTERNAL GstMpegtsDescriptor *_new_descriptor_with_extension (guint8 tag,
|
||||
guint8 tag_extension, guint8 length);
|
||||
G_GNUC_INTERNAL void _packetize_descriptor_array (GPtrArray * array,
|
||||
guint8 ** out_data);
|
||||
G_GNUC_INTERNAL GstMpegTsSection *_gst_mpegts_section_init (guint16 pid, guint8 table_id);
|
||||
G_GNUC_INTERNAL void _packetize_common_section (GstMpegTsSection * section, gsize length);
|
||||
G_GNUC_INTERNAL GstMpegtsSection *_gst_mpegts_section_init (guint16 pid, guint8 table_id);
|
||||
G_GNUC_INTERNAL void _packetize_common_section (GstMpegtsSection * section, gsize length);
|
||||
|
||||
typedef gpointer (*GstMpegTsParseFunc) (GstMpegTsSection *section);
|
||||
G_GNUC_INTERNAL gpointer __common_section_checks (GstMpegTsSection *section,
|
||||
typedef gpointer (*GstMpegtsParseFunc) (GstMpegtsSection *section);
|
||||
G_GNUC_INTERNAL gpointer __common_section_checks (GstMpegtsSection *section,
|
||||
guint minsize,
|
||||
GstMpegTsParseFunc parsefunc,
|
||||
GstMpegtsParseFunc parsefunc,
|
||||
GDestroyNotify destroynotify);
|
||||
|
||||
#define __common_desc_check_base(desc, tagtype, retval) \
|
||||
|
|
|
@ -282,7 +282,7 @@ _encode_control_codes (gchar * text, gsize length, gboolean is_multibyte)
|
|||
* @out_size: (out): the byte length of the new text
|
||||
*
|
||||
* Converts UTF-8 strings to text characters compliant with EN 300 468.
|
||||
* The converted text can be used directly in DVB #GstMpegTsDescriptor
|
||||
* The converted text can be used directly in DVB #GstMpegtsDescriptor
|
||||
*
|
||||
* The function will try different character maps until the string is
|
||||
* completely converted.
|
||||
|
@ -638,7 +638,7 @@ _packetize_descriptor_array (GPtrArray * array, guint8 ** out_data)
|
|||
{
|
||||
guint i;
|
||||
guint8 header_size;
|
||||
GstMpegTsDescriptor *descriptor;
|
||||
GstMpegtsDescriptor *descriptor;
|
||||
|
||||
g_return_if_fail (out_data != NULL);
|
||||
g_return_if_fail (*out_data != NULL);
|
||||
|
@ -659,13 +659,13 @@ _packetize_descriptor_array (GPtrArray * array, guint8 ** out_data)
|
|||
}
|
||||
}
|
||||
|
||||
GstMpegTsDescriptor *
|
||||
GstMpegtsDescriptor *
|
||||
_new_descriptor (guint8 tag, guint8 length)
|
||||
{
|
||||
GstMpegTsDescriptor *descriptor;
|
||||
GstMpegtsDescriptor *descriptor;
|
||||
guint8 *data;
|
||||
|
||||
descriptor = g_slice_new (GstMpegTsDescriptor);
|
||||
descriptor = g_slice_new (GstMpegtsDescriptor);
|
||||
|
||||
descriptor->tag = tag;
|
||||
descriptor->tag_extension = 0;
|
||||
|
@ -681,13 +681,13 @@ _new_descriptor (guint8 tag, guint8 length)
|
|||
return descriptor;
|
||||
}
|
||||
|
||||
GstMpegTsDescriptor *
|
||||
GstMpegtsDescriptor *
|
||||
_new_descriptor_with_extension (guint8 tag, guint8 tag_extension, guint8 length)
|
||||
{
|
||||
GstMpegTsDescriptor *descriptor;
|
||||
GstMpegtsDescriptor *descriptor;
|
||||
guint8 *data;
|
||||
|
||||
descriptor = g_slice_new (GstMpegTsDescriptor);
|
||||
descriptor = g_slice_new (GstMpegtsDescriptor);
|
||||
|
||||
descriptor->tag = tag;
|
||||
descriptor->tag_extension = tag_extension;
|
||||
|
@ -704,25 +704,25 @@ _new_descriptor_with_extension (guint8 tag, guint8 tag_extension, guint8 length)
|
|||
return descriptor;
|
||||
}
|
||||
|
||||
static GstMpegTsDescriptor *
|
||||
_copy_descriptor (GstMpegTsDescriptor * desc)
|
||||
static GstMpegtsDescriptor *
|
||||
_copy_descriptor (GstMpegtsDescriptor * desc)
|
||||
{
|
||||
GstMpegTsDescriptor *copy;
|
||||
GstMpegtsDescriptor *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsDescriptor, desc);
|
||||
copy = g_slice_dup (GstMpegtsDescriptor, desc);
|
||||
copy->data = g_memdup (desc->data, desc->length + 2);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
void
|
||||
_free_descriptor (GstMpegTsDescriptor * desc)
|
||||
_free_descriptor (GstMpegtsDescriptor * desc)
|
||||
{
|
||||
g_free ((gpointer) desc->data);
|
||||
g_slice_free (GstMpegTsDescriptor, desc);
|
||||
g_slice_free (GstMpegtsDescriptor, desc);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsDescriptor, gst_mpegts_descriptor,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsDescriptor, gst_mpegts_descriptor,
|
||||
(GBoxedCopyFunc) _copy_descriptor, (GBoxedFreeFunc) _free_descriptor);
|
||||
|
||||
/**
|
||||
|
@ -735,7 +735,7 @@ G_DEFINE_BOXED_TYPE (GstMpegTsDescriptor, gst_mpegts_descriptor,
|
|||
*
|
||||
* Note: The data provided in @buffer will not be copied.
|
||||
*
|
||||
* Returns: (transfer full) (element-type GstMpegTsDescriptor): an
|
||||
* Returns: (transfer full) (element-type GstMpegtsDescriptor): an
|
||||
* array of the parsed descriptors or %NULL if there was an error.
|
||||
* Release with #g_array_unref when done with it.
|
||||
*/
|
||||
|
@ -783,7 +783,7 @@ gst_mpegts_parse_descriptors (guint8 * buffer, gsize buf_len)
|
|||
data = buffer;
|
||||
|
||||
for (i = 0; i < nb_desc; i++) {
|
||||
GstMpegTsDescriptor *desc = g_slice_new0 (GstMpegTsDescriptor);
|
||||
GstMpegtsDescriptor *desc = g_slice_new0 (GstMpegtsDescriptor);
|
||||
|
||||
desc->data = data;
|
||||
desc->tag = *data++;
|
||||
|
@ -809,8 +809,8 @@ gst_mpegts_parse_descriptors (guint8 * buffer, gsize buf_len)
|
|||
|
||||
/**
|
||||
* gst_mpegts_find_descriptor:
|
||||
* @descriptors: (element-type GstMpegTsDescriptor) (transfer none): an array
|
||||
* of #GstMpegTsDescriptor
|
||||
* @descriptors: (element-type GstMpegtsDescriptor) (transfer none): an array
|
||||
* of #GstMpegtsDescriptor
|
||||
* @tag: the tag to look for
|
||||
*
|
||||
* Finds the first descriptor of type @tag in the array.
|
||||
|
@ -820,7 +820,7 @@ gst_mpegts_parse_descriptors (guint8 * buffer, gsize buf_len)
|
|||
*
|
||||
* Returns: (transfer none): the first descriptor matchin @tag, else %NULL.
|
||||
*/
|
||||
const GstMpegTsDescriptor *
|
||||
const GstMpegtsDescriptor *
|
||||
gst_mpegts_find_descriptor (GPtrArray * descriptors, guint8 tag)
|
||||
{
|
||||
guint i, nb_desc;
|
||||
|
@ -829,9 +829,9 @@ gst_mpegts_find_descriptor (GPtrArray * descriptors, guint8 tag)
|
|||
|
||||
nb_desc = descriptors->len;
|
||||
for (i = 0; i < nb_desc; i++) {
|
||||
GstMpegTsDescriptor *desc = g_ptr_array_index (descriptors, i);
|
||||
GstMpegtsDescriptor *desc = g_ptr_array_index (descriptors, i);
|
||||
if (desc->tag == tag)
|
||||
return (const GstMpegTsDescriptor *) desc;
|
||||
return (const GstMpegtsDescriptor *) desc;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
@ -843,15 +843,15 @@ gst_mpegts_find_descriptor (GPtrArray * descriptors, guint8 tag)
|
|||
* @additional_info: (transfer none) (allow-none): pointer to optional additional info
|
||||
* @additional_info_length: length of the optional @additional_info
|
||||
*
|
||||
* Creates a %GST_MTS_DESC_REGISTRATION #GstMpegTsDescriptor
|
||||
* Creates a %GST_MTS_DESC_REGISTRATION #GstMpegtsDescriptor
|
||||
*
|
||||
* Return: #GstMpegTsDescriptor, %NULL on failure
|
||||
* Return: #GstMpegtsDescriptor, %NULL on failure
|
||||
*/
|
||||
GstMpegTsDescriptor *
|
||||
GstMpegtsDescriptor *
|
||||
gst_mpegts_descriptor_from_registration (const gchar * format_identifier,
|
||||
guint8 * additional_info, gsize additional_info_length)
|
||||
{
|
||||
GstMpegTsDescriptor *descriptor;
|
||||
GstMpegtsDescriptor *descriptor;
|
||||
|
||||
g_return_val_if_fail (format_identifier != NULL, NULL);
|
||||
|
||||
|
@ -866,14 +866,14 @@ gst_mpegts_descriptor_from_registration (const gchar * format_identifier,
|
|||
}
|
||||
|
||||
/* GST_MTS_DESC_ISO_639_LANGUAGE (0x0A) */
|
||||
static GstMpegTsISO639LanguageDescriptor *
|
||||
_gst_mpegts_iso_639_language_descriptor_copy (GstMpegTsISO639LanguageDescriptor
|
||||
static GstMpegtsISO639LanguageDescriptor *
|
||||
_gst_mpegts_iso_639_language_descriptor_copy (GstMpegtsISO639LanguageDescriptor
|
||||
* source)
|
||||
{
|
||||
GstMpegTsISO639LanguageDescriptor *copy;
|
||||
GstMpegtsISO639LanguageDescriptor *copy;
|
||||
guint i;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsISO639LanguageDescriptor, source);
|
||||
copy = g_slice_dup (GstMpegtsISO639LanguageDescriptor, source);
|
||||
|
||||
for (i = 0; i < source->nb_language; i++) {
|
||||
copy->language[i] = g_strdup (source->language[i]);
|
||||
|
@ -883,7 +883,7 @@ _gst_mpegts_iso_639_language_descriptor_copy (GstMpegTsISO639LanguageDescriptor
|
|||
}
|
||||
|
||||
void
|
||||
gst_mpegts_iso_639_language_descriptor_free (GstMpegTsISO639LanguageDescriptor
|
||||
gst_mpegts_iso_639_language_descriptor_free (GstMpegtsISO639LanguageDescriptor
|
||||
* desc)
|
||||
{
|
||||
guint i;
|
||||
|
@ -891,18 +891,18 @@ gst_mpegts_iso_639_language_descriptor_free (GstMpegTsISO639LanguageDescriptor
|
|||
for (i = 0; i < desc->nb_language; i++) {
|
||||
g_free (desc->language[i]);
|
||||
}
|
||||
g_slice_free (GstMpegTsISO639LanguageDescriptor, desc);
|
||||
g_slice_free (GstMpegtsISO639LanguageDescriptor, desc);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsISO639LanguageDescriptor,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsISO639LanguageDescriptor,
|
||||
gst_mpegts_iso_639_language,
|
||||
(GBoxedCopyFunc) _gst_mpegts_iso_639_language_descriptor_copy,
|
||||
(GFreeFunc) gst_mpegts_iso_639_language_descriptor_free);
|
||||
|
||||
/**
|
||||
* gst_mpegts_descriptor_parse_iso_639_language:
|
||||
* @descriptor: a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegTsDescriptor
|
||||
* @res: (out) (transfer full): the #GstMpegTsISO639LanguageDescriptor to fill
|
||||
* @descriptor: a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegtsDescriptor
|
||||
* @res: (out) (transfer full): the #GstMpegtsISO639LanguageDescriptor to fill
|
||||
*
|
||||
* Extracts the iso 639-2 language information from @descriptor.
|
||||
*
|
||||
|
@ -912,12 +912,12 @@ G_DEFINE_BOXED_TYPE (GstMpegTsISO639LanguageDescriptor,
|
|||
* Returns: %TRUE if parsing succeeded, else %FALSE.
|
||||
*/
|
||||
gboolean
|
||||
gst_mpegts_descriptor_parse_iso_639_language (const GstMpegTsDescriptor *
|
||||
descriptor, GstMpegTsISO639LanguageDescriptor ** desc)
|
||||
gst_mpegts_descriptor_parse_iso_639_language (const GstMpegtsDescriptor *
|
||||
descriptor, GstMpegtsISO639LanguageDescriptor ** desc)
|
||||
{
|
||||
guint i;
|
||||
guint8 *data;
|
||||
GstMpegTsISO639LanguageDescriptor *res;
|
||||
GstMpegtsISO639LanguageDescriptor *res;
|
||||
|
||||
g_return_val_if_fail (descriptor != NULL && desc != NULL, FALSE);
|
||||
/* This descriptor can be empty, no size check needed */
|
||||
|
@ -925,7 +925,7 @@ gst_mpegts_descriptor_parse_iso_639_language (const GstMpegTsDescriptor *
|
|||
|
||||
data = (guint8 *) descriptor->data + 2;
|
||||
|
||||
res = g_slice_new0 (GstMpegTsISO639LanguageDescriptor);
|
||||
res = g_slice_new0 (GstMpegtsISO639LanguageDescriptor);
|
||||
|
||||
/* Each language is 3 + 1 bytes */
|
||||
res->nb_language = descriptor->length / 4;
|
||||
|
@ -943,10 +943,10 @@ gst_mpegts_descriptor_parse_iso_639_language (const GstMpegTsDescriptor *
|
|||
|
||||
/**
|
||||
* gst_mpegts_descriptor_parse_iso_639_language_idx:
|
||||
* @descriptor: a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegTsDescriptor
|
||||
* @descriptor: a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegtsDescriptor
|
||||
* @idx: Table id of the language to parse
|
||||
* @lang: (out) (transfer full): 4-byte gchar array to hold the language code
|
||||
* @audio_type: (out) (transfer none) (allow-none): the #GstMpegTsIso639AudioType to set
|
||||
* @audio_type: (out) (transfer none) (allow-none): the #GstMpegtsIso639AudioType to set
|
||||
*
|
||||
* Extracts the iso 639-2 language information from specific table id in @descriptor.
|
||||
*
|
||||
|
@ -956,8 +956,8 @@ gst_mpegts_descriptor_parse_iso_639_language (const GstMpegTsDescriptor *
|
|||
* Returns: %TRUE if parsing succeeded, else %FALSE.
|
||||
*/
|
||||
gboolean
|
||||
gst_mpegts_descriptor_parse_iso_639_language_idx (const GstMpegTsDescriptor *
|
||||
descriptor, guint idx, gchar ** lang, GstMpegTsIso639AudioType * audio_type)
|
||||
gst_mpegts_descriptor_parse_iso_639_language_idx (const GstMpegtsDescriptor *
|
||||
descriptor, guint idx, gchar ** lang, GstMpegtsIso639AudioType * audio_type)
|
||||
{
|
||||
guint8 *data;
|
||||
|
||||
|
@ -982,12 +982,12 @@ gst_mpegts_descriptor_parse_iso_639_language_idx (const GstMpegTsDescriptor *
|
|||
|
||||
/**
|
||||
* gst_mpegts_descriptor_parse_iso_639_language_nb:
|
||||
* @descriptor: a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegTsDescriptor
|
||||
* @descriptor: a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegtsDescriptor
|
||||
*
|
||||
* Returns: The number of languages in @descriptor
|
||||
*/
|
||||
guint
|
||||
gst_mpegts_descriptor_parse_iso_639_language_nb (const GstMpegTsDescriptor *
|
||||
gst_mpegts_descriptor_parse_iso_639_language_nb (const GstMpegtsDescriptor *
|
||||
descriptor)
|
||||
{
|
||||
g_return_val_if_fail (descriptor != NULL, 0);
|
||||
|
@ -999,16 +999,16 @@ gst_mpegts_descriptor_parse_iso_639_language_nb (const GstMpegTsDescriptor *
|
|||
|
||||
/**
|
||||
* gst_mpegts_descriptor_parse_logical_channel:
|
||||
* @descriptor: a %GST_MTS_DESC_DTG_LOGICAL_CHANNEL #GstMpegTsDescriptor
|
||||
* @res: (out) (transfer none): the #GstMpegTsLogicalChannelDescriptor to fill
|
||||
* @descriptor: a %GST_MTS_DESC_DTG_LOGICAL_CHANNEL #GstMpegtsDescriptor
|
||||
* @res: (out) (transfer none): the #GstMpegtsLogicalChannelDescriptor to fill
|
||||
*
|
||||
* Extracts the logical channels from @descriptor.
|
||||
*
|
||||
* Returns: %TRUE if parsing succeeded, else %FALSE.
|
||||
*/
|
||||
gboolean
|
||||
gst_mpegts_descriptor_parse_logical_channel (const GstMpegTsDescriptor *
|
||||
descriptor, GstMpegTsLogicalChannelDescriptor * res)
|
||||
gst_mpegts_descriptor_parse_logical_channel (const GstMpegtsDescriptor *
|
||||
descriptor, GstMpegtsLogicalChannelDescriptor * res)
|
||||
{
|
||||
guint i;
|
||||
guint8 *data;
|
||||
|
@ -1039,15 +1039,15 @@ gst_mpegts_descriptor_parse_logical_channel (const GstMpegTsDescriptor *
|
|||
* @data: (transfer none): descriptor data (after tag and length field)
|
||||
* @length: length of @data
|
||||
*
|
||||
* Creates a #GstMpegTsDescriptor with custom @tag and @data
|
||||
* Creates a #GstMpegtsDescriptor with custom @tag and @data
|
||||
*
|
||||
* Returns: #GstMpegTsDescriptor
|
||||
* Returns: #GstMpegtsDescriptor
|
||||
*/
|
||||
GstMpegTsDescriptor *
|
||||
GstMpegtsDescriptor *
|
||||
gst_mpegts_descriptor_from_custom (guint8 tag, const guint8 * data,
|
||||
gsize length)
|
||||
{
|
||||
GstMpegTsDescriptor *descriptor;
|
||||
GstMpegtsDescriptor *descriptor;
|
||||
|
||||
descriptor = _new_descriptor (tag, length);
|
||||
|
||||
|
|
|
@ -62,9 +62,9 @@ G_BEGIN_DECLS
|
|||
*/
|
||||
|
||||
/**
|
||||
* GstMpegTsDescriptorType:
|
||||
* GstMpegtsDescriptorType:
|
||||
*
|
||||
* The type of #GstMpegTsDescriptor
|
||||
* The type of #GstMpegtsDescriptor
|
||||
*
|
||||
* These values correspond to the registered descriptor type from
|
||||
* the base MPEG-TS specifications (ITU H.222.0 | ISO/IEC 13818-1).
|
||||
|
@ -135,12 +135,12 @@ typedef enum {
|
|||
GST_MTS_DESC_STEREOSCOPIC_VIDEO_INFO = 0x36,
|
||||
|
||||
/* 55-63 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Reserved */
|
||||
} GstMpegTsDescriptorType;
|
||||
} GstMpegtsDescriptorType;
|
||||
|
||||
/**
|
||||
* GstMpegTsMiscDescriptorType:
|
||||
* GstMpegtsMiscDescriptorType:
|
||||
*
|
||||
* The type of #GstMpegTsDescriptor
|
||||
* The type of #GstMpegtsDescriptor
|
||||
*
|
||||
* These values correspond to miscellaneous descriptor types that are
|
||||
* not yet identified from known specifications.
|
||||
|
@ -149,10 +149,10 @@ typedef enum {
|
|||
/* 0x80 - 0xFE are user defined */
|
||||
GST_MTS_DESC_AC3_AUDIO_STREAM = 0x81,
|
||||
GST_MTS_DESC_DTG_LOGICAL_CHANNEL = 0x83, /* from DTG D-Book */
|
||||
} GstMpegTsMiscDescriptorType;
|
||||
} GstMpegtsMiscDescriptorType;
|
||||
|
||||
/**
|
||||
* GstMpegTsATSCDescriptorType:
|
||||
* GstMpegtsATSCDescriptorType:
|
||||
*
|
||||
* These values correspond to the registered descriptor type from
|
||||
* the various ATSC specifications.
|
||||
|
@ -186,10 +186,10 @@ typedef enum {
|
|||
GST_MTS_DESC_ATSC_MODULE_LINK = 0xB4,
|
||||
GST_MTS_DESC_ATSC_CRC32 = 0xB5,
|
||||
GST_MTS_DESC_ATSC_GROUP_LINK = 0xB8,
|
||||
} GstMpegTsATSCDescriptorType;
|
||||
} GstMpegtsATSCDescriptorType;
|
||||
|
||||
/**
|
||||
* GstMpegTsISDBDescriptorType:
|
||||
* GstMpegtsISDBDescriptorType:
|
||||
*
|
||||
* These values correspond to the registered descriptor type from
|
||||
* the various ISDB specifications.
|
||||
|
@ -232,15 +232,15 @@ typedef enum {
|
|||
/* ... */
|
||||
GST_MTS_DESC_ISDB_SERVICE_GROUP = 0xe0
|
||||
|
||||
} GstMpegTsISDBDescriptorType;
|
||||
} GstMpegtsISDBDescriptorType;
|
||||
|
||||
typedef struct _GstMpegTsDescriptor GstMpegTsDescriptor;
|
||||
typedef struct _GstMpegtsDescriptor GstMpegtsDescriptor;
|
||||
|
||||
#define GST_TYPE_MPEGTS_DESCRIPTOR (gst_mpegts_descriptor_get_type())
|
||||
GType gst_mpegts_descriptor_get_type (void);
|
||||
|
||||
/**
|
||||
* GstMpegTsDescriptor:
|
||||
* GstMpegtsDescriptor:
|
||||
* @tag: the type of descriptor
|
||||
* @tag_extension: the extended type (if @descriptor_tag is 0x7f)
|
||||
* @length: the length of the descriptor content (excluding tag/length field)
|
||||
|
@ -249,7 +249,7 @@ GType gst_mpegts_descriptor_get_type (void);
|
|||
*
|
||||
* Mpeg-TS descriptor (ISO/IEC 13818-1).
|
||||
*/
|
||||
struct _GstMpegTsDescriptor
|
||||
struct _GstMpegtsDescriptor
|
||||
{
|
||||
guint8 tag;
|
||||
guint8 tag_extension;
|
||||
|
@ -259,18 +259,18 @@ struct _GstMpegTsDescriptor
|
|||
|
||||
GPtrArray *gst_mpegts_parse_descriptors (guint8 * buffer, gsize buf_len);
|
||||
|
||||
const GstMpegTsDescriptor * gst_mpegts_find_descriptor (GPtrArray *descriptors,
|
||||
const GstMpegtsDescriptor * gst_mpegts_find_descriptor (GPtrArray *descriptors,
|
||||
guint8 tag);
|
||||
|
||||
/* GST_MTS_DESC_REGISTRATION (0x05) */
|
||||
|
||||
GstMpegTsDescriptor *gst_mpegts_descriptor_from_registration (
|
||||
GstMpegtsDescriptor *gst_mpegts_descriptor_from_registration (
|
||||
const gchar *format_identifier,
|
||||
guint8 *additional_info, gsize additional_info_length);
|
||||
|
||||
/* GST_MTS_DESC_ISO_639_LANGUAGE (0x0A) */
|
||||
/**
|
||||
* GstMpegTsISO639AudioType:
|
||||
* GstMpegtsISO639AudioType:
|
||||
*
|
||||
* Type of audio streams
|
||||
*
|
||||
|
@ -281,52 +281,52 @@ typedef enum {
|
|||
GST_MPEGTS_AUDIO_TYPE_CLEAN_EFFECTS,
|
||||
GST_MPEGTS_AUDIO_TYPE_HEARING_IMPAIRED,
|
||||
GST_MPEGTS_AUDIO_TYPE_VISUAL_IMPAIRED_COMMENTARY
|
||||
} GstMpegTsIso639AudioType;
|
||||
} GstMpegtsIso639AudioType;
|
||||
|
||||
typedef struct _GstMpegTsISO639LanguageDescriptor GstMpegTsISO639LanguageDescriptor;
|
||||
struct _GstMpegTsISO639LanguageDescriptor
|
||||
typedef struct _GstMpegtsISO639LanguageDescriptor GstMpegtsISO639LanguageDescriptor;
|
||||
struct _GstMpegtsISO639LanguageDescriptor
|
||||
{
|
||||
guint nb_language;
|
||||
gchar *language[64];
|
||||
GstMpegTsIso639AudioType audio_type[64];
|
||||
GstMpegtsIso639AudioType audio_type[64];
|
||||
};
|
||||
|
||||
#define GST_TYPE_MPEGTS_ISO_639_LANGUAGE (gst_mpegts_iso_639_language_get_type ())
|
||||
GType gst_mpegts_iso_639_language_get_type (void);
|
||||
void gst_mpegts_iso_639_language_descriptor_free (GstMpegTsISO639LanguageDescriptor * desc);
|
||||
gboolean gst_mpegts_descriptor_parse_iso_639_language (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsISO639LanguageDescriptor **res);
|
||||
gboolean gst_mpegts_descriptor_parse_iso_639_language_idx (const GstMpegTsDescriptor *descriptor,
|
||||
void gst_mpegts_iso_639_language_descriptor_free (GstMpegtsISO639LanguageDescriptor * desc);
|
||||
gboolean gst_mpegts_descriptor_parse_iso_639_language (const GstMpegtsDescriptor *descriptor,
|
||||
GstMpegtsISO639LanguageDescriptor **res);
|
||||
gboolean gst_mpegts_descriptor_parse_iso_639_language_idx (const GstMpegtsDescriptor *descriptor,
|
||||
guint idx, gchar **lang,
|
||||
GstMpegTsIso639AudioType *audio_type);
|
||||
guint gst_mpegts_descriptor_parse_iso_639_language_nb (const GstMpegTsDescriptor *descriptor);
|
||||
GstMpegtsIso639AudioType *audio_type);
|
||||
guint gst_mpegts_descriptor_parse_iso_639_language_nb (const GstMpegtsDescriptor *descriptor);
|
||||
|
||||
|
||||
|
||||
/* GST_MTS_DESC_DTG_LOGICAL_CHANNEL (0x83) */
|
||||
typedef struct _GstMpegTsLogicalChannelDescriptor GstMpegTsLogicalChannelDescriptor;
|
||||
typedef struct _GstMpegTsLogicalChannel GstMpegTsLogicalChannel;
|
||||
typedef struct _GstMpegtsLogicalChannelDescriptor GstMpegtsLogicalChannelDescriptor;
|
||||
typedef struct _GstMpegtsLogicalChannel GstMpegtsLogicalChannel;
|
||||
|
||||
struct _GstMpegTsLogicalChannel
|
||||
struct _GstMpegtsLogicalChannel
|
||||
{
|
||||
guint16 service_id;
|
||||
gboolean visible_service;
|
||||
guint16 logical_channel_number;
|
||||
};
|
||||
|
||||
struct _GstMpegTsLogicalChannelDescriptor
|
||||
struct _GstMpegtsLogicalChannelDescriptor
|
||||
{
|
||||
guint nb_channels;
|
||||
GstMpegTsLogicalChannel channels[64];
|
||||
GstMpegtsLogicalChannel channels[64];
|
||||
};
|
||||
|
||||
/* FIXME : Maybe make two methods. One for getting the number of channels,
|
||||
* and the other for getting the content for one channel ? */
|
||||
gboolean
|
||||
gst_mpegts_descriptor_parse_logical_channel (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsLogicalChannelDescriptor *res);
|
||||
gst_mpegts_descriptor_parse_logical_channel (const GstMpegtsDescriptor *descriptor,
|
||||
GstMpegtsLogicalChannelDescriptor *res);
|
||||
|
||||
GstMpegTsDescriptor *
|
||||
GstMpegtsDescriptor *
|
||||
gst_mpegts_descriptor_from_custom (guint8 tag, const guint8 *data, gsize length);
|
||||
|
||||
G_END_DECLS
|
||||
|
|
|
@ -79,7 +79,7 @@ static GQuark QUARK_SECTION;
|
|||
|
||||
static GType _gst_mpegts_section_type = 0;
|
||||
#define MPEG_TYPE_TS_SECTION (_gst_mpegts_section_type)
|
||||
GST_DEFINE_MINI_OBJECT_TYPE (GstMpegTsSection, gst_mpegts_section);
|
||||
GST_DEFINE_MINI_OBJECT_TYPE (GstMpegtsSection, gst_mpegts_section);
|
||||
|
||||
static const guint32 crc_tab[256] = {
|
||||
0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
|
||||
|
@ -141,8 +141,8 @@ _calc_crc32 (const guint8 * data, guint datalen)
|
|||
}
|
||||
|
||||
gpointer
|
||||
__common_section_checks (GstMpegTsSection * section, guint min_size,
|
||||
GstMpegTsParseFunc parsefunc, GDestroyNotify destroynotify)
|
||||
__common_section_checks (GstMpegtsSection * section, guint min_size,
|
||||
GstMpegtsParseFunc parsefunc, GDestroyNotify destroynotify)
|
||||
{
|
||||
gpointer res;
|
||||
|
||||
|
@ -177,7 +177,7 @@ __common_section_checks (GstMpegTsSection * section, guint min_size,
|
|||
* GENERIC MPEG-TS SECTION
|
||||
*/
|
||||
static void
|
||||
_gst_mpegts_section_free (GstMpegTsSection * section)
|
||||
_gst_mpegts_section_free (GstMpegtsSection * section)
|
||||
{
|
||||
GST_DEBUG ("Freeing section type %d", section->section_type);
|
||||
|
||||
|
@ -187,15 +187,15 @@ _gst_mpegts_section_free (GstMpegTsSection * section)
|
|||
if (section->data)
|
||||
g_free (section->data);
|
||||
|
||||
g_slice_free (GstMpegTsSection, section);
|
||||
g_slice_free (GstMpegtsSection, section);
|
||||
}
|
||||
|
||||
static GstMpegTsSection *
|
||||
_gst_mpegts_section_copy (GstMpegTsSection * section)
|
||||
static GstMpegtsSection *
|
||||
_gst_mpegts_section_copy (GstMpegtsSection * section)
|
||||
{
|
||||
GstMpegTsSection *copy;
|
||||
GstMpegtsSection *copy;
|
||||
|
||||
copy = g_slice_new0 (GstMpegTsSection);
|
||||
copy = g_slice_new0 (GstMpegtsSection);
|
||||
gst_mini_object_init (GST_MINI_OBJECT_CAST (copy), 0, MPEG_TYPE_TS_SECTION,
|
||||
(GstMiniObjectCopyFunction) _gst_mpegts_section_copy, NULL,
|
||||
(GstMiniObjectFreeFunction) _gst_mpegts_section_free);
|
||||
|
@ -223,14 +223,14 @@ _gst_mpegts_section_copy (GstMpegTsSection * section)
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_data:
|
||||
* @section: a #GstMpegTsSection
|
||||
* @section: a #GstMpegtsSection
|
||||
*
|
||||
* Gets the original unparsed section data.
|
||||
*
|
||||
* Returns: (transfer full): The original unparsed section data.
|
||||
*/
|
||||
GBytes *
|
||||
gst_mpegts_section_get_data (GstMpegTsSection * section)
|
||||
gst_mpegts_section_get_data (GstMpegtsSection * section)
|
||||
{
|
||||
return g_bytes_new (section->data, section->section_length);
|
||||
}
|
||||
|
@ -239,15 +239,15 @@ gst_mpegts_section_get_data (GstMpegTsSection * section)
|
|||
* gst_message_parse_mpegts_section:
|
||||
* @message: a #GstMessage
|
||||
*
|
||||
* Returns the #GstMpegTsSection contained in a message.
|
||||
* Returns the #GstMpegtsSection contained in a message.
|
||||
*
|
||||
* Returns: (transfer full): the contained #GstMpegTsSection, or %NULL.
|
||||
* Returns: (transfer full): the contained #GstMpegtsSection, or %NULL.
|
||||
*/
|
||||
GstMpegTsSection *
|
||||
GstMpegtsSection *
|
||||
gst_message_parse_mpegts_section (GstMessage * message)
|
||||
{
|
||||
const GstStructure *st;
|
||||
GstMpegTsSection *section;
|
||||
GstMpegtsSection *section;
|
||||
|
||||
if (message->type != GST_MESSAGE_ELEMENT)
|
||||
return NULL;
|
||||
|
@ -262,7 +262,7 @@ gst_message_parse_mpegts_section (GstMessage * message)
|
|||
}
|
||||
|
||||
static GstStructure *
|
||||
_mpegts_section_get_structure (GstMpegTsSection * section)
|
||||
_mpegts_section_get_structure (GstMpegtsSection * section)
|
||||
{
|
||||
GstStructure *st;
|
||||
GQuark quark;
|
||||
|
@ -296,7 +296,7 @@ _mpegts_section_get_structure (GstMpegTsSection * section)
|
|||
quark = QUARK_TOT;
|
||||
break;
|
||||
default:
|
||||
GST_DEBUG ("Creating structure for unknown GstMpegTsSection");
|
||||
GST_DEBUG ("Creating structure for unknown GstMpegtsSection");
|
||||
quark = QUARK_SECTION;
|
||||
break;
|
||||
}
|
||||
|
@ -310,15 +310,15 @@ _mpegts_section_get_structure (GstMpegTsSection * section)
|
|||
/**
|
||||
* gst_message_new_mpegts_section:
|
||||
* @parent: (transfer none): The creator of the message
|
||||
* @section: (transfer none): The #GstMpegTsSection to put in a message
|
||||
* @section: (transfer none): The #GstMpegtsSection to put in a message
|
||||
*
|
||||
* Creates a new #GstMessage for a @GstMpegTsSection.
|
||||
* Creates a new #GstMessage for a @GstMpegtsSection.
|
||||
*
|
||||
* Returns: (transfer full): The new #GstMessage to be posted, or %NULL if the
|
||||
* section is not valid.
|
||||
*/
|
||||
GstMessage *
|
||||
gst_message_new_mpegts_section (GstObject * parent, GstMpegTsSection * section)
|
||||
gst_message_new_mpegts_section (GstObject * parent, GstMpegtsSection * section)
|
||||
{
|
||||
GstMessage *msg;
|
||||
GstStructure *st;
|
||||
|
@ -331,7 +331,7 @@ gst_message_new_mpegts_section (GstObject * parent, GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static GstEvent *
|
||||
_mpegts_section_get_event (GstMpegTsSection * section)
|
||||
_mpegts_section_get_event (GstMpegtsSection * section)
|
||||
{
|
||||
GstStructure *structure;
|
||||
GstEvent *event;
|
||||
|
@ -345,17 +345,17 @@ _mpegts_section_get_event (GstMpegTsSection * section)
|
|||
|
||||
/**
|
||||
* gst_event_parse_mpegts_section:
|
||||
* @event: (transfer none): #GstEvent containing a #GstMpegTsSection
|
||||
* @event: (transfer none): #GstEvent containing a #GstMpegtsSection
|
||||
*
|
||||
* Extracts the #GstMpegTsSection contained in the @event #GstEvent
|
||||
* Extracts the #GstMpegtsSection contained in the @event #GstEvent
|
||||
*
|
||||
* Returns: (transfer full): The extracted #GstMpegTsSection
|
||||
* Returns: (transfer full): The extracted #GstMpegtsSection
|
||||
*/
|
||||
GstMpegTsSection *
|
||||
GstMpegtsSection *
|
||||
gst_event_parse_mpegts_section (GstEvent * event)
|
||||
{
|
||||
const GstStructure *structure;
|
||||
GstMpegTsSection *section;
|
||||
GstMpegtsSection *section;
|
||||
|
||||
structure = gst_event_get_structure (event);
|
||||
|
||||
|
@ -369,15 +369,15 @@ gst_event_parse_mpegts_section (GstEvent * event)
|
|||
/**
|
||||
* gst_mpegts_section_send_event:
|
||||
* @element: (transfer none): The #GstElement to send to section event to
|
||||
* @section: (transfer none): The #GstMpegTsSection to put in the event
|
||||
* @section: (transfer none): The #GstMpegtsSection to put in the event
|
||||
*
|
||||
* Creates a custom #GstEvent with a @GstMpegTsSection.
|
||||
* Creates a custom #GstEvent with a @GstMpegtsSection.
|
||||
* The #GstEvent is sent to the @element #GstElement.
|
||||
*
|
||||
* Returns: %TRUE if the event is sent
|
||||
*/
|
||||
gboolean
|
||||
gst_mpegts_section_send_event (GstMpegTsSection * section, GstElement * element)
|
||||
gst_mpegts_section_send_event (GstMpegtsSection * section, GstElement * element)
|
||||
{
|
||||
GstEvent *event;
|
||||
|
||||
|
@ -394,29 +394,29 @@ gst_mpegts_section_send_event (GstMpegTsSection * section, GstElement * element)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static GstMpegTsPatProgram *
|
||||
_mpegts_pat_program_copy (GstMpegTsPatProgram * orig)
|
||||
static GstMpegtsPatProgram *
|
||||
_mpegts_pat_program_copy (GstMpegtsPatProgram * orig)
|
||||
{
|
||||
return g_slice_dup (GstMpegTsPatProgram, orig);
|
||||
return g_slice_dup (GstMpegtsPatProgram, orig);
|
||||
}
|
||||
|
||||
static void
|
||||
_mpegts_pat_program_free (GstMpegTsPatProgram * orig)
|
||||
_mpegts_pat_program_free (GstMpegtsPatProgram * orig)
|
||||
{
|
||||
g_slice_free (GstMpegTsPatProgram, orig);
|
||||
g_slice_free (GstMpegtsPatProgram, orig);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsPatProgram, gst_mpegts_pat_program,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsPatProgram, gst_mpegts_pat_program,
|
||||
(GBoxedCopyFunc) _mpegts_pat_program_copy,
|
||||
(GFreeFunc) _mpegts_pat_program_free);
|
||||
|
||||
/* Program Association Table */
|
||||
static gpointer
|
||||
_parse_pat (GstMpegTsSection * section)
|
||||
_parse_pat (GstMpegtsSection * section)
|
||||
{
|
||||
GPtrArray *pat;
|
||||
guint16 i = 0, nb_programs;
|
||||
GstMpegTsPatProgram *program;
|
||||
GstMpegtsPatProgram *program;
|
||||
guint8 *data, *end;
|
||||
|
||||
/* Skip already parsed data */
|
||||
|
@ -432,7 +432,7 @@ _parse_pat (GstMpegTsSection * section)
|
|||
(GDestroyNotify) _mpegts_pat_program_free);
|
||||
|
||||
while (data < end - 4) {
|
||||
program = g_slice_new0 (GstMpegTsPatProgram);
|
||||
program = g_slice_new0 (GstMpegtsPatProgram);
|
||||
program->program_number = GST_READ_UINT16_BE (data);
|
||||
data += 2;
|
||||
|
||||
|
@ -457,21 +457,21 @@ _parse_pat (GstMpegTsSection * section)
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_pat:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_PAT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_PAT
|
||||
*
|
||||
* Parses a Program Association Table (ITU H.222.0, ISO/IEC 13818-1).
|
||||
*
|
||||
* Returns the array of #GstMpegTsPatProgram contained in the section.
|
||||
* Returns the array of #GstMpegtsPatProgram contained in the section.
|
||||
*
|
||||
* Note: The PAT "transport_id" field corresponds to the "subtable_extension"
|
||||
* field of the provided @section.
|
||||
*
|
||||
* Returns: (transfer container) (element-type GstMpegTsPatProgram): The
|
||||
* #GstMpegTsPatProgram contained in the section, or %NULL if an error
|
||||
* Returns: (transfer container) (element-type GstMpegtsPatProgram): The
|
||||
* #GstMpegtsPatProgram contained in the section, or %NULL if an error
|
||||
* happened. Release with #g_ptr_array_unref when done.
|
||||
*/
|
||||
GPtrArray *
|
||||
gst_mpegts_section_get_pat (GstMpegTsSection * section)
|
||||
gst_mpegts_section_get_pat (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_PAT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -489,9 +489,9 @@ gst_mpegts_section_get_pat (GstMpegTsSection * section)
|
|||
/**
|
||||
* gst_mpegts_pat_new:
|
||||
*
|
||||
* Allocates a new #GPtrArray for #GstMpegTsPatProgram
|
||||
* Allocates a new #GPtrArray for #GstMpegtsPatProgram
|
||||
*
|
||||
* Returns: (transfer full) (element-type GstMpegTsPatProgram): A newly allocated #GPtrArray
|
||||
* Returns: (transfer full) (element-type GstMpegtsPatProgram): A newly allocated #GPtrArray
|
||||
*/
|
||||
GPtrArray *
|
||||
gst_mpegts_pat_new (void)
|
||||
|
@ -507,22 +507,22 @@ gst_mpegts_pat_new (void)
|
|||
/**
|
||||
* gst_mpegts_pat_program_new:
|
||||
*
|
||||
* Allocates a new #GstMpegTsPatProgram.
|
||||
* Allocates a new #GstMpegtsPatProgram.
|
||||
*
|
||||
* Returns: (transfer full): A newly allocated #GstMpegTsPatProgram
|
||||
* Returns: (transfer full): A newly allocated #GstMpegtsPatProgram
|
||||
*/
|
||||
GstMpegTsPatProgram *
|
||||
GstMpegtsPatProgram *
|
||||
gst_mpegts_pat_program_new (void)
|
||||
{
|
||||
GstMpegTsPatProgram *program;
|
||||
GstMpegtsPatProgram *program;
|
||||
|
||||
program = g_slice_new0 (GstMpegTsPatProgram);
|
||||
program = g_slice_new0 (GstMpegtsPatProgram);
|
||||
|
||||
return program;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
_packetize_pat (GstMpegTsSection * section)
|
||||
_packetize_pat (GstMpegtsSection * section)
|
||||
{
|
||||
GPtrArray *programs;
|
||||
guint8 *data;
|
||||
|
@ -546,7 +546,7 @@ _packetize_pat (GstMpegTsSection * section)
|
|||
data = section->data + 8;
|
||||
|
||||
for (i = 0; i < programs->len; i++) {
|
||||
GstMpegTsPatProgram *program;
|
||||
GstMpegtsPatProgram *program;
|
||||
|
||||
program = g_ptr_array_index (programs, i);
|
||||
|
||||
|
@ -567,17 +567,17 @@ _packetize_pat (GstMpegTsSection * section)
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_from_pat:
|
||||
* @programs: (transfer full) (element-type GstMpegTsPatProgram): an array of #GstMpegTsPatProgram
|
||||
* @programs: (transfer full) (element-type GstMpegtsPatProgram): an array of #GstMpegtsPatProgram
|
||||
* @ts_id: Transport stream ID of the PAT
|
||||
*
|
||||
* Creates a PAT #GstMpegTsSection from the @programs array of #GstMpegTsPatPrograms
|
||||
* Creates a PAT #GstMpegtsSection from the @programs array of #GstMpegtsPatPrograms
|
||||
*
|
||||
* Returns: (transfer full): a #GstMpegTsSection
|
||||
* Returns: (transfer full): a #GstMpegtsSection
|
||||
*/
|
||||
GstMpegTsSection *
|
||||
GstMpegtsSection *
|
||||
gst_mpegts_section_from_pat (GPtrArray * programs, guint16 ts_id)
|
||||
{
|
||||
GstMpegTsSection *section;
|
||||
GstMpegtsSection *section;
|
||||
|
||||
section = _gst_mpegts_section_init (0x00,
|
||||
GST_MTS_TABLE_ID_PROGRAM_ASSOCIATION);
|
||||
|
@ -592,35 +592,35 @@ gst_mpegts_section_from_pat (GPtrArray * programs, guint16 ts_id)
|
|||
|
||||
/* Program Map Table */
|
||||
|
||||
static GstMpegTsPMTStream *
|
||||
_gst_mpegts_pmt_stream_copy (GstMpegTsPMTStream * pmt)
|
||||
static GstMpegtsPMTStream *
|
||||
_gst_mpegts_pmt_stream_copy (GstMpegtsPMTStream * pmt)
|
||||
{
|
||||
GstMpegTsPMTStream *copy;
|
||||
GstMpegtsPMTStream *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsPMTStream, pmt);
|
||||
copy = g_slice_dup (GstMpegtsPMTStream, pmt);
|
||||
copy->descriptors = g_ptr_array_ref (pmt->descriptors);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_pmt_stream_free (GstMpegTsPMTStream * pmt)
|
||||
_gst_mpegts_pmt_stream_free (GstMpegtsPMTStream * pmt)
|
||||
{
|
||||
if (pmt->descriptors)
|
||||
g_ptr_array_unref (pmt->descriptors);
|
||||
g_slice_free (GstMpegTsPMTStream, pmt);
|
||||
g_slice_free (GstMpegtsPMTStream, pmt);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsPMTStream, gst_mpegts_pmt_stream,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsPMTStream, gst_mpegts_pmt_stream,
|
||||
(GBoxedCopyFunc) _gst_mpegts_pmt_stream_copy,
|
||||
(GFreeFunc) _gst_mpegts_pmt_stream_free);
|
||||
|
||||
static GstMpegTsPMT *
|
||||
_gst_mpegts_pmt_copy (GstMpegTsPMT * pmt)
|
||||
static GstMpegtsPMT *
|
||||
_gst_mpegts_pmt_copy (GstMpegtsPMT * pmt)
|
||||
{
|
||||
GstMpegTsPMT *copy;
|
||||
GstMpegtsPMT *copy;
|
||||
|
||||
copy = g_slice_dup (GstMpegTsPMT, pmt);
|
||||
copy = g_slice_dup (GstMpegtsPMT, pmt);
|
||||
if (pmt->descriptors)
|
||||
copy->descriptors = g_ptr_array_ref (pmt->descriptors);
|
||||
copy->streams = g_ptr_array_ref (pmt->streams);
|
||||
|
@ -629,28 +629,28 @@ _gst_mpegts_pmt_copy (GstMpegTsPMT * pmt)
|
|||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_pmt_free (GstMpegTsPMT * pmt)
|
||||
_gst_mpegts_pmt_free (GstMpegtsPMT * pmt)
|
||||
{
|
||||
if (pmt->descriptors)
|
||||
g_ptr_array_unref (pmt->descriptors);
|
||||
g_ptr_array_unref (pmt->streams);
|
||||
g_slice_free (GstMpegTsPMT, pmt);
|
||||
g_slice_free (GstMpegtsPMT, pmt);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsPMT, gst_mpegts_pmt,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegtsPMT, gst_mpegts_pmt,
|
||||
(GBoxedCopyFunc) _gst_mpegts_pmt_copy, (GFreeFunc) _gst_mpegts_pmt_free);
|
||||
|
||||
|
||||
static gpointer
|
||||
_parse_pmt (GstMpegTsSection * section)
|
||||
_parse_pmt (GstMpegtsSection * section)
|
||||
{
|
||||
GstMpegTsPMT *pmt = NULL;
|
||||
GstMpegtsPMT *pmt = NULL;
|
||||
guint i = 0, allocated_streams = 8;
|
||||
guint8 *data, *end;
|
||||
guint program_info_length;
|
||||
guint stream_info_length;
|
||||
|
||||
pmt = g_slice_new0 (GstMpegTsPMT);
|
||||
pmt = g_slice_new0 (GstMpegtsPMT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -687,7 +687,7 @@ _parse_pmt (GstMpegTsSection * section)
|
|||
/* parse entries, cycle until there's space for another entry (at least 5
|
||||
* bytes) plus the CRC */
|
||||
while (data <= end - 4 - 5) {
|
||||
GstMpegTsPMTStream *stream = g_slice_new0 (GstMpegTsPMTStream);
|
||||
GstMpegtsPMTStream *stream = g_slice_new0 (GstMpegtsPMTStream);
|
||||
|
||||
g_ptr_array_add (pmt->streams, stream);
|
||||
|
||||
|
@ -728,15 +728,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_pmt:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_PMT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_PMT
|
||||
*
|
||||
* Returns the #GstMpegTsPMT contained in the @section.
|
||||
* Returns the #GstMpegtsPMT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTsPMT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegtsPMT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTsPMT *
|
||||
gst_mpegts_section_get_pmt (GstMpegTsSection * section)
|
||||
const GstMpegtsPMT *
|
||||
gst_mpegts_section_get_pmt (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_PMT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -746,22 +746,22 @@ gst_mpegts_section_get_pmt (GstMpegTsSection * section)
|
|||
__common_section_checks (section, 16, _parse_pmt,
|
||||
(GDestroyNotify) _gst_mpegts_pmt_free);
|
||||
|
||||
return (const GstMpegTsPMT *) section->cached_parsed;
|
||||
return (const GstMpegtsPMT *) section->cached_parsed;
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_mpegts_pmt_new:
|
||||
*
|
||||
* Allocates and initializes a new #GstMpegTsPMT.
|
||||
* Allocates and initializes a new #GstMpegtsPMT.
|
||||
*
|
||||
* Returns: (transfer full): #GstMpegTsPMT
|
||||
* Returns: (transfer full): #GstMpegtsPMT
|
||||
*/
|
||||
GstMpegTsPMT *
|
||||
GstMpegtsPMT *
|
||||
gst_mpegts_pmt_new (void)
|
||||
{
|
||||
GstMpegTsPMT *pmt;
|
||||
GstMpegtsPMT *pmt;
|
||||
|
||||
pmt = g_slice_new0 (GstMpegTsPMT);
|
||||
pmt = g_slice_new0 (GstMpegtsPMT);
|
||||
|
||||
pmt->descriptors =
|
||||
g_ptr_array_new_with_free_func ((GDestroyNotify) _free_descriptor);
|
||||
|
@ -774,16 +774,16 @@ gst_mpegts_pmt_new (void)
|
|||
/**
|
||||
* gst_mpegts_pmt_stream_new:
|
||||
*
|
||||
* Allocates and initializes a new #GstMpegTsPMTStream.
|
||||
* Allocates and initializes a new #GstMpegtsPMTStream.
|
||||
*
|
||||
* Returns: (transfer full): #GstMpegTsPMTStream
|
||||
* Returns: (transfer full): #GstMpegtsPMTStream
|
||||
*/
|
||||
GstMpegTsPMTStream *
|
||||
GstMpegtsPMTStream *
|
||||
gst_mpegts_pmt_stream_new (void)
|
||||
{
|
||||
GstMpegTsPMTStream *stream;
|
||||
GstMpegtsPMTStream *stream;
|
||||
|
||||
stream = g_slice_new0 (GstMpegTsPMTStream);
|
||||
stream = g_slice_new0 (GstMpegtsPMTStream);
|
||||
|
||||
stream->descriptors =
|
||||
g_ptr_array_new_with_free_func ((GDestroyNotify) _free_descriptor);
|
||||
|
@ -792,11 +792,11 @@ gst_mpegts_pmt_stream_new (void)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
_packetize_pmt (GstMpegTsSection * section)
|
||||
_packetize_pmt (GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsPMT *pmt;
|
||||
GstMpegTsPMTStream *stream;
|
||||
GstMpegTsDescriptor *descriptor;
|
||||
const GstMpegtsPMT *pmt;
|
||||
GstMpegtsPMTStream *stream;
|
||||
GstMpegtsDescriptor *descriptor;
|
||||
gsize length, pgm_info_length, stream_length;
|
||||
guint8 *data;
|
||||
guint i, j;
|
||||
|
@ -887,17 +887,17 @@ _packetize_pmt (GstMpegTsSection * section)
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_from_pmt:
|
||||
* @pmt: (transfer full): a #GstMpegTsPMT to create a #GstMpegTsSection from
|
||||
* @pid: The PID that the #GstMpegTsPMT belongs to
|
||||
* @pmt: (transfer full): a #GstMpegtsPMT to create a #GstMpegtsSection from
|
||||
* @pid: The PID that the #GstMpegtsPMT belongs to
|
||||
*
|
||||
* Creates a #GstMpegTsSection from @pmt that is bound to @pid
|
||||
* Creates a #GstMpegtsSection from @pmt that is bound to @pid
|
||||
*
|
||||
* Returns: (transfer full): #GstMpegTsSection
|
||||
* Returns: (transfer full): #GstMpegtsSection
|
||||
*/
|
||||
GstMpegTsSection *
|
||||
gst_mpegts_section_from_pmt (GstMpegTsPMT * pmt, guint16 pid)
|
||||
GstMpegtsSection *
|
||||
gst_mpegts_section_from_pmt (GstMpegtsPMT * pmt, guint16 pid)
|
||||
{
|
||||
GstMpegTsSection *section;
|
||||
GstMpegtsSection *section;
|
||||
|
||||
g_return_val_if_fail (pmt != NULL, NULL);
|
||||
|
||||
|
@ -913,7 +913,7 @@ gst_mpegts_section_from_pmt (GstMpegTsPMT * pmt, guint16 pid)
|
|||
|
||||
/* Conditional Access Table */
|
||||
static gpointer
|
||||
_parse_cat (GstMpegTsSection * section)
|
||||
_parse_cat (GstMpegtsSection * section)
|
||||
{
|
||||
guint8 *data;
|
||||
guint desc_len;
|
||||
|
@ -928,17 +928,17 @@ _parse_cat (GstMpegTsSection * section)
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_cat:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_CAT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_CAT
|
||||
*
|
||||
* Returns the array of #GstMpegTsDescriptor contained in the Condtional
|
||||
* Returns the array of #GstMpegtsDescriptor contained in the Condtional
|
||||
* Access Table.
|
||||
*
|
||||
* Returns: (transfer container) (element-type GstMpegTsDescriptor): The
|
||||
* #GstMpegTsDescriptor contained in the section, or %NULL if an error
|
||||
* Returns: (transfer container) (element-type GstMpegtsDescriptor): The
|
||||
* #GstMpegtsDescriptor contained in the section, or %NULL if an error
|
||||
* happened. Release with #g_array_unref when done.
|
||||
*/
|
||||
GPtrArray *
|
||||
gst_mpegts_section_get_cat (GstMpegTsSection * section)
|
||||
gst_mpegts_section_get_cat (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_CAT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -956,16 +956,16 @@ gst_mpegts_section_get_cat (GstMpegTsSection * section)
|
|||
/* Transport Stream Description Table (TSDT) */
|
||||
/**
|
||||
* gst_mpegts_section_get_tsdt:
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_TSDT
|
||||
* @section: a #GstMpegtsSection of type %GST_MPEGTS_SECTION_TSDT
|
||||
*
|
||||
* Returns the array of #GstMpegTsDescriptor contained in the section
|
||||
* Returns the array of #GstMpegtsDescriptor contained in the section
|
||||
*
|
||||
* Returns: (transfer container) (element-type GstMpegTsDescriptor): The
|
||||
* #GstMpegTsDescriptor contained in the section, or %NULL if an error
|
||||
* Returns: (transfer container) (element-type GstMpegtsDescriptor): The
|
||||
* #GstMpegtsDescriptor contained in the section, or %NULL if an error
|
||||
* happened. Release with #g_array_unref when done.
|
||||
*/
|
||||
GPtrArray *
|
||||
gst_mpegts_section_get_tsdt (GstMpegTsSection * section)
|
||||
gst_mpegts_section_get_tsdt (GstMpegtsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_TSDT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -1012,7 +1012,7 @@ gst_mpegts_initialize (void)
|
|||
|
||||
/* FIXME : Later on we might need to use more than just the table_id
|
||||
* to figure out which type of section this is. */
|
||||
static GstMpegTsSectionType
|
||||
static GstMpegtsSectionType
|
||||
_identify_section (guint16 pid, guint8 table_id)
|
||||
{
|
||||
switch (table_id) {
|
||||
|
@ -1084,12 +1084,12 @@ _identify_section (guint16 pid, guint8 table_id)
|
|||
|
||||
}
|
||||
|
||||
GstMpegTsSection *
|
||||
GstMpegtsSection *
|
||||
_gst_mpegts_section_init (guint16 pid, guint8 table_id)
|
||||
{
|
||||
GstMpegTsSection *section;
|
||||
GstMpegtsSection *section;
|
||||
|
||||
section = g_slice_new0 (GstMpegTsSection);
|
||||
section = g_slice_new0 (GstMpegtsSection);
|
||||
gst_mini_object_init (GST_MINI_OBJECT_CAST (section), 0, MPEG_TYPE_TS_SECTION,
|
||||
(GstMiniObjectCopyFunction) _gst_mpegts_section_copy, NULL,
|
||||
(GstMiniObjectFreeFunction) _gst_mpegts_section_free);
|
||||
|
@ -1103,7 +1103,7 @@ _gst_mpegts_section_init (guint16 pid, guint8 table_id)
|
|||
}
|
||||
|
||||
void
|
||||
_packetize_common_section (GstMpegTsSection * section, gsize length)
|
||||
_packetize_common_section (GstMpegtsSection * section, gsize length)
|
||||
{
|
||||
guint8 *data;
|
||||
|
||||
|
@ -1158,7 +1158,7 @@ _packetize_common_section (GstMpegTsSection * section, gsize length)
|
|||
* should contain the table_id field).
|
||||
* @data_size: size of the @data argument.
|
||||
*
|
||||
* Creates a new #GstMpegTsSection from the provided @data.
|
||||
* Creates a new #GstMpegtsSection from the provided @data.
|
||||
*
|
||||
* Note: Ensuring @data is big enough to contain the full section is the
|
||||
* responsibility of the caller. If it is not big enough, %NULL will be
|
||||
|
@ -1167,13 +1167,13 @@ _packetize_common_section (GstMpegTsSection * section, gsize length)
|
|||
* Note: it is the responsibility of the caller to ensure @data does point
|
||||
* to the beginning of the section.
|
||||
*
|
||||
* Returns: (transfer full): A new #GstMpegTsSection if the data was valid,
|
||||
* Returns: (transfer full): A new #GstMpegtsSection if the data was valid,
|
||||
* else %NULL
|
||||
*/
|
||||
GstMpegTsSection *
|
||||
GstMpegtsSection *
|
||||
gst_mpegts_section_new (guint16 pid, guint8 * data, gsize data_size)
|
||||
{
|
||||
GstMpegTsSection *res = NULL;
|
||||
GstMpegtsSection *res = NULL;
|
||||
guint8 tmp;
|
||||
guint8 table_id;
|
||||
guint16 section_length;
|
||||
|
@ -1230,7 +1230,7 @@ short_packet:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_packetize:
|
||||
* @section: (transfer none): the #GstMpegTsSection that holds the data
|
||||
* @section: (transfer none): the #GstMpegtsSection that holds the data
|
||||
* @output_size: (out): #gsize to hold the size of the data
|
||||
*
|
||||
* If the data in @section has aldready been packetized, the data pointer is returned
|
||||
|
@ -1239,7 +1239,7 @@ short_packet:
|
|||
* Returns: (transfer none): pointer to section data, or %NULL on fail
|
||||
*/
|
||||
guint8 *
|
||||
gst_mpegts_section_packetize (GstMpegTsSection * section, gsize * output_size)
|
||||
gst_mpegts_section_packetize (GstMpegtsSection * section, gsize * output_size)
|
||||
{
|
||||
guint8 *crc;
|
||||
g_return_val_if_fail (section != NULL, NULL);
|
||||
|
|
|
@ -29,17 +29,17 @@
|
|||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
typedef struct _GstMpegTsSection GstMpegTsSection;
|
||||
typedef struct _GstMpegtsSection GstMpegtsSection;
|
||||
|
||||
#define GST_TYPE_MPEGTS_SECTION (gst_mpegts_section_get_type())
|
||||
#define GST_MPEGTS_SECTION(section) ((GstMpegTsSection*) section)
|
||||
#define GST_MPEGTS_SECTION(section) ((GstMpegtsSection*) section)
|
||||
|
||||
#define GST_MPEGTS_SECTION_TYPE(section) (GST_MPEGTS_SECTION (section)->section_type)
|
||||
|
||||
GType gst_mpegts_section_get_type (void);
|
||||
|
||||
/**
|
||||
* GstMpegTsSectionType:
|
||||
* GstMpegtsSectionType:
|
||||
* @GST_MPEGTS_SECTION_UNKNOWN: Unknown section type
|
||||
* @GST_MPEGTS_SECTION_PAT: Program Association Table (ISO/IEC 13818-1)
|
||||
* @GST_MPEGTS_SECTION_PMT: Program Map Table (ISO/IEC 13818-1)
|
||||
|
@ -58,7 +58,7 @@ GType gst_mpegts_section_get_type (void);
|
|||
* @GST_MPEGTS_SECTION_ATSC_EIT: ATSC Event Information Table (A65)
|
||||
* @GST_MPEGTS_SECTION_ATSC_STT: ATSC System Time Table (A65)
|
||||
*
|
||||
* Types of #GstMpegTsSection that the library handles.
|
||||
* Types of #GstMpegtsSection that the library handles.
|
||||
*/
|
||||
typedef enum {
|
||||
GST_MPEGTS_SECTION_UNKNOWN = 0,
|
||||
|
@ -78,17 +78,17 @@ typedef enum {
|
|||
GST_MPEGTS_SECTION_ATSC_ETT,
|
||||
GST_MPEGTS_SECTION_ATSC_EIT,
|
||||
GST_MPEGTS_SECTION_ATSC_STT
|
||||
} GstMpegTsSectionType;
|
||||
} GstMpegtsSectionType;
|
||||
|
||||
/**
|
||||
* GstMpegTsSectionTableID:
|
||||
* GstMpegtsSectionTableID:
|
||||
*
|
||||
* Values for a #GstMpegTsSection table_id
|
||||
* Values for a #GstMpegtsSection table_id
|
||||
*
|
||||
* These are the registered ITU H.222.0 | ISO/IEC 13818-1 table_id variants.
|
||||
*
|
||||
* see also #GstMpegTsSectionATSCTableID, #GstMpegTsSectionDVBTableID, and
|
||||
* #GstMpegTsSectionSCTETableID
|
||||
* see also #GstMpegtsSectionATSCTableID, #GstMpegtsSectionDVBTableID, and
|
||||
* #GstMpegtsSectionSCTETableID
|
||||
*/
|
||||
typedef enum {
|
||||
/* ITU H.222.0 / IEC 13818-1 */
|
||||
|
@ -114,12 +114,12 @@ typedef enum {
|
|||
/* Unset */
|
||||
GST_MTS_TABLE_ID_UNSET = 0xFF
|
||||
|
||||
} GstMpegTsSectionTableID;
|
||||
} GstMpegtsSectionTableID;
|
||||
|
||||
typedef gboolean (*GstMpegTsPacketizeFunc) (GstMpegTsSection *section);
|
||||
typedef gboolean (*GstMpegtsPacketizeFunc) (GstMpegtsSection *section);
|
||||
|
||||
/**
|
||||
* GstMpegTsSection:
|
||||
* GstMpegtsSection:
|
||||
* @section_type: The type of section
|
||||
* @pid: The pid on which this section was found
|
||||
* @table_id: The table id of this section
|
||||
|
@ -133,13 +133,13 @@ typedef gboolean (*GstMpegTsPacketizeFunc) (GstMpegTsSection *section);
|
|||
*
|
||||
* Mpeg-TS Section Information (SI) (ISO/IEC 13818-1)
|
||||
*/
|
||||
struct _GstMpegTsSection
|
||||
struct _GstMpegtsSection
|
||||
{
|
||||
/*< private >*/
|
||||
GstMiniObject parent;
|
||||
|
||||
/*< public >*/
|
||||
GstMpegTsSectionType section_type;
|
||||
GstMpegtsSectionType section_type;
|
||||
|
||||
guint16 pid;
|
||||
guint8 table_id;
|
||||
|
@ -170,110 +170,110 @@ 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;
|
||||
GstMpegtsPacketizeFunc packetizer;
|
||||
};
|
||||
|
||||
GBytes *gst_mpegts_section_get_data (GstMpegTsSection *section);
|
||||
GBytes *gst_mpegts_section_get_data (GstMpegtsSection *section);
|
||||
|
||||
/* PAT */
|
||||
#define GST_TYPE_MPEGTS_PAT_PROGRAM (gst_mpegts_pat_program_get_type())
|
||||
|
||||
typedef struct _GstMpegTsPatProgram GstMpegTsPatProgram;
|
||||
typedef struct _GstMpegtsPatProgram GstMpegtsPatProgram;
|
||||
/**
|
||||
* GstMpegTsPatProgram:
|
||||
* GstMpegtsPatProgram:
|
||||
* @program_number: the program number
|
||||
* @network_or_program_map_PID: the network of program map PID
|
||||
*
|
||||
* A program entry from a Program Association Table (ITU H.222.0, ISO/IEC 13818-1).
|
||||
*/
|
||||
struct _GstMpegTsPatProgram
|
||||
struct _GstMpegtsPatProgram
|
||||
{
|
||||
guint16 program_number;
|
||||
guint16 network_or_program_map_PID;
|
||||
};
|
||||
|
||||
GPtrArray *gst_mpegts_section_get_pat (GstMpegTsSection *section);
|
||||
GPtrArray *gst_mpegts_section_get_pat (GstMpegtsSection *section);
|
||||
GType gst_mpegts_pat_program_get_type (void);
|
||||
|
||||
GPtrArray *gst_mpegts_pat_new (void);
|
||||
GstMpegTsPatProgram *gst_mpegts_pat_program_new (void);
|
||||
GstMpegTsSection *gst_mpegts_section_from_pat (GPtrArray * programs,
|
||||
GstMpegtsPatProgram *gst_mpegts_pat_program_new (void);
|
||||
GstMpegtsSection *gst_mpegts_section_from_pat (GPtrArray * programs,
|
||||
guint16 ts_id);
|
||||
|
||||
/* CAT */
|
||||
|
||||
GPtrArray *gst_mpegts_section_get_cat (GstMpegTsSection *section);
|
||||
GPtrArray *gst_mpegts_section_get_cat (GstMpegtsSection *section);
|
||||
|
||||
/* PMT */
|
||||
typedef struct _GstMpegTsPMTStream GstMpegTsPMTStream;
|
||||
typedef struct _GstMpegTsPMT GstMpegTsPMT;
|
||||
typedef struct _GstMpegtsPMTStream GstMpegtsPMTStream;
|
||||
typedef struct _GstMpegtsPMT GstMpegtsPMT;
|
||||
#define GST_TYPE_MPEGTS_PMT (gst_mpegts_pmt_get_type())
|
||||
#define GST_TYPE_MPEGTS_PMT_STREAM (gst_mpegts_pmt_stream_get_type())
|
||||
|
||||
/**
|
||||
* GstMpegTsStreamType:
|
||||
* @GST_MPEG_TS_STREAM_TYPE_RESERVED_00: ITU-T | ISO/IEC Reserved
|
||||
* @GST_MPEG_TS_STREAM_TYPE_VIDEO_MPEG1: ISO/IEC 11172-2 Video
|
||||
* @GST_MPEG_TS_STREAM_TYPE_VIDEO_MPEG2: Rec. ITU-T H.262 | ISO/IEC 13818-2
|
||||
* 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_MPEG2: Rec. ITU-T H.262 | ISO/IEC 13818-2
|
||||
* Video or ISO/IEC 11172-2 constrained parameter video stream
|
||||
* @GST_MPEG_TS_STREAM_TYPE_AUDIO_MPEG1: ISO/IEC 11172-3 Audio
|
||||
* @GST_MPEG_TS_STREAM_TYPE_AUDIO_MPEG2: ISO/IEC 13818-3 Audio
|
||||
* @GST_MPEG_TS_STREAM_TYPE_PRIVATE_SECTIONS: private sections
|
||||
* @GST_MPEG_TS_STREAM_TYPE_PRIVATE_PES_PACKETS: PES packets containing private data
|
||||
* @GST_MPEG_TS_STREAM_TYPE_MHEG: ISO/IEC 13522 MHEG
|
||||
* @GST_MPEG_TS_STREAM_TYPE_DSM_CC: Annex A DSM-CC
|
||||
* @GST_MPEG_TS_STREAM_TYPE_H_222_1: Rec. ITU-T H.222.1
|
||||
* @GST_MPEG_TS_STREAM_TYPE_DSMCC_A: ISO/IEC 13818-6 type A
|
||||
* @GST_MPEG_TS_STREAM_TYPE_DSMCC_B: ISO/IEC 13818-6 type B
|
||||
* @GST_MPEG_TS_STREAM_TYPE_DSMCC_C: ISO/IEC 13818-6 type C
|
||||
* @GST_MPEG_TS_STREAM_TYPE_DSMCC_D: ISO/IEC 13818-6 type D
|
||||
* @GST_MPEG_TS_STREAM_TYPE_AUXILIARY: auxiliary streams
|
||||
* @GST_MPEG_TS_STREAM_TYPE_AUDIO_AAC_ADTS: ISO/IEC 13818-7 Audio with ADTS
|
||||
* @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
|
||||
* @GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS: PES packets containing private data
|
||||
* @GST_MPEGTS_STREAM_TYPE_MHEG: ISO/IEC 13522 MHEG
|
||||
* @GST_MPEGTS_STREAM_TYPE_DSM_CC: Annex A DSM-CC
|
||||
* @GST_MPEGTS_STREAM_TYPE_H_222_1: Rec. ITU-T H.222.1
|
||||
* @GST_MPEGTS_STREAM_TYPE_DSMCC_A: ISO/IEC 13818-6 type A
|
||||
* @GST_MPEGTS_STREAM_TYPE_DSMCC_B: ISO/IEC 13818-6 type B
|
||||
* @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_MPEG_TS_STREAM_TYPE_VIDEO_MPEG4: ISO/IEC 14496-2 Visual
|
||||
* @GST_MPEG_TS_STREAM_TYPE_AUDIO_AAC_LATM: ISO/IEC 14496-3 Audio with the LATM
|
||||
* @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_MPEG_TS_STREAM_TYPE_SL_FLEXMUX_PES_PACKETS: ISO/IEC 14496-1
|
||||
* @GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_PES_PACKETS: ISO/IEC 14496-1
|
||||
* SL-packetized stream or FlexMux stream carried in PES packets
|
||||
* @GST_MPEG_TS_STREAM_TYPE_SL_FLEXMUX_SECTIONS: ISO/IEC 14496-1 SL-packetized
|
||||
* @GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS: ISO/IEC 14496-1 SL-packetized
|
||||
* stream or FlexMux stream carried in ISO/IEC 14496_sections
|
||||
* @GST_MPEG_TS_STREAM_TYPE_SYNCHRONIZED_DOWNLOAD: ISO/IEC 13818-6 Synchronized
|
||||
* @GST_MPEGTS_STREAM_TYPE_SYNCHRONIZED_DOWNLOAD: ISO/IEC 13818-6 Synchronized
|
||||
* Download Protocol
|
||||
* @GST_MPEG_TS_STREAM_TYPE_METADATA_PES_PACKETS: Metadata carried in PES packets
|
||||
* @GST_MPEG_TS_STREAM_TYPE_METADATA_SECTIONS: Metadata carried in metadata_sections
|
||||
* @GST_MPEG_TS_STREAM_TYPE_METADATA_DATA_CAROUSEL: Metadata carried in ISO/IEC
|
||||
* @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
|
||||
* @GST_MPEG_TS_STREAM_TYPE_METADATA_OBJECT_CAROUSEL: Metadata carried in
|
||||
* @GST_MPEGTS_STREAM_TYPE_METADATA_OBJECT_CAROUSEL: Metadata carried in
|
||||
* ISO/IEC 13818-6 Object Carousel
|
||||
* @GST_MPEG_TS_STREAM_TYPE_METADATA_SYNCHRONIZED_DOWNLOAD: Metadata carried in
|
||||
* @GST_MPEGTS_STREAM_TYPE_METADATA_SYNCHRONIZED_DOWNLOAD: Metadata carried in
|
||||
* ISO/IEC 13818-6 Synchronized Download Protocol
|
||||
* @GST_MPEG_TS_STREAM_TYPE_MPEG2_IPMP: IPMP stream (defined in ISO/IEC 13818-11,
|
||||
* @GST_MPEGTS_STREAM_TYPE_MPEG2_IPMP: IPMP stream (defined in ISO/IEC 13818-11,
|
||||
* MPEG-2 IPMP)
|
||||
* @GST_MPEG_TS_STREAM_TYPE_VIDEO_H264: AVC video stream conforming to one or
|
||||
* @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_MPEG_TS_STREAM_TYPE_AUDIO_AAC_CLEAN: ISO/IEC 14496-3 Audio, without
|
||||
* @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_MPEG_TS_STREAM_TYPE_MPEG4_TIMED_TEXT: ISO/IEC 14496-17 Text
|
||||
* @GST_MPEG_TS_STREAM_TYPE_VIDEO_RVC: Auxiliary video stream as defined in
|
||||
* @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
|
||||
* @GST_MPEG_TS_STREAM_TYPE_VIDEO_H264_SVC_SUB_BITSTREAM: SVC video sub-bitstream
|
||||
* @GST_MPEGTS_STREAM_TYPE_VIDEO_H264_SVC_SUB_BITSTREAM: SVC video sub-bitstream
|
||||
* of an AVC video stream conforming to one or more profiles defined in Annex G
|
||||
* of Rec. ITU-T H.264 | ISO/IEC 14496-10
|
||||
* @GST_MPEG_TS_STREAM_TYPE_VIDEO_H264_MVC_SUB_BITSTREAM: MVC video sub-bitstream
|
||||
* @GST_MPEGTS_STREAM_TYPE_VIDEO_H264_MVC_SUB_BITSTREAM: MVC video sub-bitstream
|
||||
* 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_MPEG_TS_STREAM_TYPE_VIDEO_JP2K: Video stream conforming to one or more
|
||||
* @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
|
||||
* @GST_MPEG_TS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW: Additional view
|
||||
* @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_MPEG_TS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW: Additional view
|
||||
* @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_MPEG_TS_STREAM_TYPE_IPMP_STREAM: IPMP stream
|
||||
* @GST_MPEGTS_STREAM_TYPE_IPMP_STREAM: IPMP stream
|
||||
*
|
||||
* Type of mpeg-ts stream type.
|
||||
*
|
||||
|
@ -284,58 +284,58 @@ typedef struct _GstMpegTsPMT GstMpegTsPMT;
|
|||
* Corresponds to table 2-34 of ITU H.222.0 | ISO/IEC 13818-1
|
||||
*/
|
||||
typedef enum {
|
||||
GST_MPEG_TS_STREAM_TYPE_RESERVED_00 = 0x00,
|
||||
GST_MPEG_TS_STREAM_TYPE_VIDEO_MPEG1 = 0x01,
|
||||
GST_MPEG_TS_STREAM_TYPE_VIDEO_MPEG2 = 0x02,
|
||||
GST_MPEG_TS_STREAM_TYPE_AUDIO_MPEG1 = 0x03,
|
||||
GST_MPEG_TS_STREAM_TYPE_AUDIO_MPEG2 = 0x04,
|
||||
GST_MPEG_TS_STREAM_TYPE_PRIVATE_SECTIONS = 0x05,
|
||||
GST_MPEG_TS_STREAM_TYPE_PRIVATE_PES_PACKETS = 0x06,
|
||||
GST_MPEG_TS_STREAM_TYPE_MHEG = 0x07,
|
||||
GST_MPEG_TS_STREAM_TYPE_DSM_CC = 0x08,
|
||||
GST_MPEG_TS_STREAM_TYPE_H_222_1 = 0x09,
|
||||
GST_MPEG_TS_STREAM_TYPE_DSMCC_A = 0x0a,
|
||||
GST_MPEG_TS_STREAM_TYPE_DSMCC_B = 0x0b,
|
||||
GST_MPEG_TS_STREAM_TYPE_DSMCC_C = 0x0c,
|
||||
GST_MPEG_TS_STREAM_TYPE_DSMCC_D = 0x0d,
|
||||
GST_MPEG_TS_STREAM_TYPE_AUXILIARY = 0x0e,
|
||||
GST_MPEG_TS_STREAM_TYPE_AUDIO_AAC_ADTS = 0x0f,
|
||||
GST_MPEG_TS_STREAM_TYPE_VIDEO_MPEG4 = 0x10,
|
||||
GST_MPEG_TS_STREAM_TYPE_AUDIO_AAC_LATM = 0x11,
|
||||
GST_MPEG_TS_STREAM_TYPE_SL_FLEXMUX_PES_PACKETS = 0x12,
|
||||
GST_MPEG_TS_STREAM_TYPE_SL_FLEXMUX_SECTIONS = 0x13,
|
||||
GST_MPEG_TS_STREAM_TYPE_SYNCHRONIZED_DOWNLOAD = 0x14,
|
||||
GST_MPEG_TS_STREAM_TYPE_METADATA_PES_PACKETS = 0x15,
|
||||
GST_MPEG_TS_STREAM_TYPE_METADATA_SECTIONS = 0x16,
|
||||
GST_MPEG_TS_STREAM_TYPE_METADATA_DATA_CAROUSEL = 0x17,
|
||||
GST_MPEG_TS_STREAM_TYPE_METADATA_OBJECT_CAROUSEL = 0x18,
|
||||
GST_MPEG_TS_STREAM_TYPE_METADATA_SYNCHRONIZED_DOWNLOAD = 0x19,
|
||||
GST_MPEG_TS_STREAM_TYPE_MPEG2_IPMP = 0x1a,
|
||||
GST_MPEG_TS_STREAM_TYPE_VIDEO_H264 = 0x1b,
|
||||
GST_MPEG_TS_STREAM_TYPE_AUDIO_AAC_CLEAN = 0x1c,
|
||||
GST_MPEG_TS_STREAM_TYPE_MPEG4_TIMED_TEXT = 0x1d,
|
||||
GST_MPEG_TS_STREAM_TYPE_VIDEO_RVC = 0x1e,
|
||||
GST_MPEG_TS_STREAM_TYPE_VIDEO_H264_SVC_SUB_BITSTREAM = 0x1f,
|
||||
GST_MPEG_TS_STREAM_TYPE_VIDEO_H264_MVC_SUB_BITSTREAM = 0x20,
|
||||
GST_MPEG_TS_STREAM_TYPE_VIDEO_JP2K = 0x21,
|
||||
GST_MPEG_TS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW = 0x22,
|
||||
GST_MPEG_TS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW = 0x23,
|
||||
GST_MPEG_TS_STREAM_TYPE_VIDEO_HEVC = 0x24,
|
||||
GST_MPEGTS_STREAM_TYPE_RESERVED_00 = 0x00,
|
||||
GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1 = 0x01,
|
||||
GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2 = 0x02,
|
||||
GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG1 = 0x03,
|
||||
GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG2 = 0x04,
|
||||
GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS = 0x05,
|
||||
GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS = 0x06,
|
||||
GST_MPEGTS_STREAM_TYPE_MHEG = 0x07,
|
||||
GST_MPEGTS_STREAM_TYPE_DSM_CC = 0x08,
|
||||
GST_MPEGTS_STREAM_TYPE_H_222_1 = 0x09,
|
||||
GST_MPEGTS_STREAM_TYPE_DSMCC_A = 0x0a,
|
||||
GST_MPEGTS_STREAM_TYPE_DSMCC_B = 0x0b,
|
||||
GST_MPEGTS_STREAM_TYPE_DSMCC_C = 0x0c,
|
||||
GST_MPEGTS_STREAM_TYPE_DSMCC_D = 0x0d,
|
||||
GST_MPEGTS_STREAM_TYPE_AUXILIARY = 0x0e,
|
||||
GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_ADTS = 0x0f,
|
||||
GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG4 = 0x10,
|
||||
GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_LATM = 0x11,
|
||||
GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_PES_PACKETS = 0x12,
|
||||
GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS = 0x13,
|
||||
GST_MPEGTS_STREAM_TYPE_SYNCHRONIZED_DOWNLOAD = 0x14,
|
||||
GST_MPEGTS_STREAM_TYPE_METADATA_PES_PACKETS = 0x15,
|
||||
GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS = 0x16,
|
||||
GST_MPEGTS_STREAM_TYPE_METADATA_DATA_CAROUSEL = 0x17,
|
||||
GST_MPEGTS_STREAM_TYPE_METADATA_OBJECT_CAROUSEL = 0x18,
|
||||
GST_MPEGTS_STREAM_TYPE_METADATA_SYNCHRONIZED_DOWNLOAD = 0x19,
|
||||
GST_MPEGTS_STREAM_TYPE_MPEG2_IPMP = 0x1a,
|
||||
GST_MPEGTS_STREAM_TYPE_VIDEO_H264 = 0x1b,
|
||||
GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_CLEAN = 0x1c,
|
||||
GST_MPEGTS_STREAM_TYPE_MPEG4_TIMED_TEXT = 0x1d,
|
||||
GST_MPEGTS_STREAM_TYPE_VIDEO_RVC = 0x1e,
|
||||
GST_MPEGTS_STREAM_TYPE_VIDEO_H264_SVC_SUB_BITSTREAM = 0x1f,
|
||||
GST_MPEGTS_STREAM_TYPE_VIDEO_H264_MVC_SUB_BITSTREAM = 0x20,
|
||||
GST_MPEGTS_STREAM_TYPE_VIDEO_JP2K = 0x21,
|
||||
GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW = 0x22,
|
||||
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_MPEG_TS_STREAM_TYPE_IPMP_STREAM = 0x7f
|
||||
GST_MPEGTS_STREAM_TYPE_IPMP_STREAM = 0x7f
|
||||
/* 0x80 - 0xff : User Private (or defined in other specs) */
|
||||
} GstMpegTsStreamType;
|
||||
} GstMpegtsStreamType;
|
||||
|
||||
/**
|
||||
* GstMpegTsPMTStream:
|
||||
* @stream_type: the type of stream. See #GstMpegTsStreamType
|
||||
* GstMpegtsPMTStream:
|
||||
* @stream_type: the type of stream. See #GstMpegtsStreamType
|
||||
* @pid: the PID of the stream
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): the descriptors of the
|
||||
* @descriptors: (element-type GstMpegtsDescriptor): the descriptors of the
|
||||
* stream
|
||||
*
|
||||
* An individual stream definition.
|
||||
*/
|
||||
struct _GstMpegTsPMTStream
|
||||
struct _GstMpegtsPMTStream
|
||||
{
|
||||
guint8 stream_type;
|
||||
guint16 pid;
|
||||
|
@ -344,17 +344,17 @@ struct _GstMpegTsPMTStream
|
|||
};
|
||||
|
||||
/**
|
||||
* GstMpegTsPMT:
|
||||
* GstMpegtsPMT:
|
||||
* @pcr_pid: PID of the stream containing PCR
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): array of #GstMpegTsDescriptor
|
||||
* @streams: (element-type GstMpegTsPMTStream): Array of #GstMpegTsPMTStream
|
||||
* @descriptors: (element-type GstMpegtsDescriptor): array of #GstMpegtsDescriptor
|
||||
* @streams: (element-type GstMpegtsPMTStream): Array of #GstMpegtsPMTStream
|
||||
*
|
||||
* Program Map Table (ISO/IEC 13818-1).
|
||||
*
|
||||
* The program_number is contained in the subtable_extension field of the
|
||||
* container #GstMpegTsSection.
|
||||
* container #GstMpegtsSection.
|
||||
*/
|
||||
struct _GstMpegTsPMT
|
||||
struct _GstMpegtsPMT
|
||||
{
|
||||
guint16 pcr_pid;
|
||||
guint16 program_number;
|
||||
|
@ -366,32 +366,32 @@ struct _GstMpegTsPMT
|
|||
GType gst_mpegts_pmt_get_type (void);
|
||||
GType gst_mpegts_pmt_stream_get_type (void);
|
||||
|
||||
GstMpegTsPMT *gst_mpegts_pmt_new (void);
|
||||
GstMpegTsPMTStream *gst_mpegts_pmt_stream_new (void);
|
||||
const GstMpegTsPMT *gst_mpegts_section_get_pmt (GstMpegTsSection *section);
|
||||
GstMpegTsSection *gst_mpegts_section_from_pmt (GstMpegTsPMT *pmt, guint16 pid);
|
||||
GstMpegtsPMT *gst_mpegts_pmt_new (void);
|
||||
GstMpegtsPMTStream *gst_mpegts_pmt_stream_new (void);
|
||||
const GstMpegtsPMT *gst_mpegts_section_get_pmt (GstMpegtsSection *section);
|
||||
GstMpegtsSection *gst_mpegts_section_from_pmt (GstMpegtsPMT *pmt, guint16 pid);
|
||||
|
||||
/* TSDT */
|
||||
|
||||
GPtrArray *gst_mpegts_section_get_tsdt (GstMpegTsSection *section);
|
||||
GPtrArray *gst_mpegts_section_get_tsdt (GstMpegtsSection *section);
|
||||
|
||||
|
||||
/* generic */
|
||||
|
||||
#define gst_mpegts_section_ref(section) ((GstMpegTsSection*) gst_mini_object_ref (GST_MINI_OBJECT_CAST (section)))
|
||||
#define gst_mpegts_section_ref(section) ((GstMpegtsSection*) gst_mini_object_ref (GST_MINI_OBJECT_CAST (section)))
|
||||
#define gst_mpegts_section_unref(section) (gst_mini_object_unref (GST_MINI_OBJECT_CAST (section)))
|
||||
|
||||
GstMessage *gst_message_new_mpegts_section (GstObject *parent, GstMpegTsSection *section);
|
||||
gboolean gst_mpegts_section_send_event (GstMpegTsSection * section, GstElement * element);
|
||||
GstMpegTsSection *gst_event_parse_mpegts_section (GstEvent * event);
|
||||
GstMessage *gst_message_new_mpegts_section (GstObject *parent, GstMpegtsSection *section);
|
||||
gboolean gst_mpegts_section_send_event (GstMpegtsSection * section, GstElement * element);
|
||||
GstMpegtsSection *gst_event_parse_mpegts_section (GstEvent * event);
|
||||
|
||||
GstMpegTsSection *gst_message_parse_mpegts_section (GstMessage *message);
|
||||
GstMpegtsSection *gst_message_parse_mpegts_section (GstMessage *message);
|
||||
|
||||
GstMpegTsSection *gst_mpegts_section_new (guint16 pid,
|
||||
GstMpegtsSection *gst_mpegts_section_new (guint16 pid,
|
||||
guint8 * data,
|
||||
gsize data_size);
|
||||
|
||||
guint8 *gst_mpegts_section_packetize (GstMpegTsSection * section, gsize * output_size);
|
||||
guint8 *gst_mpegts_section_packetize (GstMpegtsSection * section, gsize * output_size);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
|
@ -87,9 +87,9 @@ static gboolean mpegts_base_sink_event (GstPad * pad, GstObject * parent,
|
|||
static GstStateChangeReturn mpegts_base_change_state (GstElement * element,
|
||||
GstStateChange transition);
|
||||
static gboolean mpegts_base_get_tags_from_eit (MpegTSBase * base,
|
||||
GstMpegTsSection * section);
|
||||
GstMpegtsSection * section);
|
||||
static gboolean mpegts_base_parse_atsc_mgt (MpegTSBase * base,
|
||||
GstMpegTsSection * section);
|
||||
GstMpegtsSection * section);
|
||||
static gboolean remove_each_program (gpointer key, MpegTSBaseProgram * program,
|
||||
MpegTSBase * base);
|
||||
|
||||
|
@ -273,10 +273,10 @@ mpegts_base_finalize (GObject * object)
|
|||
/* returns NULL if no matching descriptor found *
|
||||
* otherwise returns a descriptor that needs to *
|
||||
* be freed */
|
||||
const GstMpegTsDescriptor *
|
||||
const GstMpegtsDescriptor *
|
||||
mpegts_get_descriptor_from_stream (MpegTSBaseStream * stream, guint8 tag)
|
||||
{
|
||||
GstMpegTsPMTStream *pmt = stream->stream;
|
||||
GstMpegtsPMTStream *pmt = stream->stream;
|
||||
|
||||
GST_DEBUG ("Searching for tag 0x%02x in stream 0x%04x (stream_type 0x%02x)",
|
||||
tag, stream->pid, stream->stream_type);
|
||||
|
@ -316,10 +316,10 @@ mpegts_pid_in_active_programs (MpegTSBase * base, guint16 pid)
|
|||
/* returns NULL if no matching descriptor found *
|
||||
* otherwise returns a descriptor that needs to *
|
||||
* be freed */
|
||||
const GstMpegTsDescriptor *
|
||||
const GstMpegtsDescriptor *
|
||||
mpegts_get_descriptor_from_program (MpegTSBaseProgram * program, guint8 tag)
|
||||
{
|
||||
const GstMpegTsPMT *pmt = program->pmt;
|
||||
const GstMpegtsPMT *pmt = program->pmt;
|
||||
|
||||
return gst_mpegts_find_descriptor (pmt->descriptors, tag);
|
||||
}
|
||||
|
@ -427,7 +427,7 @@ mpegts_base_remove_program (MpegTSBase * base, gint program_number)
|
|||
static guint32
|
||||
get_registration_from_descriptors (GPtrArray * descriptors)
|
||||
{
|
||||
const GstMpegTsDescriptor *desc;
|
||||
const GstMpegtsDescriptor *desc;
|
||||
|
||||
if ((desc =
|
||||
gst_mpegts_find_descriptor (descriptors,
|
||||
|
@ -444,7 +444,7 @@ get_registration_from_descriptors (GPtrArray * descriptors)
|
|||
static MpegTSBaseStream *
|
||||
mpegts_base_program_add_stream (MpegTSBase * base,
|
||||
MpegTSBaseProgram * program, guint16 pid, guint8 stream_type,
|
||||
GstMpegTsPMTStream * stream)
|
||||
GstMpegtsPMTStream * stream)
|
||||
{
|
||||
MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base);
|
||||
MpegTSBaseStream *bstream;
|
||||
|
@ -507,7 +507,7 @@ mpegts_base_program_remove_stream (MpegTSBase * base,
|
|||
/* Return TRUE if programs are equal */
|
||||
static gboolean
|
||||
mpegts_base_is_same_program (MpegTSBase * base, MpegTSBaseProgram * oldprogram,
|
||||
guint16 new_pmt_pid, const GstMpegTsPMT * new_pmt)
|
||||
guint16 new_pmt_pid, const GstMpegtsPMT * new_pmt)
|
||||
{
|
||||
guint i, nbstreams;
|
||||
MpegTSBaseStream *oldstream;
|
||||
|
@ -528,7 +528,7 @@ mpegts_base_is_same_program (MpegTSBase * base, MpegTSBaseProgram * oldprogram,
|
|||
/* Check the streams */
|
||||
nbstreams = new_pmt->streams->len;
|
||||
for (i = 0; i < nbstreams; ++i) {
|
||||
GstMpegTsPMTStream *stream = g_ptr_array_index (new_pmt->streams, i);
|
||||
GstMpegtsPMTStream *stream = g_ptr_array_index (new_pmt->streams, i);
|
||||
|
||||
oldstream = oldprogram->streams[stream->pid];
|
||||
if (!oldstream) {
|
||||
|
@ -574,7 +574,7 @@ mpegts_base_deactivate_program (MpegTSBase * base, MpegTSBaseProgram * program)
|
|||
|
||||
if (program->pmt) {
|
||||
for (i = 0; i < program->pmt->streams->len; ++i) {
|
||||
GstMpegTsPMTStream *stream = g_ptr_array_index (program->pmt->streams, i);
|
||||
GstMpegtsPMTStream *stream = g_ptr_array_index (program->pmt->streams, i);
|
||||
|
||||
mpegts_base_program_remove_stream (base, program, stream->pid);
|
||||
|
||||
|
@ -582,8 +582,8 @@ mpegts_base_deactivate_program (MpegTSBase * base, MpegTSBaseProgram * program)
|
|||
* program */
|
||||
if (!mpegts_pid_in_active_programs (base, stream->pid)) {
|
||||
switch (stream->stream_type) {
|
||||
case GST_MPEG_TS_STREAM_TYPE_SCTE_DSMCC_DCB:
|
||||
case GST_MPEG_TS_STREAM_TYPE_SCTE_SIGNALING:
|
||||
case GST_MPEGTS_STREAM_TYPE_SCTE_DSMCC_DCB:
|
||||
case GST_MPEGTS_STREAM_TYPE_SCTE_SIGNALING:
|
||||
{
|
||||
guint32 registration_id =
|
||||
get_registration_from_descriptors (stream->descriptors);
|
||||
|
@ -594,15 +594,15 @@ mpegts_base_deactivate_program (MpegTSBase * base, MpegTSBaseProgram * program)
|
|||
break;
|
||||
/* Fall through on purpose - remove this PID from known_psi */
|
||||
}
|
||||
case GST_MPEG_TS_STREAM_TYPE_PRIVATE_SECTIONS:
|
||||
case GST_MPEG_TS_STREAM_TYPE_MHEG:
|
||||
case GST_MPEG_TS_STREAM_TYPE_DSM_CC:
|
||||
case GST_MPEG_TS_STREAM_TYPE_DSMCC_A:
|
||||
case GST_MPEG_TS_STREAM_TYPE_DSMCC_B:
|
||||
case GST_MPEG_TS_STREAM_TYPE_DSMCC_C:
|
||||
case GST_MPEG_TS_STREAM_TYPE_DSMCC_D:
|
||||
case GST_MPEG_TS_STREAM_TYPE_SL_FLEXMUX_SECTIONS:
|
||||
case GST_MPEG_TS_STREAM_TYPE_METADATA_SECTIONS:
|
||||
case GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS:
|
||||
case GST_MPEGTS_STREAM_TYPE_MHEG:
|
||||
case GST_MPEGTS_STREAM_TYPE_DSM_CC:
|
||||
case GST_MPEGTS_STREAM_TYPE_DSMCC_A:
|
||||
case GST_MPEGTS_STREAM_TYPE_DSMCC_B:
|
||||
case GST_MPEGTS_STREAM_TYPE_DSMCC_C:
|
||||
case GST_MPEGTS_STREAM_TYPE_DSMCC_D:
|
||||
case GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS:
|
||||
case GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS:
|
||||
/* Set known PSI streams */
|
||||
if (base->parse_private_sections)
|
||||
MPEGTS_BIT_UNSET (base->known_psi, stream->pid);
|
||||
|
@ -630,7 +630,7 @@ mpegts_base_deactivate_program (MpegTSBase * base, MpegTSBaseProgram * program)
|
|||
|
||||
static void
|
||||
mpegts_base_activate_program (MpegTSBase * base, MpegTSBaseProgram * program,
|
||||
guint16 pmt_pid, GstMpegTsSection * section, const GstMpegTsPMT * pmt,
|
||||
guint16 pmt_pid, GstMpegtsSection * section, const GstMpegtsPMT * pmt,
|
||||
gboolean initial_program)
|
||||
{
|
||||
guint i;
|
||||
|
@ -657,11 +657,11 @@ mpegts_base_activate_program (MpegTSBase * base, MpegTSBaseProgram * program,
|
|||
program->program_number, SAFE_FOURCC_ARGS (program->registration_id));
|
||||
|
||||
for (i = 0; i < pmt->streams->len; ++i) {
|
||||
GstMpegTsPMTStream *stream = g_ptr_array_index (pmt->streams, i);
|
||||
GstMpegtsPMTStream *stream = g_ptr_array_index (pmt->streams, i);
|
||||
|
||||
switch (stream->stream_type) {
|
||||
case GST_MPEG_TS_STREAM_TYPE_SCTE_DSMCC_DCB:
|
||||
case GST_MPEG_TS_STREAM_TYPE_SCTE_SIGNALING:
|
||||
case GST_MPEGTS_STREAM_TYPE_SCTE_DSMCC_DCB:
|
||||
case GST_MPEGTS_STREAM_TYPE_SCTE_SIGNALING:
|
||||
{
|
||||
guint32 registration_id =
|
||||
get_registration_from_descriptors (stream->descriptors);
|
||||
|
@ -670,15 +670,15 @@ mpegts_base_activate_program (MpegTSBase * base, MpegTSBaseProgram * program,
|
|||
break;
|
||||
/* Fall through on purpose - remove this PID from known_psi */
|
||||
}
|
||||
case GST_MPEG_TS_STREAM_TYPE_PRIVATE_SECTIONS:
|
||||
case GST_MPEG_TS_STREAM_TYPE_MHEG:
|
||||
case GST_MPEG_TS_STREAM_TYPE_DSM_CC:
|
||||
case GST_MPEG_TS_STREAM_TYPE_DSMCC_A:
|
||||
case GST_MPEG_TS_STREAM_TYPE_DSMCC_B:
|
||||
case GST_MPEG_TS_STREAM_TYPE_DSMCC_C:
|
||||
case GST_MPEG_TS_STREAM_TYPE_DSMCC_D:
|
||||
case GST_MPEG_TS_STREAM_TYPE_SL_FLEXMUX_SECTIONS:
|
||||
case GST_MPEG_TS_STREAM_TYPE_METADATA_SECTIONS:
|
||||
case GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS:
|
||||
case GST_MPEGTS_STREAM_TYPE_MHEG:
|
||||
case GST_MPEGTS_STREAM_TYPE_DSM_CC:
|
||||
case GST_MPEGTS_STREAM_TYPE_DSMCC_A:
|
||||
case GST_MPEGTS_STREAM_TYPE_DSMCC_B:
|
||||
case GST_MPEGTS_STREAM_TYPE_DSMCC_C:
|
||||
case GST_MPEGTS_STREAM_TYPE_DSMCC_D:
|
||||
case GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS:
|
||||
case GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS:
|
||||
/* Set known PSI streams */
|
||||
if (base->parse_private_sections)
|
||||
MPEGTS_BIT_SET (base->known_psi, stream->pid);
|
||||
|
@ -719,7 +719,7 @@ mpegts_base_activate_program (MpegTSBase * base, MpegTSBaseProgram * program,
|
|||
|
||||
|
||||
static gboolean
|
||||
mpegts_base_apply_pat (MpegTSBase * base, GstMpegTsSection * section)
|
||||
mpegts_base_apply_pat (MpegTSBase * base, GstMpegtsSection * section)
|
||||
{
|
||||
GPtrArray *pat = gst_mpegts_section_get_pat (section);
|
||||
GPtrArray *old_pat;
|
||||
|
@ -745,7 +745,7 @@ mpegts_base_apply_pat (MpegTSBase * base, GstMpegTsSection * section)
|
|||
GST_LOG ("Activating new Program Association Table");
|
||||
/* activate the new table */
|
||||
for (i = 0; i < pat->len; ++i) {
|
||||
GstMpegTsPatProgram *patp = g_ptr_array_index (pat, i);
|
||||
GstMpegtsPatProgram *patp = g_ptr_array_index (pat, i);
|
||||
|
||||
program = mpegts_base_get_program (base, patp->program_number);
|
||||
if (program) {
|
||||
|
@ -781,7 +781,7 @@ mpegts_base_apply_pat (MpegTSBase * base, GstMpegTsSection * section)
|
|||
GST_LOG ("Deactivating old Program Association Table");
|
||||
|
||||
for (i = 0; i < old_pat->len; ++i) {
|
||||
GstMpegTsPatProgram *patp = g_ptr_array_index (old_pat, i);
|
||||
GstMpegtsPatProgram *patp = g_ptr_array_index (old_pat, i);
|
||||
|
||||
program = mpegts_base_get_program (base, patp->program_number);
|
||||
if (G_UNLIKELY (program == NULL)) {
|
||||
|
@ -820,9 +820,9 @@ mpegts_base_apply_pat (MpegTSBase * base, GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
mpegts_base_apply_pmt (MpegTSBase * base, GstMpegTsSection * section)
|
||||
mpegts_base_apply_pmt (MpegTSBase * base, GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsPMT *pmt;
|
||||
const GstMpegtsPMT *pmt;
|
||||
MpegTSBaseProgram *program, *old_program;
|
||||
guint program_number;
|
||||
gboolean initial_program = TRUE;
|
||||
|
@ -893,7 +893,7 @@ same_program:
|
|||
}
|
||||
|
||||
static void
|
||||
mpegts_base_handle_psi (MpegTSBase * base, GstMpegTsSection * section)
|
||||
mpegts_base_handle_psi (MpegTSBase * base, GstMpegtsSection * section)
|
||||
{
|
||||
gboolean post_message = TRUE;
|
||||
|
||||
|
@ -932,9 +932,9 @@ mpegts_base_handle_psi (MpegTSBase * base, GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
mpegts_base_parse_atsc_mgt (MpegTSBase * base, GstMpegTsSection * section)
|
||||
mpegts_base_parse_atsc_mgt (MpegTSBase * base, GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsAtscMGT *mgt;
|
||||
const GstMpegtsAtscMGT *mgt;
|
||||
gint i;
|
||||
|
||||
mgt = gst_mpegts_section_get_atsc_mgt (section);
|
||||
|
@ -942,12 +942,12 @@ mpegts_base_parse_atsc_mgt (MpegTSBase * base, GstMpegTsSection * section)
|
|||
return FALSE;
|
||||
|
||||
for (i = 0; i < mgt->tables->len; ++i) {
|
||||
GstMpegTsAtscMGTTable *table = g_ptr_array_index (mgt->tables, i);
|
||||
GstMpegtsAtscMGTTable *table = g_ptr_array_index (mgt->tables, i);
|
||||
|
||||
if ((table->table_type >= GST_MPEG_TS_ATSC_MGT_TABLE_TYPE_EIT0 &&
|
||||
table->table_type <= GST_MPEG_TS_ATSC_MGT_TABLE_TYPE_EIT127) ||
|
||||
(table->table_type >= GST_MPEG_TS_ATSC_MGT_TABLE_TYPE_ETT0 &&
|
||||
table->table_type <= GST_MPEG_TS_ATSC_MGT_TABLE_TYPE_ETT127)) {
|
||||
if ((table->table_type >= GST_MPEGTS_ATSC_MGT_TABLE_TYPE_EIT0 &&
|
||||
table->table_type <= GST_MPEGTS_ATSC_MGT_TABLE_TYPE_EIT127) ||
|
||||
(table->table_type >= GST_MPEGTS_ATSC_MGT_TABLE_TYPE_ETT0 &&
|
||||
table->table_type <= GST_MPEGTS_ATSC_MGT_TABLE_TYPE_ETT127)) {
|
||||
MPEGTS_BIT_SET (base->known_psi, table->pid);
|
||||
}
|
||||
}
|
||||
|
@ -956,9 +956,9 @@ mpegts_base_parse_atsc_mgt (MpegTSBase * base, GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
mpegts_base_get_tags_from_eit (MpegTSBase * base, GstMpegTsSection * section)
|
||||
mpegts_base_get_tags_from_eit (MpegTSBase * base, GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsEIT *eit;
|
||||
const GstMpegtsEIT *eit;
|
||||
guint i;
|
||||
MpegTSBaseProgram *program;
|
||||
|
||||
|
@ -981,8 +981,8 @@ mpegts_base_get_tags_from_eit (MpegTSBase * base, GstMpegTsSection * section)
|
|||
|
||||
if (program && eit->present_following) {
|
||||
for (i = 0; i < eit->events->len; i++) {
|
||||
GstMpegTsEITEvent *event = g_ptr_array_index (eit->events, i);
|
||||
const GstMpegTsDescriptor *desc;
|
||||
GstMpegtsEITEvent *event = g_ptr_array_index (eit->events, i);
|
||||
const GstMpegtsDescriptor *desc;
|
||||
|
||||
if (event->running_status == RUNNING_STATUS_RUNNING) {
|
||||
program->event_id = event->event_id;
|
||||
|
@ -1174,14 +1174,14 @@ mpegts_base_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
|
|||
&& MPEGTS_BIT_IS_SET (base->known_psi, packet.pid)) {
|
||||
/* base PSI data */
|
||||
GList *others, *tmp;
|
||||
GstMpegTsSection *section;
|
||||
GstMpegtsSection *section;
|
||||
|
||||
section = mpegts_packetizer_push_section (packetizer, &packet, &others);
|
||||
if (section)
|
||||
mpegts_base_handle_psi (base, section);
|
||||
if (G_UNLIKELY (others)) {
|
||||
for (tmp = others; tmp; tmp = tmp->next)
|
||||
mpegts_base_handle_psi (base, (GstMpegTsSection *) tmp->data);
|
||||
mpegts_base_handle_psi (base, (GstMpegtsSection *) tmp->data);
|
||||
g_list_free (others);
|
||||
}
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ struct _MpegTSBaseStream
|
|||
/* Content of the registration descriptor (if present) */
|
||||
guint32 registration_id;
|
||||
|
||||
GstMpegTsPMTStream *stream;
|
||||
GstMpegtsPMTStream *stream;
|
||||
};
|
||||
|
||||
struct _MpegTSBaseProgram
|
||||
|
@ -75,8 +75,8 @@ struct _MpegTSBaseProgram
|
|||
/* Content of the registration descriptor (if present) */
|
||||
guint32 registration_id;
|
||||
|
||||
GstMpegTsSection *section;
|
||||
const GstMpegTsPMT *pmt;
|
||||
GstMpegtsSection *section;
|
||||
const GstMpegtsPMT *pmt;
|
||||
|
||||
MpegTSBaseStream **streams;
|
||||
GList *stream_list;
|
||||
|
@ -165,7 +165,7 @@ struct _MpegTSBaseClass {
|
|||
|
||||
/* Virtual methods */
|
||||
void (*reset) (MpegTSBase *base);
|
||||
GstFlowReturn (*push) (MpegTSBase *base, MpegTSPacketizerPacket *packet, GstMpegTsSection * section);
|
||||
GstFlowReturn (*push) (MpegTSBase *base, MpegTSPacketizerPacket *packet, GstMpegtsSection * section);
|
||||
/* takes ownership of @event */
|
||||
gboolean (*push_event) (MpegTSBase *base, GstEvent * event);
|
||||
|
||||
|
@ -213,8 +213,8 @@ G_GNUC_INTERNAL GType mpegts_base_get_type(void);
|
|||
G_GNUC_INTERNAL MpegTSBaseProgram *mpegts_base_get_program (MpegTSBase * base, gint program_number);
|
||||
G_GNUC_INTERNAL MpegTSBaseProgram *mpegts_base_add_program (MpegTSBase * base, gint program_number, guint16 pmt_pid);
|
||||
|
||||
G_GNUC_INTERNAL const GstMpegTsDescriptor *mpegts_get_descriptor_from_stream (MpegTSBaseStream * stream, guint8 tag);
|
||||
G_GNUC_INTERNAL const GstMpegTsDescriptor *mpegts_get_descriptor_from_program (MpegTSBaseProgram * program, guint8 tag);
|
||||
G_GNUC_INTERNAL const GstMpegtsDescriptor *mpegts_get_descriptor_from_stream (MpegTSBaseStream * stream, guint8 tag);
|
||||
G_GNUC_INTERNAL const GstMpegtsDescriptor *mpegts_get_descriptor_from_program (MpegTSBaseProgram * program, guint8 tag);
|
||||
|
||||
G_GNUC_INTERNAL gboolean
|
||||
mpegts_base_handle_seek_event(MpegTSBase * base, GstPad * pad, GstEvent * event);
|
||||
|
|
|
@ -469,12 +469,12 @@ mpegts_packetizer_parse_packet (MpegTSPacketizer2 * packetizer,
|
|||
return PACKET_OK;
|
||||
}
|
||||
|
||||
static GstMpegTsSection *
|
||||
static GstMpegtsSection *
|
||||
mpegts_packetizer_parse_section_header (MpegTSPacketizer2 * packetizer,
|
||||
MpegTSPacketizerStream * stream)
|
||||
{
|
||||
MpegTSPacketizerStreamSubtable *subtable;
|
||||
GstMpegTsSection *res;
|
||||
GstMpegtsSection *res;
|
||||
|
||||
subtable =
|
||||
find_subtable (stream->subtables, stream->table_id,
|
||||
|
@ -874,7 +874,7 @@ mpegts_packetizer_has_packets (MpegTSPacketizer2 * packetizer)
|
|||
* * The section applies now (current_next_indicator)
|
||||
* * The section is an update or was never seen
|
||||
*
|
||||
* The section should be a new GstMpegTsSection:
|
||||
* The section should be a new GstMpegtsSection:
|
||||
* * properly initialized
|
||||
* * With pid, table_id AND section_type set (move logic from mpegtsbase)
|
||||
* * With data copied into it (yes, minor overhead)
|
||||
|
@ -884,12 +884,12 @@ mpegts_packetizer_has_packets (MpegTSPacketizer2 * packetizer)
|
|||
* If more than one section is available, the 'remaining' field will
|
||||
* be set to the beginning of a valid GList containing other sections.
|
||||
* */
|
||||
GstMpegTsSection *
|
||||
GstMpegtsSection *
|
||||
mpegts_packetizer_push_section (MpegTSPacketizer2 * packetizer,
|
||||
MpegTSPacketizerPacket * packet, GList ** remaining)
|
||||
{
|
||||
GstMpegTsSection *section;
|
||||
GstMpegTsSection *res = NULL;
|
||||
GstMpegtsSection *section;
|
||||
GstMpegtsSection *res = NULL;
|
||||
MpegTSPacketizerStream *stream;
|
||||
gboolean long_packet;
|
||||
guint8 pointer = 0, table_id;
|
||||
|
|
|
@ -348,7 +348,7 @@ G_GNUC_INTERNAL void mpegts_packetizer_clear_packet (MpegTSPacketizer2 *packetiz
|
|||
G_GNUC_INTERNAL void mpegts_packetizer_remove_stream(MpegTSPacketizer2 *packetizer,
|
||||
gint16 pid);
|
||||
|
||||
G_GNUC_INTERNAL GstMpegTsSection *mpegts_packetizer_push_section (MpegTSPacketizer2 *packetzer,
|
||||
G_GNUC_INTERNAL GstMpegtsSection *mpegts_packetizer_push_section (MpegTSPacketizer2 *packetzer,
|
||||
MpegTSPacketizerPacket *packet, GList **remaining);
|
||||
|
||||
/* Only valid if calculate_offset is TRUE */
|
||||
|
|
|
@ -91,7 +91,7 @@ mpegts_parse_program_stopped (MpegTSBase * base, MpegTSBaseProgram * program);
|
|||
|
||||
static GstFlowReturn
|
||||
mpegts_parse_push (MpegTSBase * base, MpegTSPacketizerPacket * packet,
|
||||
GstMpegTsSection * section);
|
||||
GstMpegtsSection * section);
|
||||
|
||||
static MpegTSParsePad *mpegts_parse_create_tspad (MpegTSParse2 * parse,
|
||||
const gchar * name);
|
||||
|
@ -402,7 +402,7 @@ mpegts_parse_release_pad (GstElement * element, GstPad * pad)
|
|||
|
||||
static GstFlowReturn
|
||||
mpegts_parse_tspad_push_section (MpegTSParse2 * parse, MpegTSParsePad * tspad,
|
||||
GstMpegTsSection * section, MpegTSPacketizerPacket * packet)
|
||||
GstMpegtsSection * section, MpegTSPacketizerPacket * packet)
|
||||
{
|
||||
GstFlowReturn ret = GST_FLOW_OK;
|
||||
gboolean to_push = TRUE;
|
||||
|
@ -480,7 +480,7 @@ pad_clear_for_push (GstPad * pad, MpegTSParse2 * parse)
|
|||
|
||||
static GstFlowReturn
|
||||
mpegts_parse_push (MpegTSBase * base, MpegTSPacketizerPacket * packet,
|
||||
GstMpegTsSection * section)
|
||||
GstMpegtsSection * section)
|
||||
{
|
||||
MpegTSParse2 *parse = (MpegTSParse2 *) base;
|
||||
guint32 pads_cookie;
|
||||
|
|
|
@ -275,7 +275,7 @@ gst_ts_demux_program_stopped (MpegTSBase * base, MpegTSBaseProgram * program);
|
|||
static void gst_ts_demux_reset (MpegTSBase * base);
|
||||
static GstFlowReturn
|
||||
gst_ts_demux_push (MpegTSBase * base, MpegTSPacketizerPacket * packet,
|
||||
GstMpegTsSection * section);
|
||||
GstMpegtsSection * section);
|
||||
static void gst_ts_demux_flush (MpegTSBase * base, gboolean hard);
|
||||
static GstFlowReturn gst_ts_demux_drain (MpegTSBase * base);
|
||||
static void
|
||||
|
@ -960,7 +960,7 @@ static void
|
|||
gst_ts_demux_create_tags (TSDemuxStream * stream)
|
||||
{
|
||||
MpegTSBaseStream *bstream = (MpegTSBaseStream *) stream;
|
||||
const GstMpegTsDescriptor *desc = NULL;
|
||||
const GstMpegtsDescriptor *desc = NULL;
|
||||
int i, nb;
|
||||
|
||||
desc =
|
||||
|
@ -1011,7 +1011,7 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
|
|||
gchar *name = NULL;
|
||||
GstCaps *caps = NULL;
|
||||
GstPadTemplate *template = NULL;
|
||||
const GstMpegTsDescriptor *desc = NULL;
|
||||
const GstMpegtsDescriptor *desc = NULL;
|
||||
GstPad *pad = NULL;
|
||||
|
||||
gst_ts_demux_create_tags (stream);
|
||||
|
@ -1025,7 +1025,7 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
|
|||
switch (bstream->stream_type) {
|
||||
case ST_BD_AUDIO_AC3:
|
||||
{
|
||||
const GstMpegTsDescriptor *ac3_desc;
|
||||
const GstMpegtsDescriptor *ac3_desc;
|
||||
|
||||
/* ATSC ac3 audio descriptor */
|
||||
ac3_desc =
|
||||
|
@ -1079,8 +1079,8 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
|
|||
|
||||
/* Handle non-BluRay stream types */
|
||||
switch (bstream->stream_type) {
|
||||
case GST_MPEG_TS_STREAM_TYPE_VIDEO_MPEG1:
|
||||
case GST_MPEG_TS_STREAM_TYPE_VIDEO_MPEG2:
|
||||
case GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1:
|
||||
case GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2:
|
||||
case ST_PS_VIDEO_MPEG2_DCII:
|
||||
/* FIXME : Use DCII registration code (ETV1 ?) to handle that special
|
||||
* Stream type (ST_PS_VIDEO_MPEG2_DCII) */
|
||||
|
@ -1093,12 +1093,12 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
|
|||
name = g_strdup_printf ("video_%04x", bstream->pid);
|
||||
caps = gst_caps_new_simple ("video/mpeg",
|
||||
"mpegversion", G_TYPE_INT,
|
||||
bstream->stream_type == GST_MPEG_TS_STREAM_TYPE_VIDEO_MPEG1 ? 1 : 2,
|
||||
bstream->stream_type == GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1 ? 1 : 2,
|
||||
"systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
|
||||
|
||||
break;
|
||||
case GST_MPEG_TS_STREAM_TYPE_AUDIO_MPEG1:
|
||||
case GST_MPEG_TS_STREAM_TYPE_AUDIO_MPEG2:
|
||||
case GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG1:
|
||||
case GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG2:
|
||||
GST_LOG ("mpeg audio");
|
||||
template = gst_static_pad_template_get (&audio_template);
|
||||
name = g_strdup_printf ("audio_%04x", bstream->pid);
|
||||
|
@ -1109,7 +1109,7 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
|
|||
if (program->registration_id == DRF_ID_TSHV)
|
||||
gst_caps_set_simple (caps, "layer", G_TYPE_INT, 2, NULL);
|
||||
break;
|
||||
case GST_MPEG_TS_STREAM_TYPE_PRIVATE_PES_PACKETS:
|
||||
case GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS:
|
||||
GST_LOG ("private data");
|
||||
/* FIXME: Move all of this into a common method (there might be other
|
||||
* types also, depending on registratino descriptors also
|
||||
|
@ -1202,35 +1202,35 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
|
|||
/* name = g_strdup_printf ("private_%04x", bstream->pid); */
|
||||
/* caps = gst_caps_new_simple ("hdv/aux-a", NULL); */
|
||||
break;
|
||||
case GST_MPEG_TS_STREAM_TYPE_AUDIO_AAC_ADTS:
|
||||
case GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_ADTS:
|
||||
template = gst_static_pad_template_get (&audio_template);
|
||||
name = g_strdup_printf ("audio_%04x", bstream->pid);
|
||||
caps = gst_caps_new_simple ("audio/mpeg",
|
||||
"mpegversion", G_TYPE_INT, 2,
|
||||
"stream-format", G_TYPE_STRING, "adts", NULL);
|
||||
break;
|
||||
case GST_MPEG_TS_STREAM_TYPE_AUDIO_AAC_LATM:
|
||||
case GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_LATM:
|
||||
template = gst_static_pad_template_get (&audio_template);
|
||||
name = g_strdup_printf ("audio_%04x", bstream->pid);
|
||||
caps = gst_caps_new_simple ("audio/mpeg",
|
||||
"mpegversion", G_TYPE_INT, 4,
|
||||
"stream-format", G_TYPE_STRING, "loas", NULL);
|
||||
break;
|
||||
case GST_MPEG_TS_STREAM_TYPE_VIDEO_MPEG4:
|
||||
case GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG4:
|
||||
template = gst_static_pad_template_get (&video_template);
|
||||
name = g_strdup_printf ("video_%04x", bstream->pid);
|
||||
caps = gst_caps_new_simple ("video/mpeg",
|
||||
"mpegversion", G_TYPE_INT, 4,
|
||||
"systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
|
||||
break;
|
||||
case GST_MPEG_TS_STREAM_TYPE_VIDEO_H264:
|
||||
case GST_MPEGTS_STREAM_TYPE_VIDEO_H264:
|
||||
template = gst_static_pad_template_get (&video_template);
|
||||
name = g_strdup_printf ("video_%04x", bstream->pid);
|
||||
caps = gst_caps_new_simple ("video/x-h264",
|
||||
"stream-format", G_TYPE_STRING, "byte-stream",
|
||||
"alignment", G_TYPE_STRING, "nal", NULL);
|
||||
break;
|
||||
case GST_MPEG_TS_STREAM_TYPE_VIDEO_HEVC:
|
||||
case GST_MPEGTS_STREAM_TYPE_VIDEO_HEVC:
|
||||
template = gst_static_pad_template_get (&video_template);
|
||||
name = g_strdup_printf ("video_%04x", bstream->pid);
|
||||
caps = gst_caps_new_simple ("video/x-h265",
|
||||
|
@ -1385,7 +1385,7 @@ gst_ts_demux_stream_added (MpegTSBase * base, MpegTSBaseStream * bstream,
|
|||
gst_flow_combiner_add_pad (demux->flowcombiner, stream->pad);
|
||||
}
|
||||
|
||||
if (bstream->stream_type == GST_MPEG_TS_STREAM_TYPE_VIDEO_H264) {
|
||||
if (bstream->stream_type == GST_MPEGTS_STREAM_TYPE_VIDEO_H264) {
|
||||
stream->scan_function =
|
||||
(GstTsDemuxKeyFrameScanFunction) scan_keyframe_h264;
|
||||
} else {
|
||||
|
@ -2151,7 +2151,7 @@ beach:
|
|||
|
||||
static GstFlowReturn
|
||||
gst_ts_demux_handle_packet (GstTSDemux * demux, TSDemuxStream * stream,
|
||||
MpegTSPacketizerPacket * packet, GstMpegTsSection * section)
|
||||
MpegTSPacketizerPacket * packet, GstMpegtsSection * section)
|
||||
{
|
||||
GstFlowReturn res = GST_FLOW_OK;
|
||||
|
||||
|
@ -2232,7 +2232,7 @@ gst_ts_demux_drain (MpegTSBase * base)
|
|||
|
||||
static GstFlowReturn
|
||||
gst_ts_demux_push (MpegTSBase * base, MpegTSPacketizerPacket * packet,
|
||||
GstMpegTsSection * section)
|
||||
GstMpegtsSection * section)
|
||||
{
|
||||
GstTSDemux *demux = GST_TS_DEMUX_CAST (base);
|
||||
TSDemuxStream *stream = NULL;
|
||||
|
|
|
@ -1737,7 +1737,7 @@ mpegtsmux_change_state (GstElement * element, GstStateChange transition)
|
|||
static gboolean
|
||||
mpegtsmux_send_event (GstElement * element, GstEvent * event)
|
||||
{
|
||||
GstMpegTsSection *section;
|
||||
GstMpegtsSection *section;
|
||||
MpegTsMux *mux = GST_MPEG_TSMUX (element);
|
||||
|
||||
g_return_val_if_fail (event != NULL, FALSE);
|
||||
|
|
|
@ -263,14 +263,14 @@ tsmux_get_si_interval (TsMux * mux)
|
|||
/**
|
||||
* tsmux_add_mpegts_si_section:
|
||||
* @mux: a #TsMux
|
||||
* @section: (transfer full): a #GstMpegTsSection to add
|
||||
* @section: (transfer full): a #GstMpegtsSection to add
|
||||
*
|
||||
* Add a Service Information #GstMpegTsSection to the stream
|
||||
* Add a Service Information #GstMpegtsSection to the stream
|
||||
*
|
||||
* Returns: #TRUE on success, #FALSE otherwise
|
||||
*/
|
||||
gboolean
|
||||
tsmux_add_mpegts_si_section (TsMux * mux, GstMpegTsSection * section)
|
||||
tsmux_add_mpegts_si_section (TsMux * mux, GstMpegtsSection * section)
|
||||
{
|
||||
TsMuxSection *tsmux_section;
|
||||
|
||||
|
@ -842,7 +842,7 @@ tsmux_write_ts_header (guint8 * buf, TsMuxPacketInfo * pi,
|
|||
}
|
||||
|
||||
static gboolean
|
||||
tsmux_section_write_packet (GstMpegTsSectionType * type,
|
||||
tsmux_section_write_packet (GstMpegtsSectionType * type,
|
||||
TsMuxSection * section, TsMux * mux)
|
||||
{
|
||||
GstBuffer *section_buffer;
|
||||
|
@ -872,7 +872,7 @@ tsmux_section_write_packet (GstMpegTsSectionType * type,
|
|||
payload_written = 0;
|
||||
|
||||
/* Wrap section data in a buffer without free function.
|
||||
The data will be freed when the GstMpegTsSection is destroyed. */
|
||||
The data will be freed when the GstMpegtsSection is destroyed. */
|
||||
section_buffer = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY,
|
||||
data, data_size, 0, data_size, NULL, NULL);
|
||||
|
||||
|
@ -1138,7 +1138,7 @@ tsmux_write_pat (TsMux * mux)
|
|||
pat = gst_mpegts_pat_new ();
|
||||
|
||||
for (cur = mux->programs; cur; cur = cur->next) {
|
||||
GstMpegTsPatProgram *pat_pgm;
|
||||
GstMpegtsPatProgram *pat_pgm;
|
||||
TsMuxProgram *program = (TsMuxProgram *) cur->data;
|
||||
|
||||
pat_pgm = gst_mpegts_pat_program_new ();
|
||||
|
@ -1187,8 +1187,8 @@ tsmux_write_pmt (TsMux * mux, TsMuxProgram * program)
|
|||
* }
|
||||
* }
|
||||
*/
|
||||
GstMpegTsDescriptor *descriptor;
|
||||
GstMpegTsPMT *pmt;
|
||||
GstMpegtsDescriptor *descriptor;
|
||||
GstMpegtsPMT *pmt;
|
||||
guint8 desc[] = { 0x0F, 0xFF, 0xFC, 0xFC };
|
||||
guint i;
|
||||
|
||||
|
@ -1207,7 +1207,7 @@ tsmux_write_pmt (TsMux * mux, TsMuxProgram * program)
|
|||
|
||||
/* Write out the entries */
|
||||
for (i = 0; i < program->streams->len; i++) {
|
||||
GstMpegTsPMTStream *pmt_stream;
|
||||
GstMpegtsPMTStream *pmt_stream;
|
||||
TsMuxStream *stream = g_array_index (program->streams, TsMuxStream *, i);
|
||||
|
||||
pmt_stream = gst_mpegts_pmt_stream_new ();
|
||||
|
|
|
@ -105,7 +105,7 @@ typedef void (*TsMuxAllocFunc) (GstBuffer ** buf, void *user_data);
|
|||
|
||||
struct TsMuxSection {
|
||||
TsMuxPacketInfo pi;
|
||||
GstMpegTsSection *section;
|
||||
GstMpegtsSection *section;
|
||||
};
|
||||
|
||||
/* Information for the streams associated with one program */
|
||||
|
@ -200,7 +200,7 @@ guint tsmux_get_pmt_interval (TsMuxProgram *program);
|
|||
/* SI table management */
|
||||
void tsmux_set_si_interval (TsMux *mux, guint interval);
|
||||
guint tsmux_get_si_interval (TsMux *mux);
|
||||
gboolean tsmux_add_mpegts_si_section (TsMux * mux, GstMpegTsSection * section);
|
||||
gboolean tsmux_add_mpegts_si_section (TsMux * mux, GstMpegtsSection * section);
|
||||
|
||||
/* stream management */
|
||||
TsMuxStream * tsmux_create_stream (TsMux *mux, TsMuxStreamType stream_type, guint16 pid, gchar *language);
|
||||
|
|
|
@ -697,9 +697,9 @@ tsmux_stream_add_data (TsMuxStream * stream, guint8 * data, guint len,
|
|||
*/
|
||||
void
|
||||
tsmux_stream_get_es_descrs (TsMuxStream * stream,
|
||||
GstMpegTsPMTStream * pmt_stream)
|
||||
GstMpegtsPMTStream * pmt_stream)
|
||||
{
|
||||
GstMpegTsDescriptor *descriptor;
|
||||
GstMpegtsDescriptor *descriptor;
|
||||
|
||||
g_return_if_fail (stream != NULL);
|
||||
g_return_if_fail (pmt_stream != NULL);
|
||||
|
|
|
@ -228,7 +228,7 @@ void tsmux_stream_pcr_unref (TsMuxStream *stream);
|
|||
gboolean tsmux_stream_is_pcr (TsMuxStream *stream);
|
||||
|
||||
gboolean tsmux_stream_at_pes_start (TsMuxStream *stream);
|
||||
void tsmux_stream_get_es_descrs (TsMuxStream *stream, GstMpegTsPMTStream *pmt_stream);
|
||||
void tsmux_stream_get_es_descrs (TsMuxStream *stream, GstMpegtsPMTStream *pmt_stream);
|
||||
|
||||
gint tsmux_stream_bytes_in_buffer (TsMuxStream *stream);
|
||||
gint tsmux_stream_bytes_avail (TsMuxStream *stream);
|
||||
|
|
|
@ -70,7 +70,7 @@ cam_conditional_access_destroy (CamConditionalAccess * cas)
|
|||
}
|
||||
|
||||
static CamReturn
|
||||
send_ca_pmt (CamConditionalAccess * cas, GstMpegTsPMT * pmt,
|
||||
send_ca_pmt (CamConditionalAccess * cas, GstMpegtsPMT * pmt,
|
||||
guint8 list_management, guint8 cmd_id)
|
||||
{
|
||||
CamReturn ret;
|
||||
|
@ -108,7 +108,7 @@ send_ca_pmt (CamConditionalAccess * cas, GstMpegTsPMT * pmt,
|
|||
|
||||
CamReturn
|
||||
cam_conditional_access_set_pmt (CamConditionalAccess * cas,
|
||||
GstMpegTsPMT * pmt, CamConditionalAccessPmtFlag flag)
|
||||
GstMpegtsPMT * pmt, CamConditionalAccessPmtFlag flag)
|
||||
{
|
||||
return send_ca_pmt (cas, pmt, flag, 0x01 /* ok_descrambling */ );
|
||||
}
|
||||
|
|
|
@ -50,6 +50,6 @@ CamConditionalAccess *cam_conditional_access_new (void);
|
|||
void cam_conditional_access_destroy (CamConditionalAccess *cas);
|
||||
|
||||
CamReturn cam_conditional_access_set_pmt (CamConditionalAccess *cas,
|
||||
GstMpegTsPMT *pmt, CamConditionalAccessPmtFlag flag);
|
||||
GstMpegtsPMT *pmt, CamConditionalAccessPmtFlag flag);
|
||||
|
||||
#endif /* CAM_CONDITIONAL_ACCESS_H */
|
||||
|
|
|
@ -217,7 +217,7 @@ cam_device_ready (CamDevice * device)
|
|||
|
||||
void
|
||||
cam_device_set_pmt (CamDevice * device,
|
||||
GstMpegTsPMT * pmt, CamConditionalAccessPmtFlag flag)
|
||||
GstMpegtsPMT * pmt, CamConditionalAccessPmtFlag flag)
|
||||
{
|
||||
g_return_if_fail (device != NULL);
|
||||
g_return_if_fail (device->state == CAM_DEVICE_STATE_OPEN);
|
||||
|
|
|
@ -64,6 +64,6 @@ void cam_device_close (CamDevice *device);
|
|||
gboolean cam_device_ready (CamDevice *device);
|
||||
void cam_device_poll (CamDevice *device);
|
||||
void cam_device_set_pmt (CamDevice *device,
|
||||
GstMpegTsPMT *pmt, CamConditionalAccessPmtFlag flag);
|
||||
GstMpegtsPMT *pmt, CamConditionalAccessPmtFlag flag);
|
||||
|
||||
#endif /* CAM_DEVICE_H */
|
||||
|
|
|
@ -114,7 +114,7 @@ cam_sw_client_close (CamSwClient * client)
|
|||
}
|
||||
|
||||
static void
|
||||
send_ca_pmt (CamSwClient * client, GstMpegTsPMT * pmt,
|
||||
send_ca_pmt (CamSwClient * client, GstMpegtsPMT * pmt,
|
||||
guint8 list_management, guint8 cmd_id)
|
||||
{
|
||||
guint8 *buffer;
|
||||
|
@ -150,7 +150,7 @@ send_ca_pmt (CamSwClient * client, GstMpegTsPMT * pmt,
|
|||
}
|
||||
|
||||
void
|
||||
cam_sw_client_set_pmt (CamSwClient * client, GstMpegTsPMT * pmt)
|
||||
cam_sw_client_set_pmt (CamSwClient * client, GstMpegtsPMT * pmt)
|
||||
{
|
||||
g_return_if_fail (client != NULL);
|
||||
g_return_if_fail (pmt != NULL);
|
||||
|
@ -160,7 +160,7 @@ cam_sw_client_set_pmt (CamSwClient * client, GstMpegTsPMT * pmt)
|
|||
}
|
||||
|
||||
void
|
||||
cam_sw_client_update_pmt (CamSwClient * client, GstMpegTsPMT * pmt)
|
||||
cam_sw_client_update_pmt (CamSwClient * client, GstMpegtsPMT * pmt)
|
||||
{
|
||||
g_return_if_fail (client != NULL);
|
||||
g_return_if_fail (pmt != NULL);
|
||||
|
|
|
@ -48,7 +48,7 @@ void cam_sw_client_free (CamSwClient *sw_client);
|
|||
gboolean cam_sw_client_open (CamSwClient *sw_client, const char *sock_path);
|
||||
void cam_sw_client_close (CamSwClient *sw_client);
|
||||
|
||||
void cam_sw_client_set_pmt (CamSwClient *sw_client, GstMpegTsPMT *pmt);
|
||||
void cam_sw_client_update_pmt (CamSwClient *sw_client, GstMpegTsPMT *pmt);
|
||||
void cam_sw_client_set_pmt (CamSwClient *sw_client, GstMpegtsPMT *pmt);
|
||||
void cam_sw_client_update_pmt (CamSwClient *sw_client, GstMpegtsPMT *pmt);
|
||||
|
||||
#endif /* CAM_SW_CLIENT_H */
|
||||
|
|
|
@ -178,7 +178,7 @@ get_ca_descriptors_length (GPtrArray * descriptors)
|
|||
guint len = 0;
|
||||
|
||||
for (i = 0; i < nb_desc; i++) {
|
||||
GstMpegTsDescriptor *desc = g_ptr_array_index (descriptors, i);
|
||||
GstMpegtsDescriptor *desc = g_ptr_array_index (descriptors, i);
|
||||
if (desc->tag == 0x09)
|
||||
len += desc->length;
|
||||
}
|
||||
|
@ -193,7 +193,7 @@ write_ca_descriptors (guint8 * body, GPtrArray * descriptors)
|
|||
|
||||
nb_desc = descriptors->len;
|
||||
for (i = 0; i < nb_desc; i++) {
|
||||
GstMpegTsDescriptor *desc = g_ptr_array_index (descriptors, i);
|
||||
GstMpegtsDescriptor *desc = g_ptr_array_index (descriptors, i);
|
||||
if (desc->tag == 0x09) {
|
||||
memcpy (body, desc->data, desc->length);
|
||||
body += desc->length;
|
||||
|
@ -204,10 +204,10 @@ write_ca_descriptors (guint8 * body, GPtrArray * descriptors)
|
|||
}
|
||||
|
||||
guint8 *
|
||||
cam_build_ca_pmt (GstMpegTsPMT * pmt, guint8 list_management, guint8 cmd_id,
|
||||
cam_build_ca_pmt (GstMpegtsPMT * pmt, guint8 list_management, guint8 cmd_id,
|
||||
guint * size)
|
||||
{
|
||||
GstMpegTsSection *section = (GstMpegTsSection *) pmt;
|
||||
GstMpegtsSection *section = (GstMpegtsSection *) pmt;
|
||||
guint body_size = 0;
|
||||
guint8 *buffer;
|
||||
guint8 *body;
|
||||
|
@ -225,7 +225,7 @@ cam_build_ca_pmt (GstMpegTsPMT * pmt, guint8 list_management, guint8 cmd_id,
|
|||
body_size += 6 + len;
|
||||
|
||||
for (i = 0; i < pmt->streams->len; i++) {
|
||||
GstMpegTsPMTStream *pmtstream = g_ptr_array_index (pmt->streams, i);
|
||||
GstMpegtsPMTStream *pmtstream = g_ptr_array_index (pmt->streams, i);
|
||||
|
||||
len = get_ca_descriptors_length (pmtstream->descriptors);
|
||||
if (len > 0)
|
||||
|
@ -269,7 +269,7 @@ cam_build_ca_pmt (GstMpegTsPMT * pmt, guint8 list_management, guint8 cmd_id,
|
|||
}
|
||||
|
||||
for (i = 0; i < pmt->streams->len; i++) {
|
||||
GstMpegTsPMTStream *pmtstream = g_ptr_array_index (pmt->streams, i);
|
||||
GstMpegtsPMTStream *pmtstream = g_ptr_array_index (pmt->streams, i);
|
||||
|
||||
*body++ = pmtstream->stream_type;
|
||||
GST_WRITE_UINT16_BE (body, pmtstream->pid);
|
||||
|
|
|
@ -55,6 +55,6 @@ typedef enum
|
|||
guint8 cam_calc_length_field_size (guint length);
|
||||
guint8 cam_write_length_field (guint8 *buff, guint length);
|
||||
guint8 cam_read_length_field (guint8 *buff, guint *length);
|
||||
guint8 *cam_build_ca_pmt (GstMpegTsPMT *pmt, guint8 list_management, guint8 cmd_id, guint *size);
|
||||
guint8 *cam_build_ca_pmt (GstMpegtsPMT *pmt, guint8 list_management, guint8 cmd_id, guint *size);
|
||||
|
||||
#endif /* CAM_UTILS_H */
|
||||
|
|
|
@ -94,10 +94,10 @@ typedef struct
|
|||
gint program_number;
|
||||
guint16 pmt_pid;
|
||||
guint16 pcr_pid;
|
||||
GstMpegTsSection *section;
|
||||
GstMpegTsSection *old_section;
|
||||
const GstMpegTsPMT *pmt;
|
||||
const GstMpegTsPMT *old_pmt;
|
||||
GstMpegtsSection *section;
|
||||
GstMpegtsSection *old_section;
|
||||
const GstMpegtsPMT *pmt;
|
||||
const GstMpegtsPMT *old_pmt;
|
||||
gboolean selected;
|
||||
gboolean pmt_active;
|
||||
gboolean active;
|
||||
|
@ -117,9 +117,9 @@ static GstStateChangeReturn dvb_base_bin_change_state (GstElement * element,
|
|||
GstStateChange transition);
|
||||
static void dvb_base_bin_handle_message (GstBin * bin, GstMessage * message);
|
||||
static void dvb_base_bin_pat_info_cb (DvbBaseBin * dvbbasebin,
|
||||
GstMpegTsSection * pat);
|
||||
GstMpegtsSection * pat);
|
||||
static void dvb_base_bin_pmt_info_cb (DvbBaseBin * dvbbasebin,
|
||||
GstMpegTsSection * pmt);
|
||||
GstMpegtsSection * pmt);
|
||||
static GstPad *dvb_base_bin_request_new_pad (GstElement * element,
|
||||
GstPadTemplate * templ, const gchar * name, const GstCaps * caps);
|
||||
static void dvb_base_bin_release_pad (GstElement * element, GstPad * pad);
|
||||
|
@ -661,7 +661,7 @@ dvb_base_bin_reset_pmtlist (DvbBaseBin * dvbbasebin)
|
|||
{
|
||||
CamConditionalAccessPmtFlag flag;
|
||||
GList *walk;
|
||||
GstMpegTsPMT *pmt;
|
||||
GstMpegtsPMT *pmt;
|
||||
|
||||
walk = dvbbasebin->pmtlist;
|
||||
while (walk) {
|
||||
|
@ -677,7 +677,7 @@ dvb_base_bin_reset_pmtlist (DvbBaseBin * dvbbasebin)
|
|||
flag = CAM_CONDITIONAL_ACCESS_PMT_FLAG_MORE;
|
||||
}
|
||||
|
||||
pmt = (GstMpegTsPMT *) walk->data;
|
||||
pmt = (GstMpegtsPMT *) walk->data;
|
||||
cam_device_set_pmt (dvbbasebin->hwcam, pmt, flag);
|
||||
|
||||
walk = walk->next;
|
||||
|
@ -793,13 +793,13 @@ dvb_base_bin_rebuild_filter (DvbBaseBin * dvbbasebin)
|
|||
|
||||
static void
|
||||
dvb_base_bin_remove_pmt_streams (DvbBaseBin * dvbbasebin,
|
||||
const GstMpegTsPMT * pmt)
|
||||
const GstMpegtsPMT * pmt)
|
||||
{
|
||||
gint i;
|
||||
DvbBaseBinStream *stream;
|
||||
|
||||
for (i = 0; i < pmt->streams->len; i++) {
|
||||
GstMpegTsPMTStream *pmtstream = g_ptr_array_index (pmt->streams, i);
|
||||
GstMpegtsPMTStream *pmtstream = g_ptr_array_index (pmt->streams, i);
|
||||
|
||||
stream = dvb_base_bin_get_stream (dvbbasebin, pmtstream->pid);
|
||||
if (stream == NULL) {
|
||||
|
@ -813,13 +813,13 @@ dvb_base_bin_remove_pmt_streams (DvbBaseBin * dvbbasebin,
|
|||
}
|
||||
|
||||
static void
|
||||
dvb_base_bin_add_pmt_streams (DvbBaseBin * dvbbasebin, const GstMpegTsPMT * pmt)
|
||||
dvb_base_bin_add_pmt_streams (DvbBaseBin * dvbbasebin, const GstMpegtsPMT * pmt)
|
||||
{
|
||||
DvbBaseBinStream *stream;
|
||||
gint i;
|
||||
|
||||
for (i = 0; i < pmt->streams->len; i++) {
|
||||
GstMpegTsPMTStream *pmtstream = g_ptr_array_index (pmt->streams, i);
|
||||
GstMpegtsPMTStream *pmtstream = g_ptr_array_index (pmt->streams, i);
|
||||
|
||||
GST_DEBUG ("filtering stream %d stream_type %d", pmtstream->pid,
|
||||
pmtstream->stream_type);
|
||||
|
@ -914,7 +914,7 @@ dvb_base_bin_handle_message (GstBin * bin, GstMessage * message)
|
|||
|
||||
/* note: message->src might be a GstPad, so use element cast w/o typecheck */
|
||||
if (GST_ELEMENT_CAST (message->src) == dvbbasebin->tsparse) {
|
||||
GstMpegTsSection *section = gst_message_parse_mpegts_section (message);
|
||||
GstMpegtsSection *section = gst_message_parse_mpegts_section (message);
|
||||
|
||||
if (section) {
|
||||
switch (GST_MPEGTS_SECTION_TYPE (section)) {
|
||||
|
@ -938,7 +938,7 @@ dvb_base_bin_handle_message (GstBin * bin, GstMessage * message)
|
|||
|
||||
|
||||
static void
|
||||
dvb_base_bin_pat_info_cb (DvbBaseBin * dvbbasebin, GstMpegTsSection * section)
|
||||
dvb_base_bin_pat_info_cb (DvbBaseBin * dvbbasebin, GstMpegtsSection * section)
|
||||
{
|
||||
GPtrArray *pat;
|
||||
DvbBaseBinProgram *program;
|
||||
|
@ -953,7 +953,7 @@ dvb_base_bin_pat_info_cb (DvbBaseBin * dvbbasebin, GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
for (i = 0; i < pat->len; i++) {
|
||||
GstMpegTsPatProgram *patp = g_ptr_array_index (pat, i);
|
||||
GstMpegtsPatProgram *patp = g_ptr_array_index (pat, i);
|
||||
|
||||
program = dvb_base_bin_get_program (dvbbasebin, patp->program_number);
|
||||
if (program == NULL)
|
||||
|
@ -984,9 +984,9 @@ dvb_base_bin_pat_info_cb (DvbBaseBin * dvbbasebin, GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static void
|
||||
dvb_base_bin_pmt_info_cb (DvbBaseBin * dvbbasebin, GstMpegTsSection * section)
|
||||
dvb_base_bin_pmt_info_cb (DvbBaseBin * dvbbasebin, GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsPMT *pmt;
|
||||
const GstMpegtsPMT *pmt;
|
||||
DvbBaseBinProgram *program;
|
||||
guint program_number;
|
||||
|
||||
|
|
|
@ -70,9 +70,9 @@ static const guint8 stt_data_check[] = {
|
|||
|
||||
GST_START_TEST (test_mpegts_pat)
|
||||
{
|
||||
GstMpegTsPatProgram *program;
|
||||
GstMpegtsPatProgram *program;
|
||||
GPtrArray *pat;
|
||||
GstMpegTsSection *pat_section;
|
||||
GstMpegtsSection *pat_section;
|
||||
gint i;
|
||||
guint8 *data;
|
||||
gsize data_size;
|
||||
|
@ -129,10 +129,10 @@ GST_END_TEST;
|
|||
|
||||
GST_START_TEST (test_mpegts_pmt)
|
||||
{
|
||||
GstMpegTsPMT *pmt;
|
||||
GstMpegTsPMTStream *stream;
|
||||
GstMpegTsDescriptor *desc;
|
||||
GstMpegTsSection *pmt_section;
|
||||
GstMpegtsPMT *pmt;
|
||||
GstMpegtsPMTStream *stream;
|
||||
GstMpegtsDescriptor *desc;
|
||||
GstMpegtsSection *pmt_section;
|
||||
guint8 *data;
|
||||
gsize data_size;
|
||||
gint i;
|
||||
|
@ -149,7 +149,7 @@ GST_START_TEST (test_mpegts_pmt)
|
|||
for (i = 0; i < 2; i++) {
|
||||
stream = gst_mpegts_pmt_stream_new ();
|
||||
|
||||
stream->stream_type = GST_MPEG_TS_STREAM_TYPE_VIDEO_H264;
|
||||
stream->stream_type = GST_MPEGTS_STREAM_TYPE_VIDEO_H264;
|
||||
stream->pid = 0x40 + i;
|
||||
|
||||
desc = gst_mpegts_descriptor_from_registration ("HDMV", NULL, 0);
|
||||
|
@ -162,26 +162,26 @@ GST_START_TEST (test_mpegts_pmt)
|
|||
fail_if (pmt_section == NULL);
|
||||
|
||||
/* Re-parse the PMT from section */
|
||||
pmt = (GstMpegTsPMT *) gst_mpegts_section_get_pmt (pmt_section);
|
||||
pmt = (GstMpegtsPMT *) gst_mpegts_section_get_pmt (pmt_section);
|
||||
|
||||
fail_unless (pmt->pcr_pid == 0x1FFF);
|
||||
fail_unless (pmt->program_number == 1);
|
||||
fail_unless (pmt->descriptors->len == 1);
|
||||
fail_unless (pmt->streams->len == 2);
|
||||
|
||||
desc = (GstMpegTsDescriptor *) gst_mpegts_find_descriptor (pmt->descriptors,
|
||||
desc = (GstMpegtsDescriptor *) gst_mpegts_find_descriptor (pmt->descriptors,
|
||||
GST_MTS_DESC_REGISTRATION);
|
||||
fail_if (desc == NULL);
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
stream = g_ptr_array_index (pmt->streams, i);
|
||||
|
||||
fail_unless (stream->stream_type == GST_MPEG_TS_STREAM_TYPE_VIDEO_H264);
|
||||
fail_unless (stream->stream_type == GST_MPEGTS_STREAM_TYPE_VIDEO_H264);
|
||||
fail_unless (stream->pid == 0x40 + i);
|
||||
fail_unless (stream->descriptors->len == 1);
|
||||
|
||||
desc =
|
||||
(GstMpegTsDescriptor *) gst_mpegts_find_descriptor (stream->descriptors,
|
||||
(GstMpegtsDescriptor *) gst_mpegts_find_descriptor (stream->descriptors,
|
||||
GST_MTS_DESC_REGISTRATION);
|
||||
fail_if (desc == NULL);
|
||||
}
|
||||
|
@ -198,7 +198,7 @@ GST_START_TEST (test_mpegts_pmt)
|
|||
/* Check assertion on bad CRC. Reset parsed data, and make the CRC corrupt */
|
||||
pmt_section->data[pmt_section->section_length - 1]++;
|
||||
pmt_section->cached_parsed = NULL;
|
||||
pmt = (GstMpegTsPMT *) gst_mpegts_section_get_pmt (pmt_section);
|
||||
pmt = (GstMpegtsPMT *) gst_mpegts_section_get_pmt (pmt_section);
|
||||
|
||||
fail_unless (pmt == NULL);
|
||||
|
||||
|
@ -210,10 +210,10 @@ GST_END_TEST;
|
|||
|
||||
GST_START_TEST (test_mpegts_nit)
|
||||
{
|
||||
GstMpegTsNITStream *stream;
|
||||
GstMpegTsNIT *nit;
|
||||
GstMpegTsDescriptor *desc;
|
||||
GstMpegTsSection *nit_section;
|
||||
GstMpegtsNITStream *stream;
|
||||
GstMpegtsNIT *nit;
|
||||
GstMpegtsDescriptor *desc;
|
||||
GstMpegtsSection *nit_section;
|
||||
gchar *name;
|
||||
guint8 *data;
|
||||
gsize data_size;
|
||||
|
@ -246,14 +246,14 @@ GST_START_TEST (test_mpegts_nit)
|
|||
fail_if (nit_section == NULL);
|
||||
|
||||
/* Re-parse the NIT from section */
|
||||
nit = (GstMpegTsNIT *) gst_mpegts_section_get_nit (nit_section);
|
||||
nit = (GstMpegtsNIT *) gst_mpegts_section_get_nit (nit_section);
|
||||
|
||||
fail_unless (nit->descriptors->len == 1);
|
||||
fail_unless (nit->streams->len == 2);
|
||||
fail_unless (nit->actual_network == TRUE);
|
||||
fail_unless (nit->network_id == 0x1FFF);
|
||||
|
||||
desc = (GstMpegTsDescriptor *) gst_mpegts_find_descriptor (nit->descriptors,
|
||||
desc = (GstMpegtsDescriptor *) gst_mpegts_find_descriptor (nit->descriptors,
|
||||
GST_MTS_DESC_DVB_NETWORK_NAME);
|
||||
|
||||
fail_if (desc == NULL);
|
||||
|
@ -269,7 +269,7 @@ GST_START_TEST (test_mpegts_nit)
|
|||
fail_unless (stream->descriptors->len == 1);
|
||||
|
||||
desc =
|
||||
(GstMpegTsDescriptor *) gst_mpegts_find_descriptor (stream->descriptors,
|
||||
(GstMpegtsDescriptor *) gst_mpegts_find_descriptor (stream->descriptors,
|
||||
GST_MTS_DESC_DVB_NETWORK_NAME);
|
||||
|
||||
fail_unless (gst_mpegts_descriptor_parse_dvb_network_name (desc,
|
||||
|
@ -290,7 +290,7 @@ GST_START_TEST (test_mpegts_nit)
|
|||
/* Check assertion on bad CRC. Reset parsed data, and make the CRC corrupt */
|
||||
nit_section->data[nit_section->section_length - 1]++;
|
||||
nit_section->cached_parsed = NULL;
|
||||
nit = (GstMpegTsNIT *) gst_mpegts_section_get_nit (nit_section);
|
||||
nit = (GstMpegtsNIT *) gst_mpegts_section_get_nit (nit_section);
|
||||
|
||||
fail_unless (nit == NULL);
|
||||
|
||||
|
@ -301,10 +301,10 @@ GST_END_TEST;
|
|||
|
||||
GST_START_TEST (test_mpegts_sdt)
|
||||
{
|
||||
GstMpegTsSDTService *service;
|
||||
GstMpegTsSDT *sdt;
|
||||
GstMpegTsDescriptor *desc;
|
||||
GstMpegTsSection *sdt_section;
|
||||
GstMpegtsSDTService *service;
|
||||
GstMpegtsSDT *sdt;
|
||||
GstMpegtsDescriptor *desc;
|
||||
GstMpegtsSection *sdt_section;
|
||||
guint8 *data;
|
||||
gsize data_size;
|
||||
gint i;
|
||||
|
@ -335,7 +335,7 @@ GST_START_TEST (test_mpegts_sdt)
|
|||
fail_if (sdt_section == NULL);
|
||||
|
||||
/* Re-parse the SDT from section */
|
||||
sdt = (GstMpegTsSDT *) gst_mpegts_section_get_sdt (sdt_section);
|
||||
sdt = (GstMpegtsSDT *) gst_mpegts_section_get_sdt (sdt_section);
|
||||
|
||||
fail_unless (sdt->services->len == 2);
|
||||
fail_unless (sdt->actual_ts == TRUE);
|
||||
|
@ -354,7 +354,7 @@ GST_START_TEST (test_mpegts_sdt)
|
|||
GST_MPEGTS_RUNNING_STATUS_RUNNING + i);
|
||||
fail_unless (service->free_CA_mode == TRUE);
|
||||
|
||||
desc = (GstMpegTsDescriptor *)
|
||||
desc = (GstMpegtsDescriptor *)
|
||||
gst_mpegts_find_descriptor (service->descriptors,
|
||||
GST_MTS_DESC_DVB_SERVICE);
|
||||
|
||||
|
@ -378,7 +378,7 @@ GST_START_TEST (test_mpegts_sdt)
|
|||
/* Check assertion on bad CRC. Reset parsed data, and make the CRC corrupt */
|
||||
sdt_section->data[sdt_section->section_length - 1]++;
|
||||
sdt_section->cached_parsed = NULL;
|
||||
sdt = (GstMpegTsSDT *) gst_mpegts_section_get_sdt (sdt_section);
|
||||
sdt = (GstMpegtsSDT *) gst_mpegts_section_get_sdt (sdt_section);
|
||||
|
||||
fail_unless (sdt == NULL);
|
||||
|
||||
|
@ -389,8 +389,8 @@ GST_END_TEST;
|
|||
|
||||
GST_START_TEST (test_mpegts_atsc_stt)
|
||||
{
|
||||
const GstMpegTsAtscSTT *stt;
|
||||
GstMpegTsSection *section;
|
||||
const GstMpegtsAtscSTT *stt;
|
||||
GstMpegtsSection *section;
|
||||
guint8 *data;
|
||||
GstDateTime *dt;
|
||||
|
||||
|
@ -407,7 +407,7 @@ GST_START_TEST (test_mpegts_atsc_stt)
|
|||
fail_unless (stt->ds_dayofmonth == 0);
|
||||
fail_unless (stt->ds_hour == 0);
|
||||
|
||||
dt = gst_mpegts_atsc_stt_get_datetime_utc ((GstMpegTsAtscSTT *) stt);
|
||||
dt = gst_mpegts_atsc_stt_get_datetime_utc ((GstMpegtsAtscSTT *) stt);
|
||||
fail_unless (gst_date_time_get_day (dt) == 30);
|
||||
fail_unless (gst_date_time_get_month (dt) == 12);
|
||||
fail_unless (gst_date_time_get_year (dt) == 1998);
|
||||
|
@ -428,7 +428,7 @@ static const guint8 registration_descriptor[] = {
|
|||
|
||||
GST_START_TEST (test_mpegts_descriptors)
|
||||
{
|
||||
GstMpegTsDescriptor *desc;
|
||||
GstMpegtsDescriptor *desc;
|
||||
guint i;
|
||||
|
||||
/*
|
||||
|
@ -461,8 +461,8 @@ static const guint8 service_descriptor[] = {
|
|||
|
||||
GST_START_TEST (test_mpegts_dvb_descriptors)
|
||||
{
|
||||
GstMpegTsDescriptor *desc;
|
||||
GstMpegTsDVBServiceType service_type;
|
||||
GstMpegtsDescriptor *desc;
|
||||
GstMpegtsDVBServiceType service_type;
|
||||
gchar *string, *provider;
|
||||
gchar long_string[257];
|
||||
gboolean ret;
|
||||
|
|
|
@ -84,23 +84,23 @@ descriptor_name (gint val)
|
|||
GEnumValue *en;
|
||||
|
||||
en = g_enum_get_value (G_ENUM_CLASS (g_type_class_peek
|
||||
(GST_TYPE_MPEG_TS_DESCRIPTOR_TYPE)), val);
|
||||
(GST_TYPE_MPEGTS_DESCRIPTOR_TYPE)), val);
|
||||
if (en == NULL)
|
||||
/* Else try with DVB enum types */
|
||||
en = g_enum_get_value (G_ENUM_CLASS (g_type_class_peek
|
||||
(GST_TYPE_MPEG_TS_DVB_DESCRIPTOR_TYPE)), val);
|
||||
(GST_TYPE_MPEGTS_DVB_DESCRIPTOR_TYPE)), val);
|
||||
if (en == NULL)
|
||||
/* Else try with ATSC enum types */
|
||||
en = g_enum_get_value (G_ENUM_CLASS (g_type_class_peek
|
||||
(GST_TYPE_MPEG_TS_ATSC_DESCRIPTOR_TYPE)), val);
|
||||
(GST_TYPE_MPEGTS_ATSC_DESCRIPTOR_TYPE)), val);
|
||||
if (en == NULL)
|
||||
/* Else try with ISB enum types */
|
||||
en = g_enum_get_value (G_ENUM_CLASS (g_type_class_peek
|
||||
(GST_TYPE_MPEG_TS_ISDB_DESCRIPTOR_TYPE)), val);
|
||||
(GST_TYPE_MPEGTS_ISDB_DESCRIPTOR_TYPE)), val);
|
||||
if (en == NULL)
|
||||
/* Else try with misc enum types */
|
||||
en = g_enum_get_value (G_ENUM_CLASS (g_type_class_peek
|
||||
(GST_TYPE_MPEG_TS_MISC_DESCRIPTOR_TYPE)), val);
|
||||
(GST_TYPE_MPEGTS_MISC_DESCRIPTOR_TYPE)), val);
|
||||
if (en == NULL)
|
||||
return "UNKNOWN/PRIVATE";
|
||||
return en->value_nick;
|
||||
|
@ -112,19 +112,19 @@ table_id_name (gint val)
|
|||
GEnumValue *en;
|
||||
|
||||
en = g_enum_get_value (G_ENUM_CLASS (g_type_class_peek
|
||||
(GST_TYPE_MPEG_TS_SECTION_TABLE_ID)), val);
|
||||
(GST_TYPE_MPEGTS_SECTION_TABLE_ID)), val);
|
||||
if (en == NULL)
|
||||
/* Else try with DVB enum types */
|
||||
en = g_enum_get_value (G_ENUM_CLASS (g_type_class_peek
|
||||
(GST_TYPE_MPEG_TS_SECTION_DVB_TABLE_ID)), val);
|
||||
(GST_TYPE_MPEGTS_SECTION_DVB_TABLE_ID)), val);
|
||||
if (en == NULL)
|
||||
/* Else try with ATSC enum types */
|
||||
en = g_enum_get_value (G_ENUM_CLASS (g_type_class_peek
|
||||
(GST_TYPE_MPEG_TS_SECTION_ATSC_TABLE_ID)), val);
|
||||
(GST_TYPE_MPEGTS_SECTION_ATSC_TABLE_ID)), val);
|
||||
if (en == NULL)
|
||||
/* Else try with SCTE enum types */
|
||||
en = g_enum_get_value (G_ENUM_CLASS (g_type_class_peek
|
||||
(GST_TYPE_MPEG_TS_SECTION_SCTE_TABLE_ID)), val);
|
||||
(GST_TYPE_MPEGTS_SECTION_SCTE_TABLE_ID)), val);
|
||||
if (en == NULL)
|
||||
return "UNKNOWN/PRIVATE";
|
||||
return en->value_nick;
|
||||
|
@ -143,27 +143,27 @@ enum_name (GType instance_type, gint val)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_cable_delivery_descriptor (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_cable_delivery_descriptor (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
GstMpegTsCableDeliverySystemDescriptor res;
|
||||
GstMpegtsCableDeliverySystemDescriptor res;
|
||||
|
||||
if (gst_mpegts_descriptor_parse_cable_delivery_system (desc, &res)) {
|
||||
g_printf ("%*s Cable Delivery Descriptor\n", spacing, "");
|
||||
g_printf ("%*s Frequency : %d Hz\n", spacing, "", res.frequency);
|
||||
g_printf ("%*s Outer FEC : %d (%s)\n", spacing, "", res.outer_fec,
|
||||
enum_name (GST_TYPE_MPEG_TS_CABLE_OUTER_FEC_SCHEME, res.outer_fec));
|
||||
enum_name (GST_TYPE_MPEGTS_CABLE_OUTER_FEC_SCHEME, res.outer_fec));
|
||||
g_printf ("%*s modulation : %d (%s)\n", spacing, "", res.modulation,
|
||||
enum_name (GST_TYPE_MPEG_TS_MODULATION_TYPE, res.modulation));
|
||||
enum_name (GST_TYPE_MPEGTS_MODULATION_TYPE, res.modulation));
|
||||
g_printf ("%*s Symbol rate : %d sym/s\n", spacing, "", res.symbol_rate);
|
||||
g_printf ("%*s Inner FEC : %d (%s)\n", spacing, "", res.fec_inner,
|
||||
enum_name (GST_TYPE_MPEG_TS_DVB_CODE_RATE, res.fec_inner));
|
||||
enum_name (GST_TYPE_MPEGTS_DVB_CODE_RATE, res.fec_inner));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dump_terrestrial_delivery (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_terrestrial_delivery (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
GstMpegTsTerrestrialDeliverySystemDescriptor res;
|
||||
GstMpegtsTerrestrialDeliverySystemDescriptor res;
|
||||
|
||||
if (gst_mpegts_descriptor_parse_terrestrial_delivery_system (desc, &res)) {
|
||||
g_printf ("%*s Terrestrial Delivery Descriptor\n", spacing, "");
|
||||
|
@ -176,24 +176,24 @@ dump_terrestrial_delivery (GstMpegTsDescriptor * desc, guint spacing)
|
|||
g_printf ("%*s MPE FEC : %s\n", spacing, "",
|
||||
res.mpe_fec ? "TRUE" : "FALSE");
|
||||
g_printf ("%*s Constellation : %d (%s)\n", spacing, "",
|
||||
res.constellation, enum_name (GST_TYPE_MPEG_TS_MODULATION_TYPE,
|
||||
res.constellation, enum_name (GST_TYPE_MPEGTS_MODULATION_TYPE,
|
||||
res.constellation));
|
||||
g_printf ("%*s Hierarchy : %d (%s)\n", spacing, "",
|
||||
res.hierarchy, enum_name (GST_TYPE_MPEG_TS_TERRESTRIAL_HIERARCHY,
|
||||
res.hierarchy, enum_name (GST_TYPE_MPEGTS_TERRESTRIAL_HIERARCHY,
|
||||
res.hierarchy));
|
||||
g_printf ("%*s Code Rate HP : %d (%s)\n", spacing, "",
|
||||
res.code_rate_hp, enum_name (GST_TYPE_MPEG_TS_DVB_CODE_RATE,
|
||||
res.code_rate_hp, enum_name (GST_TYPE_MPEGTS_DVB_CODE_RATE,
|
||||
res.code_rate_hp));
|
||||
g_printf ("%*s Code Rate LP : %d (%s)\n", spacing, "",
|
||||
res.code_rate_lp, enum_name (GST_TYPE_MPEG_TS_DVB_CODE_RATE,
|
||||
res.code_rate_lp, enum_name (GST_TYPE_MPEGTS_DVB_CODE_RATE,
|
||||
res.code_rate_lp));
|
||||
g_printf ("%*s Guard Interval : %d (%s)\n", spacing, "",
|
||||
res.guard_interval,
|
||||
enum_name (GST_TYPE_MPEG_TS_TERRESTRIAL_GUARD_INTERVAL,
|
||||
enum_name (GST_TYPE_MPEGTS_TERRESTRIAL_GUARD_INTERVAL,
|
||||
res.guard_interval));
|
||||
g_printf ("%*s Transmission Mode : %d (%s)\n", spacing, "",
|
||||
res.transmission_mode,
|
||||
enum_name (GST_TYPE_MPEG_TS_TERRESTRIAL_TRANSMISSION_MODE,
|
||||
enum_name (GST_TYPE_MPEGTS_TERRESTRIAL_TRANSMISSION_MODE,
|
||||
res.transmission_mode));
|
||||
g_printf ("%*s Other Frequency : %s\n", spacing, "",
|
||||
res.other_frequency ? "TRUE" : "FALSE");
|
||||
|
@ -201,7 +201,7 @@ dump_terrestrial_delivery (GstMpegTsDescriptor * desc, guint spacing)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_dvb_service_list (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_dvb_service_list (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
GPtrArray *res;
|
||||
|
||||
|
@ -209,26 +209,26 @@ dump_dvb_service_list (GstMpegTsDescriptor * desc, guint spacing)
|
|||
guint i;
|
||||
g_printf ("%*s DVB Service List Descriptor\n", spacing, "");
|
||||
for (i = 0; i < res->len; i++) {
|
||||
GstMpegTsDVBServiceListItem *item = g_ptr_array_index (res, i);
|
||||
GstMpegtsDVBServiceListItem *item = g_ptr_array_index (res, i);
|
||||
g_printf ("%*s Service #%d, id:0x%04x, type:0x%x (%s)\n",
|
||||
spacing, "", i, item->service_id, item->type,
|
||||
enum_name (GST_TYPE_MPEG_TS_DVB_SERVICE_TYPE, item->type));
|
||||
enum_name (GST_TYPE_MPEGTS_DVB_SERVICE_TYPE, item->type));
|
||||
}
|
||||
g_ptr_array_unref (res);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dump_logical_channel_descriptor (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_logical_channel_descriptor (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
GstMpegTsLogicalChannelDescriptor res;
|
||||
GstMpegtsLogicalChannelDescriptor res;
|
||||
guint i;
|
||||
|
||||
if (gst_mpegts_descriptor_parse_logical_channel (desc, &res)) {
|
||||
g_printf ("%*s Logical Channel Descriptor (%d channels)\n", spacing, "",
|
||||
res.nb_channels);
|
||||
for (i = 0; i < res.nb_channels; i++) {
|
||||
GstMpegTsLogicalChannel *chann = &res.channels[i];
|
||||
GstMpegtsLogicalChannel *chann = &res.channels[i];
|
||||
g_printf ("%*s service_id: 0x%04x, logical channel number:%4d\n",
|
||||
spacing, "", chann->service_id, chann->logical_channel_number);
|
||||
}
|
||||
|
@ -236,13 +236,13 @@ dump_logical_channel_descriptor (GstMpegTsDescriptor * desc, guint spacing)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_multiligual_network_name (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_multiligual_network_name (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
GPtrArray *items;
|
||||
if (gst_mpegts_descriptor_parse_dvb_multilingual_network_name (desc, &items)) {
|
||||
guint i;
|
||||
for (i = 0; i < items->len; i++) {
|
||||
GstMpegTsDvbMultilingualNetworkNameItem *item =
|
||||
GstMpegtsDvbMultilingualNetworkNameItem *item =
|
||||
g_ptr_array_index (items, i);
|
||||
g_printf ("%*s item : %u\n", spacing, "", i);
|
||||
g_printf ("%*s language_code : %s\n", spacing, "", item->language_code);
|
||||
|
@ -253,13 +253,13 @@ dump_multiligual_network_name (GstMpegTsDescriptor * desc, guint spacing)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_multiligual_bouquet_name (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_multiligual_bouquet_name (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
GPtrArray *items;
|
||||
if (gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name (desc, &items)) {
|
||||
guint i;
|
||||
for (i = 0; i < items->len; i++) {
|
||||
GstMpegTsDvbMultilingualBouquetNameItem *item =
|
||||
GstMpegtsDvbMultilingualBouquetNameItem *item =
|
||||
g_ptr_array_index (items, i);
|
||||
g_printf ("%*s item : %u\n", spacing, "", i);
|
||||
g_printf ("%*s language_code : %s\n", spacing, "", item->language_code);
|
||||
|
@ -270,13 +270,13 @@ dump_multiligual_bouquet_name (GstMpegTsDescriptor * desc, guint spacing)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_multiligual_service_name (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_multiligual_service_name (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
GPtrArray *items;
|
||||
if (gst_mpegts_descriptor_parse_dvb_multilingual_service_name (desc, &items)) {
|
||||
guint i;
|
||||
for (i = 0; i < items->len; i++) {
|
||||
GstMpegTsDvbMultilingualServiceNameItem *item =
|
||||
GstMpegtsDvbMultilingualServiceNameItem *item =
|
||||
g_ptr_array_index (items, i);
|
||||
g_printf ("%*s item : %u\n", spacing, "", i);
|
||||
g_printf ("%*s language_code : %s\n", spacing, "", item->language_code);
|
||||
|
@ -288,7 +288,7 @@ dump_multiligual_service_name (GstMpegTsDescriptor * desc, guint spacing)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_multiligual_component (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_multiligual_component (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
GPtrArray *items;
|
||||
guint8 tag;
|
||||
|
@ -297,7 +297,7 @@ dump_multiligual_component (GstMpegTsDescriptor * desc, guint spacing)
|
|||
guint8 i;
|
||||
g_printf ("%*s component_tag : 0x%02x\n", spacing, "", tag);
|
||||
for (i = 0; i < items->len; i++) {
|
||||
GstMpegTsDvbMultilingualComponentItem *item =
|
||||
GstMpegtsDvbMultilingualComponentItem *item =
|
||||
g_ptr_array_index (items, i);
|
||||
g_printf ("%*s item : %u\n", spacing, "", i);
|
||||
g_printf ("%*s language_code : %s\n", spacing, "",
|
||||
|
@ -309,13 +309,13 @@ dump_multiligual_component (GstMpegTsDescriptor * desc, guint spacing)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_linkage (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_linkage (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
GstMpegTsDVBLinkageDescriptor *res;
|
||||
GstMpegtsDVBLinkageDescriptor *res;
|
||||
|
||||
if (gst_mpegts_descriptor_parse_dvb_linkage (desc, &res)) {
|
||||
g_printf ("%*s Linkage Descriptor : 0x%02x (%s)\n", spacing, "",
|
||||
res->linkage_type, enum_name (GST_TYPE_MPEG_TS_DVB_LINKAGE_TYPE,
|
||||
res->linkage_type, enum_name (GST_TYPE_MPEGTS_DVB_LINKAGE_TYPE,
|
||||
res->linkage_type));
|
||||
|
||||
g_printf ("%*s Transport Stream ID : 0x%04x\n", spacing, "",
|
||||
|
@ -328,11 +328,11 @@ dump_linkage (GstMpegTsDescriptor * desc, guint spacing)
|
|||
switch (res->linkage_type) {
|
||||
case GST_MPEGTS_DVB_LINKAGE_MOBILE_HAND_OVER:
|
||||
{
|
||||
GstMpegTsDVBLinkageMobileHandOver *linkage =
|
||||
(GstMpegTsDVBLinkageMobileHandOver *) res->linkage_data;
|
||||
GstMpegtsDVBLinkageMobileHandOver *linkage =
|
||||
(GstMpegtsDVBLinkageMobileHandOver *) res->linkage_data;
|
||||
g_printf ("%*s hand_over_type : 0x%02x (%s)\n", spacing,
|
||||
"", linkage->hand_over_type,
|
||||
enum_name (GST_TYPE_MPEG_TS_DVB_LINKAGE_HAND_OVER_TYPE,
|
||||
enum_name (GST_TYPE_MPEGTS_DVB_LINKAGE_HAND_OVER_TYPE,
|
||||
linkage->hand_over_type));
|
||||
g_printf ("%*s origin_type : %s\n", spacing, "",
|
||||
linkage->origin_type ? "SDT" : "NIT");
|
||||
|
@ -344,8 +344,8 @@ dump_linkage (GstMpegTsDescriptor * desc, guint spacing)
|
|||
}
|
||||
case GST_MPEGTS_DVB_LINKAGE_EVENT:
|
||||
{
|
||||
GstMpegTsDVBLinkageEvent *linkage =
|
||||
(GstMpegTsDVBLinkageEvent *) res->linkage_data;
|
||||
GstMpegtsDVBLinkageEvent *linkage =
|
||||
(GstMpegtsDVBLinkageEvent *) res->linkage_data;
|
||||
g_printf ("%*s target_event_id : 0x%04x\n", spacing, "",
|
||||
linkage->target_event_id);
|
||||
g_printf ("%*s target_listed : %s\n", spacing, "",
|
||||
|
@ -360,7 +360,7 @@ dump_linkage (GstMpegTsDescriptor * desc, guint spacing)
|
|||
GPtrArray *items = (GPtrArray *) res->linkage_data;
|
||||
|
||||
for (i = 0; i < items->len; i++) {
|
||||
GstMpegTsDVBLinkageExtendedEvent *linkage =
|
||||
GstMpegtsDVBLinkageExtendedEvent *linkage =
|
||||
g_ptr_array_index (items, i);
|
||||
g_printf ("%*s target_event_id : 0x%04x\n", spacing, "",
|
||||
linkage->target_event_id);
|
||||
|
@ -405,14 +405,14 @@ dump_linkage (GstMpegTsDescriptor * desc, guint spacing)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_component (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_component (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
GstMpegTsComponentDescriptor *res;
|
||||
GstMpegtsComponentDescriptor *res;
|
||||
|
||||
if (gst_mpegts_descriptor_parse_dvb_component (desc, &res)) {
|
||||
g_printf ("%*s stream_content : 0x%02x (%s)\n", spacing, "",
|
||||
res->stream_content,
|
||||
enum_name (GST_TYPE_MPEG_TS_COMPONENT_STREAM_CONTENT,
|
||||
enum_name (GST_TYPE_MPEGTS_COMPONENT_STREAM_CONTENT,
|
||||
res->stream_content));
|
||||
g_printf ("%*s component_type : 0x%02x\n", spacing, "",
|
||||
res->component_type);
|
||||
|
@ -425,17 +425,17 @@ dump_component (GstMpegTsDescriptor * desc, guint spacing)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_content (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_content (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
GPtrArray *contents;
|
||||
guint i;
|
||||
|
||||
if (gst_mpegts_descriptor_parse_dvb_content (desc, &contents)) {
|
||||
for (i = 0; i < contents->len; i++) {
|
||||
GstMpegTsContent *item = g_ptr_array_index (contents, i);
|
||||
GstMpegtsContent *item = g_ptr_array_index (contents, i);
|
||||
g_printf ("%*s content nibble 1 : 0x%01x (%s)\n", spacing, "",
|
||||
item->content_nibble_1,
|
||||
enum_name (GST_TYPE_MPEG_TS_CONTENT_NIBBLE_HI,
|
||||
enum_name (GST_TYPE_MPEGTS_CONTENT_NIBBLE_HI,
|
||||
item->content_nibble_1));
|
||||
g_printf ("%*s content nibble 2 : 0x%01x\n", spacing, "",
|
||||
item->content_nibble_2);
|
||||
|
@ -447,26 +447,26 @@ dump_content (GstMpegTsDescriptor * desc, guint spacing)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_iso_639_language (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_iso_639_language (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
guint i;
|
||||
GstMpegTsISO639LanguageDescriptor *res;
|
||||
GstMpegtsISO639LanguageDescriptor *res;
|
||||
|
||||
if (gst_mpegts_descriptor_parse_iso_639_language (desc, &res)) {
|
||||
for (i = 0; i < res->nb_language; i++) {
|
||||
g_print
|
||||
("%*s ISO 639 Language Descriptor %s , audio_type:0x%x (%s)\n",
|
||||
spacing, "", res->language[i], res->audio_type[i],
|
||||
enum_name (GST_TYPE_MPEG_TS_ISO639_AUDIO_TYPE, res->audio_type[i]));
|
||||
enum_name (GST_TYPE_MPEGTS_ISO639_AUDIO_TYPE, res->audio_type[i]));
|
||||
}
|
||||
gst_mpegts_iso_639_language_descriptor_free (res);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dump_dvb_extended_event (GstMpegTsDescriptor * desc, guint spacing)
|
||||
dump_dvb_extended_event (GstMpegtsDescriptor * desc, guint spacing)
|
||||
{
|
||||
GstMpegTsExtendedEventDescriptor *res;
|
||||
GstMpegtsExtendedEventDescriptor *res;
|
||||
|
||||
if (gst_mpegts_descriptor_parse_dvb_extended_event (desc, &res)) {
|
||||
guint i;
|
||||
|
@ -476,7 +476,7 @@ dump_dvb_extended_event (GstMpegTsDescriptor * desc, guint spacing)
|
|||
g_printf ("%*s language_code:%s\n", spacing, "", res->language_code);
|
||||
g_printf ("%*s text : %s\n", spacing, "", res->text);
|
||||
for (i = 0; i < res->items->len; i++) {
|
||||
GstMpegTsExtendedEventItem *item = g_ptr_array_index (res->items, i);
|
||||
GstMpegtsExtendedEventItem *item = g_ptr_array_index (res->items, i);
|
||||
g_printf ("%*s #%d [description:item] %s : %s\n",
|
||||
spacing, "", i, item->item_description, item->item);
|
||||
}
|
||||
|
@ -490,7 +490,7 @@ dump_descriptors (GPtrArray * descriptors, guint spacing)
|
|||
guint i;
|
||||
|
||||
for (i = 0; i < descriptors->len; i++) {
|
||||
GstMpegTsDescriptor *desc = g_ptr_array_index (descriptors, i);
|
||||
GstMpegtsDescriptor *desc = g_ptr_array_index (descriptors, i);
|
||||
g_printf ("%*s [descriptor 0x%02x (%s) length:%d]\n", spacing, "",
|
||||
desc->tag, descriptor_name (desc->tag), desc->length);
|
||||
if (DUMP_DESCRIPTORS)
|
||||
|
@ -542,11 +542,11 @@ dump_descriptors (GPtrArray * descriptors, guint spacing)
|
|||
case GST_MTS_DESC_DVB_SERVICE:
|
||||
{
|
||||
gchar *service_name, *provider_name;
|
||||
GstMpegTsDVBServiceType service_type;
|
||||
GstMpegtsDVBServiceType service_type;
|
||||
if (gst_mpegts_descriptor_parse_dvb_service (desc, &service_type,
|
||||
&service_name, &provider_name)) {
|
||||
g_printf ("%*s Service Descriptor, type:0x%02x (%s)\n", spacing, "",
|
||||
service_type, enum_name (GST_TYPE_MPEG_TS_DVB_SERVICE_TYPE,
|
||||
service_type, enum_name (GST_TYPE_MPEGTS_DVB_SERVICE_TYPE,
|
||||
service_type));
|
||||
g_printf ("%*s service_name : %s\n", spacing, "", service_name);
|
||||
g_printf ("%*s provider_name : %s\n", spacing, "",
|
||||
|
@ -647,7 +647,7 @@ dump_descriptors (GPtrArray * descriptors, guint spacing)
|
|||
|
||||
if (gst_mpegts_descriptor_parse_dvb_parental_rating (desc, &ratings)) {
|
||||
for (j = 0; j < ratings->len; j++) {
|
||||
GstMpegTsDVBParentalRatingItem *item =
|
||||
GstMpegtsDVBParentalRatingItem *item =
|
||||
g_ptr_array_index (ratings, j);
|
||||
g_printf ("%*s country_code : %s\n", spacing, "",
|
||||
item->country_code);
|
||||
|
@ -659,7 +659,7 @@ dump_descriptors (GPtrArray * descriptors, guint spacing)
|
|||
}
|
||||
case GST_MTS_DESC_DVB_DATA_BROADCAST:
|
||||
{
|
||||
GstMpegTsDataBroadcastDescriptor *res;
|
||||
GstMpegtsDataBroadcastDescriptor *res;
|
||||
|
||||
if (gst_mpegts_descriptor_parse_dvb_data_broadcast (desc, &res)) {
|
||||
g_printf ("%*s data_broadcast_id : 0x%04x\n", spacing, "",
|
||||
|
@ -722,7 +722,7 @@ dump_descriptors (GPtrArray * descriptors, guint spacing)
|
|||
break;
|
||||
case GST_MTS_DESC_DVB_TELETEXT:
|
||||
{
|
||||
GstMpegTsDVBTeletextType type;
|
||||
GstMpegtsDVBTeletextType type;
|
||||
gchar *lang;
|
||||
guint8 magazine, page_number;
|
||||
guint j;
|
||||
|
@ -731,7 +731,7 @@ dump_descriptors (GPtrArray * descriptors, guint spacing)
|
|||
gst_mpegts_descriptor_parse_dvb_teletext_idx (desc, j, &lang, &type,
|
||||
&magazine, &page_number); j++) {
|
||||
g_printf ("%*s Teletext, type:0x%02x (%s)\n", spacing, "", type,
|
||||
enum_name (GST_TYPE_MPEG_TS_DVB_TELETEXT_TYPE, type));
|
||||
enum_name (GST_TYPE_MPEGTS_DVB_TELETEXT_TYPE, type));
|
||||
g_printf ("%*s language : %s\n", spacing, "", lang);
|
||||
g_printf ("%*s magazine : %u\n", spacing, "", magazine);
|
||||
g_printf ("%*s page number : %u\n", spacing, "", page_number);
|
||||
|
@ -746,7 +746,7 @@ dump_descriptors (GPtrArray * descriptors, guint spacing)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_pat (GstMpegTsSection * section)
|
||||
dump_pat (GstMpegtsSection * section)
|
||||
{
|
||||
GPtrArray *pat = gst_mpegts_section_get_pat (section);
|
||||
guint i, len;
|
||||
|
@ -755,7 +755,7 @@ dump_pat (GstMpegTsSection * section)
|
|||
g_printf (" %d program(s):\n", len);
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
GstMpegTsPatProgram *patp = g_ptr_array_index (pat, i);
|
||||
GstMpegtsPatProgram *patp = g_ptr_array_index (pat, i);
|
||||
|
||||
g_print
|
||||
(" program_number:%6d (0x%04x), network_or_program_map_PID:0x%04x\n",
|
||||
|
@ -767,9 +767,9 @@ dump_pat (GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_pmt (GstMpegTsSection * section)
|
||||
dump_pmt (GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsPMT *pmt = gst_mpegts_section_get_pmt (section);
|
||||
const GstMpegtsPMT *pmt = gst_mpegts_section_get_pmt (section);
|
||||
guint i, len;
|
||||
|
||||
g_printf (" program_number : 0x%04x\n", section->subtable_extension);
|
||||
|
@ -778,18 +778,18 @@ dump_pmt (GstMpegTsSection * section)
|
|||
len = pmt->streams->len;
|
||||
g_printf (" %d Streams:\n", len);
|
||||
for (i = 0; i < len; i++) {
|
||||
GstMpegTsPMTStream *stream = g_ptr_array_index (pmt->streams, i);
|
||||
GstMpegtsPMTStream *stream = g_ptr_array_index (pmt->streams, i);
|
||||
g_printf (" pid:0x%04x , stream_type:0x%02x (%s)\n", stream->pid,
|
||||
stream->stream_type,
|
||||
enum_name (GST_TYPE_MPEG_TS_STREAM_TYPE, stream->stream_type));
|
||||
enum_name (GST_TYPE_MPEGTS_STREAM_TYPE, stream->stream_type));
|
||||
dump_descriptors (stream->descriptors, 9);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dump_eit (GstMpegTsSection * section)
|
||||
dump_eit (GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsEIT *eit = gst_mpegts_section_get_eit (section);
|
||||
const GstMpegtsEIT *eit = gst_mpegts_section_get_eit (section);
|
||||
guint i, len;
|
||||
|
||||
g_assert (eit);
|
||||
|
@ -807,7 +807,7 @@ dump_eit (GstMpegTsSection * section)
|
|||
g_printf (" %d Event(s):\n", len);
|
||||
for (i = 0; i < len; i++) {
|
||||
gchar *tmp = (gchar *) "<NO TIME>";
|
||||
GstMpegTsEITEvent *event = g_ptr_array_index (eit->events, i);
|
||||
GstMpegtsEITEvent *event = g_ptr_array_index (eit->events, i);
|
||||
|
||||
if (event->start_time)
|
||||
tmp = gst_date_time_to_iso8601_string (event->start_time);
|
||||
|
@ -815,7 +815,7 @@ dump_eit (GstMpegTsSection * section)
|
|||
GST_TIME_FORMAT "\n", event->event_id, tmp,
|
||||
GST_TIME_ARGS (event->duration * GST_SECOND));
|
||||
g_printf (" running_status:0x%02x (%s), free_CA_mode:%d (%s)\n",
|
||||
event->running_status, enum_name (GST_TYPE_MPEG_TS_RUNNING_STATUS,
|
||||
event->running_status, enum_name (GST_TYPE_MPEGTS_RUNNING_STATUS,
|
||||
event->running_status), event->free_CA_mode,
|
||||
event->free_CA_mode ? "MAYBE SCRAMBLED" : "NOT SCRAMBLED");
|
||||
if (event->start_time)
|
||||
|
@ -830,7 +830,7 @@ dump_atsc_mult_string (GPtrArray * mstrings, guint spacing)
|
|||
guint i;
|
||||
|
||||
for (i = 0; i < mstrings->len; i++) {
|
||||
GstMpegTsAtscMultString *mstring = g_ptr_array_index (mstrings, i);
|
||||
GstMpegtsAtscMultString *mstring = g_ptr_array_index (mstrings, i);
|
||||
gint j, n;
|
||||
|
||||
n = mstring->segments->len;
|
||||
|
@ -839,7 +839,7 @@ dump_atsc_mult_string (GPtrArray * mstrings, guint spacing)
|
|||
i, mstring->iso_639_langcode);
|
||||
g_printf ("%*s segments:%d\n", spacing, "", n);
|
||||
for (j = 0; j < n; j++) {
|
||||
GstMpegTsAtscStringSegment *segment =
|
||||
GstMpegtsAtscStringSegment *segment =
|
||||
g_ptr_array_index (mstring->segments, j);
|
||||
|
||||
g_printf ("%*s Compression:0x%x\n", spacing, "",
|
||||
|
@ -853,9 +853,9 @@ dump_atsc_mult_string (GPtrArray * mstrings, guint spacing)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_atsc_eit (GstMpegTsSection * section)
|
||||
dump_atsc_eit (GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsAtscEIT *eit = gst_mpegts_section_get_atsc_eit (section);
|
||||
const GstMpegtsAtscEIT *eit = gst_mpegts_section_get_atsc_eit (section);
|
||||
guint i, len;
|
||||
|
||||
g_assert (eit);
|
||||
|
@ -866,7 +866,7 @@ dump_atsc_eit (GstMpegTsSection * section)
|
|||
len = eit->events->len;
|
||||
g_printf (" %d Event(s):\n", len);
|
||||
for (i = 0; i < len; i++) {
|
||||
GstMpegTsAtscEITEvent *event = g_ptr_array_index (eit->events, i);
|
||||
GstMpegtsAtscEITEvent *event = g_ptr_array_index (eit->events, i);
|
||||
|
||||
g_printf (" %d)\n", i);
|
||||
g_printf (" event_id: 0x%04x\n", event->event_id);
|
||||
|
@ -880,9 +880,9 @@ dump_atsc_eit (GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_ett (GstMpegTsSection * section)
|
||||
dump_ett (GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsAtscETT *ett = gst_mpegts_section_get_atsc_ett (section);
|
||||
const GstMpegtsAtscETT *ett = gst_mpegts_section_get_atsc_ett (section);
|
||||
guint len;
|
||||
|
||||
g_assert (ett);
|
||||
|
@ -897,15 +897,15 @@ dump_ett (GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_stt (GstMpegTsSection * section)
|
||||
dump_stt (GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsAtscSTT *stt = gst_mpegts_section_get_atsc_stt (section);
|
||||
const GstMpegtsAtscSTT *stt = gst_mpegts_section_get_atsc_stt (section);
|
||||
GstDateTime *dt;
|
||||
gchar *dt_str = NULL;
|
||||
|
||||
g_assert (stt);
|
||||
|
||||
dt = gst_mpegts_atsc_stt_get_datetime_utc ((GstMpegTsAtscSTT *) stt);
|
||||
dt = gst_mpegts_atsc_stt_get_datetime_utc ((GstMpegtsAtscSTT *) stt);
|
||||
if (dt)
|
||||
dt_str = gst_date_time_to_iso8601_string (dt);
|
||||
|
||||
|
@ -921,9 +921,9 @@ dump_stt (GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_nit (GstMpegTsSection * section)
|
||||
dump_nit (GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsNIT *nit = gst_mpegts_section_get_nit (section);
|
||||
const GstMpegtsNIT *nit = gst_mpegts_section_get_nit (section);
|
||||
guint i, len;
|
||||
|
||||
g_assert (nit);
|
||||
|
@ -935,7 +935,7 @@ dump_nit (GstMpegTsSection * section)
|
|||
len = nit->streams->len;
|
||||
g_printf (" %d Streams:\n", len);
|
||||
for (i = 0; i < len; i++) {
|
||||
GstMpegTsNITStream *stream = g_ptr_array_index (nit->streams, i);
|
||||
GstMpegtsNITStream *stream = g_ptr_array_index (nit->streams, i);
|
||||
g_printf
|
||||
(" transport_stream_id:0x%04x , original_network_id:0x%02x\n",
|
||||
stream->transport_stream_id, stream->original_network_id);
|
||||
|
@ -944,9 +944,9 @@ dump_nit (GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_bat (GstMpegTsSection * section)
|
||||
dump_bat (GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsBAT *bat = gst_mpegts_section_get_bat (section);
|
||||
const GstMpegtsBAT *bat = gst_mpegts_section_get_bat (section);
|
||||
guint i, len;
|
||||
|
||||
g_assert (bat);
|
||||
|
@ -956,7 +956,7 @@ dump_bat (GstMpegTsSection * section)
|
|||
len = bat->streams->len;
|
||||
g_printf (" %d Streams:\n", len);
|
||||
for (i = 0; i < len; i++) {
|
||||
GstMpegTsBATStream *stream = g_ptr_array_index (bat->streams, i);
|
||||
GstMpegtsBATStream *stream = g_ptr_array_index (bat->streams, i);
|
||||
g_printf
|
||||
(" transport_stream_id:0x%04x , original_network_id:0x%02x\n",
|
||||
stream->transport_stream_id, stream->original_network_id);
|
||||
|
@ -965,9 +965,9 @@ dump_bat (GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_sdt (GstMpegTsSection * section)
|
||||
dump_sdt (GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsSDT *sdt = gst_mpegts_section_get_sdt (section);
|
||||
const GstMpegtsSDT *sdt = gst_mpegts_section_get_sdt (section);
|
||||
guint i, len;
|
||||
|
||||
g_assert (sdt);
|
||||
|
@ -978,7 +978,7 @@ dump_sdt (GstMpegTsSection * section)
|
|||
len = sdt->services->len;
|
||||
g_printf (" %d Services:\n", len);
|
||||
for (i = 0; i < len; i++) {
|
||||
GstMpegTsSDTService *service = g_ptr_array_index (sdt->services, i);
|
||||
GstMpegtsSDTService *service = g_ptr_array_index (sdt->services, i);
|
||||
g_print
|
||||
(" service_id:0x%04x, EIT_schedule_flag:%d, EIT_present_following_flag:%d\n",
|
||||
service->service_id, service->EIT_schedule_flag,
|
||||
|
@ -986,7 +986,7 @@ dump_sdt (GstMpegTsSection * section)
|
|||
g_print
|
||||
(" running_status:0x%02x (%s), free_CA_mode:%d (%s)\n",
|
||||
service->running_status,
|
||||
enum_name (GST_TYPE_MPEG_TS_RUNNING_STATUS, service->running_status),
|
||||
enum_name (GST_TYPE_MPEGTS_RUNNING_STATUS, service->running_status),
|
||||
service->free_CA_mode,
|
||||
service->free_CA_mode ? "MAYBE SCRAMBLED" : "NOT SCRAMBLED");
|
||||
dump_descriptors (service->descriptors, 9);
|
||||
|
@ -994,7 +994,7 @@ dump_sdt (GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_tdt (GstMpegTsSection * section)
|
||||
dump_tdt (GstMpegtsSection * section)
|
||||
{
|
||||
GstDateTime *date = gst_mpegts_section_get_tdt (section);
|
||||
|
||||
|
@ -1009,9 +1009,9 @@ dump_tdt (GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_tot (GstMpegTsSection * section)
|
||||
dump_tot (GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsTOT *tot = gst_mpegts_section_get_tot (section);
|
||||
const GstMpegtsTOT *tot = gst_mpegts_section_get_tot (section);
|
||||
gchar *str = gst_date_time_to_iso8601_string (tot->utc_time);
|
||||
|
||||
g_printf (" utc_time : %s\n", str);
|
||||
|
@ -1020,15 +1020,15 @@ dump_tot (GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_mgt (GstMpegTsSection * section)
|
||||
dump_mgt (GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsAtscMGT *mgt = gst_mpegts_section_get_atsc_mgt (section);
|
||||
const GstMpegtsAtscMGT *mgt = gst_mpegts_section_get_atsc_mgt (section);
|
||||
gint i;
|
||||
|
||||
g_printf (" protocol_version : %u\n", mgt->protocol_version);
|
||||
g_printf (" tables number : %d\n", mgt->tables->len);
|
||||
for (i = 0; i < mgt->tables->len; i++) {
|
||||
GstMpegTsAtscMGTTable *table = g_ptr_array_index (mgt->tables, i);
|
||||
GstMpegtsAtscMGTTable *table = g_ptr_array_index (mgt->tables, i);
|
||||
g_printf (" table %d)\n", i);
|
||||
g_printf (" table_type : %u\n", table->table_type);
|
||||
g_printf (" pid : 0x%x\n", table->pid);
|
||||
|
@ -1040,9 +1040,9 @@ dump_mgt (GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_vct (GstMpegTsSection * section)
|
||||
dump_vct (GstMpegtsSection * section)
|
||||
{
|
||||
const GstMpegTsAtscVCT *vct;
|
||||
const GstMpegtsAtscVCT *vct;
|
||||
gint i;
|
||||
|
||||
if (GST_MPEGTS_SECTION_TYPE (section) == GST_MPEGTS_SECTION_ATSC_CVCT) {
|
||||
|
@ -1058,7 +1058,7 @@ dump_vct (GstMpegTsSection * section)
|
|||
g_printf (" protocol_version : %u\n", vct->protocol_version);
|
||||
g_printf (" %d Sources:\n", vct->sources->len);
|
||||
for (i = 0; i < vct->sources->len; i++) {
|
||||
GstMpegTsAtscVCTSource *source = g_ptr_array_index (vct->sources, i);
|
||||
GstMpegtsAtscVCTSource *source = g_ptr_array_index (vct->sources, i);
|
||||
g_print (" short_name: %s\n", source->short_name);
|
||||
g_print (" major_channel_number: %u, minor_channel_number: %u\n",
|
||||
source->major_channel_number, source->minor_channel_number);
|
||||
|
@ -1083,7 +1083,7 @@ dump_vct (GstMpegTsSection * section)
|
|||
}
|
||||
|
||||
static void
|
||||
dump_section (GstMpegTsSection * section)
|
||||
dump_section (GstMpegtsSection * section)
|
||||
{
|
||||
switch (GST_MPEGTS_SECTION_TYPE (section)) {
|
||||
case GST_MPEGTS_SECTION_PAT:
|
||||
|
@ -1144,7 +1144,7 @@ _on_bus_message (GstBus * bus, GstMessage * message, GMainLoop * mainloop)
|
|||
break;
|
||||
case GST_MESSAGE_ELEMENT:
|
||||
{
|
||||
GstMpegTsSection *section;
|
||||
GstMpegtsSection *section;
|
||||
if ((section = gst_message_parse_mpegts_section (message))) {
|
||||
const gchar *table_name;
|
||||
|
||||
|
@ -1152,7 +1152,7 @@ _on_bus_message (GstBus * bus, GstMessage * message, GMainLoop * mainloop)
|
|||
g_print
|
||||
("Got section: PID:0x%04x type:%s (table_id 0x%02x (%s)) at offset %"
|
||||
G_GUINT64_FORMAT "\n", section->pid,
|
||||
enum_name (GST_TYPE_MPEG_TS_SECTION_TYPE, section->section_type),
|
||||
enum_name (GST_TYPE_MPEGTS_SECTION_TYPE, section->section_type),
|
||||
section->table_id, table_name, section->offset);
|
||||
if (!section->short_section) {
|
||||
g_print
|
||||
|
@ -1194,31 +1194,31 @@ main (int argc, gchar ** argv)
|
|||
}
|
||||
|
||||
/* Hack: ensure all enum type classes are loaded */
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_SECTION_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_SECTION_TABLE_ID);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_RUNNING_STATUS);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_DESCRIPTOR_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_DVB_DESCRIPTOR_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_ATSC_DESCRIPTOR_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_ISDB_DESCRIPTOR_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_MISC_DESCRIPTOR_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_ISO639_AUDIO_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_DVB_SERVICE_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_DVB_TELETEXT_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_STREAM_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_SECTION_DVB_TABLE_ID);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_SECTION_ATSC_TABLE_ID);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_SECTION_SCTE_TABLE_ID);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_MODULATION_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_DVB_CODE_RATE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_CABLE_OUTER_FEC_SCHEME);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_TERRESTRIAL_TRANSMISSION_MODE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_TERRESTRIAL_GUARD_INTERVAL);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_TERRESTRIAL_HIERARCHY);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_DVB_LINKAGE_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_DVB_LINKAGE_HAND_OVER_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_COMPONENT_STREAM_CONTENT);
|
||||
g_type_class_ref (GST_TYPE_MPEG_TS_CONTENT_NIBBLE_HI);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_SECTION_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_SECTION_TABLE_ID);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_RUNNING_STATUS);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_DESCRIPTOR_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_DVB_DESCRIPTOR_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_ATSC_DESCRIPTOR_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_ISDB_DESCRIPTOR_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_MISC_DESCRIPTOR_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_ISO639_AUDIO_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_DVB_SERVICE_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_DVB_TELETEXT_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_STREAM_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_SECTION_DVB_TABLE_ID);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_SECTION_ATSC_TABLE_ID);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_SECTION_SCTE_TABLE_ID);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_MODULATION_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_DVB_CODE_RATE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_CABLE_OUTER_FEC_SCHEME);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_TERRESTRIAL_TRANSMISSION_MODE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_TERRESTRIAL_GUARD_INTERVAL);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_TERRESTRIAL_HIERARCHY);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_DVB_LINKAGE_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_DVB_LINKAGE_HAND_OVER_TYPE);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_COMPONENT_STREAM_CONTENT);
|
||||
g_type_class_ref (GST_TYPE_MPEGTS_CONTENT_NIBBLE_HI);
|
||||
|
||||
mainloop = g_main_loop_new (NULL, FALSE);
|
||||
|
||||
|
|
Loading…
Reference in a new issue