doubao_chat/include_lib/net/libmpeg/mpeg-element-descriptor.h

161 lines
4.9 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _mpeg_element_descriptor_h_
#define _mpeg_element_descriptor_h_
size_t mpeg_elment_descriptor(const uint8_t *data, size_t bytes);
typedef struct _video_stream_descriptor_t {
uint32_t multiple_frame_rate_flag : 1;
// Table 2-47 – Frame rate code
// 23.976/24.0/25.0/29.97/30.0/50.0/59.94/60.0
uint32_t frame_rate_code : 4;
uint32_t MPEG_1_only_flag : 1;
uint32_t constrained_parameter_flag : 1;
uint32_t still_picture_flag : 1;
// MPEG_1_only_flag == 0
uint32_t profile_and_level_indication : 8;
uint32_t chroma_format : 2;
uint32_t frame_rate_extension_flag : 1;
} video_stream_descriptor_t;
size_t video_stream_descriptor(const uint8_t *data, size_t bytes);
typedef struct _audio_stream_descriptor_t {
uint32_t free_format_flag : 1;
uint32_t ID : 1;
uint32_t layer : 2;
uint32_t variable_rate_audio_indicator : 1;
} audio_stream_descriptor_t;
size_t audio_stream_descriptor(const uint8_t *data, size_t bytes);
/*
Table 2-50 – Hierarchy_type field values
Value Description
0 Reserved
1 Spatial Scalability
2 SNR Scalability
3 Temporal Scalability
4 Data partitioning
5 Extension bitstream
6 Private Stream
7 Multi-view Profile
8 Combined Scalability
9 MVC video sub-bitstream
10-14 Reserved
15 Base layer or MVC base view sub-bitstream or AVC video sub-bitstream of MVC
*/
typedef struct _hierarchy_descriptor_t {
uint32_t reserved0 : 1;
uint32_t temporal_scalability_flag : 1;
uint32_t spatial_scalability_flag : 1;
uint32_t quality_scalability_flag : 1;
uint32_t hierarchy_type : 4;
uint32_t tref_present_flag : 1;
uint32_t reserved1 : 1;
uint32_t hierarchy_layer_index : 6;
uint32_t reserved2 : 2;
uint32_t hierarchy_embedded_layer_index : 6;
uint32_t reserved3 : 2;
uint32_t hierarchy_channel : 6;
} hierarchy_descriptor_t;
size_t hierarchy_descriptor(const uint8_t *data, size_t bytes);
typedef struct _language_descriptor_t {
uint32_t code : 24;
uint32_t audio : 8;
} language_descriptor_t;
size_t language_descriptor(const uint8_t *data, size_t bytes);
typedef struct _system_clock_descriptor_t {
uint32_t external_clock_reference_indicator : 1;
uint32_t clock_accuracy_integer : 6;
uint32_t clock_accuracy_exponent : 3;
} system_clock_descriptor_t;
size_t system_clock_descriptor(const uint8_t *data, size_t bytes);
typedef struct _mpeg4_video_descriptor_t {
uint8_t visual_profile_and_level;
} mpeg4_video_descriptor_t;
size_t mpeg4_video_descriptor(const uint8_t *data, size_t bytes);
typedef struct _mpeg4_audio_descriptor_t {
uint8_t profile_and_level;
} mpeg4_audio_descriptor_t;
size_t mpeg4_audio_descriptor(const uint8_t *data, size_t bytes);
typedef struct _avc_video_descriptor_t {
uint32_t profile_idc : 8;
uint32_t constraint_set0_flag : 1;
uint32_t constraint_set1_flag : 1;
uint32_t constraint_set2_flag : 1;
uint32_t constraint_set3_flag : 1;
uint32_t constraint_set4_flag : 1;
uint32_t constraint_set5_flag : 1;
uint32_t AVC_compatible_flags : 2;
uint32_t level_idc : 8;
uint32_t AVC_still_present : 1;
uint32_t AVC_24_hour_picture_flag : 1;
uint32_t frame_packing_SEI_not_present_flag : 1;
} avc_video_descriptor_t;
size_t avc_video_descriptor(const uint8_t *data, size_t bytes);
typedef struct _avc_timing_hrd_descriptor_t {
uint32_t hrd_management_valid_flag : 1;
uint32_t picture_and_timing_info_present : 1;
uint32_t _90kHZ_flag : 1;
uint32_t fixed_frame_rate_flag : 1;
uint32_t temporal_poc_flag : 1;
uint32_t picture_to_display_conversion_flag : 1;
uint32_t N;
uint32_t K;
uint32_t num_unit_in_tick;
} avc_timing_hrd_descriptor_t;
size_t avc_timing_hrd_descriptor(const uint8_t *data, size_t bytes);
typedef struct _mpeg2_aac_descriptor_t {
uint32_t profile : 8;
uint32_t channel_configuration : 8;
uint32_t additional_information : 8;
} mpeg2_aac_descriptor_t;
size_t mpeg2_aac_descriptor(const uint8_t *data, size_t bytes);
typedef struct _svc_extension_descriptor_t {
uint16_t width;
uint16_t height;
uint16_t frame_rate;
uint16_t average_bitrate;
uint16_t maximum_bitrate;
uint32_t quality_id_start : 4;
uint32_t quality_id_end : 4;
uint32_t temporal_id_start : 3;
uint32_t temporal_id_end : 3;
uint32_t dependency_id : 3;
uint32_t no_sei_nal_unit_present : 1;
} svc_extension_descriptor_t;
size_t svc_extension_descriptor(const uint8_t *data, size_t bytes);
typedef struct _mvc_extension_descriptor_t {
uint16_t average_bit_rate;
uint16_t maximum_bitrate;
uint32_t view_order_index_min : 10;
uint32_t view_order_index_max : 10;
uint32_t temporal_id_start : 3;
uint32_t temporal_id_end : 3;
uint32_t no_sei_nal_unit_present : 1;
uint32_t no_prefix_nal_unit_present : 1;
} mvc_extension_descriptor_t;
size_t mvc_extension_descriptor(const uint8_t *data, size_t bytes);
#endif /* !_mpeg_element_descriptor_h_ */