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

📄 mpeg3video.h

📁 网络MPEG4IP流媒体开发源代码
💻 H
字号:
#ifndef MPEGVIDEO_H#define MPEGVIDEO_H#ifdef _WIN32#define SDL_THREADS#endif#ifdef _WIN32#include "systems.h"#endif#include "../bitstream.h"#include "../mpeg3private.inc"#include "idct.h"#include "slice.h"#include "../timecode.h"/* Added 03/38/96 by Alex de Jong : avoid IRIX GNU warning */#ifdef ERROR#undef ERROR#endif/* zig-zag scan */extern unsigned char mpeg3_zig_zag_scan_nommx[64];extern unsigned char mpeg3_zig_zag_scan_mmx[64];/* alternate scan */extern unsigned char mpeg3_alternate_scan_nommx[64];extern unsigned char mpeg3_alternate_scan_mmx[64];/* default intra quantization matrix */extern unsigned char mpeg3_default_intra_quantizer_matrix[64];/* Frame rate table must agree with the one in the encoder */extern double mpeg3_frame_rate_table[16];/* non-linear quantization coefficient table */extern unsigned char mpeg3_non_linear_mquant_table[32];#define CHROMA420     1     /* chroma_format */#define CHROMA422     2#define CHROMA444     3#define TOP_FIELD     1     /* picture structure */#define BOTTOM_FIELD  2#define FRAME_PICTURE 3#define SEQ_ID        1     /* extension start code IDs */#define DISP_ID       2#define QUANT_ID      3#define SEQSCAL_ID    5#define PANSCAN_ID    7#define CODING_ID     8#define SPATSCAL_ID   9#define TEMPSCAL_ID  10#define ERROR (-1)#define SC_NONE       0   /* scalable_mode */#define SC_DP         1#define SC_SPAT       2#define SC_SNR        3#define SC_TEMP       4#define I_TYPE        1     /* picture coding type */#define P_TYPE        2#define B_TYPE        3#define D_TYPE        4#define MB_INTRA      1 	/* macroblock type */#define MB_PATTERN    2#define MB_BACKWARD   4#define MB_FORWARD    8#define MB_QUANT      16#define MB_WEIGHT     32#define MB_CLASS4     64#define MC_FIELD      1     /* motion_type */#define MC_FRAME      2#define MC_16X8       2#define MC_DMV        3#define MV_FIELD      0     /* mv_format */#define MV_FRAME      1typedef struct{  int cpus;/* ================================= Seeking variables ========================= */	mpeg3_bits_t *vstream;	int decoder_initted;	unsigned char **output_rows;     /* Output frame buffer supplied by user */	int in_x, in_y, in_w, in_h, out_w, out_h; /* Output dimensions */	int row_span;	int *x_table, *y_table;          /* Location of every output pixel in the input */	int color_model;	int want_yvu;                    /* Want to return a YUV frame */	char *y_output, *u_output, *v_output; /* Output pointers for a YUV frame */	mpeg3_slice_t slice_decoders[MPEG3_MAX_CPUS];  /* One slice decoder for every CPU */	int total_slice_decoders;                       /* Total slice decoders in use */	mpeg3_slice_buffer_t slice_buffers[MPEG3_MAX_CPUS];   /* Buffers for holding the slice data */	int total_slice_buffers;         /* Total buffers in the array to be decompressed */	int slice_buffers_initialized;     /* Total buffers initialized in the array */	SDL_mutex *slice_lock;  SDL_sem *slice_complete_sem;#ifndef SDL_THREADS	pthread_mutex_t test_lock;#else	SDL_mutex *test_lock;#endif	int blockreadsize;	long maxframe;         /* Max value of frame num to read */	double percentage_seek;   /* Perform a percentage seek before the next frame is read */	int frame_seek;        /* Perform a frame seek before the next frame is read */	long framenum;         /* Number of the next frame to be decoded */	long last_number;       /* Last framenum rendered */	int found_seqhdr;	long bitrate;	mpeg3_timecode_t gop_timecode;     /* Timecode for the last GOP header read. */	int has_gops; /* Some streams have no GOPs so try sequence start codes instead *//* These are only available from elementary streams. */	long frames_per_gop;       /* Frames per GOP after the first GOP. */	long first_gop_frames;     /* Frames in the first GOP. */	long first_frame;     /* Number of first frame stored in timecode */	long last_frame;      /* Last frame in file *//* ================================= Compression variables ===================== *//* Malloced frame buffers.  2 refframes are swapped in and out. *//* while only 1 auxframe is used. */	unsigned char *yuv_buffer[5];  /* Make YVU buffers contiguous for all frames */	unsigned char *oldrefframe[3], *refframe[3], *auxframe[3];	unsigned char *llframe0[3], *llframe1[3];	unsigned char *mpeg3_zigzag_scan_table;	unsigned char *mpeg3_alternate_scan_table;// Source for the next frame presentation	unsigned char **output_src;/* Pointers to frame buffers. */	unsigned char *newframe[3];	int horizontal_size, vertical_size, mb_width, mb_height;	int coded_picture_width,  coded_picture_height;	int chroma_format, chrom_width, chrom_height, blk_cnt;	int pict_type;	int forw_r_size, back_r_size, full_forw, full_back;	int prog_seq, prog_frame;	int h_forw_r_size, v_forw_r_size, h_back_r_size, v_back_r_size;	int dc_prec, pict_struct, topfirst, frame_pred_dct, conceal_mv;	int intravlc;	int repeatfirst;	int repeat_count;    /* Number of times to repeat the current frame * 100 since floating point is impossible in MMX */	int current_repeat;  /* Number of times the current frame has been repeated * 100 */	int secondfield;	int skip_bframes;	int stwc_table_index, llw, llh, hm, hn, vm, vn;	int lltempref, llx0, lly0, llprog_frame, llfieldsel;	int matrix_coefficients;	int framerate_code;	float frame_rate;	long *cr_to_r, *cr_to_g, *cb_to_g, *cb_to_b;	long *cr_to_r_ptr, *cr_to_g_ptr, *cb_to_g_ptr, *cb_to_b_ptr;	int have_mmx;	int intra_quantizer_matrix[64], non_intra_quantizer_matrix[64];	int chroma_intra_quantizer_matrix[64], chroma_non_intra_quantizer_matrix[64];	int mpeg2;	int qscale_type, altscan;      /* picture coding extension */	int pict_scal;                /* picture spatial scalable extension */	int scalable_mode;            /* sequence scalable extension */} mpeg3video_t;/* VIDEO */mpeg3video_t* mpeg3video_new(int is_video_stream, int cpus);int mpeg3video_delete(mpeg3video_t *video);int mpeg3video_read_frame(mpeg3video_t *video, 			  unsigned char *input,			  long input_size,			  unsigned char **output_rows,			  int in_x, 			  int in_y, 			  int in_w, 			  int in_h, 			  int out_w, 			  int out_h, 			  int color_model);int mpeg3video_get_header(mpeg3video_t *video, int dont_repeat);int mpeg3video_initdecoder(mpeg3video_t *video);int mpeg3video_read_yuvframe_ptr(mpeg3video_t *video, 				 unsigned char *input,				 long input_size,				 char **y_output,				 char **u_output,				 char **v_output);#endif

⌨️ 快捷键说明

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