diff --git a/plugins/engine.h b/plugins/engine.h new file mode 100644 index 000000000..fac72f2fc --- /dev/null +++ b/plugins/engine.h @@ -0,0 +1,24 @@ +typedef enum uploadfmt_e +{ + TF_INVALID, + TF_RGBA32, + TF_BGRA32, + TF_RGBX32, + TF_BGRX32 +} uploadfmt_t; + +typedef struct +{ + void *(*createdecoder)(char *name); //needed + void *(*decodeframe)(void *ctx, qboolean nosound, enum uploadfmt_e *fmt, int *width, int *height); //needed + void (*doneframe)(void *ctx, void *img); //basically a free() + void (*shutdown)(void *ctx); //probably needed... + void (*rewind)(void *ctx); + + //these are any interactivity functions you might want... + void (*cursormove) (void *ctx, float posx, float posy); //pos is 0-1 + void (*key) (void *ctx, int code, int unicode, int event); //key event! event=1=down + qboolean (*setsize) (void *ctx, int width, int height); //updates the desired screen-space size + void (*getsize) (void *ctx, int *width, int *height); //retrieves the screen-space size + void (*changestream) (void *ctx, char *streamname); //can be used to accept commands from qc +} media_decoder_funcs_t;