📄 global.h
字号:
/********************************************************************************
* *
* This code has been developed by Project Mayo. This software is an *
* implementation of a part of one or more MPEG-4 Video tools as *
* specified in ISO/IEC 14496-2 standard. Those intending to use this *
* software module in hardware or software products are advised that its *
* use may infringe existing patents or copyrights, and any such use *
* would be at such party's own risk. The original developer of this *
* software module and his/her company, and subsequent editors and their *
* companies (including Project Mayo), will have no liability for use of *
* this software or modifications or derivatives thereof. *
* *
********************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* The GPL can be found at: http://www.gnu.org/copyleft/gpl.html *
* *
* Authors: *
* *
* Andrea Graziani (Ag): *
* - Original source code (Open Divx Decoder 0.4a). *
* *
* Pedro Mateu (Pm): *
* - Modified code. *
* *
********************************************************************************/
// global.h //
/* GLOBAL is defined in only one file */
#include "portab.h"
#include "PDD_Options.h"
#include "mp4_header.h"
#include <stdlib.h>
#ifndef GLOBAL
#define EXTERN extern
#else
#define EXTERN
#endif
//
// macros
//
#define mmax(a, b) ((a) > (b) ? (a) : (b))
#define mmin(a, b) ((a) < (b) ? (a) : (b))
#define sign(a) ((a) < 0 ? -1 : 1)
//
// prototypes of global functions
//
// getbits.c
void initbits (unsigned char *stream);
unsigned int showbits (int n);
void flushbits (int n);
unsigned int getbits (int n);
unsigned int getbits1 (void);
//
// global variables
//
// zig-zag scan
const unsigned char zig_zag_scan[64]
#ifdef GLOBAL
=
{
0, 1, 8, 16, 9, 2, 3, 10, 17,
24, 32, 25, 18, 11, 4, 5, 12,
19, 26, 33, 40, 48, 41, 34, 27,
20, 13, 6, 7, 14, 21, 28, 35, 42,
49, 56, 57, 50, 43, 36, 29, 22,
15, 23, 30, 37, 44, 51, 58, 59,
52, 45, 38, 31, 39, 46, 53, 60, 61,
54, 47, 55, 62, 63
}
#endif
;
// other scan orders
const unsigned char alternate_horizontal_scan[64]
#ifdef GLOBAL
=
{
0, 1, 2, 3, 8, 9, 16, 17,
10, 11, 4, 5, 6, 7, 15, 14,
13, 12, 19, 18, 24, 25, 32, 33,
26, 27, 20, 21, 22, 23, 28, 29,
30, 31, 34, 35, 40, 41, 48, 49,
42, 43, 36, 37, 38, 39, 44, 45,
46, 47, 50, 51, 56, 57, 58, 59,
52, 53, 54, 55, 60, 61, 62, 63
}
#endif
;
const unsigned char alternate_vertical_scan[64]
#ifdef GLOBAL
=
{
0, 8, 16, 24, 1, 9, 2, 10,
17, 25, 32, 40, 48, 56, 57, 49,
41, 33, 26, 18, 3, 11, 4, 12,
19, 27, 34, 42, 50, 58, 35, 43,
51, 59, 20, 28, 5, 13, 6, 14,
21, 29, 36, 44, 52, 60, 37, 45,
53, 61, 22, 30, 7, 15, 23, 31,
38, 46, 54, 62, 39, 47, 55, 63
}
#endif
;
const unsigned char roundtab[16]
#ifdef GLOBAL
= {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2}
#endif
;
//#define roundtab(x) (0xA5555540>>(x<<1))
//
// mp4 stuff
//
EXTERN mp4_header mp4_hdr;
EXTERN int MV[MB_X_Size][4];
EXTERN char modemap[MB_X_Size*MB_Y_Size];
EXTERN struct _base
{
// DCT BLOCK
int bitcnt;
unsigned char *rdptr;
#ifdef MIPS_ASM_64
int stride;
int stride2;
#endif
idct_block_t block[64];
// DATA BUFFER
} ld;
EXTERN struct _ac_dc
{
// DC_LUM format: [mb_xpos][mb_ypos]
idct_block_t dc_lum[2*MB_X_Size][4];
// AC_LUM format: [mb_xpos][value]
idct_block_t ac_left_lum[2][8];
idct_block_t ac_top_lum[2*MB_X_Size][8];
// DC_CHR format: [U/V][mb_xpos][mb_ypos]
idct_block_t dc_chr[2][MB_X_Size][2];
// AC_CHR format: [U/V][mb_xpos][left/top][value]
idct_block_t ac_left_chr[2][8];
idct_block_t ac_top_chr[MB_X_Size][2][8];
int predict_dir;
} coeff_pred;
EXTERN unsigned char * frame_ref[3],*frame_for[3];
EXTERN unsigned char * tempBB;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -