summaryrefslogtreecommitdiff
path: root/include/THPPlayer
diff options
context:
space:
mode:
authorlepelog <25211966+lepelog@users.noreply.github.com>2025-08-02 00:39:03 +0200
committerlepelog <25211966+lepelog@users.noreply.github.com>2025-08-14 01:05:30 +0200
commitea11808636d75072cd9a32c06d4aa207ef60c87c (patch)
tree1c21620ab240cf06abe60a1e3616d567573fe183 /include/THPPlayer
parent899f86a57111df7545e5ab031e92d8564faa112a (diff)
d_thp with THPPlayer headers from SMS
Diffstat (limited to 'include/THPPlayer')
-rw-r--r--include/THPPlayer/THPAudioDecode.h24
-rw-r--r--include/THPPlayer/THPBuffer.h33
-rw-r--r--include/THPPlayer/THPDraw.h21
-rw-r--r--include/THPPlayer/THPFile.h29
-rw-r--r--include/THPPlayer/THPInfo.h32
-rw-r--r--include/THPPlayer/THPPlayer.h91
-rw-r--r--include/THPPlayer/THPRead.h26
-rw-r--r--include/THPPlayer/THPVideoDecode.h24
8 files changed, 280 insertions, 0 deletions
diff --git a/include/THPPlayer/THPAudioDecode.h b/include/THPPlayer/THPAudioDecode.h
new file mode 100644
index 00000000..d9d16457
--- /dev/null
+++ b/include/THPPlayer/THPAudioDecode.h
@@ -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
diff --git a/include/THPPlayer/THPBuffer.h b/include/THPPlayer/THPBuffer.h
new file mode 100644
index 00000000..eee2d58a
--- /dev/null
+++ b/include/THPPlayer/THPBuffer.h
@@ -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
diff --git a/include/THPPlayer/THPDraw.h b/include/THPPlayer/THPDraw.h
new file mode 100644
index 00000000..db3cd945
--- /dev/null
+++ b/include/THPPlayer/THPDraw.h
@@ -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
diff --git a/include/THPPlayer/THPFile.h b/include/THPPlayer/THPFile.h
new file mode 100644
index 00000000..3a140966
--- /dev/null
+++ b/include/THPPlayer/THPFile.h
@@ -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
diff --git a/include/THPPlayer/THPInfo.h b/include/THPPlayer/THPInfo.h
new file mode 100644
index 00000000..28db6aa8
--- /dev/null
+++ b/include/THPPlayer/THPInfo.h
@@ -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
diff --git a/include/THPPlayer/THPPlayer.h b/include/THPPlayer/THPPlayer.h
new file mode 100644
index 00000000..bd9d2644
--- /dev/null
+++ b/include/THPPlayer/THPPlayer.h
@@ -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
diff --git a/include/THPPlayer/THPRead.h b/include/THPPlayer/THPRead.h
new file mode 100644
index 00000000..637bc616
--- /dev/null
+++ b/include/THPPlayer/THPRead.h
@@ -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
diff --git a/include/THPPlayer/THPVideoDecode.h b/include/THPPlayer/THPVideoDecode.h
new file mode 100644
index 00000000..551f533b
--- /dev/null
+++ b/include/THPPlayer/THPVideoDecode.h
@@ -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