1 2 typedef struct ALLEGRO_VIDEO_INTERFACE { 3 bool (*open_video)(ALLEGRO_VIDEO *video); 4 bool (*close_video)(ALLEGRO_VIDEO *video); 5 bool (*start_video)(ALLEGRO_VIDEO *video); 6 bool (*set_video_playing)(ALLEGRO_VIDEO *video); 7 bool (*seek_video)(ALLEGRO_VIDEO *video, double seek_to); 8 bool (*update_video)(ALLEGRO_VIDEO *video); 9 } ALLEGRO_VIDEO_INTERFACE; 10 11 struct ALLEGRO_VIDEO { 12 ALLEGRO_VIDEO_INTERFACE *vtable; 13 14 /* video */ 15 ALLEGRO_BITMAP *current_frame; 16 double video_position; 17 double fps; 18 float scaled_width; 19 float scaled_height; 20 21 /* audio */ 22 ALLEGRO_MIXER *mixer; 23 ALLEGRO_VOICE *voice; 24 ALLEGRO_AUDIO_STREAM *audio; 25 double audio_position; 26 double audio_rate; 27 28 /* general */ 29 bool es_inited; 30 ALLEGRO_EVENT_SOURCE es; 31 ALLEGRO_PATH *filename; 32 bool playing; 33 double position; 34 35 /* implementation specific */ 36 void *data; 37 }; 38 39 ALLEGRO_VIDEO_INTERFACE *_al_video_ogv_vtable(void); 40 void _al_compute_scaled_dimensions(int frame_w, int frame_h, float aspect_ratio, float *scaled_w, float *scaled_h); 41