📄 umc_mp4_parser.h
字号:
/*////////////////////////////////////////////////////////////////////////////////// INTEL CORPORATION PROPRIETARY INFORMATION// This software is supplied under the terms of a license agreement or// nondisclosure agreement with Intel Corporation and may not be copied// or disclosed except in accordance with the terms of that agreement.// Copyright(c) 2004-2005 Intel Corporation. All Rights Reserved.//*/#ifndef __UMC_MP4_PARSER_H__#define __UMC_MP4_PARSER_H__#include "vm_types.h"#include "umc_data_reader.h"/*******************DECLARATIONS TYPES********************/#define MAXTRACKS 1024typedef struct{ vm_var64u start; /* byte start in file */ vm_var64u end; /* byte endpoint in file */ unsigned int size; /* byte size for writing */ char type[4];} T_atom_mp4;typedef struct{ float values[9];} T_matrix_data;typedef struct{ unsigned char version; long flags; vm_var64u creation_time; vm_var64u modification_time; unsigned int time_scale; vm_var64u duration; float preferred_rate; float preferred_volume; char reserved[10]; T_matrix_data matrix; long preview_time; long preview_duration; long poster_time; long selection_time; long selection_duration; long current_time; unsigned int next_track_id;} T_mvhd_data;typedef struct{ unsigned char version; long flags; unsigned short objectDescriptorID; unsigned char OD_profileAndLevel; unsigned char scene_profileAndLevel; unsigned char audioProfileId; unsigned char videoProfileId; unsigned char graphics_profileAndLevel;} T_iods_data;typedef struct{ unsigned char version; long flags; vm_var64u creation_time; vm_var64u modification_time; unsigned int track_id; long reserved1; vm_var64u duration; char reserved2[8]; int layer; int alternate_group; float volume; long reserved3; T_matrix_data matrix; float track_width; float track_height; int is_video; int is_audio; int is_hint;} T_tkhd_data;typedef struct{ unsigned char version; long flags; vm_var64u creation_time; vm_var64u modification_time; unsigned int time_scale; vm_var64u duration; unsigned short language; unsigned short quality;} T_mdhd_data;typedef struct{ unsigned char version; long flags; int graphics_mode; int opcolor[3];} T_vmhd_data;typedef struct{ unsigned char version; long flags; int balance; int reserved;} T_smhd_data;/* hint media handler */typedef struct{ unsigned char version; long flags; unsigned short maxPDUsize; unsigned short avgPDUsize; unsigned int maxbitrate; unsigned int avgbitrate; unsigned int slidingavgbitrate;} T_hmhd_data;typedef struct{ vm_var64u start; unsigned char version; long flags; int decoderConfigLen; unsigned char* decoderConfig; unsigned char objectTypeID; unsigned char streamType; long bufferSizeDB; unsigned int maxBitrate; unsigned int avgBitrate; unsigned short es_ID; unsigned short ocr_ID; unsigned char streamDependenceFlag; unsigned char urlflag; unsigned char ocrflag; unsigned char streamPriority; unsigned char* URLString;} T_esds_data;typedef struct{ char format[4]; char reserved[6]; unsigned short data_reference;/* common to audio and video */ int version; int revision; char vendor[4];/* video description */ long temporal_quality; long spatial_quality; unsigned short width; unsigned short height; unsigned int dpi_horizontal; unsigned int dpi_vertical; long data_size; int frames_per_sample; char compressor_name[32]; int depth; int ctab_id; float gamma; int fields; /* 0, 1, or 2 */ int field_dominance; /* 0 - unknown 1 - top first 2 - bottom first *//* audio description */ unsigned short channels; unsigned short sample_size; int compression_id; int packet_size; unsigned int sample_rate;/* hint description */ int maxPktSize;/* MP4 elementary stream descriptor */ T_esds_data esds;} T_stsd_table_data;typedef struct{ unsigned char version; long flags; unsigned int total_entries; T_stsd_table_data * table;} T_stsd_data;typedef struct{ unsigned int sample_count; unsigned int sample_duration;} T_stts_table_data;typedef struct{ unsigned char version; long flags; unsigned int total_entries; long entries_allocated; T_stts_table_data *table;} T_stts_data;/* sync sample */typedef struct{ long sample;} T_stss_table_data;typedef struct{ int version; long flags; long total_entries; long entries_allocated; T_stss_table_data *table;} T_stss_data;/* sample to chunk */typedef struct{ unsigned int chunk; unsigned int samples; unsigned int id; unsigned int first_sample;} T_stsc_table_data;typedef struct{ unsigned char version; long flags; unsigned int total_entries; unsigned int entries_allocated; T_stsc_table_data *table;} T_stsc_data;/* sample size */typedef struct{ unsigned int size;} T_stsz_table_data;typedef struct{ unsigned char version; long flags; unsigned int sample_size; unsigned int total_entries; unsigned int entries_allocated; T_stsz_table_data *table;} T_stsz_data;/* chunk offset */typedef struct{ unsigned int offset;} T_stco_table_data;typedef struct{ unsigned char version; long flags; unsigned int total_entries; long entries_allocated; T_stco_table_data *table;} T_stco_data;typedef struct{ vm_var64u offset;} T_co64_table_data;typedef struct{ unsigned char version; long flags; unsigned int total_entries; T_co64_table_data *table;} T_co64_data;/* composition time to sample */typedef struct{ unsigned int sample_count; unsigned int sample_offset;} T_ctts_table_data;typedef struct{ unsigned char version; long flags; unsigned int total_entries; long entries_allocated; T_ctts_table_data *table;} T_ctts_data;/* sample table */typedef struct{ int version; long flags; T_stsd_data stsd; T_stts_data stts; T_stss_data stss; T_stsc_data stsc; T_stsz_data stsz; T_stco_data stco; T_co64_data co64; T_ctts_data ctts;} T_stbl_data;/* handler reference */typedef struct{ unsigned char version; long flags; char component_type[4]; char component_subtype[4]; long component_manufacturer; long component_flags; long component_flag_mask; char component_name[256];} T_hdlr_data;/* data reference */typedef struct{ unsigned int size; char type[4]; unsigned char version; long flags; char * data_reference;} T_dref_table_data;typedef struct{ unsigned char version; long flags; unsigned int total_entries; T_dref_table_data *table;} T_dref_data;/* data information */typedef struct{ T_dref_data dref;} T_dinf_data;typedef struct{ int is_video; int is_audio; int is_hint; T_vmhd_data vmhd; T_smhd_data smhd; T_hmhd_data hmhd; T_stbl_data stbl; T_hdlr_data hdlr; T_dinf_data dinf;} T_minf_data;typedef struct{ T_mdhd_data mdhd; T_minf_data minf; T_hdlr_data hdlr;} T_mdia_data;/* edit list */typedef struct{ long duration; long time; float rate;} T_elst_table_data;typedef struct{ int version; long flags; long total_entries; T_elst_table_data *table;} T_elst_data;typedef struct{ T_elst_data elst;} T_edts_data;/* hint */typedef struct{ int numTracks; long trackIds[MAXTRACKS]; void* traks[MAXTRACKS];} T_hint_data;typedef struct{ unsigned int idTrak;} T_dpnd_data;/* tref */typedef struct{ T_dpnd_data dpnd; T_hint_data hint;} T_tref_data;typedef struct{ T_tkhd_data tkhd; T_mdia_data mdia; T_edts_data edts; T_tref_data tref;} T_trak_data;typedef struct{ char *copyright; int copyright_len; char *name; int name_len; char *info; int info_len;} T_udta_data;typedef struct{ unsigned int total_tracks; T_mvhd_data mvhd; T_iods_data iods; T_trak_data *trak[MAXTRACKS]; T_udta_data udta;} T_moov;typedef struct{ T_moov moov; T_atom_mp4 data; T_atom_mp4 esds;} info_atoms;#endif //__UMC_MP4_PARSER_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -