mirror of https://github.com/PrimeDecomp/prime.git
89 lines
2.4 KiB
C
89 lines
2.4 KiB
C
#ifndef _DOLPHIN_THP
|
|
#define _DOLPHIN_THP
|
|
|
|
#include "dolphin/types.h"
|
|
#include "dolphin/thp/THPAudio.h"
|
|
#include "dolphin/thp/THPVideoDecode.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef u8 THPSample;
|
|
typedef s16 THPCoeff;
|
|
typedef f32 THPQuantTab[64];
|
|
|
|
typedef struct _THPHuffmanTab {
|
|
u8 quick[32];
|
|
u8 increment[32];
|
|
u8* Vij;
|
|
s32 maxCode[18];
|
|
s32 valPtr[18];
|
|
u8 Vij1;
|
|
u8 pad[11];
|
|
} THPHuffmanTab;
|
|
|
|
typedef struct _THPComponent {
|
|
u8 quantizationTableSelector;
|
|
u8 DCTableSelector;
|
|
u8 ACTableSelector;
|
|
THPCoeff predDC;
|
|
} THPComponent;
|
|
|
|
typedef struct _THPFileInfo {
|
|
THPQuantTab quantTabs[3];
|
|
THPHuffmanTab huffmanTabs[4];
|
|
THPComponent components[3];
|
|
u16 xPixelSize;
|
|
u16 yPixelSize;
|
|
u16 MCUsPerRow;
|
|
u16 decompressedY;
|
|
u8* c;
|
|
u32 currByte;
|
|
u32 cnt;
|
|
u8 validHuffmanTabs;
|
|
u8 RST;
|
|
u16 nMCU;
|
|
u16 currMCU;
|
|
u8* dLC[3];
|
|
} THPFileInfo;
|
|
|
|
s32 __THPAudioGetNewSample(THPAudioDecodeInfo*);
|
|
void __THPAudioInitialize(THPAudioDecodeInfo*, u8*);
|
|
|
|
static void __THPSetupBuffers(void);
|
|
static u8 __THPReadFrameHeader(void);
|
|
static u8 __THPReadScaneHeader(void);
|
|
static u8 __THPReadQuantizationTable(void);
|
|
static u8 __THPReadHuffmanTableSpecification(void);
|
|
static void __THPHuffGenerateSizeTable(void);
|
|
static void __THPHuffGenerateCodeTable(void);
|
|
static void __THPHuffGenerateDecoderTables(u8 tabIndex);
|
|
static void __THPRestartDefinition(void);
|
|
static void __THPPrepBitStream(void);
|
|
static void __THPDecompressYUV(void*, void*, void*);
|
|
static void __THPGQRRestore(void);
|
|
static void __THPDecompressiMCURow512x448(void);
|
|
static void __THPDecompressiMCURow640x480(void);
|
|
static void __THPDecompressiMCURowNxN(void);
|
|
static void __THPInverseDCTNoYPos(THPCoeff*, u32);
|
|
static void __THPHuffDecodeDCTCompY(THPFileInfo*, THPCoeff*);
|
|
static void __THPHuffDecodeDCTCompU(THPFileInfo*, THPCoeff*);
|
|
static void __THPHuffDecodeDCTCompV(THPFileInfo*, THPCoeff*);
|
|
|
|
static const u8 __THPJpegNaturalOrder[80] = {
|
|
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, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63};
|
|
|
|
static const f64 __THPAANScaleFactor[8] = {
|
|
1.0f, 1.387039845f, 1.306562965f, 1.175875602f, 1.0f, 0.785694958f, 0.541196100f, 0.275899379f,
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _DOLPHIN_THP
|