dvb_table(3)
πΈ NAME πΈ
dvb_table β Digital TV table parsing. Yes bestie, this is the one. It's dvb_table(3) from the Library Functions Manual, and it's a whole universe of headers, structs, macros and typedefs for pulling apart MPEG-TS and ATSC tables. Buckle up. π
β¨ SYNOPSIS β¨
π Files π
Okay so these are all the headers in the group, and each one does a thing. Slay.
descriptors.hβ the way you handle MPEG-TS descriptors found on Digital TV streams.header.hβ gives you the MPEG TS table headers.atsc_header.hβ some common ATSC stuff lives here.atsc_eit.hβ the table parser for the ATSC EIT (Event Information Table).cat.hβ the table parser for the CAT (Conditional Access Table).eit.hβ the table parser for the DVB EIT (Event Information Table).mgt.hβ the table parser for the ATSC MGT (Master Guide Table).nit.hβ the descriptors for the NIT MPEG-TS table.pat.hβ the descriptors for the PAT MPEG-TS table.pmt.hβ the descriptors for the PMT MPEG-TS table.sdt.hβ the descriptors for the SDT MPEG-TS table.vct.hβ the descriptors for TVCT and CVCT tables.mpeg_es.hβ the table parser for the MPEG-TS Elementary Stream.mpeg_pes.hβ the table parser for the MPEG-PES Elementary Stream.mpeg_ts.hβ the table parser for the MPEG-PES Elementary Stream. (Yes, it says MPEG-PES again. That's what the page says, so that's what you get. π)
π¦ Data Structures π¦
The little guys. The building blocks. The main characters of the whole operation.
struct dvb_descβ a linked list holding all the descriptors found on an MPEG-TS table.struct dvb_descriptorβ holds the parser information for the MPEG-TS parser code.struct dvb_ts_packet_headerβ the header of an MPEG-TS transport packet.struct dvb_table_headerβ the header of an MPEG-TS table.struct atsc_table_eit_eventβ ATSC EIT event table.union atsc_table_eit_desc_lengthβ ATSC EIT descriptor length.struct atsc_table_eitβ ATSC EIT table.struct dvb_table_eit_eventβ DVB EIT event table.struct dvb_table_eitβ DVB EIT table.struct atsc_table_mgt_tableβ ATSC tables description at MGT table.struct atsc_table_mgtβ ATSC MGT table.union dvb_table_nit_transport_headerβ MPEG-TS NIT transport header.struct dvb_table_nit_transportβ MPEG-TS NIT transport table.struct dvb_table_nitβ MPEG-TS NIT table.struct dvb_table_pat_programβ MPEG-TS PAT program table.struct dvb_table_patβ MPEG-TS PAT table.struct dvb_table_pmt_streamβ MPEG-TS PMT stream table.struct dvb_table_pmtβ MPEG-TS PMT table.struct dvb_table_sdt_serviceβ MPEG-TS SDT service table.struct dvb_table_sdtβ MPEG-TS SDT table.struct atsc_table_vct_channelβ ATSC VCT channel table (covers both CVCT and TVCT).struct atsc_table_vctβ ATSC VCT table (covers both CVCT and TVCT).union atsc_table_vct_descriptor_lengthβ ATSC VCT descriptor length.struct dvb_mpeg_es_seq_startβ MPEG ES Sequence header.struct dvb_mpeg_es_pic_startβ MPEG ES Picture start header.struct ts_tβ MPEG PES timestamp structure, used for dts and pts.struct dvb_mpeg_pes_optionalβ MPEG PES optional header.struct dvb_mpeg_pesβ MPEG PES data structure.struct dvb_mpeg_ts_adaptionβ MPEG TS header adaption field.struct dvb_mpeg_tsβ MPEG TS header.
π Macros π
The preprocessor girlies. Every single one, no skipping, that's the rule. π
#define DVB_MAX_PAYLOAD_PACKET_SIZEβ Maximum size of a table session to be parsed.#define DVB_CRC_SIZEβ number of bytes for the descriptor's CRC check.#define ATSC_BASE_PIDβ ATSC PID for the Program and System Information Protocol.#define ATSC_TABLE_EITβ ATSC EIT table ID.#define atsc_eit_event_foreach(_event, _eit)β Macro used to find event on an ATSC EIT table.#define DVB_TABLE_CATβ ATSC CAT table ID.#define DVB_TABLE_CAT_PIDβ ATSC PID table ID.#define DVB_TABLE_EITβ DVB EIT table ID for the actual TS.#define DVB_TABLE_EIT_OTHERβ DVB EIT table ID for other TS.#define DVB_TABLE_EIT_PIDβ DVB EIT Program ID.#define DVB_TABLE_EIT_SCHEDULEβ Start table ID for the DVB EIT schedule data on the actual TS. The range has0x0felements (0x50to0x5F).#define DVB_TABLE_EIT_SCHEDULE_OTHERβ Start table ID for the DVB EIT schedule data on other TS. The range has0x0felements (0x60to0x6F).#define dvb_eit_event_foreach(_event, _eit)β Macro used to find event on a DVB EIT table.#define ATSC_TABLE_MGTβ ATSC MGT table ID.#define DVB_TABLE_NITβ NIT table ID.#define DVB_TABLE_NIT2β NIT table ID (alternative table ID).#define DVB_TABLE_NIT_PIDβ NIT Program ID.#define dvb_nit_transport_foreach(_tran, _nit)β Macro used to find a transport inside a NIT table.#define DVB_TABLE_PATβ PAT table ID.#define DVB_TABLE_PAT_PIDβ PAT Program ID.#define dvb_pat_program_foreach(_pgm, _pat)β Macro used to find programs on a PAT table.#define DVB_TABLE_PMTβ PMT table ID.#define dvb_pmt_stream_foreach(_stream, _pmt)β Macro used to find streams on a PMT table.#define DVB_TABLE_SDTβ SDT table ID.#define DVB_TABLE_SDT2β SDT table ID (alternative table ID).#define DVB_TABLE_SDT_PIDβ SDT Program ID.#define dvb_sdt_service_foreach(_service, _sdt)β Macro used to find services on a SDT table.#define ATSC_TABLE_TVCTβ TVCT table ID.#define ATSC_TABLE_CVCTβ CVCT table ID.#define ATSC_TABLE_VCT_PIDβ Program ID with the VCT tables on it.#define atsc_vct_channel_foreach(_channel, _vct)β Macro used to find channels on a VCT table.#define DVB_MPEG_ES_PIC_STARTβ Picture Start.#define DVB_MPEG_ES_USER_DATAβ User Data.#define DVB_MPEG_ES_SEQ_STARTβ Sequence Start.#define DVB_MPEG_ES_SEQ_EXTβ Extension.#define DVB_MPEG_ES_GOPβ Group Of Pictures.#define DVB_MPEG_ES_SLICESβ Slices.#define DVB_MPEG_PESβ MPEG Packetized Elementary Stream magic.#define DVB_MPEG_PES_AUDIOβ PES Audio.#define DVB_MPEG_PES_VIDEOβ PES Video.#define DVB_MPEG_STREAM_MAPβ PES Stream map.#define DVB_MPEG_STREAM_PADDINGβ PES padding.#define DVB_MPEG_STREAM_PRIVATE_2β PES private.#define DVB_MPEG_STREAM_ECMβ PES ECM Stream.#define DVB_MPEG_STREAM_EMMβ PES EMM Stream.#define DVB_MPEG_STREAM_DIRECTORYβ PES Stream directory.#define DVB_MPEG_STREAM_DSMCCβ PES DSMCC.#define DVB_MPEG_STREAM_H222Eβ PES H.222.1 type E.#define DVB_MPEG_TSβ MPEG Transport Stream magic.#define DVB_MPEG_TS_PACKET_SIZEβ Size of an MPEG packet.
π Typedefs π
The function-prototype glow-ups. These are the shapes every callback has to match, so keep them exactly as written, fr fr. π«Ά
typedef void(* dvb_table_init_func) (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, void **table)β function prototype for a function that initializes the descriptors parsing on a table.typedef int(* dvb_desc_init_func) (struct dvb_v5_fe_parms *parms, const uint8_t *buf, struct dvb_desc *desc)β function prototype for the descriptors parsing init code.typedef void(* dvb_desc_print_func) (struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)β function prototype for the descriptors parsing print code.typedef void(* dvb_desc_free_func) (struct dvb_desc *desc)β function prototype for the descriptors memory free code.typedef void nit_handler_callback_t(struct dvb_table_nit *nit, struct dvb_desc *desc, void *priv)β typedef for a callback used when a NIT table entry is found.typedef void nit_tran_handler_callback_t(struct dvb_table_nit *nit, struct dvb_table_nit_transport *tran, struct dvb_desc *desc, void *priv)β typedef for a callback used when a NIT transport table entry is found.typedef int(* dvb_desc_ext_init_func) (struct dvb_v5_fe_parms *parms, const uint8_t *buf, struct dvb_extension_descriptor *ext, void *desc)β function prototype for the extended descriptors parsing init code.typedef void(* dvb_desc_ext_print_func) (struct dvb_v5_fe_parms *parms, const struct dvb_extension_descriptor *ext, const void *desc)β function prototype for the extended descriptors parsing print code.typedef void(* dvb_desc_ext_free_func) (const void *desc)β function prototype for the extended descriptors parsing free code.
Bestie this is only part one. There's more coming, so don't go anywhere. π
β¨ Enumerations β¨
okay bestie, this is where the named constants live. Itβs giving alphabetized chaos but make it cute. These enums are the building blocks for descriptors and stream types, and youβre gonna want them memorized. No cap. π
πΈ enum descriptors πΈ
enum descriptors { video_stream_descriptor, audio_stream_descriptor,
hierarchy_descriptor, registration_descriptor,
ds_alignment_descriptor, target_background_grid_descriptor,
video_window_descriptor, conditional_access_descriptor,
iso639_language_descriptor, system_clock_descriptor,
multiplex_buffer_utilization_descriptor, copyright_descriptor,
maximum_bitrate_descriptor, private_data_indicator_descriptor,
smoothing_buffer_descriptor, std_descriptor, ibp_descriptor,
mpeg4_video_descriptor, mpeg4_audio_descriptor, iod_descriptor,
sl_descriptor, fmc_descriptor, external_es_id_descriptor,
muxcode_descriptor, fmxbuffersize_descriptor,
multiplexbuffer_descriptor, content_labeling_descriptor,
metadata_pointer_descriptor, metadata_descriptor,
metadata_std_descriptor, AVC_video_descriptor, ipmp_descriptor,
AVC_timing_and_HRD_descriptor, mpeg2_aac_audio_descriptor,
flexmux_timing_descriptor, network_name_descriptor,
service_list_descriptor, stuffing_descriptor,
satellite_delivery_system_descriptor,
cable_delivery_system_descriptor, VBI_data_descriptor,
VBI_teletext_descriptor, bouquet_name_descriptor,
service_descriptor, country_availability_descriptor,
linkage_descriptor, NVOD_reference_descriptor,
time_shifted_service_descriptor, short_event_descriptor,
extended_event_descriptor, time_shifted_event_descriptor,
component_descriptor, mosaic_descriptor,
stream_identifier_descriptor, CA_identifier_descriptor,
content_descriptor, parental_rating_descriptor, teletext_descriptor,
telephone_descriptor, local_time_offset_descriptor,
subtitling_descriptor, terrestrial_delivery_system_descriptor,
multilingual_network_name_descriptor,
multilingual_bouquet_name_descriptor,
multilingual_service_name_descriptor,
multilingual_component_descriptor,
private_data_specifier_descriptor, service_move_descriptor,
short_smoothing_buffer_descriptor, frequency_list_descriptor,
partial_transport_stream_descriptor, data_broadcast_descriptor,
scrambling_descriptor, data_broadcast_id_descriptor,
transport_stream_descriptor, DSNG_descriptor, PDC_descriptor,
AC_3_descriptor, ancillary_data_descriptor, cell_list_descriptor,
cell_frequency_link_descriptor, announcement_support_descriptor,
application_signalling_descriptor, adaptation_field_data_descriptor,
service_identifier_descriptor, service_availability_descriptor,
default_authority_descriptor, related_content_descriptor,
TVA_id_descriptor, content_identifier_descriptor,
time_slice_fec_identifier_descriptor,
ECM_repetition_rate_descriptor,
S2_satellite_delivery_system_descriptor, enhanced_AC_3_descriptor,
DTS_descriptor, AAC_descriptor, XAIT_location_descriptor,
FTA_content_management_descriptor, extension_descriptor,
CUE_identifier_descriptor, extended_channel_name, service_location,
component_name_descriptor, logical_channel_number_descriptor,
carousel_id_descriptor, association_tag_descriptor,
deferred_association_tags_descriptor,
hierarchical_transmission_descriptor,
digital_copy_control_descriptor, network_identifier_descriptor,
partial_transport_stream_time_descriptor,
audio_component_descriptor, hyperlink_descriptor,
target_area_descriptor, data_contents_descriptor,
video_decode_control_descriptor, download_content_descriptor,
CA_EMM_TS_descriptor, CA_contract_information_descriptor,
CA_service_descriptor, TS_Information_descriptor,
extended_broadcaster_descriptor, logo_transmission_descriptor,
basic_local_event_descriptor, reference_descriptor,
node_relation_descriptor, short_node_information_descriptor,
STC_reference_descriptor, series_descriptor, event_group_descriptor,
SI_parameter_descriptor, broadcaster_Name_Descriptor,
component_group_descriptor, SI_prime_TS_descriptor,
board_information_descriptor, LDT_linkage_descriptor,
connected_transmission_descriptor, content_availability_descriptor,
service_group_descriptor, carousel_compatible_composite_descriptor,
conditional_playback_descriptor, ISDBT_delivery_system_descriptor,
partial_reception_descriptor, emergency_information_descriptor,
data_component_descriptor, system_management_descriptor,
atsc_stuffing_descriptor, atsc_ac3_audio_descriptor,
atsc_caption_service_descriptor, atsc_content_advisory_descriptor,
atsc_extended_channel_descriptor, atsc_service_location_descriptor,
atsc_time_shifted_service_descriptor,
atsc_component_name_descriptor,
atsc_DCC_departing_request_descriptor,
atsc_DCC_arriving_request_descriptor,
atsc_redistribution_control_descriptor,
atsc_ATSC_private_information_descriptor, atsc_genre_descriptor }
This one is literally the master list containing all descriptors used by Digital TV MPEG-TS. Itβs long, itβs iconic, it ate. Every single descriptor name is in there, so if youβre looking for atsc_genre_descriptor or extended_channel_name, boom, itβs here. π«Ά
π¦ enum dvb_streams π¦
enum dvb_streams { stream_video, stream_video_h262, stream_audio,
stream_audio_13818_3, stream_private_sections, stream_private_data,
stream_mheg, stream_h222, stream_h222_1, stream_13818_6_A,
stream_13818_6_B, stream_13818_6_C, stream_13818_6_D,
stream_h222_aux, stream_audio_adts, stream_video_14496_2,
stream_audio_latm, stream_14496_1_pes, stream_14496_1_iso,
stream_download, stream_video_h264, stream_audio_14496_3,
stream_video_hevc, stream_video_cavs, stream_video_moto,
stream_audio_a52, stream_scte_27, stream_audio_sdds,
stream_audio_dts_hdmv, stream_audio_e_ac3, stream_audio_dts,
stream_audio_a52_vls, stream_spu_vls, stream_audio_sdds2 }
Add support for MPEG-TS Stream types. This enum is where you declare the stream types youβre rolling with. From stream_video to stream_audio_sdds2, itβs all here. Lowkey a whole mood. β¨
π enum dvb_mpeg_es_frame_t π
enum dvb_mpeg_es_frame_t { DVB_MPEG_ES_FRAME_UNKNOWN,
DVB_MPEG_ES_FRAME_I, DVB_MPEG_ES_FRAME_P, DVB_MPEG_ES_FRAME_B,
DVB_MPEG_ES_FRAME_D }
MPEG frame types, bestie. Thatβs it. The I, P, B, D squad plus DVB_MPEG_ES_FRAME_UNKNOWN for when you just donβt know. Itβs giving mystery. π
π οΈ Functions π οΈ
okay bestie, this is the function roll call and it is long, but every single one is here, no skips, no shortcuts π
uint32_t dvb_bcd (uint32_t bcd)β takes a BCD value and converts it into the CPU's internal integer representation. it's giving translator energy π¦void dvb_hexdump (struct dvb_v5_fe_parms *parms, const char *prefix, const unsigned char *buf, int len)β dumps data into the logs in hexadecimal format.prefixis the lil label,bufis the data,lenis how much. very "let me show you the receipts" πint dvb_desc_parse (struct dvb_v5_fe_parms *parms, const uint8_t *buf, uint16_t buflen, struct dvb_desc **head_desc)β parses MPEG-TS descriptors πvoid dvb_desc_free (struct dvb_desc **list)β frees advb_desclinked list. clean up after yourself, queen πvoid dvb_desc_print (struct dvb_v5_fe_parms *parms, struct dvb_desc *desc)β prints the contents of astruct dvb_desclinked list πΈvoid dvb_table_header_init (struct dvb_table_header *header)β initializes and parses MPEG-TS table header. it's the header, the main character, the opener β¨void dvb_table_header_print (struct dvb_v5_fe_parms *parms, const struct dvb_table_header *header)β prints the content of the MPEG-TS table header π«Ά
okay now we're getting into the table init/free/print trios and there are so many, but they're all so iconic in their own way, let's go π
ssize_t atsc_table_eit_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, struct atsc_table_eit **table)β initializes and parses ATSC EIT table π₯void atsc_table_eit_free (struct atsc_table_eit *table)β frees all data allocated by the ATSC EIT table parser. yes, all of it π§void atsc_table_eit_print (struct dvb_v5_fe_parms *parms, struct atsc_table_eit *table)β prints the content of the ATSC EIT table πssize_t dvb_table_eit_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, struct dvb_table_eit **table)β initializes and parses EIT table. note: this one's the DVB flavor, not ATSC, keep them separate bestie πvoid dvb_table_eit_free (struct dvb_table_eit *table)β frees all data allocated by the DVB EIT table parser πvoid dvb_table_eit_print (struct dvb_v5_fe_parms *parms, struct dvb_table_eit *table)β prints the content of the DVB EIT table βvoid dvb_time (const uint8_t data[5], struct tm *tm)β converts a DVB EIT formatted timestamp intostruct tm. five bytes in, actual time out, we love a glow-up πssize_t atsc_table_mgt_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, struct atsc_table_mgt **table)β initializes and parses MGT table πΈvoid atsc_table_mgt_free (struct atsc_table_mgt *table)β frees all data allocated by the MGT table parser π¦void atsc_table_mgt_print (struct dvb_v5_fe_parms *parms, struct atsc_table_mgt *table)β prints the content of the MGT table πssize_t dvb_table_nit_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, struct dvb_table_nit **table)β initializes and parses NIT table π₯void dvb_table_nit_free (struct dvb_table_nit *table)β frees all data allocated by the NIT table parser π§void dvb_table_nit_print (struct dvb_v5_fe_parms *parms, struct dvb_table_nit *table)β prints the content of the NIT table πvoid dvb_table_nit_descriptor_handler (struct dvb_v5_fe_parms *parms, struct dvb_table_nit *table, enum descriptors descriptor, nit_handler_callback_t *call_nit, nit_tran_handler_callback_t *call_tran, void *priv)β for each entry at NIT and NIT transport tables, call a callback. two callbacks, oneprivpointer, no cap π«Άssize_t dvb_table_pat_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, struct dvb_table_pat **table)β initializes and parses PAT table β¨void dvb_table_pat_free (struct dvb_table_pat *table)β frees all data allocated by the PAT table parser πvoid dvb_table_pat_print (struct dvb_v5_fe_parms *parms, struct dvb_table_pat *table)β prints the content of the PAT table πΈssize_t dvb_table_pmt_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, struct dvb_table_pmt **table)β initializes and parses PMT table π¦void dvb_table_pmt_free (struct dvb_table_pmt *table)β frees all data allocated by the PMT table parser πvoid dvb_table_pmt_print (struct dvb_v5_fe_parms *parms, const struct dvb_table_pmt *table)β prints the content of the PAT table. and yes bestie, the page literally says PAT here even though we're in PMT-land β I'm just repeating what it says, not my business to edit the lore πssize_t dvb_table_sdt_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, struct dvb_table_sdt **table)β initializes and parses SDT table π₯void dvb_table_sdt_free (struct dvb_table_sdt *table)β frees all data allocated by the SDT table parser π§void dvb_table_sdt_print (struct dvb_v5_fe_parms *parms, struct dvb_table_sdt *table)β prints the content of the SDT table πssize_t atsc_table_vct_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, struct atsc_table_vct **table)β initializes and parses VCT table βvoid atsc_table_vct_free (struct atsc_table_vct *table)β frees all data allocated by the VCT table parser π«Άvoid atsc_table_vct_print (struct dvb_v5_fe_parms *parms, struct atsc_table_vct *table)β prints the content of the VCT table π
new category drop: MPEG elementary stream and PES/TS stuff, aka the deep lore of this page πΈ
int dvb_mpeg_es_seq_start_init (const uint8_t *buf, ssize_t buflen, struct dvb_mpeg_es_seq_start *seq_start)β initialize astruct dvb_mpeg_es_seq_startfrom buffer πvoid dvb_mpeg_es_seq_start_print (struct dvb_v5_fe_parms *parms, struct dvb_mpeg_es_seq_start *seq_start)β print details ofstruct dvb_mpeg_es_seq_startπint dvb_mpeg_es_pic_start_init (const uint8_t *buf, ssize_t buflen, struct dvb_mpeg_es_pic_start *pic_start)β initialize astruct dvb_mpeg_es_pic_startfrom buffer π¦void dvb_mpeg_es_pic_start_print (struct dvb_v5_fe_parms *parms, struct dvb_mpeg_es_pic_start *pic_start)β print details ofstruct dvb_mpeg_es_pic_startπssize_t dvb_mpeg_pes_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, uint8_t *table)β initialize astruct dvb_mpeg_pesfrom buffer π₯void dvb_mpeg_pes_free (struct dvb_mpeg_pes *pes)β deallocate memory associated with astruct dvb_mpeg_pes. give the memory back, bestie π§void dvb_mpeg_pes_print (struct dvb_v5_fe_parms *parms, struct dvb_mpeg_pes *pes)β print details ofstruct dvb_mpeg_pesπssize_t dvb_mpeg_ts_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, uint8_t *table, ssize_t *table_length)β initialize astruct dvb_mpeg_tsfrom buffer. note it takes an extratable_lengthout-pointer, she's thorough βvoid dvb_mpeg_ts_free (struct dvb_mpeg_ts *ts)β deallocate memory associated with astruct dvb_mpeg_tsπ«Άvoid dvb_mpeg_ts_print (struct dvb_v5_fe_parms *parms, struct dvb_mpeg_ts *ts)β print details ofstruct dvb_mpeg_tsπ
π Variables π
the global girlies, the exported constants, the whole vibe check π
const dvb_table_init_func dvb_table_initializers [256]β table with all possible descriptors. two hundred and fifty-six slots of pure possibility πconst struct dvb_descriptor dvb_descriptors []β contains the parsers for the several descriptors πconst char * pmt_stream_name []β converts fromenum dvb_streamsinto a string. enum in, words out, we love a translator πΈconst char * dvb_mpeg_es_frame_names [5]β vector that translates fromenum dvb_mpeg_es_frame_tto string. five whole names, exactly five, don't @ me π¦
π Detailed Description π
(more coming, bestie β this is where it gets juicy) π
β¨ Macro Definition Documentation β¨
okay bestie, it's macro o'clock and honestly? these #defines are the blueprint. every single one is listed below with the exact file and line number, because we keep receipts. no cap. π
#define ATSC_BASE_PIDβ ATSC PID for the Program and System Information Protocol.
Definition at line 44 of file atsc_header.h.
#define atsc_eit_event_foreach( _event, _eit)β Macro used to find event on an ATSC EIT table.
Parameters:
_eventβ event to seek_eitβ pointer tostruct atsc_table_eit_event
Definition at line 160 of file atsc_eit.h.
#define ATSC_TABLE_CVCTβ CVCT table ID.
Definition at line 60 of file vct.h.
#define ATSC_TABLE_EITβ ATSC EIT table ID.
Definition at line 53 of file atsc_eit.h.
#define ATSC_TABLE_MGTβ ATSC MGT table ID.
Definition at line 51 of file mgt.h.
#define ATSC_TABLE_TVCTβ TVCT table ID.
Definition at line 59 of file vct.h.
#define ATSC_TABLE_VCT_PIDβ Program ID with the VCT tables on it.
Definition at line 61 of file vct.h.
#define atsc_vct_channel_foreach( _channel, _vct)β Macro used to find channels on a VCT table.
Parameters:
_channelβ channel to seek_vctβ pointer tostruct atsc_table_vct_channel
Definition at line 202 of file vct.h.
#define DVB_CRC_SIZEβ number of bytes for the descriptor's CRC check
Definition at line 61 of file descriptors.h.
#define dvb_eit_event_foreach( _event, _eit)β Macro used to find event on a DVB EIT table.
Parameters:
_eventβ event to seek_eitβ pointer tostruct dvb_table_eit_event
Definition at line 162 of file eit.h.
#define DVB_MAX_PAYLOAD_PACKET_SIZEβ Maximum size of a table session to be parsed.
Definition at line 55 of file descriptors.h.
#define DVB_MPEG_ES_GOPβ Group Of Pictures.
Definition at line 67 of file mpeg_es.h.
#define DVB_MPEG_ES_PIC_STARTβ Picture Start.
Definition at line 63 of file mpeg_es.h.
#define DVB_MPEG_ES_SEQ_EXTβ Extension.
Definition at line 66 of file mpeg_es.h.
#define DVB_MPEG_ES_SEQ_STARTβ Sequence Start.
Definition at line 65 of file mpeg_es.h.
#define DVB_MPEG_ES_SLICESβ Slices.
Definition at line 68 of file mpeg_es.h.
#define DVB_MPEG_ES_USER_DATAβ User Data.
Definition at line 64 of file mpeg_es.h.
#define DVB_MPEG_PESβ MPEG Packetized Elementary Stream magic.
Definition at line 80 of file mpeg_pes.h.
#define DVB_MPEG_PES_AUDIOβ PES Audio.
Definition at line 82 of file mpeg_pes.h.
#define DVB_MPEG_PES_VIDEOβ PES Video.
Definition at line 83 of file mpeg_pes.h.
#define DVB_MPEG_STREAM_DIRECTORYβ PES Stream directory.
Definition at line 90 of file mpeg_pes.h.
#define DVB_MPEG_STREAM_DSMCCβ PES DSMCC.
Definition at line 91 of file mpeg_pes.h.
#define DVB_MPEG_STREAM_ECMβ PES ECM Stream.
Definition at line 88 of file mpeg_pes.h.
#define DVB_MPEG_STREAM_EMMβ PES EMM Stream.
Definition at line 89 of file mpeg_pes.h.
#define DVB_MPEG_STREAM_H222Eβ PES H.222.1 type E.
Definition at line 92 of file mpeg_pes.h.
#define DVB_MPEG_STREAM_MAPβ PES Stream map.
Definition at line 85 of file mpeg_pes.h.
#define DVB_MPEG_STREAM_PADDINGβ PES padding.
Definition at line 86 of file mpeg_pes.h.
#define DVB_MPEG_STREAM_PRIVATE_2β PES private.
Definition at line 87 of file mpeg_pes.h.
#define DVB_MPEG_TSβ MPEG Transport Stream magic.
Definition at line 50 of file mpeg_ts.h.
#define DVB_MPEG_TS_PACKET_SIZEβ Size of an MPEG packet.
Definition at line 51 of file mpeg_ts.h.
#define dvb_nit_transport_foreach( _tran, _nit)β Macro used to find a transport inside a NIT table.
Parameters:
_tranβ transport to seek_nitβ pointer tostruct dvb_table_nit_transport
Definition at line 189 of file nit.h.
#define dvb_pat_program_foreach( _pgm, _pat)β Macro used to find programs on a PAT table.
Parameters:
_pgmβ program to seek_patβ pointer tostruct dvb_table_pat_program
Definition at line 121 of file pat.h.
#define dvb_pmt_stream_foreach( _stream, _pmt)β Macro used to find streams on a PMT table.
Parameters:
_streamβ stream to seek_pmtβ pointer tostruct dvb_table_pmt_stream
Definition at line 243 of file pmt.h.
#define dvb_sdt_service_foreach( _service, _sdt)β Macro used to find services on a SDT table.
Parameters:
_serviceβ service to seek_sdtβ pointer tostruct dvb_table_sdt_service
Definition at line 137 of file sdt.h.
#define DVB_TABLE_CATβ ATSC CAT table ID.
Definition at line 47 of file cat.h.
#define DVB_TABLE_CAT_PIDβ ATSC PID table ID.
Definition at line 48 of file cat.h.
#define DVB_TABLE_EITβ DVB EIT table ID for the actual TS.
Definition at line 68 of file eit.h.
#define DVB_TABLE_EIT_OTHERβ DVB EIT table ID for other TS.
Definition at line 69 of file eit.h.
#define DVB_TABLE_EIT_PIDβ DVB EIT Program ID.
Definition at line 70 of file eit.h.
#define DVB_TABLE_EIT_SCHEDULEβ Start table ID for the DVB EIT schedule data on the actual TS. The range has0x0felements (0x50to0x5F).
Definition at line 72 of file eit.h.
#define DVB_TABLE_EIT_SCHEDULE_OTHERβ Start table ID for the DVB EIT schedule data on other TS. The range has0x0felements (0x60to0x6F).
Definition at line 73 of file eit.h.
#define DVB_TABLE_NITβ NIT table ID.
Definition at line 61 of file nit.h.
#define DVB_TABLE_NIT2β NIT table ID (alternative table ID)
Definition at line 62 of file nit.h.
#define DVB_TABLE_NIT_PIDβ NIT Program ID.
Definition at line 63 of file nit.h.
#define DVB_TABLE_PATβ PAT table ID.
Definition at line 55 of file pat.h.
#define DVB_TABLE_PAT_PIDβ PAT Program ID.
Definition at line 56 of file pat.h.
#define DVB_TABLE_PMTβ PMT table ID.
Definition at line 52 of file pmt.h.
#define DVB_TABLE_SDTβ SDT table ID.
Definition at line 58 of file sdt.h.
#define DVB_TABLE_SDT2β SDT table ID (alternative table ID)
Definition at line 59 of file sdt.h.
#define DVB_TABLE_SDT_PIDβ SDT Program ID.
Definition at line 60 of file sdt.h.
π«Ά Typedef Documentation π«Ά
bestie, these are the function-pointer typedefs, and they're giving plug-and-play parser energy. obsessed. π¦
typedef void(* dvb_desc_ext_free_func) (const void *desc)β Function prototype for the extended descriptors parsing free code.
Parameters:
descβ structdvb_descpointer
Definition at line 156 of file desc_extension.h.
typedef int(* dvb_desc_ext_init_func) (struct dvb_v5_fe_parms *parms, const uint8_t *buf, struct dvb_extension_descriptor *ext, void *desc)β Function prototype for the extended descriptors parsing init code.
Parameters:
parmsβ Structdvb_v5_fe_parmspointerbufβ buffer with the content of the descriptorextβ structdvb_extension_descriptorpointerdescβ structdvb_descpointer
Definition at line 135 of file desc_extension.h.
typedef void(* dvb_desc_ext_print_func) (struct dvb_v5_fe_parms *parms, const struct dvb_extension_descriptor *ext, const void *desc)β Function prototype for the extended descriptors parsing print code.
Parameters:
parmsβ Structdvb_v5_fe_parmspointerextβ structdvb_extension_descriptorpointerdescβ structdvb_descpointer
Definition at line 147 of file desc_extension.h.
typedef void(* dvb_desc_free_func) (struct dvb_desc *desc)β Function prototype for the descriptors memory free code.
Parameters:
descβ pointer tostruct dvb_descpointer to be freed
Definition at line 234 of file descriptors.h.
typedef int(* dvb_desc_init_func) (struct dvb_v5_fe_parms *parms, const uint8_t *buf, struct dvb_desc *desc)β Function prototype for the descriptors parsing init code.
Parameters:
parmsβ Structdvb_v5_fe_parmspointerbufβ buffer with the content of the descriptordescβ structdvb_descpointer
Definition at line 215 of file descriptors.h.
typedef void(* dvb_desc_print_func) (struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)β Function prototype for the descriptors parsing print code.
Parameters:
parmsβ Structdvb_v5_fe_parmspointerdescβ structdvb_descpointer
Definition at line 225 of file descriptors.h.
typedef void(* dvb_table_init_func) (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, void **table)β Function prototype for a function that initializes the descriptors parsing on a table.
Parameters:
parmsβ Structdvb_v5_fe_parmspointerbufβ Buffer with data to be parsedbuflenβ Size of the buffer to be parsedtableβ pointer to a place where the allocated memory with the table structure will be stored.
Definition at line 79 of file descriptors.h.
typedef void nit_handler_callback_t(struct dvb_table_nit *nit, struct dvb_desc *desc, void *priv)β typedef for a callback used when a NIT table entry is found
Parameters:
nitβ astruct dvb_table_nitpointerdescβ astruct dvb_descpointerprivβ an opaque optional pointer
Definition at line 164 of file nit.h.
typedef void nit_tran_handler_callback_t(struct dvb_table_nit *nit, struct dvb_table_nit_transport *tran, struct dvb_desc *desc, void *priv)β typedef for a callback used when a NIT transport table entry is found
Parameters:
nitβ astruct dvb_table_nitpointertranβ astruct dvb_table_nit_transportpointerdescβ astruct dvb_descpointerprivβ an opaque optional pointer
Definition at line 177 of file nit.h.
π Enumeration Type Documentation π
enum descriptorsβ List containing all descriptors used by Digital TV MPEG-TS.
Enumerator:
video_stream_descriptorβ video_stream descriptor - ISO/IEC 13818-1audio_stream_descriptorβ audio_stream descriptor - ISO/IEC 13818-1hierarchy_descriptorβ hierarchy descriptor - ISO/IEC 13818-1registration_descriptorβ registration descriptor - ISO/IEC 13818-1ds_alignment_descriptorβ ds_alignment descriptor - ISO/IEC 13818-1target_background_grid_descriptorβ target_background_grid descriptor - ISO/IEC 13818-1video_window_descriptorβ video_window descriptor - ISO/IEC 13818-1conditional_access_descriptorβ conditional_access descriptor - ISO/IEC 13818-1iso639_language_descriptorβ iso639_language descriptor - ISO/IEC 13818-1system_clock_descriptorβ system_clock descriptor - ISO/IEC 13818-1multiplex_buffer_utilization_descriptorβ multiplex_buffer_utilization descriptor - ISO/IEC 13818-1copyright_descriptorβ copyright descriptor - ISO/IEC 13818-1maximum_bitrate_descriptorβ maximum_bitrate descriptor - ISO/IEC 13818-1private_data_indicator_descriptorβ private_data_indicator descriptor - ISO/IEC 13818-1smoothing_buffer_descriptorβ smoothing_buffer descriptor - ISO/IEC 13818-1std_descriptorβ std descriptor - ISO/IEC 13818-1ibp_descriptorβ ibp descriptor - ISO/IEC 13818-1
Okay so we're deep in the descriptor roll call now, and bestie, this list is long β but every single one of these is a member of dvb_table and they all deserve their moment. Grouped by which standard they crawled out of. No skipping, no summarising, we're doing all of them π
The ISO/IEC 13818-1 girlies β¨
mpeg4_video_descriptorβ thempeg4_videodescriptor, straight from ISO/IEC 13818-1 πmpeg4_audio_descriptorβ thempeg4_audiodescriptor, also ISO/IEC 13818-1 πΈiod_descriptorβ theioddescriptor, ISO/IEC 13818-1 π¦sl_descriptorβ thesldescriptor, ISO/IEC 13818-1 β¨fmc_descriptorβ thefmcdescriptor, ISO/IEC 13818-1 πexternal_es_id_descriptorβ theexternal_es_iddescriptor, ISO/IEC 13818-1 π«Άmuxcode_descriptorβ themuxcodedescriptor, ISO/IEC 13818-1 πfmxbuffersize_descriptorβ thefmxbuffersizedescriptor, ISO/IEC 13818-1 πmultiplexbuffer_descriptorβ themultiplexbufferdescriptor, ISO/IEC 13818-1 πcontent_labeling_descriptorβ thecontent_labelingdescriptor, ISO/IEC 13818-1 πmetadata_pointer_descriptorβ themetadata_pointerdescriptor, ISO/IEC 13818-1 βmetadata_descriptorβ themetadatadescriptor, ISO/IEC 13818-1 πmetadata_std_descriptorβ themetadata_stddescriptor, ISO/IEC 13818-1 π§AVC_video_descriptorβ theAVC_videodescriptor, ISO/IEC 13818-1 πipmp_descriptorβ theipmpdescriptor, ISO/IEC 13818-1 πΈAVC_timing_and_HRD_descriptorβ theAVC_timing_and_HRDdescriptor, ISO/IEC 13818-1 π₯mpeg2_aac_audio_descriptorβ thempeg2_aac_audiodescriptor, ISO/IEC 13818-1 πflexmux_timing_descriptorβ theflexmux_timingdescriptor, ISO/IEC 13818-1 β¨
The ETSI EN 300 468 V1.11.1 (2010-04) squad β and yes, the version stamp is doing the most, we respect it π
network_name_descriptorβ thenetwork_namedescriptor, ETSI EN 300 468 V1.11.1 (2010-04)service_list_descriptorβ theservice_listdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)stuffing_descriptorβ thestuffingdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)satellite_delivery_system_descriptorβ thesatellite_delivery_systemdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)cable_delivery_system_descriptorβ thecable_delivery_systemdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)VBI_data_descriptorβ theVBI_datadescriptor, ETSI EN 300 468 V1.11.1 (2010-04)VBI_teletext_descriptorβ theVBI_teletextdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)bouquet_name_descriptorβ thebouquet_namedescriptor, ETSI EN 300 468 V1.11.1 (2010-04)service_descriptorβ theservicedescriptor, ETSI EN 300 468 V1.11.1 (2010-04)country_availability_descriptorβ thecountry_availabilitydescriptor, ETSI EN 300 468 V1.11.1 (2010-04)linkage_descriptorβ thelinkagedescriptor, ETSI EN 300 468 V1.11.1 (2010-04)NVOD_reference_descriptorβ theNVOD_referencedescriptor, ETSI EN 300 468 V1.11.1 (2010-04)time_shifted_service_descriptorβ thetime_shifted_servicedescriptor, ETSI EN 300 468 V1.11.1 (2010-04)short_event_descriptorβ theshort_eventdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)extended_event_descriptorβ theextended_eventdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)time_shifted_event_descriptorβ thetime_shifted_eventdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)component_descriptorβ thecomponentdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)mosaic_descriptorβ themosaicdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)stream_identifier_descriptorβ thestream_identifierdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)CA_identifier_descriptorβ theCA_identifierdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)content_descriptorβ thecontentdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)parental_rating_descriptorβ theparental_ratingdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)teletext_descriptorβ theteletextdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)telephone_descriptorβ thetelephonedescriptor, ETSI EN 300 468 V1.11.1 (2010-04)local_time_offset_descriptorβ thelocal_time_offsetdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)subtitling_descriptorβ thesubtitlingdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)terrestrial_delivery_system_descriptorβ theterrestrial_delivery_systemdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)multilingual_network_name_descriptorβ themultilingual_network_namedescriptor, ETSI EN 300 468 V1.11.1 (2010-04)multilingual_bouquet_name_descriptorβ themultilingual_bouquet_namedescriptor, ETSI EN 300 468 V1.11.1 (2010-04)multilingual_service_name_descriptorβ themultilingual_service_namedescriptor, ETSI EN 300 468 V1.11.1 (2010-04)multilingual_component_descriptorβ themultilingual_componentdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)private_data_specifier_descriptorβ theprivate_data_specifierdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)service_move_descriptorβ theservice_movedescriptor, ETSI EN 300 468 V1.11.1 (2010-04)short_smoothing_buffer_descriptorβ theshort_smoothing_bufferdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)frequency_list_descriptorβ thefrequency_listdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)partial_transport_stream_descriptorβ thepartial_transport_streamdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)data_broadcast_descriptorβ thedata_broadcastdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)scrambling_descriptorβ thescramblingdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)data_broadcast_id_descriptorβ thedata_broadcast_iddescriptor, ETSI EN 300 468 V1.11.1 (2010-04)transport_stream_descriptorβ thetransport_streamdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)DSNG_descriptorβ theDSNGdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)PDC_descriptorβ thePDCdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)AC_3_descriptorβ theAC_3descriptor, ETSI EN 300 468 V1.11.1 (2010-04)ancillary_data_descriptorβ theancillary_datadescriptor, ETSI EN 300 468 V1.11.1 (2010-04)cell_list_descriptorβ thecell_listdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)cell_frequency_link_descriptorβ thecell_frequency_linkdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)announcement_support_descriptorβ theannouncement_supportdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)application_signalling_descriptorβ theapplication_signallingdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)adaptation_field_data_descriptorβ theadaptation_field_datadescriptor, ETSI EN 300 468 V1.11.1 (2010-04)service_identifier_descriptorβ theservice_identifierdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)service_availability_descriptorβ theservice_availabilitydescriptor, ETSI EN 300 468 V1.11.1 (2010-04)default_authority_descriptorβ thedefault_authoritydescriptor, ETSI EN 300 468 V1.11.1 (2010-04)related_content_descriptorβ therelated_contentdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)TVA_id_descriptorβ theTVA_iddescriptor, ETSI EN 300 468 V1.11.1 (2010-04)content_identifier_descriptorβ thecontent_identifierdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)time_slice_fec_identifier_descriptorβ thetime_slice_fec_identifierdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)ECM_repetition_rate_descriptorβ theECM_repetition_ratedescriptor, ETSI EN 300 468 V1.11.1 (2010-04)S2_satellite_delivery_system_descriptorβ theS2_satellite_delivery_systemdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)enhanced_AC_3_descriptorβ theenhanced_AC_3descriptor, ETSI EN 300 468 V1.11.1 (2010-04)DTS_descriptorβ theDTSdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)AAC_descriptorβ theAACdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)XAIT_location_descriptorβ theXAIT_locationdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)FTA_content_management_descriptorβ theFTA_content_managementdescriptor, ETSI EN 300 468 V1.11.1 (2010-04)extension_descriptorβ theextensiondescriptor, ETSI EN 300 468 V1.11.1 (2010-04)
The SCTE 35 2004 crew π°οΈ
CUE_identifier_descriptorβ theCUE_identifierdescriptor, SCTE 35 2004extended_channel_nameβ theextended_channel_namedescriptor, SCTE 35 2004 β and yeah, no_descriptorsuffix on this one, she's built different πservice_locationβ theservice_locationdescriptor, SCTE 35 2004component_name_descriptorβ thecomponent_namedescriptor, SCTE 35 2004See alsoβhttp://www.etherguidesystems.com/Help/SDOs/ATSC/Semantics/Descriptors/Default.aspxπlogical_channel_number_descriptorβ thelogical_channel_numberdescriptor, SCTE 35 2004See alsoβhttp://www.coolstf.com/tsreader/descriptors.htmlπ
The ABNT NBR 15603-1 2007 babes π§π·
carousel_id_descriptorβ thecarousel_iddescriptor, ABNT NBR 15603-1 2007association_tag_descriptorβ theassociation_tagdescriptor, ABNT NBR 15603-1 2007deferred_association_tags_descriptorβ thedeferred_association_tagsdescriptor, ABNT NBR 15603-1 2007hierarchical_transmission_descriptorβ thehierarchical_transmissiondescriptor, ABNT NBR 15603-1 2007digital_copy_control_descriptorβ thedigital_copy_controldescriptor, ABNT NBR 15603-1 2007network_identifier_descriptorβ thenetwork_identifierdescriptor, ABNT NBR 15603-1 2007partial_transport_stream_time_descriptorβ thepartial_transport_stream_timedescriptor, ABNT NBR 15603-1 2007audio_component_descriptorβ theaudio_componentdescriptor, ABNT NBR 15603-1 2007hyperlink_descriptorβ thehyperlinkdescriptor, ABNT NBR 15603-1 2007target_area_descriptorβ thetarget_areadescriptor, ABNT NBR 15603-1 2007data_contents_descriptorβ thedata_contentsdescriptor, ABNT NBR 15603-1 2007video_decode_control_descriptorβ thevideo_decode_controldescriptor, ABNT NBR 15603-1 2007download_content_descriptorβ thedownload_contentdescriptor, ABNT NBR 15603-1 2007CA_EMM_TS_descriptorβ theCA_EMM_TSdescriptor, ABNT NBR 15603-1 2007CA_contract_information_descriptorβ theCA_contract_informationdescriptor, ABNT NBR 15603-1 2007CA_service_descriptorβ theCA_servicedescriptor, ABNT NBR 15603-1 2007TS_Information_descriptorβ thetransport_stream_informationdescriptor, ABNT NBR 15603-1 2007 β yes bestie, the name and the blurb don't match, that's just how she is, don't @ me πextended_broadcaster_descriptorβ theextended_broadcasterdescriptor, ABNT NBR 15603-1 2007logo_transmission_descriptorβ thelogo_transmissiondescriptor, ABNT NBR 15603-1 2007basic_local_event_descriptorβ thebasic_local_eventdescriptor, ABNT NBR 15603-1 2007reference_descriptorβ thereferencedescriptor, ABNT NBR 15603-1 2007node_relation_descriptorβ thenode_relationdescriptor, ABNT NBR 15603-1 2007short_node_information_descriptorβ short_node_information descriptor - ABNT NBR 15603-1 2007STC_reference_descriptorβ STC_reference descriptor - ABNT NBR 15603-1 2007.series_descriptorβ series descriptor - ABNT NBR 15603-1 2007event_group_descriptorβ event_group descriptor - ABNT NBR 15603-1 2007SI_parameter_descriptorβ SI_parameter descriptor - ABNT NBR 15603-1 2007.broadcaster_Name_Descriptorβ broadcaster_Name descriptor - ABNT NBR 15603-1 2007component_group_descriptorβ component_group descriptor - ABNT NBR 15603-1 2007SI_prime_TS_descriptorβ SI_prime_transport_stream descriptor - ABNT NBR 15603-1 2007.board_information_descriptorβ board_information descriptor - ABNT NBR 15603-1 2007LDT_linkage_descriptorβ LDT_linkage descriptor - ABNT NBR 15603-1 2007.connected_transmission_descriptorβ connected_transmission descriptor - ABNT NBR 15603-1 2007content_availability_descriptorβ content_availability descriptor - ABNT NBR 15603-1 2007service_group_descriptorβ service_group descriptor - ABNT NBR 15603-1 2007carousel_compatible_composite_descriptorβ carousel_compatible_composite descriptor - ABNT NBR 15603-1 2007conditional_playback_descriptorβ conditional_playback descriptor - ABNT NBR 15603-1 2007ISDBT_delivery_system_descriptorβ ISDBT terrestrial_delivery_system descriptor - ABNT NBR 15603-1 2007.partial_reception_descriptorβ partial_reception descriptor - ABNT NBR 15603-1 2007emergency_information_descriptorβ emergency_information descriptor - ABNT NBR 15603-1 2007data_component_descriptorβ data_component descriptor - ABNT NBR 15603-1 2007system_management_descriptorβ system_management descriptor - ABNT NBR 15603-1 2007atsc_stuffing_descriptorβ atsc_stuffing descriptor - ATSC A/65:2009atsc_ac3_audio_descriptorβ atsc_ac3_audio descriptor - ATSC A/65:2009atsc_caption_service_descriptorβ atsc_caption_service descriptor - ATSC A/65:2009atsc_content_advisory_descriptorβ atsc_content_advisory descriptor - ATSC A/65:2009atsc_extended_channel_descriptorβ atsc_extended_channel descriptor - ATSC A/65:2009atsc_service_location_descriptorβ atsc_service_location descriptor - ATSC A/65:2009atsc_time_shifted_service_descriptorβ atsc_time_shifted_service descriptor - ATSC A/65:2009atsc_component_name_descriptorβ atsc_component_name descriptor - ATSC A/65:2009atsc_DCC_departing_request_descriptorβ atsc_DCC_departing_request descriptor - ATSC A/65:2009atsc_DCC_arriving_request_descriptorβ atsc_DCC_arriving_request descriptor - ATSC A/65:2009atsc_redistribution_control_descriptorβ atsc_redistribution_control descriptor - ATSC A/65:2009atsc_ATSC_private_information_descriptorβ atsc_ATSC_private_information descriptor - ATSC A/65:2009atsc_genre_descriptorβ atsc_genre descriptor - ATSC A/65:2009
Defined at line 592 of descriptors.h. π
enum dvb_mpeg_es_frame_t
okay so these are the MPEG frame types bestie, the little building blocks of a video stream π
Enumerator
DVB_MPEG_ES_FRAME_UNKNOWNβ Unknown frame. (mystery frame, we don't know her π)DVB_MPEG_ES_FRAME_Iβ I frame. πDVB_MPEG_ES_FRAME_Pβ P frame. β¨DVB_MPEG_ES_FRAME_Bβ B frame. πDVB_MPEG_ES_FRAME_Dβ D frame. π¦
Defined at line 165 of mpeg_es.h.
enum dvb_streams
this one adds support for MPEG-TS Stream types π
Enumerator
stream_videoβ ISO/IEC 11172 Video.stream_video_h262β ITU-T Rec. H.262 | ISO/IEC 13818-2 Video or ISO/IEC 11172-2 constrained parameter video streamstream_audioβ ISO/IEC 11172 Audio.stream_audio_13818_3β ISO/IEC 13818-3 Audio.stream_private_sectionsβ ITU-T Rec. H.222.0 | ISO/IEC 13818-1 private_sectionsstream_private_dataβ ITU-T Rec. H.222.0 | ISO/IEC 13818-1 PES packets containing private datastream_mhegβ ISO/IEC 13522 MHEG.stream_h222β ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Annex A DSM-CCstream_h222_1β ITU-T Rec. H.222.1stream_13818_6_Aβ ISO/IEC 13818-6 type A.stream_13818_6_Bβ ISO/IEC 13818-6 type B.stream_13818_6_Cβ ISO/IEC 13818-6 type C.stream_13818_6_Dβ ISO/IEC 13818-6 type D.stream_h222_auxβ ITU-T Rec. H.222.0 | ISO/IEC 13818-1 auxiliarystream_audio_adtsβ ISO/IEC 13818-7 Audio with ADTS transport syntax.stream_video_14496_2β ISO/IEC 14496-2 Visual.stream_audio_latmβ ISO/IEC 14496-3 Audio with the LATM transport syntax as defined in ISO/IEC 14496-3 / AMD 1.stream_14496_1_pesβ ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in PES packets.stream_14496_1_isoβ ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in ISO/IEC14496_sections.stream_downloadβ ISO/IEC 13818-6 Synchronized Download Protocol.stream_video_h264stream_audio_14496_3stream_video_hevcstream_video_cavsstream_video_motostream_audio_a52stream_scte_27stream_audio_sddsstream_audio_dts_hdmvstream_audio_e_ac3stream_audio_dtsstream_audio_a52_vlsstream_spu_vlsstream_audio_sdds2
Defined at line 100 of pmt.h.
π οΈ Function Documentation π οΈ
okay bestie this is the part where we meet the actual functions, the girlies doing the work π
void atsc_table_eit_free (struct atsc_table_eit * table)
Frees all data allocated by the ATSC EIT table parser. π§Ή
Parameters
- table β pointer to
struct atsc_table_eitto be freed
ssize_t atsc_table_eit_init (struct dvb_v5_fe_parms * parms, const uint8_t * buf, ssize_t buflen, struct atsc_table_eit ** table)
Initializes and parses ATSC EIT table. β¨
Parameters
- parms β
struct dvb_v5_fe_parmspointer to the opened device - buf β buffer containing the EIT raw data
- buflen β length of the buffer
- table β pointer to
struct atsc_table_eitto be allocated and filled
This function allocates an ATSC EIT table and fills the fields inside the struct. It also makes sure that all fields will follow the CPU endianness. Due to that, the content of the buffer may change.
heads up: your buffer is not safe from edits here, it may get changed π
Returns
On success, it returns the size of the allocated struct. A negative value indicates an error.
void atsc_table_eit_print (struct dvb_v5_fe_parms * parms, struct atsc_table_eit * table)
Prints the content of the ATSC EIT table. π¨οΈ
Parameters
- parms β
struct dvb_v5_fe_parmspointer to the opened device - table β pointer to
struct atsc_table_eit
void atsc_table_mgt_free (struct atsc_table_mgt * table)
Frees all data allocated by the MGT table parser. π§Ή
Parameters
- table β pointer to
struct atsc_table_mgtto be freed
ssize_t atsc_table_mgt_init (struct dvb_v5_fe_parms * parms, const uint8_t * buf, ssize_t buflen, struct atsc_table_mgt ** table)
Initializes and parses MGT table. β¨
Parameters
- parms β
struct dvb_v5_fe_parmspointer to the opened device - buf β buffer containing the MGT raw data
- buflen β length of the buffer
- table β pointer to
struct atsc_table_mgtto be allocated and filled
This function allocates an ATSC MGT table and fills the fields inside the struct. It also makes sure that all fields will follow the CPU endianness. Due to that, the content of the buffer may change.
same deal, buffer can get modified, no cap π«Ά
Returns
On success, it returns the size of the allocated struct. A negative value indicates an error.
void atsc_table_mgt_print (struct dvb_v5_fe_parms * parms, struct atsc_table_mgt * table)
Prints the content of the MGT table. π¨οΈ
Parameters
- parms β
struct dvb_v5_fe_parmspointer to the opened device - table β pointer to
struct atsc_table_mgt
void atsc_table_vct_free (struct atsc_table_vct * table)
Frees all data allocated by the VCT table parser. π§Ή
Parameters
- table β pointer to
struct atsc_table_vctto be freed
ssize_t atsc_table_vct_init (struct dvb_v5_fe_parms * parms, const uint8_t * buf, ssize_t buflen, struct atsc_table_vct ** table)
Initializes and parses VCT table. β¨
Parameters
- parms β
struct dvb_v5_fe_parmspointer to the opened device - buf β buffer containing the VCT raw data
- buflen β length of the buffer
- table β pointer to
struct atsc_table_vctto be allocated and filled
This function allocates an ATSC VCT table and fills the fields inside the struct. It also makes sure that all fields will follow the CPU endianness. Due to that, the content of the buffer may change.
yup, buffer may change here too, it's giving "read the docs before you freak out" π
Returns
On success, it returns the size of the allocated struct. A negative value indicates an error.
void atsc_table_vct_print (struct dvb_v5_fe_parms * parms, struct atsc_table_vct * table)
Prints the content of the VCT table. π¨οΈ
Parameters
- parms β
struct dvb_v5_fe_parmspointer to the opened device - table β pointer to
struct atsc_table_vct
uint32_t dvb_bcd (uint32_t bcd)
Converts from BCD to CPU integer internal representation. π’
Parameters
- bcd β value in BCD encoding
void dvb_desc_free (struct dvb_desc ** list)
frees a dvb_desc linked list π§Ή
Parameters
- list β
struct dvb_descpointer.
int dvb_desc_parse (struct dvb_v5_fe_parms * parms, const uint8_t * buf, uint16_t buflen, struct dvb_desc ** head_desc)
parse MPEG-TS descriptors π
Parameters
- parms β Struct
dvb_v5_fe_parmspointer - buf β Buffer with data to be parsed
- buflen β Size of the buffer to be parsed
- head_desc β pointer to the place to store the parsed data
This function takes a buf as argument and parses it to find the MPEG-TS descriptors inside it, creating a linked list.
On success, head_desc will be allocated and filled with a linked list with the descriptors found inside the buffer.
This function is used by the several MPEG-TS table handlers to parse the entire table that got read by dvb_read_sessions and other similar functions.
Returns
Returns 0 on success, a negative value otherwise.
void dvb_desc_print (struct dvb_v5_fe_parms * parms, struct dvb_desc * desc)
prints the contents of a struct dvb_desc linked list π¨οΈ
Parameters
- parms β Struct
dvb_v5_fe_parmspointer - desc β
struct dvb_descpointer.
void dvb_hexdump (struct dvb_v5_fe_parms * parms, const char * prefix, const unsigned char * buf, int len)
dumps data into the logs in hexadecimal format π₯
Parameters
- parms β Struct
dvb_v5_fe_parmspointer - prefix β String to be printed before the
dvb_hexdump - buf β Buffer to hex dump
- len β Number of bytes to show
π int dvb_mpeg_es_pic_start_init(const uint8_t * buf, ssize_t buflen, struct dvb_mpeg_es_pic_start * pic_start) π
okay so this one builds you a struct dvb_mpeg_es_pic_start out of a buffer, no cap β¨
Parameters
bufβ Bufferbuflenβ Length of bufferpic_startβ Pointer to allocatedstructdvb_mpeg_es_pic_start
Returns
If buflen too small, return -1, 0 otherwise. π
So like β this function copies the length of struct dvb_mpeg_es_pic_start to pic_start and fixes endianness. And seq_start has to be allocated with malloc.
πΈ void dvb_mpeg_es_pic_start_print(struct dvb_v5_fe_parms * parms, struct dvb_mpeg_es_pic_start * pic_start) πΈ
Prints out all the deets of a struct dvb_mpeg_es_pic_start. it's giving show-and-tell π
Parameters
parmsβstruct dvb_v5_fe_parmsfor log functionspic_startβ Pointer tostruct dvb_mpeg_es_pic_startto print
This function prints the fields of struct dvb_mpeg_es_pic_start.
π¦ int dvb_mpeg_es_seq_start_init(const uint8_t * buf, ssize_t buflen, struct dvb_mpeg_es_seq_start * seq_start) π¦
Initialize a struct dvb_mpeg_es_seq_start from buffer. main character behavior fr fr π
Parameters
bufβ Bufferbuflenβ Length of bufferseq_startβ Pointer to allocatedstruct dvb_mpeg_es_seq_start
Returns
If buflen too small, return -1, 0 otherwise. β¨
This function copies the length of struct dvb_mpeg_es_seq_start to seq_start and fixes endianness. seq_start has to be allocated with malloc.
π«Ά void dvb_mpeg_es_seq_start_print(struct dvb_v5_fe_parms * parms, struct dvb_mpeg_es_seq_start * seq_start) π«Ά
Print details of struct dvb_mpeg_es_seq_start. bestie it literally just tells you everything π₯°
Parameters
parmsβstruct dvb_v5_fe_parmsfor log functionsseq_startβ Pointer tostruct dvb_mpeg_es_seq_startto print
This function prints the fields of struct dvb_mpeg_es_seq_start.
π void dvb_mpeg_pes_free(struct dvb_mpeg_pes * pes) π
Deallocate memory associated with a struct dvb_mpeg_pes. cleanup era π§Ή
Parameters
pesβstruct dvb_mpeg_pesto be deallocated
If the pointer pes was allocated dynamically, this function can be used to free the memory.
π ssize_t dvb_mpeg_pes_init(struct dvb_v5_fe_parms * parms, const uint8_t * buf, ssize_t buflen, uint8_t * table) π
Initialize a struct dvb_mpeg_pes from buffer. so slay β¨
Parameters
parmsβstruct dvb_v5_fe_parmsfor log functionsbufβ Bufferbuflenβ Length of buffertableβ Pointer to allocatedstruct dvb_mpeg_pes
Returns
Length of data in table
This function copies the length of struct dvb_mpeg_pes to table and fixes endianness. The pointer table has to be allocated on stack or dynamically. π
π void dvb_mpeg_pes_print(struct dvb_v5_fe_parms * parms, struct dvb_mpeg_pes * pes) π
Print details of struct dvb_mpeg_pes. reading it for filth (the good kind) π
Parameters
parmsβstruct dvb_v5_fe_parmsfor log functionspesβ Pointer tostruct dvb_mpeg_pesto print
This function prints the fields of struct dvb_mpeg_pes.
β void dvb_mpeg_ts_free(struct dvb_mpeg_ts * ts) β
Deallocate memory associated with a struct dvb_mpeg_ts. release it, let it go π¦
Parameters
tsβstruct dvb_mpeg_tsto be deallocated
If ts was allocated dynamically, this function can be used to free the memory.
π₯ ssize_t dvb_mpeg_ts_init(struct dvb_v5_fe_parms * parms, const uint8_t * buf, ssize_t buflen, uint8_t * table, ssize_t * table_length) π₯
Initialize a struct dvb_mpeg_ts from buffer. iconic π¬
Parameters
parmsβstruct dvb_v5_fe_parmsfor log functionsbufβ Bufferbuflenβ Length of buffertableβ Pointer to allocatedstruct dvb_mpeg_tstable_lengthβ Pointer tosize_twhere length will be written to
Returns
Length of data in table
This function copies the length of struct dvb_mpeg_ts to table and fixes endianness. The pointer table has to be allocated on stack or dynamically.
π void dvb_mpeg_ts_print(struct dvb_v5_fe_parms * parms, struct dvb_mpeg_ts * ts) π
Print details of struct dvb_mpeg_ts. bestie get a snack, it's a whole read π
Parameters
parmsβstruct dvb_v5_fe_parmsfor log functionstsβ Pointer tostruct dvb_mpeg_tsto print
This function prints the fields of struct dvb_mpeg_ts.
πΈ void dvb_table_eit_free(struct dvb_table_eit * table) πΈ
Frees all data allocated by the DVB EIT table parser. bye bye, love u, delete my number π
Parameters
tableβ pointer tostruct dvb_table_eitto be freed
β¨ ssize_t dvb_table_eit_init(struct dvb_v5_fe_parms * parms, const uint8_t * buf, ssize_t buflen, struct dvb_table_eit ** table) β¨
Initializes and parses EIT table. the way that it eats every time π
Parameters
parmsβstruct dvb_v5_fe_parmspointer to the opened devicebufβ buffer containing the EIT raw databuflenβ length of the buffertableβ pointer tostruct dvb_table_eitto be allocated and filled
This function allocates an EIT table and fills the fields inside the struct. It also makes sure that all fields will follow the CPU endianness. Due to that, the content of the buffer may change. π¨
Returns
On success, it returns the size of the allocated struct. A negative value indicates an error.
π¦ void dvb_table_eit_print(struct dvb_v5_fe_parms * parms, struct dvb_table_eit * table) π¦
Prints the content of the DVB EIT table. tea time β
Parameters
parmsβstruct dvb_v5_fe_parmspointer to the opened devicetableβ pointer tostruct dvb_table_eit
π« void dvb_table_header_init(struct dvb_table_header * header) π«
Initializes and parses MPEG-TS table header. where it all begins, lowkey π
Parameters
headerβ pointer tostruct dvb_table_headerto be parsed
π void dvb_table_header_print(struct dvb_v5_fe_parms * parms, const struct dvb_table_header * header) π
Prints the content of the MPEG-TS table header.
Parameters
parmsβstruct dvb_v5_fe_parmspointer to the opened deviceheaderβ pointer tostruct dvb_table_headerto be printed
π void dvb_table_nit_descriptor_handler(struct dvb_v5_fe_parms * parms, struct dvb_table_nit * table, enum descriptors descriptor, nit_handler_callback_t * call_nit, nit_tran_handler_callback_t * call_tran, void * priv) π
For each entry at NIT and NIT transport tables, call a callback. this is the group-chat notification of the DVB world fr fr π
Parameters
parmsβstruct dvb_v5_fe_parmspointer to the opened devicetableβ pointer tostruct dvb_table_nitdescriptorβ indicates the NIT table descriptor to seekcall_nitβ anit_handler_callback_tfunction to be called when a new entry at the NIT table is found (orNULL).call_tranβ anit_tran_handler_callback_tfunction to be called when a new entry at the NIT transport table is found (orNULL).privβ an opaque pointer to be optionally used by the callbacks. The function won't touch on it, just use as an argument for the callback functions.
When parsing a NIT entry, we need to call some code to properly handle when a given descriptor in the table is found. This is used, for example, to create newer transponders to seek during scan.
For example, to seek for the CATV delivery system descriptor and call a function that would add a new transponder to a scan procedure:
dvb_table_nit_descriptor_handler(
&parms->p, dvb_scan_handler->nit,
cable_delivery_system_descriptor,
NULL, add_update_nit_dvbc, &tr);
π§ void dvb_table_nit_free(struct dvb_table_nit * table) π§
Frees all data allocated by the NIT table parser.
Parameters
tableβ pointer tostruct dvb_table_nitto be freed
β ssize_t dvb_table_nit_init(struct dvb_v5_fe_parms * parms, const uint8_t * buf, ssize_t buflen, struct dvb_table_nit ** table) β
Initializes and parses NIT table. obsessed actually π
Parameters
parmsβstruct dvb_v5_fe_parmspointer to the opened devicebufβ buffer containing the NIT raw databuflenβ length of the buffertableβ pointer tostruct dvb_table_nitto be allocated and filled
This function allocates a NIT table and fills the fields inside the struct. It also makes sure that all fields will follow the CPU endianness. Due to that, the content of the buffer may change. π¨
Returns
On success, it returns the size of the allocated struct. A negative value indicates an error.
πΈ void dvb_table_nit_print(struct dvb_v5_fe_parms * parms, struct dvb_table_nit * table) πΈ
Prints the content of the NIT table. no thoughts, just vibes and output β¨
Parameters
parmsβstruct dvb_v5_fe_parmspointer to the opened devicetableβ pointer tostruct dvb_table_nit
π
void dvb_table_pat_free(struct dvb_table_pat * table) π
Frees all data allocated by the PAT table parser. decluttering, we love to see it π§Ή
Parameters
tableβ pointer tostruct dvb_table_patto be freed
π ssize_t dvb_table_pat_init(struct dvb_v5_fe_parms * parms, const uint8_t * buf, ssize_t buflen, struct dvb_table_pat ** table) π
Initializes and parses PAT table.
Parameters
parmsβstruct dvb_v5_fe_parmspointer to the opened devicebufβ buffer containing the PAT raw databuflenβ length of the buffertableβ pointer tostruct dvb_table_patto be allocated and filled
This function allocates a PAT table and fills the fields inside the struct. It also makes sure that all fields will follow the CPU endianness. Due to that, the content of the buffer may change. π¨
Returns
On success, it returns the size of the allocated struct. A negative value indicates an error.
π¦ void dvb_table_pat_print(struct dvb_v5_fe_parms * parms, struct dvb_table_pat * table) π¦
Prints the content of the PAT table.
Parameters
parmsβstruct dvb_v5_fe_parmspointer to the opened devicetableβ pointer tostruct dvb_table_pat
π void dvb_table_pmt_free(struct dvb_table_pmt * table) π
Frees all data allocated by the PMT table parser. and that's on memory hygiene π
Parameters
tableβ pointer tostruct dvb_table_pmtto be freed
π₯ ssize_t dvb_table_pmt_init(struct dvb_v5_fe_parms * parms, const uint8_t * buf, ssize_t buflen, struct dvb_table_pmt ** table) π₯
Initializes and parses PMT table. it's giving efficiency π
Parameters
parmsβstruct dvb_v5_fe_parmspointer to the opened devicebufβ buffer containing the PMT raw databuflenβ length of the buffertableβ pointer tostruct dvb_table_pmtto be allocated and filled
This function allocates a PMT table and fills the fields inside the struct. It also makes sure that all fields will follow the CPU endianness. Due to that, the content of the buffer may change. π¨
Returns
On success, it returns the size of the allocated struct. A negative value indicates an error.
π void dvb_table_pmt_print(struct dvb_v5_fe_parms * parms, const struct dvb_table_pmt * table) π
Prints the content of the PAT table. (yes bestie, the doc really does say PAT here β we're just reporting the lore exactly as it was handed down π)
Parameters
parmsβstruct dvb_v5_fe_parmspointer to the opened devicetableβ pointer tostruct dvb_table_pmt
π§ void dvb_table_sdt_free(struct dvb_table_sdt * table) π§
Frees all data allocated by the SDT table parser.
Parameters
tableβ pointer tostruct dvb_table_sdtto be freed
β¨ ssize_t dvb_table_sdt_init(struct dvb_v5_fe_parms * parms, const uint8_t * buf, ssize_t buflen, struct dvb_table_sdt ** table) β¨
Initializes and parses SDT table.
parmsβ astruct dvb_v5_fe_parmspointer, aka the opened device you're working with π«Άbufβ the buffer holding all that raw SDT databuflenβ the length of said buffer, bestietableβ a pointer to thestruct dvb_table_sdtthat's about to get allocated and filled in
So what's this one doing? It allocates a whole SDT table and fills up all the fields inside the struct. And then β the iconic part β it makes sure every single field follows the CPU endianness. Which means, and I need you to hear me on this: the content of the buffer may change π not a drill, don't go reusing that buffer and expecting it to be untouched.
Returns
On success it hands you the size of the allocated struct. A negative value means it went wrong. No cap π
void dvb_table_sdt_print (struct dvb_v5_fe_parms * parms, struct dvb_table_sdt * table)
Prints out everything inside the SDT table. Just, like, dumps the whole vibe onto your screen β¨
Parameters
parmsβ astruct dvb_v5_fe_parmspointer to the opened devicetableβ pointer tostruct dvb_table_sdt
void dvb_time (const uint8_t data[5], struct tm * tm)
Takes a DVB EIT formatted timestamp and converts it into a struct tm. Time travel but make it C π°οΈ
Parameters
dataβ the event, in DVB EIT time formattmβ pointer to thestruct tmwhere the converted timestamp gets stored
πΎ VARIABLE DOCUMENTATION πΎ
const struct dvb_descriptor dvb_descriptors[] [extern]
Holds the parsers for all the several descriptors. Like a little toolbox of descriptor-handling besties π§°
const char* dvb_mpeg_es_frame_names[5] [extern]
A vector that translates from enum dvb_mpeg_es_frame_t to a string. enum in, string out, slay π
const dvb_table_init_func dvb_table_initializers[256] [extern]
A table containing all the possible descriptors. All 256 of them, no skips, no shortcuts π
const char* pmt_stream_name[] [extern]
Converts from enum dvb_streams into a string. Same energy as the frame names, different enum πΈ
π AUTHOR π
Generated automatically by Doxygen for libdvbv5 from the source code. Not me writing a cute little bio for myself, the robots did it π€β¨
okay so that's literally the whole page, bestie β every single flag, field, struct and signature accounted for, periodt π
And that's a wrap on dvb_table(3) from libdvbv5, Version 1.32.0 π β you made it to the very end, main character energy fr fr ππ¦ thank you for reading all eight parts, ily, go touch some grass and then come back and read your manpages again π
π¦ where this page comes from
- fedora 43: libdvbv5-devel 1.32.0-1.fc43 Β· LGPL-2.1-or-later AND LGPL-2.1-or-later WITH Linux-syscall-note
- fedora 43: libdvbv5-devel 1.32.0-1.fc43 Β· LGPL-2.1-or-later AND LGPL-2.1-or-later WITH Linux-syscall-note
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms