⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 private.h

📁 完整的RTP RTSP代码库
💻 H
字号:
#ifndef PRIVATE_H#define PRIVATE_H/* ================================= structures */#define HEADER_LENGTH 8#define MAXTRACKS 1024#include "sizes.h"typedef struct{	float values[9];} quicktime_matrix_t;typedef struct{	int version;	long flags;	unsigned long creation_time;	unsigned long modification_time;	int track_id;	long reserved1;	long duration;	char reserved2[8];	int layer;	int alternate_group;	float volume;	long reserved3;	quicktime_matrix_t matrix;	float track_width;	float track_height;	int is_video;	int is_audio;	int is_hint;} quicktime_tkhd_t;typedef struct{	long seed;	long flags;	long size;	short int *alpha;	short int *red;	short int *green;	short int *blue;} quicktime_ctab_t;/* ===================== sample table ======================== // *//* sample description */typedef struct{	int motion_jpeg_quantization_table;} quicktime_mjqt_t;typedef struct{	int motion_jpeg_huffman_table;} quicktime_mjht_t;typedef struct{	int timeScale;} quicktime_tims_t;typedef struct{	int version;	long flags;	int decoderConfigLen;	u_char* decoderConfig;} quicktime_esds_t;typedef struct{	char format[4];	char reserved[6];	int data_reference;/* common to audio and video */	int version;	int revision;	char vendor[4];/* video description */	long temporal_quality;	long spatial_quality;	int width;	int height;	float dpi_horizontal;	float dpi_vertical;	long data_size;	int frames_per_sample;	char compressor_name[32];	int depth;	int ctab_id;	quicktime_ctab_t ctab;	float gamma;	int fields;    /* 0, 1, or 2 */	int field_dominance;   /* 0 - unknown     1 - top first     2 - bottom first */	quicktime_mjqt_t mjqt;	quicktime_mjht_t mjht;/* audio description */	int channels;	int sample_size;	int compression_id;	int packet_size;	float sample_rate;/* hint description */	int maxPktSize;	quicktime_tims_t tims;/* MP4 elementary stream descriptor */	quicktime_esds_t esds;} quicktime_stsd_table_t;typedef struct{	int version;	long flags;	long total_entries;	quicktime_stsd_table_t *table;} quicktime_stsd_t;/* time to sample */typedef struct{	long sample_count;	long sample_duration;} quicktime_stts_table_t;typedef struct{	int version;	long flags;	long total_entries;	long entries_allocated;	quicktime_stts_table_t *table;} quicktime_stts_t;/* sync sample */typedef struct{	long sample;} quicktime_stss_table_t;typedef struct{	int version;	long flags;	long total_entries;	long entries_allocated;	quicktime_stss_table_t *table;} quicktime_stss_t;/* sample to chunk */typedef struct{	long chunk;	long samples;	long id;} quicktime_stsc_table_t;typedef struct{	int version;	long flags;	long total_entries;		long entries_allocated;	quicktime_stsc_table_t *table;} quicktime_stsc_t;/* sample size */typedef struct{	long size;} quicktime_stsz_table_t;typedef struct{	int version;	long flags;	long sample_size;	long total_entries;	long entries_allocated;    /* used by the library for allocating a table */	quicktime_stsz_table_t *table;} quicktime_stsz_t;/* chunk offset */typedef struct{	long offset;} quicktime_stco_table_t;typedef struct{	int version;	long flags;	long total_entries;		long entries_allocated;    /* used by the library for allocating a table */	quicktime_stco_table_t *table;} quicktime_stco_t;/* composition time to sample */typedef struct{	long sample_count;	long sample_offset;} quicktime_ctts_table_t;typedef struct{	int version;	long flags;	long total_entries;	long entries_allocated;	quicktime_ctts_table_t *table;} quicktime_ctts_t;/* sample table */typedef struct{	int version;	long flags;	quicktime_stsd_t stsd;	quicktime_stts_t stts;	quicktime_stss_t stss;	quicktime_stsc_t stsc;	quicktime_stsz_t stsz;	quicktime_stco_t stco;	quicktime_ctts_t ctts;} quicktime_stbl_t;/* data reference */typedef struct{	long size;	char type[4];	int version;	long flags;	char *data_reference;} quicktime_dref_table_t;typedef struct{	int version;	long flags;	long total_entries;	quicktime_dref_table_t *table;} quicktime_dref_t;/* data information */typedef struct{	quicktime_dref_t dref;} quicktime_dinf_t;/* video media header */typedef struct{	int version;	long flags;	int graphics_mode;	int opcolor[3];} quicktime_vmhd_t;/* sound media header */typedef struct{	int version;	long flags;	int balance;	int reserved;} quicktime_smhd_t;/* generic media handler */typedef struct{	int version;	long flags;	int graphics_mode;	int opcolor[3];	int balance;	int reserved;} quicktime_gmin_t;typedef struct{	quicktime_gmin_t gmin;} quicktime_gmhd_t;/* hint media handler */typedef struct{	int version;	long flags;	int maxPDUsize;	int avgPDUsize;	long maxbitrate;	long avgbitrate;	long slidingavgbitrate;} quicktime_hmhd_t;/* handler reference */typedef struct{	int 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];} quicktime_hdlr_t;/* media information */typedef struct{	int is_video;	int is_audio;	int is_hint;	quicktime_vmhd_t vmhd;	quicktime_smhd_t smhd;	quicktime_gmhd_t gmhd;	quicktime_hmhd_t hmhd;	quicktime_stbl_t stbl;	quicktime_hdlr_t hdlr;	quicktime_dinf_t dinf;} quicktime_minf_t;/* media header */typedef struct{	int version;	long flags;	unsigned long creation_time;	unsigned long modification_time;	long time_scale;	long duration;	int language;	int quality;} quicktime_mdhd_t;/* media */typedef struct{	quicktime_mdhd_t mdhd;	quicktime_minf_t minf;	quicktime_hdlr_t hdlr;} quicktime_mdia_t;/* hint */typedef struct{	int numTracks;	long trackIds[MAXTRACKS];	void* traks[MAXTRACKS];} quicktime_hint_t;/* tref */typedef struct{	quicktime_hint_t hint;} quicktime_tref_t;/* edit list */typedef struct{	long duration;	long time;	float rate;} quicktime_elst_table_t;typedef struct{	int version;	long flags;	long total_entries;	quicktime_elst_table_t *table;} quicktime_elst_t;typedef struct{	quicktime_elst_t elst;} quicktime_edts_t;typedef struct {	u_int64_t			numBytes;	/* bytes sent including 12 byte RTP hdrs */} quicktime_trpy_t;typedef struct {	u_int64_t			numPackets; /* packets sent */} quicktime_nump_t;typedef struct {	u_int64_t			numBytes;	/* bytes sent of just payload data */} quicktime_tpyl_t;typedef struct {	u_int32_t			granularity;	u_int32_t			maxBitRate;} quicktime_maxr_t;typedef struct {	u_int64_t			numBytes;	/* bytes sent from media data */} quicktime_dmed_t;typedef struct {	u_int64_t			numBytes;	/* bytes of immediate data */} quicktime_dimm_t;typedef struct {	u_int64_t			numBytes;	/* bytes of repeated data */} quicktime_drep_t;typedef struct {	int32_t				milliSecs;	/* min relative xmit time */} quicktime_tmin_t;typedef struct {	int32_t				milliSecs;	/* max relative xmit time */} quicktime_tmax_t;typedef struct {	u_int32_t			numBytes;	/* largest packet size */} quicktime_pmax_t;typedef struct {	u_int32_t			milliSecs;	/* longest packet duration */} quicktime_dmax_t;typedef struct {	u_int32_t			payloadNumber;	/* RTP payload number */	char				rtpMapString[256]; /* TBD make this dynamically sized */} quicktime_payt_t;typedef struct {	quicktime_trpy_t	trpy;	quicktime_nump_t	nump;	quicktime_tpyl_t	tpyl;	quicktime_maxr_t	maxr;	/* TBD there can be multiple such atoms */	quicktime_dmed_t	dmed;	quicktime_dimm_t	dimm;	quicktime_drep_t	drep;	quicktime_tmin_t	tmin;	quicktime_tmax_t	tmax;	quicktime_pmax_t	pmax;	quicktime_dmax_t	dmax;	quicktime_payt_t	payt;} quicktime_hinf_t;typedef struct {	char*				string;} quicktime_sdp_t;typedef struct {	char*				string;} quicktime_rtp_t;typedef struct {	quicktime_sdp_t		sdp;} quicktime_hint_hnti_t;typedef struct {	quicktime_rtp_t		rtp;} quicktime_hnti_t;typedef struct {	/* TBD name */	quicktime_hinf_t	hinf;	quicktime_hint_hnti_t	hnti;} quicktime_hint_udta_t;typedef struct{	quicktime_tkhd_t tkhd;	quicktime_mdia_t mdia;	quicktime_edts_t edts;	quicktime_tref_t tref;	quicktime_hint_udta_t hint_udta;} quicktime_trak_t;typedef struct{	int version;	long flags;	int audioProfileId;	int videoProfileId;} quicktime_iods_t;typedef struct{	int version;	long flags;	unsigned long creation_time;	unsigned long modification_time;	long time_scale;	long duration;	float preferred_rate;	float preferred_volume;	char reserved[10];	quicktime_matrix_t matrix;	long preview_time;	long preview_duration;	long poster_time;	long selection_time;	long selection_duration;	long current_time;	long next_track_id;} quicktime_mvhd_t;typedef struct{	char *copyright;	int copyright_len;	char *name;	int name_len;	char *info;	int info_len;	quicktime_hnti_t hnti;} quicktime_udta_t;typedef struct{	int total_tracks;	quicktime_mvhd_t mvhd;	quicktime_iods_t iods;	quicktime_trak_t *trak[MAXTRACKS];	quicktime_udta_t udta;	quicktime_ctab_t ctab;} quicktime_moov_t;typedef struct{	long start;	long size;} quicktime_mdat_t;typedef struct{	long start;      /* byte start in file */	long end;        /* byte endpoint in file */	long size;       /* byte size for writing */	char type[4];} quicktime_atom_t;/* table of pointers to every track */typedef struct{	quicktime_trak_t *track; /* real quicktime track corresponding to this table */	int channels;            /* number of audio channels in the track */	long current_position;   /* current sample in output file */	long current_chunk;      /* current chunk in output file */	void *codec;	/* Array of hint tracks for this audio track */	int totalHintTracks;	quicktime_trak_t *hintTracks[MAXTRACKS];	long hintPositions[MAXTRACKS];} quicktime_audio_map_t;typedef struct{	quicktime_trak_t *track;	long current_position;	long current_chunk;/* Array of pointers to frames of raw data when caching frames. */	unsigned char **frame_cache;	long frames_cached;	void *codec;	/* Array of hint tracks for this video track */	int totalHintTracks;	quicktime_trak_t *hintTracks[MAXTRACKS];	long hintPositions[MAXTRACKS];} quicktime_video_map_t;/* file descriptor passed to all routines */typedef struct{	FILE *stream;	long total_length;	quicktime_mdat_t mdat;	quicktime_moov_t moov;	int rd;	int wr;	int use_avi;	int use_mp4;/* mapping of audio channels to movie tracks *//* one audio map entry exists for each channel */	int total_atracks;	quicktime_audio_map_t *atracks;/* mapping of video tracks to movie tracks */	int total_vtracks;	quicktime_video_map_t *vtracks;	int total_hint_tracks;/* for begining and ending frame writes where the user wants to write the  *//* file descriptor directly */	long offset;/* Number of processors at our disposal */	int cpus;/* I/O */	long file_position;      /* Current position of file descriptor *//* Read ahead buffer */	long preload_size;      /* Enables preload when nonzero. */	char *preload_buffer;	long preload_start;     /* Start of preload_buffer in file */	long preload_end;       /* End of preload buffer in file */	long preload_ptr;       /* Offset of preload_start in preload_buffer *//* Parameters for frame currently being decoded */	int do_scaling;	int in_x, in_y, in_w, in_h, out_w, out_h;	int color_model;/* Cached value for quicktime_video_frame */	long last_frame;	long last_start;	int last_stts_index;} quicktime_t;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -