#pragma once #include #include #include /*! \file video.h \brief Hardware-assisted video decoding support. Actually supported formats vary per target-system. */ #ifdef __cplusplus extern "C" { #endif typedef struct kinc_video { kinc_video_impl_t impl; } kinc_video_t; /// /// Returns the list of video formats which are supported on the current system. /// /// A NULL-terminated list of strings representing the supported video-formats KINC_FUNC const char **kinc_video_formats(void); /// /// Prepares a video object based on an encoded video-file. /// KINC_FUNC void kinc_video_init(kinc_video_t *video, const char *filename); /// /// Destroys a video object. /// KINC_FUNC void kinc_video_destroy(kinc_video_t *video); /// /// Starts playing a video. /// KINC_FUNC void kinc_video_play(kinc_video_t *video, bool loop); /// /// Pauses a video. /// KINC_FUNC void kinc_video_pause(kinc_video_t *video); /// /// Stops a video which is equivalent to pausing it and setting the position to 0. /// KINC_FUNC void kinc_video_stop(kinc_video_t *video); /// /// Gets the width of the video in pixels. /// /// The width of the video in pixels KINC_FUNC int kinc_video_width(kinc_video_t *video); /// /// Gets the height of the video in pixels. /// /// The height of the video in pixels KINC_FUNC int kinc_video_height(kinc_video_t *video); /// /// Gets the current image of a playing video which can be rendered using any of Kinc's graphics APIs. /// /// The current image of a playing video KINC_FUNC kinc_g4_texture_t *kinc_video_current_image(kinc_video_t *video); /// /// Gets the duration of the video in seconds. /// /// The duration of the video in seconds KINC_FUNC double kinc_video_duration(kinc_video_t *video); /// /// Returns the current playback-position of the video in seconds. /// /// The current playback-position in seconds KINC_FUNC double kinc_video_position(kinc_video_t *video); /// /// Returns whether the video reached its end. /// /// the end-state of the video KINC_FUNC bool kinc_video_finished(kinc_video_t *video); /// /// Returns whether the video is currently paused. /// /// The current pause state of the video KINC_FUNC bool kinc_video_paused(kinc_video_t *video); /// /// Call this every frame to update the video. This is not required on all targets but where it's not required the function just does nothing - so please call /// it. /// KINC_FUNC void kinc_video_update(kinc_video_t *video, double time); #ifdef __cplusplus } #endif