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