Files
2020-07-16 11:07:17 -07:00

53 lines
1.3 KiB
C++

// VQAMOVIE.H
//
#pragma once
typedef enum {
FMV_IDLE,
FMV_PLAY, // play
FMV_EOF, // all other conditions, i.e. stop/EOF/abort
FMV_ID_BLT,
FMV_ID_IDLE,
FMV_LOOPED,
FMV_ID_WAIT
} cinStatus_t;
#pragma pack(push,8)
typedef struct {
int imageWidth, imageHeight; // will be a power of 2
struct Image_t* image; // RGBA format, alpha will be 255
uint8_t* rawbuffer;
int status;
} cinData_t;
#pragma pop
class _VQAHandle {
public:
_VQAHandle();
~_VQAHandle();
// returns false if it failed to load
virtual bool InitFromFile(const char* qpath, bool looping) = 0;
// returns the length of the animation in milliseconds
virtual int AnimationLength() = 0;
// the pointers in cinData_t will remain valid until the next UpdateForTime() call
virtual cinData_t ImageForTime(int milliseconds) = 0;
// closes the file and frees all allocated memory
virtual void Close() = 0;
// closes the file and frees all allocated memory
virtual void ResetTime(int time) = 0;
};
void VQA_Init(void);
long VQA_Play(_VQAHandle* vqaHandle);
void VQA_Close(_VQAHandle* vqaHandle);
void VQA_Free(_VQAHandle* vqaHandle);
long VQA_Open(_VQAHandle* videoHandle, char const* filename);
void VQA_ImageForTime(_VQAHandle* videoHandle, int milliseconds);
void VQA_FFMPEGReset(_VQAHandle* videoHandle);
_VQAHandle* VQA_Alloc(void);