git.y1.nz

fbui

Framebuffer-based graphical environment
download: https://git.y1.nz/archives/fbui.tar.gz
README | Files | Log | Refs

libfbui/MPEG/global.h

      1 /* global.h, global variables                                               */
      2 
      3 /* Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. */
      4 
      5 /*
      6  * Disclaimer of Warranty
      7  *
      8  * These software programs are available to the user without any license fee or
      9  * royalty on an "as is" basis.  The MPEG Software Simulation Group disclaims
     10  * any and all warranties, whether express, implied, or statuary, including any
     11  * implied warranties or merchantability or of fitness for a particular
     12  * purpose.  In no event shall the copyright-holder be liable for any
     13  * incidental, punitive, or consequential damages of any kind whatsoever
     14  * arising from the use of these programs.
     15  *
     16  * This disclaimer of warranty extends to the user of these programs and user's
     17  * customers, employees, agents, transferees, successors, and assigns.
     18  *
     19  * The MPEG Software Simulation Group does not represent or warrant that the
     20  * programs furnished hereunder are free of infringement of any third-party
     21  * patents.
     22  *
     23  * Commercial implementations of MPEG-1 and MPEG-2 video, including shareware,
     24  * are subject to royalty fees to patent holders.  Many of these patents are
     25  * general enough such that they are unavoidable regardless of implementation
     26  * design.
     27  *
     28  */
     29 
     30 #include "mpeg2dec.h"
     31 
     32 /* choose between declaration (GLOBAL undefined)
     33  * and definition (GLOBAL defined)
     34  * GLOBAL is defined in exactly one file mpeg2dec.c)
     35  */
     36 
     37 #ifndef GLOBAL
     38 #define EXTERN extern
     39 #else
     40 #define EXTERN
     41 #endif
     42 
     43 /* prototypes of global functions */
     44 /* readpic.c */
     45 void Substitute_Frame_Buffer _ANSI_ARGS_ ((int bitstream_framenum, 
     46   int sequence_framenum));
     47 
     48 /* Get_Bits.c */
     49 void Initialize_Buffer _ANSI_ARGS_((void));
     50 void Fill_Buffer _ANSI_ARGS_((void));
     51 unsigned int Show_Bits _ANSI_ARGS_((int n));
     52 unsigned int Get_Bits1 _ANSI_ARGS_((void));
     53 void Flush_Buffer _ANSI_ARGS_((int n));
     54 unsigned int Get_Bits _ANSI_ARGS_((int n));
     55 int Get_Byte _ANSI_ARGS_((void));
     56 int Get_Word _ANSI_ARGS_((void));
     57 
     58 /* systems.c */
     59 void Next_Packet _ANSI_ARGS_((void));
     60 int Get_Long _ANSI_ARGS_((void));
     61 void Flush_Buffer32 _ANSI_ARGS_((void));
     62 unsigned int Get_Bits32 _ANSI_ARGS_((void));
     63 
     64 
     65 /* getblk.c */
     66 void Decode_MPEG1_Intra_Block _ANSI_ARGS_((int comp, int dc_dct_pred[]));
     67 void Decode_MPEG1_Non_Intra_Block _ANSI_ARGS_((int comp));
     68 void Decode_MPEG2_Intra_Block _ANSI_ARGS_((int comp, int dc_dct_pred[]));
     69 void Decode_MPEG2_Non_Intra_Block _ANSI_ARGS_((int comp));
     70 
     71 /* gethdr.c */
     72 int Get_Hdr _ANSI_ARGS_((void));
     73 void next_start_code _ANSI_ARGS_((void));
     74 int slice_header _ANSI_ARGS_((void));
     75 void marker_bit _ANSI_ARGS_((char *text));
     76 
     77 /* getpic.c */
     78 void Decode_Picture _ANSI_ARGS_((int bitstream_framenum, 
     79   int sequence_framenum));
     80 void Output_Last_Frame_of_Sequence _ANSI_ARGS_((int framenum));
     81 
     82 /* getvlc.c */
     83 int Get_macroblock_type _ANSI_ARGS_((void));
     84 int Get_motion_code _ANSI_ARGS_((void));
     85 int Get_dmvector _ANSI_ARGS_((void));
     86 int Get_coded_block_pattern _ANSI_ARGS_((void));
     87 int Get_macroblock_address_increment _ANSI_ARGS_((void));
     88 int Get_Luma_DC_dct_diff _ANSI_ARGS_((void));
     89 int Get_Chroma_DC_dct_diff _ANSI_ARGS_((void));
     90 
     91 /* idct.c */
     92 void Fast_IDCT _ANSI_ARGS_((short *block));
     93 void Initialize_Fast_IDCT _ANSI_ARGS_((void));
     94 
     95 /* Reference_IDCT.c */
     96 void Initialize_Reference_IDCT _ANSI_ARGS_((void));
     97 void Reference_IDCT _ANSI_ARGS_((short *block));
     98 
     99 /* motion.c */
    100 void motion_vectors _ANSI_ARGS_((int PMV[2][2][2], int dmvector[2],
    101   int motion_vertical_field_select[2][2], int s, int motion_vector_count, 
    102   int mv_format, int h_r_size, int v_r_size, int dmv, int mvscale));
    103 void motion_vector _ANSI_ARGS_((int *PMV, int *dmvector,
    104   int h_r_size, int v_r_size, int dmv, int mvscale, int full_pel_vector));
    105 void Dual_Prime_Arithmetic _ANSI_ARGS_((int DMV[][2], int *dmvector, int mvx, int mvy));
    106 
    107 /* mpeg2dec.c */
    108 void Error _ANSI_ARGS_((char *text));
    109 void Warning _ANSI_ARGS_((char *text));
    110 void Print_Bits _ANSI_ARGS_((int code, int bits, int len));
    111 
    112 /* recon.c */
    113 void form_predictions _ANSI_ARGS_((int bx, int by, int macroblock_type, 
    114   int motion_type, int PMV[2][2][2], int motion_vertical_field_select[2][2], 
    115   int dmvector[2], int stwtype));
    116 
    117 /* spatscal.c */
    118 void Spatial_Prediction _ANSI_ARGS_((void));
    119 
    120 /* store.c */
    121 void Write_Frame _ANSI_ARGS_((unsigned char *src[], int frame));
    122 
    123 #ifdef DISPLAY
    124 /* display.c */
    125 void Initialize_Display_Process _ANSI_ARGS_((char *name));
    126 void Terminate_Display_Process _ANSI_ARGS_((void));
    127 void Display_Second_Field _ANSI_ARGS_((void));
    128 void dither _ANSI_ARGS_((unsigned char *src[]));
    129 void Initialize_Dither_Matrix _ANSI_ARGS_((void));
    130 #endif
    131 
    132 /* global variables */
    133 
    134 EXTERN char Version[]
    135 #ifdef GLOBAL
    136   ="mpeg2decode V1.2a, 96/07/19"
    137 #endif
    138 ;
    139 
    140 EXTERN char Author[]
    141 #ifdef GLOBAL
    142   ="(C) 1996, MPEG Software Simulation Group"
    143 #endif
    144 ;
    145 
    146 
    147 /* zig-zag and alternate scan patterns */
    148 EXTERN unsigned char scan[2][64]
    149 #ifdef GLOBAL
    150 =
    151 {
    152   { /* Zig-Zag scan pattern  */
    153     0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,
    154     12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,
    155     35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,
    156     58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63
    157   },
    158   { /* Alternate scan pattern */
    159     0,8,16,24,1,9,2,10,17,25,32,40,48,56,57,49,
    160     41,33,26,18,3,11,4,12,19,27,34,42,50,58,35,43,
    161     51,59,20,28,5,13,6,14,21,29,36,44,52,60,37,45,
    162     53,61,22,30,7,15,23,31,38,46,54,62,39,47,55,63
    163   }
    164 }
    165 #endif
    166 ;
    167 
    168 /* default intra quantization matrix */
    169 EXTERN unsigned char default_intra_quantizer_matrix[64]
    170 #ifdef GLOBAL
    171 =
    172 {
    173   8, 16, 19, 22, 26, 27, 29, 34,
    174   16, 16, 22, 24, 27, 29, 34, 37,
    175   19, 22, 26, 27, 29, 34, 34, 38,
    176   22, 22, 26, 27, 29, 34, 37, 40,
    177   22, 26, 27, 29, 32, 35, 40, 48,
    178   26, 27, 29, 32, 35, 40, 48, 58,
    179   26, 27, 29, 34, 38, 46, 56, 69,
    180   27, 29, 35, 38, 46, 56, 69, 83
    181 }
    182 #endif
    183 ;
    184 
    185 /* non-linear quantization coefficient table */
    186 EXTERN unsigned char Non_Linear_quantizer_scale[32]
    187 #ifdef GLOBAL
    188 =
    189 {
    190    0, 1, 2, 3, 4, 5, 6, 7,
    191    8,10,12,14,16,18,20,22,
    192   24,28,32,36,40,44,48,52,
    193   56,64,72,80,88,96,104,112
    194 }
    195 #endif
    196 ;
    197 
    198 /* color space conversion coefficients
    199  * for YCbCr -> RGB mapping
    200  *
    201  * entries are {crv,cbu,cgu,cgv}
    202  *
    203  * crv=(255/224)*65536*(1-cr)/0.5
    204  * cbu=(255/224)*65536*(1-cb)/0.5
    205  * cgu=(255/224)*65536*(cb/cg)*(1-cb)/0.5
    206  * cgv=(255/224)*65536*(cr/cg)*(1-cr)/0.5
    207  *
    208  * where Y=cr*R+cg*G+cb*B (cr+cg+cb=1)
    209  */
    210 
    211 /* ISO/IEC 13818-2 section 6.3.6 sequence_display_extension() */
    212 
    213 EXTERN int Inverse_Table_6_9[8][4]
    214 #ifdef GLOBAL
    215 =
    216 {
    217   {117504, 138453, 13954, 34903}, /* no sequence_display_extension */
    218   {117504, 138453, 13954, 34903}, /* ITU-R Rec. 709 (1990) */
    219   {104597, 132201, 25675, 53279}, /* unspecified */
    220   {104597, 132201, 25675, 53279}, /* reserved */
    221   {104448, 132798, 24759, 53109}, /* FCC */
    222   {104597, 132201, 25675, 53279}, /* ITU-R Rec. 624-4 System B, G */
    223   {104597, 132201, 25675, 53279}, /* SMPTE 170M */
    224   {117579, 136230, 16907, 35559}  /* SMPTE 240M (1987) */
    225 }
    226 #endif
    227 ;
    228 
    229 
    230 
    231 
    232 
    233 /* output types (Output_Type) */
    234 #define T_YUV   0
    235 #define T_SIF   1
    236 #define T_TGA   2
    237 #define T_PPM   3
    238 #define T_X11   4
    239 #define T_X11HIQ 5
    240 #define T_FBUI 6
    241 
    242 /* decoder operation control variables */
    243 EXTERN int Output_Type;
    244 EXTERN int hiQdither;
    245 
    246 /* decoder operation control flags */
    247 EXTERN int Quiet_Flag;
    248 EXTERN int Trace_Flag;
    249 EXTERN int Fault_Flag;
    250 EXTERN int Verbose_Flag;
    251 EXTERN int Two_Streams;
    252 EXTERN int Spatial_Flag;
    253 EXTERN int Reference_IDCT_Flag;
    254 EXTERN int Frame_Store_Flag;
    255 EXTERN int System_Stream_Flag;
    256 EXTERN int Display_Progressive_Flag;
    257 EXTERN int Ersatz_Flag;
    258 EXTERN int Big_Picture_Flag;
    259 EXTERN int Verify_Flag;
    260 EXTERN int Stats_Flag;
    261 EXTERN int User_Data_Flag;
    262 EXTERN int Main_Bitstream_Flag;
    263 
    264 
    265 /* filenames */
    266 EXTERN char *Output_Picture_Filename;
    267 EXTERN char *Substitute_Picture_Filename;
    268 EXTERN char *Main_Bitstream_Filename; 
    269 EXTERN char *Enhancement_Layer_Bitstream_Filename; 
    270 
    271 
    272 /* buffers for multiuse purposes */
    273 EXTERN char Error_Text[256];
    274 EXTERN unsigned char *Clip;
    275 
    276 /* pointers to generic picture buffers */
    277 EXTERN unsigned char *backward_reference_frame[3];
    278 EXTERN unsigned char *forward_reference_frame[3];
    279 
    280 EXTERN unsigned char *auxframe[3];
    281 EXTERN unsigned char *current_frame[3];
    282 EXTERN unsigned char *substitute_frame[3];
    283 
    284 
    285 /* pointers to scalability picture buffers */
    286 EXTERN unsigned char *llframe0[3];
    287 EXTERN unsigned char *llframe1[3];
    288 
    289 EXTERN short *lltmp;
    290 EXTERN char *Lower_Layer_Picture_Filename;
    291 
    292 
    293 
    294 
    295 /* non-normative variables derived from normative elements */
    296 EXTERN int Coded_Picture_Width;
    297 EXTERN int Coded_Picture_Height;
    298 EXTERN int Chroma_Width;
    299 EXTERN int Chroma_Height;
    300 EXTERN int block_count;
    301 EXTERN int Second_Field;
    302 EXTERN int profile, level;
    303 
    304 /* normative derived variables (as per ISO/IEC 13818-2) */
    305 EXTERN int horizontal_size;
    306 EXTERN int vertical_size;
    307 EXTERN int mb_width;
    308 EXTERN int mb_height;
    309 EXTERN double bit_rate;
    310 EXTERN double frame_rate; 
    311 
    312 
    313 
    314 /* headers */
    315 
    316 /* ISO/IEC 13818-2 section 6.2.2.1:  sequence_header() */
    317 EXTERN int aspect_ratio_information;
    318 EXTERN int frame_rate_code; 
    319 EXTERN int bit_rate_value; 
    320 EXTERN int vbv_buffer_size;
    321 EXTERN int constrained_parameters_flag;
    322 
    323 /* ISO/IEC 13818-2 section 6.2.2.3:  sequence_extension() */
    324 EXTERN int profile_and_level_indication;
    325 EXTERN int progressive_sequence;
    326 EXTERN int chroma_format;
    327 EXTERN int low_delay;
    328 EXTERN int frame_rate_extension_n;
    329 EXTERN int frame_rate_extension_d;
    330 
    331 /* ISO/IEC 13818-2 section 6.2.2.4:  sequence_display_extension() */
    332 EXTERN int video_format;  
    333 EXTERN int color_description;
    334 EXTERN int color_primaries;
    335 EXTERN int transfer_characteristics;
    336 EXTERN int matrix_coefficients;
    337 EXTERN int display_horizontal_size;
    338 EXTERN int display_vertical_size;
    339 
    340 /* ISO/IEC 13818-2 section 6.2.3: picture_header() */
    341 EXTERN int temporal_reference;
    342 EXTERN int picture_coding_type;
    343 EXTERN int vbv_delay;
    344 EXTERN int full_pel_forward_vector;
    345 EXTERN int forward_f_code;
    346 EXTERN int full_pel_backward_vector;
    347 EXTERN int backward_f_code;
    348 
    349 
    350 /* ISO/IEC 13818-2 section 6.2.3.1: picture_coding_extension() header */
    351 EXTERN int f_code[2][2];
    352 EXTERN int intra_dc_precision;
    353 EXTERN int picture_structure;
    354 EXTERN int top_field_first;
    355 EXTERN int frame_pred_frame_dct;
    356 EXTERN int concealment_motion_vectors;
    357 
    358 EXTERN int intra_vlc_format;
    359 
    360 EXTERN int repeat_first_field;
    361 
    362 EXTERN int chroma_420_type;
    363 EXTERN int progressive_frame;
    364 EXTERN int composite_display_flag;
    365 EXTERN int v_axis;
    366 EXTERN int field_sequence;
    367 EXTERN int sub_carrier;
    368 EXTERN int burst_amplitude;
    369 EXTERN int sub_carrier_phase;
    370 
    371 
    372 
    373 /* ISO/IEC 13818-2 section 6.2.3.3: picture_display_extension() header */
    374 EXTERN int frame_center_horizontal_offset[3];
    375 EXTERN int frame_center_vertical_offset[3];
    376 
    377 
    378 
    379 /* ISO/IEC 13818-2 section 6.2.2.5: sequence_scalable_extension() header */
    380 EXTERN int layer_id;
    381 EXTERN int lower_layer_prediction_horizontal_size;
    382 EXTERN int lower_layer_prediction_vertical_size;
    383 EXTERN int horizontal_subsampling_factor_m;
    384 EXTERN int horizontal_subsampling_factor_n;
    385 EXTERN int vertical_subsampling_factor_m;
    386 EXTERN int vertical_subsampling_factor_n;
    387 
    388 
    389 /* ISO/IEC 13818-2 section 6.2.3.5: picture_spatial_scalable_extension() header */
    390 EXTERN int lower_layer_temporal_reference;
    391 EXTERN int lower_layer_horizontal_offset;
    392 EXTERN int lower_layer_vertical_offset;
    393 EXTERN int spatial_temporal_weight_code_table_index;
    394 EXTERN int lower_layer_progressive_frame;
    395 EXTERN int lower_layer_deinterlaced_field_select;
    396 
    397 
    398 
    399 
    400 
    401 
    402 /* ISO/IEC 13818-2 section 6.2.3.6: copyright_extension() header */
    403 EXTERN int copyright_flag;
    404 EXTERN int copyright_identifier;
    405 EXTERN int original_or_copy;
    406 EXTERN int copyright_number_1;
    407 EXTERN int copyright_number_2;
    408 EXTERN int copyright_number_3;
    409 
    410 /* ISO/IEC 13818-2 section 6.2.2.6: group_of_pictures_header()  */
    411 EXTERN int drop_flag;
    412 EXTERN int hour;
    413 EXTERN int minute;
    414 EXTERN int sec;
    415 EXTERN int frame;
    416 EXTERN int closed_gop;
    417 EXTERN int broken_link;
    418 
    419 
    420 
    421 /* layer specific variables (needed for SNR and DP scalability) */
    422 EXTERN struct layer_data {
    423   /* bit input */
    424   int Infile;
    425   unsigned char Rdbfr[2048];
    426   unsigned char *Rdptr;
    427   unsigned char Inbfr[16];
    428   /* from mpeg2play */
    429   unsigned int Bfr;
    430   unsigned char *Rdmax;
    431   int Incnt;
    432   int Bitcnt;
    433   /* sequence header and quant_matrix_extension() */
    434   int intra_quantizer_matrix[64];
    435   int non_intra_quantizer_matrix[64];
    436   int chroma_intra_quantizer_matrix[64];
    437   int chroma_non_intra_quantizer_matrix[64];
    438   
    439   int load_intra_quantizer_matrix;
    440   int load_non_intra_quantizer_matrix;
    441   int load_chroma_intra_quantizer_matrix;
    442   int load_chroma_non_intra_quantizer_matrix;
    443 
    444   int MPEG2_Flag;
    445   /* sequence scalable extension */
    446   int scalable_mode;
    447   /* picture coding extension */
    448   int q_scale_type;
    449   int alternate_scan;
    450   /* picture spatial scalable extension */
    451   int pict_scal;
    452   /* slice/macroblock */
    453   int priority_breakpoint;
    454   int quantizer_scale;
    455   int intra_slice;
    456   short block[12][64];
    457 } base, enhan, *ld;
    458 
    459 
    460 
    461 #ifdef VERIFY
    462 EXTERN int verify_sequence_header;
    463 EXTERN int verify_group_of_pictures_header;
    464 EXTERN int verify_picture_header;
    465 EXTERN int verify_slice_header;
    466 EXTERN int verify_sequence_extension;
    467 EXTERN int verify_sequence_display_extension;
    468 EXTERN int verify_quant_matrix_extension;
    469 EXTERN int verify_sequence_scalable_extension;
    470 EXTERN int verify_picture_display_extension;
    471 EXTERN int verify_picture_coding_extension;
    472 EXTERN int verify_picture_spatial_scalable_extension;
    473 EXTERN int verify_picture_temporal_scalable_extension;
    474 EXTERN int verify_copyright_extension;
    475 #endif /* VERIFY */
    476 
    477 
    478 EXTERN int Decode_Layer;
    479 
    480 /* verify.c */
    481 #ifdef VERIFY
    482 void Check_Headers _ANSI_ARGS_((int Bitstream_Framenum, int Sequence_Framenum));
    483 void Clear_Verify_Headers _ANSI_ARGS_((void));
    484 #endif /* VERIFY */
    485 
    486 
    487 EXTERN int global_MBA;
    488 EXTERN int global_pic;
    489 EXTERN int True_Framenum;

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.