#ifndef FTEPLUGIN typedef enum uploadfmt_e { TF_INVALID, TF_RGBA32, TF_BGRA32, TF_RGBX32, TF_BGRX32 } uploadfmt_t; typedef struct { char *drivername; void *(QDECL *createdecoder)(char *name); //needed void *(QDECL *decodeframe)(void *ctx, qboolean nosound, uploadfmt_t *fmt, int *width, int *height); //needed void (QDECL *doneframe)(void *ctx, void *img); //basically a free() void (QDECL *shutdown)(void *ctx); //probably needed... void (QDECL *rewind)(void *ctx); //these are any interactivity functions you might want... void (QDECL *cursormove) (void *ctx, float posx, float posy); //pos is 0-1 void (QDECL *key) (void *ctx, int code, int unicode, int event); //key event! event=1=down qboolean (QDECL *setsize) (void *ctx, int width, int height); //updates the desired screen-space size void (QDECL *getsize) (void *ctx, int *width, int *height); //retrieves the screen-space size void (QDECL *changestream) (void *ctx, char *streamname); //can be used to accept commands from qc } media_decoder_funcs_t; typedef struct { char *drivername; void *(QDECL *capture_begin) (char *streamname, int videorate, int width, int height, int *sndkhz, int *sndchannels, int *sndbits); void (QDECL *capture_video) (void *ctx, void *data, int frame, int width, int height); void (QDECL *capture_audio) (void *ctx, void *data, int bytes); void (QDECL *capture_end) (void *ctx); } media_encoder_funcs_t; #endif