d_thp with THPPlayer headers from SMS

This commit is contained in:
lepelog
2025-08-02 00:39:03 +02:00
parent 899f86a571
commit ea11808636
15 changed files with 563 additions and 40 deletions
+24
View File
@@ -0,0 +1,24 @@
#ifndef _THP_THPAUDIODECODE_H
#define _THP_THPAUDIODECODE_H
#include "common.h"
#ifdef __cplusplus
extern "C" {
#endif
BOOL CreateAudioDecodeThread(s32 prioriy, void*);
void AudioDecodeThreadStart();
void AudioDecodeThreadCancel();
void PushFreeAudioBuffer(void* buf);
void PushDecodedAudioBuffer(void* buf);
void* PopFreeAudioBuffer();
void* PopDecodedAudioBuffer(s32 flags);
#ifdef __cplusplus
}
#endif
#endif
+33
View File
@@ -0,0 +1,33 @@
#ifndef _THP_THPBUFFER_H
#define _THP_THPBUFFER_H
#include "common.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct THPTextureSet {
u8* ytexture;
u8* utexture;
u8* vtexture;
s32 frameNumber;
} THPTextureSet;
typedef struct THPAudioBuffer {
s16* buffer;
s16* curPtr;
u32 validSample;
} THPAudioBuffer;
typedef struct THPReadBuffer {
u8* ptr;
s32 frameNumber;
BOOL isValid;
} THPReadBuffer;
#ifdef __cplusplus
}
#endif
#endif
+21
View File
@@ -0,0 +1,21 @@
#ifndef _THP_THPDRAW_H
#define _THP_THPDRAW_H
#include "common.h"
#include "rvl/GX/GXFrameBuf.h"
#ifdef __cplusplus
extern "C" {
#endif
void THPGXRestore();
void THPGXYuv2RgbSetup(GXRenderModeObj* rmode);
void THPGXYuv2RgbDraw(u8* yTexture, u8* uTexture, u8* vTexture, s16 x, s16 y,
s16 textureWidth, s16 textureHeight, s16 polygonWidth,
s16 polygonHeight);
#ifdef __cplusplus
}
#endif
#endif
+29
View File
@@ -0,0 +1,29 @@
#ifndef _THP_THPFILE_H
#define _THP_THPFILE_H
#include "common.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct THPHeader {
char magic[4];
u32 version;
u32 bufsize;
u32 audioMaxSamples;
f32 frameRate;
u32 numFrames;
u32 firstFrameSize;
u32 movieDataSize;
u32 compInfoDataOffsets;
u32 offsetDataOffsets;
u32 movieDataOffsets;
u32 finalFrameDataOffsets;
} THPHeader;
#ifdef __cplusplus
}
#endif
#endif
+32
View File
@@ -0,0 +1,32 @@
#ifndef _THP_THPINFO_H
#define _THP_THPINFO_H
#include "common.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct THPVideoInfo {
u32 xSize;
u32 ySize;
u32 videoType;
} THPVideoInfo;
typedef struct THPAudioInfo {
u32 sndChannels;
u32 sndFrequency;
u32 sndNumSamples;
u32 sndNumTracks;
} THPAudioInfo;
typedef struct THPFrameCompInfo {
u32 numComponents;
u8 frameComp[16];
} THPFrameCompInfo;
#ifdef __cplusplus
}
#endif
#endif
+91
View File
@@ -0,0 +1,91 @@
#ifndef _THP_THPPLAYER_H
#define _THP_THPPLAYER_H
#include "common.h"
#include "rvl/DVD/dvd.h"
#include "rvl/GX/GXFrameBuf.h"
#include <THPPlayer/THPBuffer.h>
#include <THPPlayer/THPFile.h>
#include <THPPlayer/THPInfo.h>
#ifdef __cplusplus
extern "C" {
#endif
#define THP_AUDIO_BUFFER_COUNT 3
#define THP_READ_BUFFER_COUNT 10
#define THP_TEXTURE_SET_COUNT 3
typedef struct THPPlayer {
DVDFileInfo fileInfo;
THPHeader header;
THPFrameCompInfo compInfo;
THPVideoInfo videoInfo;
THPAudioInfo audioInfo;
void* thpWork;
BOOL open;
u8 state;
u8 internalState;
u8 playFlag;
u8 audioExist;
s32 dvdError;
s32 videoError;
BOOL onMemory;
u8* movieData;
s32 initOffset;
s32 initReadSize;
s32 initReadFrame;
u32 curField;
s64 retaceCount;
s32 prevCount;
s32 curCount;
s32 videoDecodeCount;
f32 curVolume;
f32 targetVolume;
f32 deltaVolume;
s32 rampCount;
s32 curAudioTrack;
s32 curVideoNumber;
s32 curAudioNumber;
THPTextureSet* dispTextureSet;
THPAudioBuffer* playAudioBuffer;
THPReadBuffer readBuffer[10];
THPTextureSet textureSet[THP_TEXTURE_SET_COUNT];
THPAudioBuffer audioBuffer[THP_AUDIO_BUFFER_COUNT];
} THPPlayer; // Size: 0x1d0
extern THPPlayer ActivePlayer;
BOOL THPPlayerInit(s32);
void THPPlayerQuit();
BOOL THPPlayerOpen(const char* fileName, BOOL onMemory);
BOOL THPPlayerClose();
BOOL THPPlayerPlay();
void THPPlayerStop();
BOOL THPPlayerPause();
BOOL THPPlayerPrepare(s32 offset, u8 flag, s32 audioTrack);
BOOL THPPlayerSetBuffer(u8* data);
u32 THPPlayerCalcNeedMemory();
BOOL THPPlayerGetVideoInfo(THPVideoInfo* videoInfo);
BOOL THPPlayerGetAudioInfo(THPAudioInfo* audioInfo);
// f32 THPPlayerGetFrameRate();
BOOL THPPlayerSetVolume(s32 vol, s32 duration);
s32 THPPlayerDrawCurrentFrame(u16, u16, u32, u32, u32, u32);
u32 THPPlayerGetTotalFrame();
s32 THPPlayerGetState();
void THPPlayerDrawDone();
void THPPlayerPostDrawDone();
#ifdef __cplusplus
}
#endif
void PrepareReady(int msg);
#endif
+26
View File
@@ -0,0 +1,26 @@
#ifndef _THP_THPREAD_H
#define _THP_THPREAD_H
#include "common.h"
#ifdef __cplusplus
extern "C" {
#endif
BOOL CreateReadThread(s32 prioriy);
void ReadThreadStart(void);
void ReadThreadCancel(void);
// TODO: figure out if these returns THPBuffer * instead(DWARF info pls)
void* PopReadedBuffer(void);
void* PopFreeReadBuffer(void);
void* PopReadedBuffer2(void);
void* PushReadedBuffer(void* buffer);
void PushFreeReadBuffer(void* buffer);
void PushReadedBuffer2(void* buffer);
#ifdef __cplusplus
}
#endif
#endif
+24
View File
@@ -0,0 +1,24 @@
#ifndef _THP_THPVIDEODECODE_H
#define _THP_THPVIDEODECODE_H
#include "common.h"
#ifdef __cplusplus
extern "C" {
#endif
BOOL CreateVideoDecodeThread(s32 prioriy, void*);
void VideoDecodeThreadStart(void);
void VideoDecodeThreadCancel(void);
void* PopFreeTextureSet(void);
void* PopDecodedTextureSet(s32 flags);
void PushFreeTextureSet(void* tex);
void PushDecodedTextureSet(void* tex);
#ifdef __cplusplus
}
#endif
#endif