1 #ifndef __al_included_allegro_video_h
2 #define __al_included_allegro_video_h
3 
4 #ifdef __cplusplus
5    extern "C" {
6 #endif
7 
8 #include "allegro5/allegro5.h"
9 #include "allegro5/allegro_audio.h"
10 
11 #if (defined ALLEGRO_MINGW32) || (defined ALLEGRO_MSVC) || (defined ALLEGRO_BCC32)
12    #ifndef ALLEGRO_STATICLINK
13       #ifdef ALLEGRO_VIDEO_SRC
14          #define _ALLEGRO_VIDEO_DLL __declspec(dllexport)
15       #else
16          #define _ALLEGRO_VIDEO_DLL __declspec(dllimport)
17       #endif
18    #else
19       #define _ALLEGRO_VIDEO_DLL
20    #endif
21 #endif
22 
23 #if defined ALLEGRO_MSVC
24    #define ALLEGRO_VIDEO_FUNC(type, name, args)      _ALLEGRO_VIDEO_DLL type __cdecl name args
25 #elif defined ALLEGRO_MINGW32
26    #define ALLEGRO_VIDEO_FUNC(type, name, args)      extern type name args
27 #elif defined ALLEGRO_BCC32
28    #define ALLEGRO_VIDEO_FUNC(type, name, args)      extern _ALLEGRO_VIDEO_DLL type name args
29 #else
30    #define ALLEGRO_VIDEO_FUNC      AL_FUNC
31 #endif
32 
33 /* Enum: ALLEGRO_VIDEO_EVENT_TYPE
34  */
35 enum ALLEGRO_VIDEO_EVENT_TYPE
36 {
37    ALLEGRO_EVENT_VIDEO_FRAME_SHOW   = 550,
38    ALLEGRO_EVENT_VIDEO_FINISHED     = 551,
39    _ALLEGRO_EVENT_VIDEO_SEEK        = 552   /* internal */
40 };
41 
42 enum ALLEGRO_VIDEO_POSITION_TYPE
43 {
44    ALLEGRO_VIDEO_POSITION_ACTUAL        = 0,
45    ALLEGRO_VIDEO_POSITION_VIDEO_DECODE  = 1,
46    ALLEGRO_VIDEO_POSITION_AUDIO_DECODE  = 2
47 };
48 
49 /* Enum: ALLEGRO_VIDEO_POSITION_TYPE
50  */
51 typedef enum ALLEGRO_VIDEO_POSITION_TYPE ALLEGRO_VIDEO_POSITION_TYPE;
52 
53 typedef struct ALLEGRO_VIDEO ALLEGRO_VIDEO;
54 
55 ALLEGRO_VIDEO_FUNC(ALLEGRO_VIDEO *, al_open_video, (char const *filename));
56 ALLEGRO_VIDEO_FUNC(void, al_close_video, (ALLEGRO_VIDEO *video));
57 ALLEGRO_VIDEO_FUNC(void, al_start_video, (ALLEGRO_VIDEO *video, ALLEGRO_MIXER *mixer));
58 ALLEGRO_VIDEO_FUNC(void, al_start_video_with_voice, (ALLEGRO_VIDEO *video, ALLEGRO_VOICE *voice));
59 ALLEGRO_VIDEO_FUNC(ALLEGRO_EVENT_SOURCE *, al_get_video_event_source, (ALLEGRO_VIDEO *video));
60 ALLEGRO_VIDEO_FUNC(void, al_set_video_playing, (ALLEGRO_VIDEO *video, bool playing));
61 ALLEGRO_VIDEO_FUNC(bool, al_is_video_playing, (ALLEGRO_VIDEO *video));
62 ALLEGRO_VIDEO_FUNC(double, al_get_video_audio_rate, (ALLEGRO_VIDEO *video));
63 ALLEGRO_VIDEO_FUNC(double, al_get_video_fps, (ALLEGRO_VIDEO *video));
64 ALLEGRO_VIDEO_FUNC(float, al_get_video_scaled_width, (ALLEGRO_VIDEO *video));
65 ALLEGRO_VIDEO_FUNC(float, al_get_video_scaled_height, (ALLEGRO_VIDEO *video));
66 ALLEGRO_VIDEO_FUNC(ALLEGRO_BITMAP *, al_get_video_frame, (ALLEGRO_VIDEO *video));
67 ALLEGRO_VIDEO_FUNC(double, al_get_video_position, (ALLEGRO_VIDEO *video, ALLEGRO_VIDEO_POSITION_TYPE which));
68 ALLEGRO_VIDEO_FUNC(bool, al_seek_video, (ALLEGRO_VIDEO *video, double pos_in_seconds));
69 ALLEGRO_VIDEO_FUNC(bool, al_init_video_addon, (void));
70 ALLEGRO_VIDEO_FUNC(bool, al_is_video_addon_initialized, (void));
71 ALLEGRO_VIDEO_FUNC(void, al_shutdown_video_addon, (void));
72 ALLEGRO_VIDEO_FUNC(uint32_t, al_get_allegro_video_version, (void));
73 
74 #ifdef __cplusplus
75    }
76 #endif
77 
78 #endif
79