private.h
资源名称:NETVIDEO.rar [点击查看]
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:12k
源码类别:
流媒体/Mpeg4/MP4
开发平台:
Visual C++
- #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