Video streaming addon
- ALLEGRO_VIDEO_EVENT_TYPE
- ALLEGRO_VIDEO_POSITION_TYPE
- al_init_video_addon
- al_shutdown_video_addon
- al_get_allegro_video_version
- al_open_video
- al_close_video
- al_start_video
- al_start_video_with_voice
- al_get_video_event_source
- al_set_video_playing
- al_is_video_playing
- al_get_video_audio_rate
- al_get_video_fps
- al_get_video_scaled_width
- al_get_video_scaled_height
- al_get_video_frame
- al_get_video_position
- al_seek_video
These functions are declared in the following header file. Link with allegro_video.
#include <allegro5/allegro_video.h>
Currently we have an Ogg backend (Theora + Vorbis). See http://xiph.org/ for installation instructions, licensing information and supported video formats.
ALLEGRO_VIDEO_EVENT_TYPE
enum ALLEGRO_VIDEO_EVENT_TYPE
Events sent by al_get_video_event_source.
ALLEGRO_EVENT_VIDEO_FRAME_SHOW
This event is sent when it is time to show a new frame. Once you receive this event, you can draw the current frame (as returned by al_get_video_frame). al_get_video_frame will continue returning the same frame until the next ALLEGRO_EVENT_VIDEO_FRAME_SHOW is sent.
- user.data1 (ALLEGRO_VIDEO *)
- The video which generated the event.
Since: 5.1.0
ALLEGRO_EVENT_VIDEO_FINISHED
This event is sent when the video is finished. Depending on the backend, it may be possible to seek to an earlier part of the video and set the video to play to resume playback.
- user.data1 (ALLEGRO_VIDEO *)
- The video which generated the event.
Since: 5.1.0
ALLEGRO_VIDEO_POSITION_TYPE
typedef enum ALLEGRO_VIDEO_POSITION_TYPE ALLEGRO_VIDEO_POSITION_TYPE;
Used with al_get_video_position to specify which position to retrieve. If these get out of sync, audio and video may be out of sync in the display of the video.
ALLEGRO_VIDEO_POSITION_ACTUAL - The amount of time the video has been playing. If the video has audio then this value can be ahead of ALLEGRO_VIDEO_POSITION_VIDEO_DECODE when video decoding lags.
ALLEGRO_VIDEO_POSITION_VIDEO_DECODE - The amount of video that has been decoded. This may lag behind the "actual" and audio positions if decoding is slower than realtime.
ALLEGRO_VIDEO_POSITION_AUDIO_DECODE - The amount of audio that has been decoded. This may be the same as ALLEGRO_VIDEO_POSITION_ACTUAL if audio decode is driving the position, which is common to keep audio and video in sync.
Since: 5.1.11
al_init_video_addon
bool al_init_video_addon(void)
Initializes the video addon.
Since: 5.1.12
al_shutdown_video_addon
void al_shutdown_video_addon(void)
Shut down the video addon. This is done automatically at program exit, but can be called any time the user wishes as well.
Since: 5.1.12
al_get_allegro_video_version
uint32_t al_get_allegro_video_version(void)
Returns the (compiled) version of the addon, in the same format as al_get_allegro_version.
Since: 5.1.12
al_open_video
ALLEGRO_VIDEO *al_open_video(char const *filename)
Reads a video file. This does not start streaming yet but reads the meta info so you can query e.g. the size or audio rate.
Since: 5.1.0
al_close_video
void al_close_video(ALLEGRO_VIDEO *video)
Closes the video and frees all allocated resources. The video pointer is invalid after the function returns.
Since: 5.1.0
al_start_video
void al_start_video(ALLEGRO_VIDEO *video, ALLEGRO_MIXER *mixer)
Starts streaming the video from the beginning.
Since: 5.1.0
al_start_video_with_voice
void al_start_video_with_voice(ALLEGRO_VIDEO *video, ALLEGRO_VOICE *voice)
Like al_start_video but audio is routed to the provided voice.
Since: 5.1.0
al_get_video_event_source
ALLEGRO_EVENT_SOURCE *al_get_video_event_source(ALLEGRO_VIDEO *video)
Get an event source for the video. The possible events are described under ALLEGRO_VIDEO_EVENT_TYPE.
Since: 5.1.0
al_set_video_playing
void al_set_video_playing(ALLEGRO_VIDEO *video, bool play)
Paused or resumes playback.
Since: 5.1.12
al_is_video_playing
bool al_is_video_playing(ALLEGRO_VIDEO *video)
Returns true if the video is currently playing.
Since: 5.1.12
al_get_video_audio_rate
double al_get_video_audio_rate(ALLEGRO_VIDEO *video)
Returns the audio rate of the video, in Hz.
Since: 5.1.0
al_get_video_fps
double al_get_video_fps(ALLEGRO_VIDEO *video)
Returns the speed of the video in frames per second. Often this will not be an integer value.
Since: 5.1.0
al_get_video_scaled_width
float al_get_video_scaled_width(ALLEGRO_VIDEO *video)
Returns the width with which the video frame should be drawn. Videos often do not use square pixels, so this will may return a value larger than the width of the frame bitmap.
Since: 5.1.12
See also: al_get_video_frame
al_get_video_scaled_height
float al_get_video_scaled_height(ALLEGRO_VIDEO *video)
Returns the height with which the video frame should be drawn. Videos often do not use square pixels, so this will may return a value larger than the height of the frame bitmap.
See also: al_get_video_frame
Since: 5.1.12
al_get_video_frame
ALLEGRO_BITMAP *al_get_video_frame(ALLEGRO_VIDEO *video)
Returns the current video frame. The bitmap is owned by the video so do not attempt to free it. The bitmap will stay valid until the next call to al_get_video_frame.
Videos often do not use square pixels so the recommended way to draw a video frame would be using code like this:
float scale = 1.0; /* Adjust this to fit your target bitmap dimensions. */
ALLEGRO_BITMAP* frame = al_get_video_frame(video);
float sw = al_get_bitmap_width(frame);
float sh = al_get_bitmap_height(frame);
float dw = scale * al_get_video_scaled_width(video);
float dh = scale * al_get_video_scaled_height(video);
al_draw_scaled_bitmap(frame, 0, 0, sw, sh, 0, 0, dw, dh, 0);
Since: 5.1.0
See also: al_get_video_scaled_width, al_get_video_scaled_height
al_get_video_position
double al_get_video_position(ALLEGRO_VIDEO *video, ALLEGRO_VIDEO_POSITION_TYPE which)
Returns the current position of the video stream in seconds since the beginning. The parameter is one of the ALLEGRO_VIDEO_POSITION_TYPE constants.
Since: 5.1.0
al_seek_video
bool al_seek_video(ALLEGRO_VIDEO *video, double pos_in_seconds)
Seek to a different position in the video. Currently only seeking to the beginning of the video is supported.
Since: 5.1.0