📄 video.h
字号:
/* * Copyright (c) 1995 The Regents of the University of California. * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement is * hereby granted, provided that the above copyright notice and the following * two paragraphs appear in all copies of this software. * * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. *//* * Portions of this software Copyright (c) 1995 Brown University. * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement * is hereby granted, provided that the above copyright notice and the * following two paragraphs appear in all copies of this software. * * IN NO EVENT SHALL BROWN UNIVERSITY BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF BROWN * UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * BROWN UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" * BASIS, AND BROWN UNIVERSITY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, * SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */#ifndef MPEG_LIB_VIDEO_HEADER#define MPEG_LIB_VIDEO_HEADER#include <stdio.h>/* Changes to make the code reentrant: deglobalized: ditherFlags, totNumFrames, realTimeStart, matched_depth, filename, ditherType, curBits, ReconPMBlock statics, stream id variables, Parse_done, swap, seekValue, input, EOF_flag, ReadPacket statics, sys_layer, curVidStream, curVidStream, jmb_buf env (removed) X globals now in xinfo: ditherType, visual, depth (also name), hints, owncmFlag, et al now const: scan film_has_ended instead of FilmState Additional changes: if DISABLE_DITHER defined, don't compile dithering code -lsh@cs.brown.edu (Loring Holden) */#include "MPEGvideo.h"#include "MPEGaudio.h"typedef Sint32 INT32;typedef Sint16 INT16;typedef Sint8 INT8;typedef Uint32 UINT32;typedef Uint16 UINT16;typedef Uint8 UINT8; /* Define Parsing error codes. */#define SKIP_PICTURE (-10)#define SKIP_TO_START_CODE (-1)#define PARSE_OK 1/* Define BOOLEAN, TRUE, and FALSE. */#define BOOLEAN int#define TRUE 1#define FALSE 0/* Set ring buffer size. */#define RING_BUF_SIZE 5/* Macros for picture code type. */#define I_TYPE 1#define P_TYPE 2#define B_TYPE 3#define D_TYPE 4/* Start codes. */#define SEQ_END_CODE 0x000001b7#define SEQ_START_CODE 0x000001b3#define GOP_START_CODE 0x000001b8#define PICTURE_START_CODE 0x00000100#define SLICE_MIN_START_CODE 0x00000101#define SLICE_MAX_START_CODE 0x000001af#define EXT_START_CODE 0x000001b5#define USER_START_CODE 0x000001b2#define SEQUENCE_ERROR_CODE 0x000001b4/* Number of macroblocks to process in one call to mpegVidRsrc. */#define MB_QUANTUM 100/* Macros used with macroblock address decoding. */#define MB_STUFFING 34#define MB_ESCAPE 35/* Lock flags for pict images. */#define DISPLAY_LOCK 0x01#define PAST_LOCK 0x02#define FUTURE_LOCK 0x04#define HYBRID_DITHER 0#define HYBRID2_DITHER 1#define FS4_DITHER 2#define FS2_DITHER 3#define FS2FAST_DITHER 4#define Twox2_DITHER 5#define GRAY_DITHER 6#define FULL_COLOR_DITHER 7#define NO_DITHER 8#define ORDERED_DITHER 9#define MONO_DITHER 10#define MONO_THRESHOLD 11#define ORDERED2_DITHER 12#define MBORDERED_DITHER 13#define GRAY256_DITHER 14#define PPM_DITHER 15#define FULL_COLOR2_DITHER 16#define GRAY2_DITHER 17#define GRAY2562_DITHER 18#ifdef DISABLE_DITHER#define IS_2x2_DITHER(a) (0)#else#define IS_2x2_DITHER(a) ((a) == Twox2_DITHER || (a) == FULL_COLOR2_DITHER || (a) == GRAY2_DITHER || (a) == (GRAY2562_DITHER))#endif/* Brown - changed to const int because it is a help variable */extern const int scan[][8];/* Structure with reconstructed pixel values. */typedef struct pict_image {#ifdef USE_ATI struct vhar128_image *image;#else unsigned char *image; /* YV12 format image */ unsigned char *luminance; /* Luminance plane. */ unsigned char *Cr; /* Cr plane. */ unsigned char *Cb; /* Cb plane. */#endif unsigned short int *mb_qscale; /* macroblock info */ int locked; /* Lock flag. */ TimeStamp show_time; /* Presentation time. */} PictImage;/* Group of pictures structure. */typedef struct GoP { BOOLEAN drop_flag; /* Flag indicating dropped frame. */ unsigned int tc_hours; /* Hour component of time code. */ unsigned int tc_minutes; /* Minute component of time code. */ unsigned int tc_seconds; /* Second component of time code. */ unsigned int tc_pictures; /* Picture counter of time code. */ BOOLEAN closed_gop; /* Indicates no pred. vectors to previous group of pictures. */ BOOLEAN broken_link; /* B frame unable to be decoded. */ char *ext_data; /* Extension data. */ char *user_data; /* User data. */} GoP;/* Picture structure. */typedef struct pict { unsigned int temp_ref; /* Temporal reference. */ unsigned int code_type; /* Frame type: P, B, I */ unsigned int vbv_delay; /* Buffer delay. */ BOOLEAN full_pel_forw_vector; /* Forw. vectors specified in full pixel values flag. */ unsigned int forw_r_size; /* Used for vector decoding. */ unsigned int forw_f; /* Used for vector decoding. */ BOOLEAN full_pel_back_vector; /* Back vectors specified in full pixel values flag. */ unsigned int back_r_size; /* Used in decoding. */ unsigned int back_f; /* Used in decoding. */ char *extra_info; /* Extra bit picture info. */ char *ext_data; /* Extension data. */ char *user_data; /* User data. */} Pict;/* Slice structure. */typedef struct slice { unsigned int vert_pos; /* Vertical position of slice. */ unsigned int quant_scale; /* Quantization scale. */ char *extra_info; /* Extra bit slice info. */} Slice;/* Macroblock structure. */typedef struct macroblock { int mb_address; /* Macroblock address. */ int past_mb_addr; /* Previous mblock address. */ int motion_h_forw_code; /* Forw. horiz. motion vector code. */ unsigned int motion_h_forw_r; /* Used in decoding vectors. */ int motion_v_forw_code; /* Forw. vert. motion vector code. */ unsigned int motion_v_forw_r; /* Used in decdoinge vectors. */ int motion_h_back_code; /* Back horiz. motion vector code. */ unsigned int motion_h_back_r; /* Used in decoding vectors. */ int motion_v_back_code; /* Back vert. motion vector code. */ unsigned int motion_v_back_r; /* Used in decoding vectors. */ unsigned int cbp; /* Coded block pattern. */ BOOLEAN mb_intra; /* Intracoded mblock flag. */ BOOLEAN bpict_past_forw; /* Past B frame forw. vector flag. */ BOOLEAN bpict_past_back; /* Past B frame back vector flag. */ int past_intra_addr; /* Addr of last intracoded mblock. */ int recon_right_for_prev; /* Past right forw. vector. */ int recon_down_for_prev; /* Past down forw. vector. */ int recon_right_back_prev; /* Past right back vector. */ int recon_down_back_prev; /* Past down back vector. */} Macroblock;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -