64 # define pl_unused __attribute__((unused))
70 #define PL_STRINGIFY(s) #s
71 #define PL_TOSTRING(s) PL_STRINGIFY(s)
73 #define PL_VERSION_INT(a, b, c) (a << 16 | b << 8 | c)
74 #define PL_VERSION_DOT(a, b, c) a ##.## b ##.## c
75 #define PL_VERSION(a, b, c) PL_VERSION_DOT(a, b, c)
77 #define LIBPLAYER_VERSION_MAJOR 2
78 #define LIBPLAYER_VERSION_MINOR 0
79 #define LIBPLAYER_VERSION_MICRO 1
81 #define LIBPLAYER_VERSION_INT PL_VERSION_INT(LIBPLAYER_VERSION_MAJOR, \
82 LIBPLAYER_VERSION_MINOR, \
83 LIBPLAYER_VERSION_MICRO)
84 #define LIBPLAYER_VERSION PL_VERSION(LIBPLAYER_VERSION_MAJOR, \
85 LIBPLAYER_VERSION_MINOR, \
86 LIBPLAYER_VERSION_MICRO)
87 #define LIBPLAYER_VERSION_STR PL_TOSTRING(LIBPLAYER_VERSION)
88 #define LIBPLAYER_BUILD LIBPLAYER_VERSION_INT
91 #include <sys/types.h>
114 typedef enum player_type {
118 PLAYER_TYPE_GSTREAMER,
123 typedef enum player_vo {
137 typedef enum player_ao {
146 typedef enum player_event {
147 PLAYER_EVENT_UNKNOWN,
148 PLAYER_EVENT_PLAYBACK_START,
149 PLAYER_EVENT_PLAYBACK_STOP,
150 PLAYER_EVENT_PLAYBACK_FINISHED,
151 PLAYER_EVENT_PLAYLIST_FINISHED,
152 PLAYER_EVENT_PLAYBACK_PAUSE,
153 PLAYER_EVENT_PLAYBACK_UNPAUSE,
167 PLAYER_QUALITY_NORMAL,
169 PLAYER_QUALITY_LOWEST,
170 } player_quality_level_t;
173 typedef struct player_init_param_s {
272 typedef enum mrl_type {
286 typedef enum mrl_resource {
287 MRL_RESOURCE_UNKNOWN,
324 typedef struct mrl_resource_local_args_s {
330 typedef struct mrl_resource_cd_args_s {
338 typedef struct mrl_resource_videodisc_args_s {
344 uint8_t chapter_start;
354 typedef struct mrl_resource_tv_args_s {
367 typedef struct mrl_resource_network_args_s {
375 typedef enum mrl_snapshot {
383 typedef enum mrl_metadata_type {
390 MRL_METADATA_COMMENT,
394 typedef enum mrl_metadata_cd_type {
395 MRL_METADATA_CD_DISCID,
396 MRL_METADATA_CD_TRACKS,
400 typedef enum mrl_metadata_dvd_type {
401 MRL_METADATA_DVD_TITLE_CHAPTERS,
402 MRL_METADATA_DVD_TITLE_ANGLES,
403 MRL_METADATA_DVD_TITLE_LENGTH,
407 typedef enum mrl_properties_type {
408 MRL_PROPERTY_SEEKABLE,
410 MRL_PROPERTY_AUDIO_BITRATE,
411 MRL_PROPERTY_AUDIO_BITS,
412 MRL_PROPERTY_AUDIO_CHANNELS,
413 MRL_PROPERTY_AUDIO_SAMPLERATE,
414 MRL_PROPERTY_VIDEO_BITRATE,
415 MRL_PROPERTY_VIDEO_WIDTH,
416 MRL_PROPERTY_VIDEO_HEIGHT,
417 MRL_PROPERTY_VIDEO_ASPECT,
418 MRL_PROPERTY_VIDEO_CHANNELS,
419 MRL_PROPERTY_VIDEO_STREAMS,
420 MRL_PROPERTY_VIDEO_FRAMEDURATION,
423 #define PLAYER_VIDEO_ASPECT_RATIO_MULT 10000.0
424 #define PLAYER_VIDEO_FRAMEDURATION_RATIO_DIV 90000.0
525 mrl_t *mrl,
int trackid, uint32_t *length);
602 uint32_t *
id,
char **name,
char **lang);
642 uint32_t *
id,
char **name,
char **lang);
745 typedef enum player_mrl_add {
848 typedef enum player_pb {
849 PLAYER_PB_SINGLE = 0,
854 typedef enum player_loop {
855 PLAYER_LOOP_DISABLE = 0,
857 PLAYER_LOOP_PLAYLIST,
861 typedef enum player_framedrop {
862 PLAYER_FRAMEDROP_DISABLE,
863 PLAYER_FRAMEDROP_SOFT,
864 PLAYER_FRAMEDROP_HARD,
868 typedef enum player_x_window_flags {
869 PLAYER_X_WINDOW_AUTO = 0,
870 PLAYER_X_WINDOW_X = (1 << 0),
871 PLAYER_X_WINDOW_Y = (1 << 1),
872 PLAYER_X_WINDOW_W = (1 << 2),
873 PLAYER_X_WINDOW_H = (1 << 3),
988 int x,
int y,
int w,
int h,
int flags);
1007 const char *text,
int x,
int y,
int duration);
1035 typedef enum player_pb_state {
1036 PLAYER_PB_STATE_IDLE,
1037 PLAYER_PB_STATE_PAUSE,
1038 PLAYER_PB_STATE_PLAY,
1042 typedef enum player_pb_seek {
1043 PLAYER_PB_SEEK_RELATIVE,
1044 PLAYER_PB_SEEK_ABSOLUTE,
1045 PLAYER_PB_SEEK_PERCENT,
1148 typedef enum player_mute {
1149 PLAYER_MUTE_UNKNOWN,
1271 typedef enum player_video_aspect {
1272 PLAYER_VIDEO_ASPECT_BRIGHTNESS,
1273 PLAYER_VIDEO_ASPECT_CONTRAST,
1274 PLAYER_VIDEO_ASPECT_GAMMA,
1275 PLAYER_VIDEO_ASPECT_HUE,
1276 PLAYER_VIDEO_ASPECT_SATURATION,
1297 int8_t value,
int absolute);
1335 typedef enum player_sub_alignment {
1336 PLAYER_SUB_ALIGNMENT_TOP,
1337 PLAYER_SUB_ALIGNMENT_CENTER,
1338 PLAYER_SUB_ALIGNMENT_BOTTOM,
1460 typedef enum player_dvdnav {
1463 PLAYER_DVDNAV_RIGHT,
1466 PLAYER_DVDNAV_SELECT,
1467 PLAYER_DVDNAV_PREVMENU,
1468 PLAYER_DVDNAV_MOUSECLICK,
1688 PLAYER_VDR_CHANNELPLUS,
1689 PLAYER_VDR_CHANNELMINUS,
1701 PLAYER_VDR_SCHEDULE,
1702 PLAYER_VDR_CHANNELS,
1704 PLAYER_VDR_RECORDINGS,
1707 PLAYER_VDR_COMMANDS,
1728 PLAYER_VDR_VOLMINUS,
1732 PLAYER_VDR_CHANNELPREVIOUS,
1734 PLAYER_VDR_PREVIOUS,
1735 PLAYER_VDR_SUBTITLES,
void player_dvd_title_next(player_t *player)
Select the next DVD title.
void mrl_video_snapshot(player_t *player, mrl_t *mrl, int pos, mrl_snapshot_t t, const char *dst)
Take a video snapshot.
void player_set_framedrop(player_t *player, player_framedrop_t fd)
Set frame dropping with video playback.
void player_x_window_set_properties(player_t *player, int x, int y, int w, int h, int flags)
Set properties of X11 window handled by libplayer.
void player_video_set_panscan(player_t *player, int8_t value, int absolute)
Set video panscan.
void player_audio_volume_set(player_t *player, int value)
Set volume.
void player_subtitle_set_delay(player_t *player, int value)
Set subtitle delay.
int mrl_get_metadata_audio(player_t *player, mrl_t *mrl, int pos, uint32_t *id, char **name, char **lang)
Get audio metadata of the MRL object.
int mrl_get_metadata_subtitle(player_t *player, mrl_t *mrl, int pos, uint32_t *id, char **name, char **lang)
Get subtitle metadata of the MRL object.
char * mrl_get_metadata(player_t *player, mrl_t *mrl, mrl_metadata_type_t m)
Get metadata of the stream.
void mrl_free(player_t *player, mrl_t *mrl)
Free a MRL object.
struct mrl_s mrl_t
MRL object.
player_loop_t
Player loop mode.
void player_tv_channel_next(player_t *player)
Select the next TV channel.
void player_subtitle_next(player_t *player)
Select the next subtitle ID.
void player_subtitle_scale(player_t *player, int value, int absolute)
Set subtitle scale.
void player_mrl_continue(player_t *player)
Go to the next MRL object accordingly to the loop and shuffle.
void player_playback_stop(player_t *player)
Stop playback.
void player_audio_next(player_t *player)
Select the next audio ID.
int libplayer_wrapper_enabled(player_type_t type)
Test if a wrapper is enabled.
void player_mrl_next(player_t *player)
Go the the next MRL object in the internal playlist.
player_mrl_add_t
Player MRL add mode.
mrl_metadata_type_t
MRL metadata.
struct player_s player_t
Player controller.
void player_subtitle_set_visibility(player_t *player, int value)
Set subtitle visibility.
mrl_t * mrl_new(player_t *player, mrl_resource_t res, void *args)
Create a new MRL object.
void mrl_add_subtitle(player_t *player, mrl_t *mrl, char *subtitle)
Add a subtitle file to a MRL object.
player_dvdnav_t
Player DVDnav commands.
int player_get_time_pos(player_t *player)
Get current time position in the current stream.
void player_set_playback(player_t *player, player_pb_t pb)
Set playback mode.
void player_osd_state(player_t *player, int value)
Enable/disable On-screen Display.
char * mrl_get_audio_codec(player_t *player, mrl_t *mrl)
Get audio codec name of the stream.
void player_video_set_aspect_ratio(player_t *player, float value)
Set video aspect ratio.
void player_playback_speed(player_t *player, float value)
Change playback speed.
void player_audio_prev(player_t *player)
Select the previous audio ID.
void player_radio_channel_select(player_t *player, const char *channel)
Select radio channel.
void player_osd_show_text(player_t *player, const char *text, int x, int y, int duration)
Show a text on the On-screen Display.
char * mrl_get_video_codec(player_t *player, mrl_t *mrl)
Get video codec name of the stream.
int libplayer_wrapper_supported_res(player_type_t type, mrl_resource_t res)
Test if a resource is supported by a wrapper.
player_pb_t
Player playback mode.
void player_audio_select(player_t *player, int audio_id)
Select audio ID.
player_mute_t player_audio_mute_get(player_t *player)
Get mute state.
mrl_properties_type_t
MRL properties.
player_quality_level_t quality
char * mrl_get_metadata_dvd(player_t *player, mrl_t *mrl, uint8_t *titles)
Get metadata of a DVD/DVDNAV MRL object.
void player_subtitle_set_position(player_t *player, int value)
Set subtitle position.
void player_audio_mute_set(player_t *player, player_mute_t value)
Set mute state.
void player_dvd_angle_prev(player_t *player)
Select the previous DVD angle.
mrl_resource_t
MRL resources.
uint32_t mrl_get_metadata_cd(player_t *player, mrl_t *mrl, mrl_metadata_cd_type_t m)
Get metadata of a CDDA/CDDB MRL object.
Parameters for player_init() .
off_t mrl_get_size(player_t *player, mrl_t *mrl)
Get size of the resource.
int player_audio_volume_get(player_t *player)
Get current volume.
player_pb_state_t player_playback_get_state(player_t *player)
Get current playback state.
player_mute_t
Player mute state.
player_pb_state_t
Player playback state.
void player_set_mouse_position(player_t *player, int x, int y)
Set the mouse position to the player.
Arguments for local streams.
uint32_t mrl_get_property(player_t *player, mrl_t *mrl, mrl_properties_type_t p)
Get property of the stream.
player_video_aspect_t
Player video aspect.
player_sub_alignment_t
Player subtitle alignment.
void player_mrl_remove(player_t *player)
Remove current MRL object in the internal playlist.
void player_set_verbosity(player_t *player, player_verbosity_level_t level)
Set verbosity level.
void player_mrl_append(player_t *player, mrl_t *mrl, player_mrl_add_t when)
Append MRL object in the internal playlist.
Arguments for video discs.
void player_dvd_angle_select(player_t *player, int angle)
Select DVD angle.
uint32_t mrl_get_metadata_subtitle_nb(player_t *player, mrl_t *mrl)
Get the number of available subtitles.
player_vo_t
Player video outputs.
void player_uninit(player_t *player)
Uninitialization of a player controller.
player_framedrop_t
Player frame dropping mode.
void player_tv_channel_select(player_t *player, const char *channel)
Select TV channel.
player_event_t
Player events.
void player_playback_seek(player_t *player, int value, player_pb_seek_t seek)
Seek in the stream.
mrl_resource_t mrl_get_resource(player_t *player, mrl_t *mrl)
Get resource of the stream.
void player_mrl_remove_all(player_t *player)
Remove all MRL objects in the internal playlist.
player_ao_t
Player audio outputs.
char * mrl_get_metadata_cd_track(player_t *player, mrl_t *mrl, int trackid, uint32_t *length)
Get metadata of a track with CDDA/CDDB MRL object.
uint32_t mrl_get_metadata_dvd_title(player_t *player, mrl_t *mrl, int titleid, mrl_metadata_dvd_type_t m)
Get metadata of a title with DVD/DVDNAV MRL object.
void player_tv_channel_prev(player_t *player)
Select the previous TV channel.
player_verbosity_level_t
Player verbosity.
unsigned int libplayer_version(void)
Return LIBPLAYER_VERSION_INT constant.
mrl_metadata_dvd_type_t
MRL DVD/DVDNAV metadata.
Arguments for radio/tv streams.
player_vdr_t
Player VDR commands.
void player_mrl_set(player_t *player, mrl_t *mrl)
Set MRL object in the internal playlist.
uint32_t mrl_get_metadata_audio_nb(player_t *player, mrl_t *mrl)
Get the number of available audio streams.
player_x_window_flags_t
Player X11 window flags.
void player_video_set_aspect(player_t *player, player_video_aspect_t aspect, int8_t value, int absolute)
Set video aspect.
player_type_t
Player types.
Arguments for network streams.
int player_get_percent_pos(player_t *player)
Get percent position in the current stream.
mrl_t * player_mrl_get_current(player_t *player)
Get current MRL set in the internal playlist.
mrl_snapshot_t
Snapshot image file type.
void player_set_shuffle(player_t *player, int value)
Shuffle playback in the internal playlist.
void player_dvd_title_select(player_t *player, int title)
Select DVD title.
void player_playback_seek_chapter(player_t *player, int value, int absolute)
Seek chapter in the stream.
void player_radio_channel_prev(player_t *player)
Select the previous radio channel.
mrl_metadata_cd_type_t
MRL CDDA/CDDB metadata.
void player_playback_start(player_t *player)
Start a new playback.
void player_vdr(player_t *player, player_vdr_t value)
VDR commands.
void player_audio_set_delay(player_t *player, int value, int absolute)
Set audio delay.
void player_dvd_title_prev(player_t *player)
Select the previous DVD title.
void player_subtitle_prev(player_t *player)
Select the previous subtitle ID.
void player_radio_channel_next(player_t *player)
Select the next radio channel.
mrl_type_t mrl_get_type(player_t *player, mrl_t *mrl)
Get type of the stream.
void player_dvd_angle_next(player_t *player)
Select the next DVD angle.
void player_dvd_nav(player_t *player, player_dvdnav_t value)
DVD Navigation commands.
void player_subtitle_set_alignment(player_t *player, player_sub_alignment_t a)
Set subtitle alignment.
void player_mrl_previous(player_t *player)
Go the the previous MRL object in the internal playlist.
void player_subtitle_select(player_t *player, int sub_id)
Select subtitle ID.
void player_set_loop(player_t *player, player_loop_t loop, int value)
Set loop mode and value.
player_t * player_init(player_type_t type, player_verbosity_level_t verbosity, player_init_param_t *param)
Initialization of a new player controller.
void player_playback_pause(player_t *player)
Pause and unpause playback.
player_pb_seek_t
Player playback seek mode.