1 #ifndef __videoreader_t__ 2 #define __videoreader_t__ 3 4 #define videoreader_getsamples(v, buffer, num) ((v)->getsamples((v),(buffer),(num))) 5 #define videoreader_getimage(v, buffer) ((v)->getimage((v),(buffer))) 6 #define videoreader_eof(v) ((v)->eof(v)) 7 #define videoreader_setparameter(v,name,value) ((v)->setparameter((v),(name),(value))) 8 #define videoreader_close(v) ((v)->close(v)) 9 10 typedef struct _videoreader_t 11 { 12 void*internal; 13 14 /* video */ 15 int width; 16 int height; 17 double fps; 18 19 /* audio */ 20 int channels; 21 int samplerate; 22 23 /* progress */ 24 int frame; 25 26 void (*setparameter) (struct _videoreader_t*, char*name, char*value); 27 int (*getsamples) (struct _videoreader_t*, void*buffer, int num); 28 int (*getimage) (struct _videoreader_t*, void*buffer); // buffer must hold width*height*4 bytes 29 void (*close) (struct _videoreader_t*); 30 31 } videoreader_t; 32 33 34 #endif 35