PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
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
77typedef struct _MPEGMBXY
78{
79 unsigned char m_X;
80 unsigned char m_Y;
81} _MPEGMBXY;
82
83typedef 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
90typedef 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, int);
104 // cppcheck-suppress unusedStructMember
105 void (*MC_Chroma)(struct _MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int tmpa, int, int);
107
108typedef 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 *);
119 _MPEGMotion m_Motion[7];
121
122typedef 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;
162
163extern void _MPEG_Initialize(_MPEGContext *, int (*)(void *), void *, int *);
164extern void _MPEG_Destroy(void);
165extern int _MPEG_CSCImage(void *, void *, int);
166extern void _MPEG_SetDefQM(int);
167extern void _MPEG_SetQM(int);
168extern int _MPEG_GetMBAI(void);
169extern int _MPEG_GetMBType(void);
170extern int _MPEG_GetMotionCode(void);
171extern int _MPEG_GetDMVector(void);
172extern unsigned int _MPEG_NextStartCode(void);
173extern void _MPEG_AlignBits(void);
174extern unsigned int _MPEG_GetBits(unsigned int);
175extern unsigned int _MPEG_ShowBits(unsigned int);
176extern void _MPEG_SetIDCP(void);
177extern void _MPEG_SetQSTIVFAS(void);
178extern void _MPEG_SetPCT(unsigned int);
179extern void _MPEG_BDEC(int, int, int, int, void *);
180extern int _MPEG_WaitBDEC(void);
181extern void _MPEG_dma_ref_image(_MPEGMacroBlock8 *, _MPEGMotion *, s64, int);
182extern void _MPEG_do_mc(_MPEGMotion *);
183extern void _MPEG_put_luma(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
184extern void _MPEG_put_luma_X(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
185extern void _MPEG_put_luma_Y(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
186extern void _MPEG_put_luma_XY(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
187extern void _MPEG_put_chroma(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
188extern void _MPEG_put_chroma_X(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
189extern void _MPEG_put_chroma_Y(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
190extern void _MPEG_put_chroma_XY(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
191extern void _MPEG_avg_luma(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
192extern void _MPEG_avg_luma_X(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
193extern void _MPEG_avg_luma_Y(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
194extern void _MPEG_avg_luma_XY(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
195extern void _MPEG_avg_chroma(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
196extern void _MPEG_avg_chroma_X(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
197extern void _MPEG_avg_chroma_Y(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
198extern void _MPEG_avg_chroma_XY(_MPEGMotion *m, u8 *a2, short *a3, int a4, int var1, int ta, int, int);
199extern void _MPEG_put_block_fr(_MPEGMotions *);
200extern void _MPEG_put_block_fl(_MPEGMotions *);
201extern void _MPEG_put_block_il(_MPEGMotions *);
202extern void _MPEG_add_block_ilfl(_MPEGMotions *);
203extern void _MPEG_add_block_frfr(_MPEGMotions *);
204extern void _MPEG_add_block_frfl(_MPEGMotions *);
205extern void _MPEG_Suspend(void);
206extern void _MPEG_Resume(void);
207
208#endif /* __libmpeg_internal_H */