PS2SDK
PS2 Homebrew Libraries
libmpeg_internal.h
Go to the documentation of this file.
1 /*
2 # _____ ___ ____ ___ ____
3 # ____| | ____| | | |____|
4 # | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5 #-----------------------------------------------------------------------
6 # Copyright (c) 2006 Eugene Plotnikov <e-plotnikov@operamail.com>
7 # Licenced under Academic Free License version 2.0
8 # Review ps2sdk README & LICENSE files for further details.
9 */
10 
16 #ifndef __libmpeg_internal_H
17 #define __libmpeg_internal_H
18 
19 #include <libmpeg.h>
20 
21 #define TRACE0() \
22  do { \
23  printf("%s:%d\n", __PRETTY_FUNCTION__, __LINE__); \
24  } while (0)
25 #define TRACE1(val) \
26  do { \
27  printf("%s:%d %s == %08x\n", __PRETTY_FUNCTION__, __LINE__, #val, val); \
28  } while (0)
29 
30 #define GET_MACRO(_0, _1, _2, NAME, ...) NAME
31 #define TRACE(...) GET_MACRO(_0, ##__VA_ARGS__, TRACE2, TRACE1, TRACE0)(__VA_ARGS__)
32 
33 #define _MPEG_PT_I 1
34 #define _MPEG_PT_P 2
35 #define _MPEG_PT_B 3
36 #define _MPEG_PT_D 4
37 
38 #define _MPEG_PS_TOP_FIELD 1
39 #define _MPEG_PS_BOTTOM_FIELD 2
40 #define _MPEG_PS_FRAME 3
41 
42 #define _MPEG_MBT_INTRA 1
43 #define _MPEG_MBT_PATTERN 2
44 #define _MPEG_MBT_MOTION_BACKWARD 4
45 #define _MPEG_MBT_MOTION_FORWARD 8
46 #define _MPEG_MBT_QUANT 16
47 
48 #define _MPEG_MC_FIELD 1
49 #define _MPEG_MC_FRAME 2
50 #define _MPEG_MC_16X8 2
51 #define _MPEG_MC_DMV 3
52 
53 #define _MPEG_MV_FIELD 0
54 #define _MPEG_MV_FRAME 1
55 
56 #define _MPEG_CODE_PIC_START 0x00000100
57 #define _MPEG_CODE_SLICE_MIN 0x00000101
58 #define _MPEG_CODE_SLICE_MAX 0x000001AF
59 #define _MPEG_CODE_USER_DATA 0x000001B2
60 #define _MPEG_CODE_SEQ_HDR 0x000001B3
61 #define _MPEG_CODE_EXTENSION 0x000001B5
62 #define _MPEG_CODE_SEQ_END 0x000001B7
63 #define _MPEG_CODE_GRP_START 0x000001B8
64 
65 #define _MPEG_XID_0 0
66 #define _MPEG_XID_SEQUENCE 1
67 #define _MPEG_XID_DISPLAY 2
68 #define _MPEG_XID_QMATRIX 3
69 #define _MPEG_XID_COPYRIGHT 4
70 #define _MPEG_XID_SCALABLE 5
71 #define _MPEG_XID_6 6
72 #define _MPEG_XID_PIC_DSP 7
73 #define _MPEG_XID_PIC_COD 8
74 #define _MPEG_XID_PIC_SSC 9
75 #define _MPEG_XID_PIC_TSC 10
76 
77 typedef struct _MPEGMBXY
78 {
79  unsigned char m_X;
80  unsigned char m_Y;
81 } _MPEGMBXY;
82 
83 typedef struct _MPEGMacroBlock8
84 {
85  unsigned char m_Y[16][16];
86  unsigned char m_Cb[8][8];
87  unsigned char m_Cr[8][8];
89 
90 typedef struct _MPEGMotion
91 {
92  unsigned char *m_pSrc;
93  short *m_pDstY;
94  short *m_pDstCbCr;
95  int m_X;
96  int m_Y;
97  int m_H;
98  int m_fInt;
99  int m_Field;
100 
101  // These are used from assembly, supress linter warnings.
102  // cppcheck-suppress unusedStructMember
103  void (*MC_Luma)(struct _MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int tmpa, int a7, int a8);
104  // cppcheck-suppress unusedStructMember
105  void (*MC_Chroma)(struct _MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int tmpa, int a7, int a8);
106 } _MPEGMotion;
107 
108 typedef struct _MPEGMotions
109 {
110  unsigned char *m_pMBDstY;
111  unsigned char *m_pMBDstCbCr;
112  unsigned char *m_pSrc;
113  unsigned char *m_pSPRBlk;
114  unsigned char *m_pSPRRes;
115  unsigned char *m_pSPRMC;
116  int m_Stride;
117  int m_nMotions;
118  void (*BlockOp)(struct _MPEGMotions *arg0);
119  _MPEGMotion m_Motion[7];
120 } _MPEGMotions;
121 
122 typedef struct _MPEGContext
123 {
124  MPEGSequenceInfo m_SI;
125  s64 m_FwdPTS;
126  s64 m_BckPTS;
127  s64 m_AuxPTS;
128  int m_MBWidth;
129  int m_MBHeight;
130  void *m_pFrameArena;
131  _MPEGMacroBlock8 *m_pFwdFrame;
132  _MPEGMacroBlock8 *m_pBckFrame;
133  _MPEGMacroBlock8 *m_pAuxFrame;
134  _MPEGMacroBlock8 *m_pCurFrame;
135  _MPEGMBXY *m_pMBXY;
136  unsigned char *m_pCurFrameY;
137  unsigned char *m_pCurFrameCbCr;
138  int m_FRCode;
139  int m_MBStride;
140  int m_MBCount;
141  int m_fProgSeq;
142  int m_fMPEG2;
143  int m_fRepFF;
144  int m_fTopFF;
145  int m_fFPFrmDCT;
146  int m_fConsMV;
147  int m_fSecField;
148  int m_fError;
149  int m_fDCRst;
150  int m_QScale;
151  int m_PictStruct;
152  int m_PictCodingType;
153  int m_FPFVector;
154  int m_FwdFCode;
155  int m_FPBVector;
156  int m_BckFCode;
157  int m_FCode[2][2];
158  int m_CurMC;
159  _MPEGMotions m_MC[2];
160  _MPEGMotions *m_pCurMotions;
161 } _MPEGContext;
162 
163 extern void _MPEG_Initialize(_MPEGContext *mc, int (*data_cb)(void *userdata), void *cb_user, int *eof_flag);
164 extern void _MPEG_Destroy(void);
165 extern int _MPEG_CSCImage(void *source, void *dest, int mbcount);
166 extern void _MPEG_SetDefQM(int arg0);
167 extern void _MPEG_SetQM(int iqm);
168 extern int _MPEG_GetMBAI(void);
169 extern int _MPEG_GetMBType(void);
170 extern int _MPEG_GetMotionCode(void);
171 extern int _MPEG_GetDMVector(void);
172 extern unsigned int _MPEG_NextStartCode(void);
173 extern void _MPEG_AlignBits(void);
174 extern unsigned int _MPEG_GetBits(unsigned int bits);
175 extern unsigned int _MPEG_ShowBits(unsigned int bits);
176 extern void _MPEG_SetIDCP(void);
177 extern void _MPEG_SetQSTIVFAS(void);
178 extern void _MPEG_SetPCT(unsigned int arg0);
179 extern void _MPEG_BDEC(int mbi, int dcr, int dt, int qsc, void *spaddr);
180 extern int _MPEG_WaitBDEC(void);
181 extern void _MPEG_dma_ref_image(_MPEGMacroBlock8 *mb, _MPEGMotion *motions, s64 n_motions, int width);
182 extern void _MPEG_do_mc(_MPEGMotion *arg0);
183 extern void _MPEG_put_luma(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
184 extern void _MPEG_put_luma_X(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
185 extern void _MPEG_put_luma_Y(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
186 extern void _MPEG_put_luma_XY(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
187 extern void _MPEG_put_chroma(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
188 extern void _MPEG_put_chroma_X(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
189 extern void _MPEG_put_chroma_Y(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
190 extern void _MPEG_put_chroma_XY(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
191 extern void _MPEG_avg_luma(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
192 extern void _MPEG_avg_luma_X(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
193 extern void _MPEG_avg_luma_Y(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
194 extern void _MPEG_avg_luma_XY(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
195 extern void _MPEG_avg_chroma(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
196 extern void _MPEG_avg_chroma_X(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
197 extern void _MPEG_avg_chroma_Y(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
198 extern void _MPEG_avg_chroma_XY(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int a7, int a8);
199 extern void _MPEG_put_block_fr(_MPEGMotions *arg0);
200 extern void _MPEG_put_block_fl(_MPEGMotions *arg0);
201 extern void _MPEG_put_block_il(_MPEGMotions *arg0);
202 extern void _MPEG_add_block_ilfl(_MPEGMotions *arg0);
203 extern void _MPEG_add_block_frfr(_MPEGMotions *arg0);
204 extern void _MPEG_add_block_frfl(_MPEGMotions *arg0);
205 extern void _MPEG_Suspend(void);
206 extern void _MPEG_Resume(void);
207 
208 #endif /* __libmpeg_internal_H */
_MPEGMotion
Definition: libmpeg_internal.h:90
_MPEGMacroBlock8
Definition: libmpeg_internal.h:83
MPEGSequenceInfo
Definition: libmpeg.h:44
libmpeg.h
_MPEGMBXY
Definition: libmpeg_internal.h:77
_MPEGMotions
Definition: libmpeg_internal.h:108
_MPEGContext
Definition: libmpeg_internal.h:122