diff options
Diffstat (limited to 'TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/video.h')
-rw-r--r-- | TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/video.h | 285 |
1 files changed, 285 insertions, 0 deletions
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/video.h b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/video.h new file mode 100644 index 00000000000..9e2a9336f14 --- /dev/null +++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/video.h @@ -0,0 +1,285 @@ +/* $Id$ */ +/* + * Copyright (c) 1992 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. + */ +#include <stdio.h> +#include <setjmp.h> + +#include <X11/Xlib.h> +#include <X11/Xutil.h> + +#ifdef SH_MEM +#include <sys/ipc.h> +#include <sys/shm.h> +#include <X11/extensions/XShm.h> +#endif + +/* X11/xmd.h correctly defines INT32, etc */ +#ifndef XMD_H +typedef int INT32; +typedef short INT16; +typedef char INT8; +#endif +typedef unsigned int UINT32; +typedef unsigned short UINT16; +typedef unsigned char 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 + +/* 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 + +/* 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 + +/* External declaration of row,col to zig zag conversion matrix. */ + +extern int scan[][8]; + +/* Temporary definition of time stamp structure. */ + +typedef int TimeStamp; + +/* Structure with reconstructed pixel values. */ + +typedef struct pict_image { + int sh, gop, frame, display, future, past; + int locked; /* lock flag. */ + unsigned char *luminance; /* Luminance plane. */ + unsigned char *Cr; /* Cr plane. */ + unsigned char *Cb; /* Cb plane. */ +} 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; + +/* Block structure. */ + +typedef struct { + short int dct_recon[8][8]; /* Reconstructed dct coeff matrix. */ + short int dct_dc_y_past; /* Past lum. dc dct coefficient. */ + short int dct_dc_cr_past; /* Past cr dc dct coefficient. */ + short int dct_dc_cb_past; /* Past cb dc dct coefficient. */ +} Block; + +/* Video stream structure. */ + +typedef struct vid_stream { + int shid; /* id of latest sequence header */ + unsigned int h_size; /* Horiz. size in pixels. */ + unsigned int v_size; /* Vert. size in pixels. */ + unsigned int mb_height; /* Vert. size in mblocks. */ + unsigned int mb_width; /* Horiz. size in mblocks. */ + unsigned char aspect_ratio; /* Code for aspect ratio. */ + unsigned char picture_rate; /* Code for picture rate. */ + unsigned int bit_rate; /* Bit rate. */ + unsigned int vbv_buffer_size; /* Minimum buffer size. */ + BOOLEAN const_param_flag; /* Contrained parameter flag. */ + unsigned char intra_quant_matrix[8][8]; /* Quantization matrix for + intracoded frames. */ + unsigned char non_intra_quant_matrix[8][8]; /* Quanitization matrix for + non intracoded frames. */ + char *ext_data; /* Extension data. */ + char *user_data; /* User data. */ + int gopid; /* id of latest group id */ + GoP group; /* Current group of pict. */ + Pict picture; /* Current picture. */ + Slice slice; /* Current slice. */ + Macroblock mblock; /* Current macroblock. */ + Block block; /* Current block. */ + int state; /* State of decoding. */ + int bit_offset; /* Bit offset in stream. */ + unsigned int *buffer; /* Pointer to next byte in + buffer. */ + int buf_length; /* Length of remaining buffer.*/ + unsigned int *buf_start; /* Pointer to buffer start. */ + int max_buf_length; /* Max lenght of buffer. */ + PictImage *past; /* Past predictive frame. */ + PictImage *future; /* Future predictive frame. */ + PictImage *current; /* Current frame. */ + PictImage *ring[RING_BUF_SIZE]; /* Ring buffer of frames. */ +} VidStream; + +/* Declaration of global pointer to current video stream. */ + +extern VidStream *curVidStream; + +/* Declarataion of global display pointer. */ +extern Display *display; + +/* Shared memory flag. */ +extern int shmemFlag; + +/* Quiet mode flag. */ +extern int quietFlag; + +/* Dither flags external declaration. */ +extern char *ditherFlags; + +/* Definition of Contant integer scale factor. */ + +#define CONST_BITS 13 + +/* Misc DCT definitions */ +#define DCTSIZE 8 /* The basic DCT block is 8x8 samples */ +#define DCTSIZE2 64 /* DCTSIZE squared; # of elements in a block */ + +#define GLOBAL /* a function referenced thru EXTERNs */ + +typedef short DCTELEM; +typedef DCTELEM DCTBLOCK[DCTSIZE2]; + + +#ifdef SH_MEM +extern int gXErrorFlag; +#endif + +extern double realTimeStart; +extern int totNumFrames; +extern int loopFlag; +extern int noDisplayFlag; +extern jmp_buf env; + +#ifdef ANALYSIS +extern unsigned int bitCount; +extern int showEachFlag; +extern unsigned int cacheHit[8][8]; +extern unsigned int cacheMiss[8][8]; +#endif + |