prime/include/dolphin/dvd.h

73 lines
1.6 KiB
C

#ifndef __DVD_H__
#define __DVD_H__
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct DVDDiskID {
char gameName[4];
char company[2];
u8 diskNumber;
u8 gameVersion;
u8 streaming;
u8 streamingBufSize; // 0 = default
u8 padding[22]; // 0's are stored
} DVDDiskID;
typedef struct DVDCommandBlock DVDCommandBlock;
typedef void (*DVDCBCallback)(s32 result, DVDCommandBlock* block);
struct DVDCommandBlock {
DVDCommandBlock* next;
DVDCommandBlock* prev;
u32 command;
s32 state;
u32 offset;
u32 length;
void* addr;
u32 currTransferSize;
u32 transferredSize;
DVDDiskID* id;
DVDCBCallback callback;
void* userData;
};
typedef struct DVDFileInfo DVDFileInfo;
typedef void (*DVDCallback)(s32 result, DVDFileInfo* fileInfo);
struct DVDFileInfo {
u32 startAddr;
u32 length;
DVDCallback callback;
};
void DVDSetAutoFatalMessaging(BOOL);
void DVDReset();
BOOL DVDPrepareStreamAsync(DVDFileInfo *fInfo, u32 length, u32 offset, DVDCallback callback);
s32 DVDPrepareStream(DVDFileInfo *fInfo, u32 length, u32 offset);
BOOL DVDCancelStreamAsync(DVDCommandBlock *block, DVDCBCallback callback);
s32 DVDCancelStream(DVDCommandBlock *block);
BOOL DVDStopStreamAtEndAsync(DVDCommandBlock *block, DVDCBCallback callback);
s32 DVDStopStreamAtEnd(DVDCommandBlock *block);
BOOL DVDGetStreamErrorStatusAsync(DVDCommandBlock *block, DVDCBCallback callback);
s32 DVDGetStreamErrorStatus(DVDCommandBlock *block);
BOOL DVDGetStreamPlayAddrAsync(DVDCommandBlock *block, DVDCBCallback callback);
s32 DVDGetStreamPlayAddr(DVDCommandBlock *block);
#ifdef __cplusplus
}
#endif
#endif