7358 lines
212 KiB
ObjectPascal
7358 lines
212 KiB
ObjectPascal
(*
|
|
*******************************************************************************
|
|
* PasLibVlcUnit.pas - pascal interface for VideoLAN libvlc 2.1.5
|
|
*
|
|
* See copyright notice below.
|
|
*
|
|
* Last modified: 2014.08.03
|
|
*
|
|
* author: Robert Jêdrzejczyk
|
|
* e-mail: robert@prog.olsztyn.pl
|
|
* www: http://prog.olsztyn.pl/paslibvlc
|
|
*
|
|
*
|
|
* See PasLibVlcUnit.txt for change log
|
|
*
|
|
*******************************************************************************
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*
|
|
* Any non-GPL usage of this software or parts of this software is strictly
|
|
* forbidden.
|
|
*
|
|
* The "appropriate copyright message" mentioned in section 2c of the GPLv2
|
|
* must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com"
|
|
*
|
|
* Commercial non-GPL licensing of this software is possible.
|
|
* please contact robert@prog.olsztyn.pl
|
|
*
|
|
*******************************************************************************
|
|
*
|
|
* libvlc is part of project VideoLAN
|
|
*
|
|
* Copyright (c) 1996-2010 VideoLAN Team
|
|
*
|
|
* For more information about VideoLAN
|
|
*
|
|
* please visit http://www.videolan.org
|
|
*
|
|
*)
|
|
|
|
{$I compiler.inc}
|
|
|
|
unit PasLibVlcUnit;
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFDEF UNIX}Unix, dynlibs,{$ENDIF}
|
|
{$IFDEF MSWINDOWS}Windows,{$ENDIF}
|
|
{$IFDEF LCLCARBON}CarbonPrivate, CarbonDef,{$ENDIF}
|
|
{$IFDEF LCLGTK2}Gtk2, {$IFDEF UNIX}Gdk2x,{$ENDIF}{$ENDIF}
|
|
{$IFDEF LCLQT}Qt4, QtWidgets,{$ENDIF}
|
|
{$IFDEF UNIX}Dialogs,{$ENDIF}
|
|
SysUtils;
|
|
|
|
(**
|
|
* Real path to libvlc.dll
|
|
*)
|
|
|
|
var
|
|
libvlc_dynamic_dll_path: string;
|
|
|
|
(**
|
|
* Real library file name
|
|
*)
|
|
var
|
|
libvlc_dynamic_dll_file: string;
|
|
|
|
(**
|
|
* Current library version
|
|
*)
|
|
var
|
|
libvlc_dynamic_dll_version: string;
|
|
|
|
var
|
|
libvlc_dynamic_dll_version_bin : LongWord;
|
|
|
|
(**
|
|
* Last error message generated by LibVlc_Init() procedure
|
|
*)
|
|
|
|
var
|
|
libvlc_dynamic_dll_error: string;
|
|
|
|
(**
|
|
* help read version nunber from string returned by
|
|
*
|
|
*)
|
|
function read_dec_number(var ptr : PAnsiChar) : LongWord;
|
|
|
|
(**
|
|
* help set function pointers to NIL
|
|
*
|
|
*)
|
|
procedure libvlc_reset_function_pointers(force : boolean = FALSE);
|
|
|
|
(**
|
|
* Dynamic loading libvlc.dll
|
|
* Must be called before use any libvlc function
|
|
*)
|
|
|
|
procedure libvlc_dynamic_dll_init();
|
|
procedure libvlc_dynamic_dll_init_with_path(vlc_install_path: string);
|
|
|
|
(**
|
|
* Release libvlc.dll
|
|
*)
|
|
|
|
procedure libvlc_dynamic_dll_done();
|
|
|
|
{$IFNDEF HAS_PATH_DELIM}
|
|
const
|
|
PathDelim = '\';
|
|
{$ENDIF}
|
|
|
|
{$IFNDEF HAS_PPANSICHAR}
|
|
type
|
|
PPAnsiChar = ^PAnsiChar;
|
|
{$ENDIF}
|
|
|
|
(*
|
|
*******************************************************************************
|
|
* type s and structures used in libvlc
|
|
*******************************************************************************
|
|
*)
|
|
|
|
type
|
|
libvlc_instance_t_ptr = type Pointer;
|
|
libvlc_log_t_ptr = type Pointer;
|
|
libvlc_log_iterator_t_ptr = type Pointer;
|
|
libvlc_media_t_ptr = type Pointer;
|
|
libvlc_media_player_t_ptr = type Pointer;
|
|
libvlc_media_list_t_ptr = type Pointer;
|
|
libvlc_media_list_player_t_ptr = type Pointer;
|
|
libvlc_media_library_t_ptr = type Pointer;
|
|
libvlc_media_discoverer_t_ptr = type Pointer;
|
|
libvlc_event_manager_t_ptr = type Pointer;
|
|
|
|
|
|
type
|
|
libvlc_time_t_ptr = ^libvlc_time_t;
|
|
libvlc_time_t = Int64;
|
|
|
|
type
|
|
libvlc_log_message_t_ptr = ^libvlc_log_message_t;
|
|
libvlc_log_message_t = packed record
|
|
i_severity : Integer; // 0=INFO, 1=ERR, 2=WARN, 3=DBG
|
|
psz_type : PAnsiChar; // module type
|
|
psz_name : PAnsiChar; // module name
|
|
psz_header : PAnsiChar; // optional header
|
|
psz_message : PAnsiChar; // message
|
|
end;
|
|
|
|
type
|
|
libvlc_meta_t = (
|
|
libvlc_meta_Title,
|
|
libvlc_meta_Artist,
|
|
libvlc_meta_Genre,
|
|
libvlc_meta_Copyright,
|
|
libvlc_meta_Album,
|
|
libvlc_meta_TrackNumber,
|
|
libvlc_meta_Description,
|
|
libvlc_meta_Rating,
|
|
libvlc_meta_Date,
|
|
libvlc_meta_Setting,
|
|
libvlc_meta_URL,
|
|
libvlc_meta_Language,
|
|
libvlc_meta_NowPlaying,
|
|
libvlc_meta_Publisher,
|
|
libvlc_meta_EncodedBy,
|
|
libvlc_meta_ArtworkURL,
|
|
libvlc_meta_TrackID
|
|
// Add new meta types HERE
|
|
);
|
|
|
|
type
|
|
libvlc_state_t = (
|
|
libvlc_NothingSpecial, // 0,
|
|
libvlc_Opening, // 1,
|
|
libvlc_Buffering, // 2,
|
|
libvlc_Playing, // 3,
|
|
libvlc_Paused, // 4,
|
|
libvlc_Stopped, // 5,
|
|
libvlc_Ended, // 6,
|
|
libvlc_Error // 7
|
|
);
|
|
|
|
const
|
|
libvlc_media_option_trusted = $0002;
|
|
libvlc_media_option_unique = $0100;
|
|
|
|
{$IFDEF HAS_ENUM_ORDINALITY}
|
|
type
|
|
libvlc_track_type_t = (
|
|
libvlc_track_unknown = -1,
|
|
libvlc_track_audio = 0,
|
|
libvlc_track_video = 1,
|
|
libvlc_track_text = 2
|
|
);
|
|
{$ELSE}
|
|
type
|
|
libvlc_track_type_t = -1..2;
|
|
const
|
|
libvlc_track_unknown = -1;
|
|
libvlc_track_audio = 0;
|
|
libvlc_track_video = 1;
|
|
libvlc_track_text = 2;
|
|
{$ENDIF}
|
|
|
|
type
|
|
libvlc_media_stats_t_ptr = ^libvlc_media_stats_t;
|
|
libvlc_media_stats_t = packed record
|
|
// Input
|
|
i_read_bytes : Integer;
|
|
f_input_bitrate : Single; // Float
|
|
// Demux
|
|
i_demux_read_bytes : Integer;
|
|
f_demux_bitrate : Single;
|
|
i_demux_corrupted : Integer;
|
|
i_demux_discontinuity : Integer;
|
|
// Decoders
|
|
i_decoded_video : Integer;
|
|
i_decoded_audio : Integer;
|
|
// Video Output
|
|
i_displayed_pictures : Integer;
|
|
i_lost_pictures : Integer;
|
|
// Audio output
|
|
i_played_abuffers : Integer;
|
|
i_lost_abuffers : Integer;
|
|
// Stream output
|
|
i_sent_packets : Integer;
|
|
i_sent_bytes : Integer;
|
|
f_send_bitrate : Single;
|
|
end;
|
|
|
|
type
|
|
libvlc_media_track_info_t_audio = packed record
|
|
i_channels : LongWord;
|
|
i_rate : LongWord
|
|
end;
|
|
|
|
type
|
|
libvlc_media_track_info_t_video = packed record
|
|
i_height : LongWord;
|
|
i_width : LongWord;
|
|
end;
|
|
|
|
type
|
|
libvlc_media_track_info_t_ptr = ^libvlc_media_track_info_t;
|
|
libvlc_media_track_info_t = packed record
|
|
// Codec fourcc
|
|
i_codec : LongWord;
|
|
i_id : Integer;
|
|
i_type : libvlc_track_type_t;
|
|
|
|
// Codec specific
|
|
i_profile : Integer;
|
|
i_level : Integer;
|
|
|
|
case Byte of
|
|
0: (audio : libvlc_media_track_info_t_audio);
|
|
1: (video : libvlc_media_track_info_t_video);
|
|
end;
|
|
|
|
type
|
|
libvlc_audio_track_t_ptr = ^libvlc_audio_track_t;
|
|
libvlc_audio_track_t = packed record
|
|
i_channels : LongWord;
|
|
i_rate : LongWord;
|
|
end;
|
|
|
|
type
|
|
libvlc_video_track_t_ptr = ^libvlc_video_track_t;
|
|
libvlc_video_track_t = packed record
|
|
i_height : LongWord;
|
|
i_width : LongWord;
|
|
i_sar_num : LongWord;
|
|
i_sar_den : LongWord;
|
|
i_frame_rate_num : LongWord;
|
|
i_frame_rate_den : LongWord;
|
|
end;
|
|
|
|
type
|
|
libvlc_subtitle_track_t_ptr = ^libvlc_subtitle_track_t;
|
|
libvlc_subtitle_track_t = packed record
|
|
psz_encoding : PAnsiChar;
|
|
end;
|
|
|
|
type
|
|
libvlc_media_track_t_union = packed record
|
|
case Byte of
|
|
0: (audio : libvlc_audio_track_t);
|
|
1: (video : libvlc_video_track_t);
|
|
2: (subtitle : libvlc_subtitle_track_t);
|
|
end;
|
|
|
|
type
|
|
libvlc_media_track_t_ptr = ^libvlc_media_track_t;
|
|
libvlc_media_track_t = packed record
|
|
|
|
// Codec fourcc
|
|
i_codec : LongWord;
|
|
i_original_fourcc : LongWord;
|
|
i_id : Integer;
|
|
i_type : libvlc_track_type_t;
|
|
|
|
// Codec specific
|
|
i_profile : Integer;
|
|
i_level : Integer;
|
|
|
|
// union
|
|
u : libvlc_media_track_t_union;
|
|
|
|
i_bitrate : LongWord;
|
|
psz_language : PAnsiChar;
|
|
psz_description : PAnsiChar
|
|
end;
|
|
|
|
(**
|
|
* Description for video, audio tracks and subtitles. It contains
|
|
* id, name (description string) and pointer to next record.
|
|
*)
|
|
type
|
|
libvlc_track_description_t_ptr = ^libvlc_track_description_t;
|
|
libvlc_track_description_t = packed record
|
|
i_id : Integer;
|
|
psz_name : PAnsiChar;
|
|
p_next : libvlc_track_description_t_ptr;
|
|
end;
|
|
|
|
(**
|
|
* Description for audio output. It contains
|
|
* name, description and pointer to next record.
|
|
*)
|
|
type
|
|
libvlc_audio_output_t_ptr = ^libvlc_audio_output_t;
|
|
libvlc_audio_output_t = packed record
|
|
psz_name : PAnsiChar;
|
|
psz_description : PAnsiChar;
|
|
p_next : libvlc_audio_output_t_ptr;
|
|
end;
|
|
|
|
(**
|
|
* Description for audio output device.
|
|
*)
|
|
type
|
|
libvlc_audio_output_device_t_ptr = ^libvlc_audio_output_device_t;
|
|
libvlc_audio_output_device_t = packed record
|
|
p_next : libvlc_audio_output_device_t_ptr; // Next entry in list
|
|
psz_device : PAnsiChar; // Device identifier string
|
|
psz_description : PAnsiChar; // User-friendly device description
|
|
// More fields may be added here in later versions
|
|
end;
|
|
|
|
(**
|
|
* Rectangle type for video geometry
|
|
*)
|
|
type
|
|
libvlc_rectangle_t_ptr = ^libvlc_rectangle_t;
|
|
libvlc_rectangle_t = packed record
|
|
top : Integer;
|
|
left : Integer;
|
|
bottom : Integer;
|
|
right : Integer;
|
|
end;
|
|
|
|
type
|
|
libvlc_opacity_t = 0..255;
|
|
|
|
const
|
|
libvlc_opacity_None = 0;
|
|
libvlc_opacity_Medium = 128;
|
|
libvlc_opacity_Full = 255;
|
|
|
|
(**
|
|
* Marq options definition
|
|
*)
|
|
type
|
|
libvlc_video_marquee_option_t = (
|
|
libvlc_marquee_Enable, // 0,
|
|
libvlc_marquee_Text, // 1,
|
|
libvlc_marquee_Color, // 2,
|
|
libvlc_marquee_Opacity, // 3,
|
|
libvlc_marquee_Position, // 4,
|
|
libvlc_marquee_Refresh, // 5,
|
|
libvlc_marquee_Size, // 6,
|
|
libvlc_marquee_Timeout, // 7,
|
|
libvlc_marquee_X, // 8,
|
|
libvlc_marquee_Y // 9
|
|
);
|
|
|
|
const
|
|
libvlc_video_marquee_color_Default = $f0000000;
|
|
libvlc_video_marquee_color_Black = $00000000;
|
|
libvlc_video_marquee_color_Gray = $00808080;
|
|
libvlc_video_marquee_color_Silver = $00C0C0C0;
|
|
libvlc_video_marquee_color_White = $00FFFFFF;
|
|
libvlc_video_marquee_color_Maroon = $00800000;
|
|
libvlc_video_marquee_color_Red = $00FF0000;
|
|
libvlc_video_marquee_color_Fuchsia = $00FF00FF;
|
|
libvlc_video_marquee_color_Yellow = $00FFFF00;
|
|
libvlc_video_marquee_color_Olive = $00808000;
|
|
libvlc_video_marquee_color_Green = $00008000;
|
|
libvlc_video_marquee_color_Teal = $00008080;
|
|
libvlc_video_marquee_color_Lime = $0000FF00;
|
|
libvlc_video_marquee_color_Purple = $00800080;
|
|
libvlc_video_marquee_color_Navy = $00000080;
|
|
libvlc_video_marquee_color_Blue = $000000FF;
|
|
libvlc_video_marquee_color_Aqua = $0000FFFF;
|
|
type
|
|
libvlc_video_marquee_color_t = libvlc_video_marquee_color_Black..libvlc_video_marquee_color_White;
|
|
|
|
const
|
|
libvlc_video_marquee_default_font_size = 12;
|
|
|
|
type
|
|
libvlc_video_logo_option_t = (
|
|
libvlc_logo_Enable, // 0,
|
|
libvlc_logo_File, // 1,
|
|
libvlc_logo_X, // 2,
|
|
libvlc_logo_Y, // 3,
|
|
libvlc_logo_Delay, // 4,
|
|
libvlc_logo_Repeat, // 5,
|
|
libvlc_logo_Opacity, // 6,
|
|
libvlc_logo_Position // 7
|
|
);
|
|
|
|
(**
|
|
* Audio device types
|
|
*)
|
|
|
|
{$IFDEF HAS_ENUM_ORDINALITY}
|
|
type
|
|
libvlc_audio_output_device_types_t = (
|
|
libvlc_AudioOutputDevice_Error = -1,
|
|
libvlc_AudioOutputDevice_Mono = 1,
|
|
libvlc_AudioOutputDevice_Stereo = 2,
|
|
libvlc_AudioOutputDevice_2F2R = 4,
|
|
libvlc_AudioOutputDevice_3F2R = 5,
|
|
libvlc_AudioOutputDevice_5_1 = 6,
|
|
libvlc_AudioOutputDevice_6_1 = 7,
|
|
libvlc_AudioOutputDevice_7_1 = 8,
|
|
libvlc_AudioOutputDevice_SPDIF = 10);
|
|
{$ELSE}
|
|
type
|
|
libvlc_audio_output_device_types_t = -1..10;
|
|
const
|
|
libvlc_AudioOutputDevice_Error = -1;
|
|
libvlc_AudioOutputDevice_Mono = 1;
|
|
libvlc_AudioOutputDevice_Stereo = 2;
|
|
libvlc_AudioOutputDevice_2F2R = 4;
|
|
libvlc_AudioOutputDevice_3F2R = 5;
|
|
libvlc_AudioOutputDevice_5_1 = 6;
|
|
libvlc_AudioOutputDevice_6_1 = 7;
|
|
libvlc_AudioOutputDevice_7_1 = 8;
|
|
libvlc_AudioOutputDevice_SPDIF = 10;
|
|
{$ENDIF}
|
|
|
|
{$IFDEF HAS_ENUM_ORDINALITY}
|
|
type
|
|
libvlc_audio_output_channel_t = (
|
|
libvlc_AudioChannel_Error = -1,
|
|
libvlc_AudioChannel_NotAvail = 0,
|
|
libvlc_AudioChannel_Stereo = 1,
|
|
libvlc_AudioChannel_RStereo = 2,
|
|
libvlc_AudioChannel_Left = 3,
|
|
libvlc_AudioChannel_Right = 4,
|
|
libvlc_AudioChannel_Dolbys = 5
|
|
);
|
|
{$ELSE}
|
|
type
|
|
libvlc_audio_output_channel_t = -1..5;
|
|
const
|
|
libvlc_AudioChannel_Error = -1;
|
|
libvlc_AudioChannel_Stereo = 1;
|
|
libvlc_AudioChannel_RStereo = 2;
|
|
libvlc_AudioChannel_Left = 3;
|
|
libvlc_AudioChannel_Right = 4;
|
|
libvlc_AudioChannel_Dolbys = 5;
|
|
{$ENDIF}
|
|
|
|
type
|
|
libvlc_playback_mode_t = (
|
|
libvlc_playback_mode_default,
|
|
libvlc_playback_mode_loop,
|
|
libvlc_playback_mode_repeat
|
|
);
|
|
|
|
(**
|
|
* Navigation mode
|
|
*)
|
|
|
|
type
|
|
libvlc_navigate_mode_t = (
|
|
libvlc_navigate_activate,
|
|
libvlc_navigate_up,
|
|
libvlc_navigate_down,
|
|
libvlc_navigate_left,
|
|
libvlc_navigate_right
|
|
);
|
|
|
|
(**
|
|
* Enumeration of values used to set position (e.g. of video title).
|
|
*)
|
|
{$IFDEF HAS_ENUM_ORDINALITY}
|
|
type
|
|
libvlc_position_t = (
|
|
libvlc_position_disable = -1,
|
|
libvlc_position_center = 0,
|
|
libvlc_position_left = 1,
|
|
libvlc_position_right = 2,
|
|
libvlc_position_top = 4,
|
|
libvlc_position_top_left = 5,
|
|
libvlc_position_top_right = 6,
|
|
libvlc_position_bottom = 8,
|
|
libvlc_position_bottom_left = 9,
|
|
libvlc_position_bottom_right = 10
|
|
);
|
|
{$ELSE}
|
|
const
|
|
libvlc_position_disable = -1;
|
|
libvlc_position_center = 0;
|
|
libvlc_position_left = 1;
|
|
libvlc_position_right = 2;
|
|
libvlc_position_top = 4;
|
|
libvlc_position_top_left = 5;
|
|
libvlc_position_top_right = 6;
|
|
libvlc_position_bottom = 8;
|
|
libvlc_position_bottom_left = 9;
|
|
libvlc_position_bottom_right = 10;
|
|
type
|
|
libvlc_position_t = libvlc_position_disable..libvlc_position_bottom_right;
|
|
{$ENDIF}
|
|
|
|
(*
|
|
******************************************************************************
|
|
* libvlc_event.h
|
|
*******************************************************************************
|
|
*)
|
|
|
|
{$IFDEF HAS_ENUM_ORDINALITY}
|
|
type
|
|
libvlc_event_type_t = (
|
|
(* Append new event types at the end of a category.
|
|
* Do not remove, insert or re-order any entry.
|
|
* Keep this in sync with src/control/event.c:libvlc_event_type_name(). *)
|
|
libvlc_MediaMetaChanged = 0,
|
|
libvlc_MediaSubItemAdded,
|
|
libvlc_MediaDurationChanged,
|
|
libvlc_MediaParsedChanged,
|
|
libvlc_MediaFreed,
|
|
libvlc_MediaStateChanged,
|
|
libvlc_MediaSubItemTreeAdded,
|
|
|
|
libvlc_MediaPlayerMediaChanged = $100,
|
|
libvlc_MediaPlayerNothingSpecial,
|
|
libvlc_MediaPlayerOpening,
|
|
libvlc_MediaPlayerBuffering,
|
|
libvlc_MediaPlayerPlaying,
|
|
libvlc_MediaPlayerPaused,
|
|
libvlc_MediaPlayerStopped,
|
|
libvlc_MediaPlayerForward,
|
|
libvlc_MediaPlayerBackward,
|
|
libvlc_MediaPlayerEndReached,
|
|
libvlc_MediaPlayerEncounteredError,
|
|
libvlc_MediaPlayerTimeChanged,
|
|
libvlc_MediaPlayerPositionChanged,
|
|
libvlc_MediaPlayerSeekableChanged,
|
|
libvlc_MediaPlayerPausableChanged,
|
|
libvlc_MediaPlayerTitleChanged,
|
|
libvlc_MediaPlayerSnapshotTaken,
|
|
libvlc_MediaPlayerLengthChanged,
|
|
libvlc_MediaPlayerVout,
|
|
|
|
libvlc_MediaListItemAdded = $200,
|
|
libvlc_MediaListWillAddItem,
|
|
libvlc_MediaListItemDeleted,
|
|
libvlc_MediaListWillDeleteItem,
|
|
|
|
libvlc_MediaListViewItemAdded = $300,
|
|
libvlc_MediaListViewWillAddItem,
|
|
libvlc_MediaListViewItemDeleted,
|
|
libvlc_MediaListViewWillDeleteItem,
|
|
|
|
libvlc_MediaListPlayerPlayed = $400,
|
|
libvlc_MediaListPlayerNextItemSet,
|
|
libvlc_MediaListPlayerStopped,
|
|
|
|
libvlc_MediaDiscovererStarted = $500,
|
|
libvlc_MediaDiscovererEnded,
|
|
|
|
libvlc_VlmMediaAdded = $600,
|
|
libvlc_VlmMediaRemoved,
|
|
libvlc_VlmMediaChanged,
|
|
libvlc_VlmMediaInstanceStarted,
|
|
libvlc_VlmMediaInstanceStopped,
|
|
libvlc_VlmMediaInstanceStatusInit,
|
|
libvlc_VlmMediaInstanceStatusOpening,
|
|
libvlc_VlmMediaInstanceStatusPlaying,
|
|
libvlc_VlmMediaInstanceStatusPause,
|
|
libvlc_VlmMediaInstanceStatusEnd,
|
|
libvlc_VlmMediaInstanceStatusError
|
|
);
|
|
{$ELSE}
|
|
type
|
|
libvlc_event_type_t = type integer;
|
|
const
|
|
libvlc_MediaMetaChanged = 0;
|
|
libvlc_MediaSubItemAdded = 1;
|
|
libvlc_MediaDurationChanged = 2;
|
|
libvlc_MediaParsedChanged = 3;
|
|
libvlc_MediaFreed = 4;
|
|
libvlc_MediaStateChanged = 5;
|
|
libvlc_MediaSubItemTreeAdded = 6;
|
|
|
|
libvlc_MediaPlayerMediaChanged = $100;
|
|
libvlc_MediaPlayerNothingSpecial = $101;
|
|
libvlc_MediaPlayerOpening = $102;
|
|
libvlc_MediaPlayerBuffering = $103;
|
|
libvlc_MediaPlayerPlaying = $104;
|
|
libvlc_MediaPlayerPaused = $105;
|
|
libvlc_MediaPlayerStopped = $106;
|
|
libvlc_MediaPlayerForward = $107;
|
|
libvlc_MediaPlayerBackward = $108;
|
|
libvlc_MediaPlayerEndReached = $109;
|
|
libvlc_MediaPlayerEncounteredError = $10A;
|
|
libvlc_MediaPlayerTimeChanged = $10B;
|
|
libvlc_MediaPlayerPositionChanged = $10C;
|
|
libvlc_MediaPlayerSeekableChanged = $10D;
|
|
libvlc_MediaPlayerPausableChanged = $10E;
|
|
libvlc_MediaPlayerTitleChanged = $10F;
|
|
libvlc_MediaPlayerSnapshotTaken = $110;
|
|
libvlc_MediaPlayerLengthChanged = $111;
|
|
libvlc_MediaPlayerVout = $112;
|
|
|
|
libvlc_MediaListItemAdded = $200;
|
|
libvlc_MediaListWillAddItem = $201;
|
|
libvlc_MediaListItemDeleted = $202;
|
|
libvlc_MediaListWillDeleteItem = $203;
|
|
|
|
libvlc_MediaListViewItemAdded = $300;
|
|
libvlc_MediaListViewWillAddItem = $301;
|
|
libvlc_MediaListViewItemDeleted = $302;
|
|
libvlc_MediaListViewWillDeleteItem = $303;
|
|
|
|
libvlc_MediaListPlayerPlayed = $400;
|
|
libvlc_MediaListPlayerNextItemSet = $401;
|
|
libvlc_MediaListPlayerStopped = $402;
|
|
|
|
libvlc_MediaDiscovererStarted = $500;
|
|
libvlc_MediaDiscovererEnded = $501;
|
|
|
|
libvlc_VlmMediaAdded = $600;
|
|
libvlc_VlmMediaRemoved = $601;
|
|
libvlc_VlmMediaChanged = $602;
|
|
libvlc_VlmMediaInstanceStarted = $603;
|
|
libvlc_VlmMediaInstanceStopped = $604;
|
|
libvlc_VlmMediaInstanceStatusInit = $605;
|
|
libvlc_VlmMediaInstanceStatusOpening = $606;
|
|
libvlc_VlmMediaInstanceStatusPlaying = $607;
|
|
libvlc_VlmMediaInstanceStatusPause = $608;
|
|
libvlc_VlmMediaInstanceStatusEnd = $609;
|
|
libvlc_VlmMediaInstanceStatusError = $60A;
|
|
{$ENDIF}
|
|
|
|
(*
|
|
* Types below declared only for preserve structure of libvlc_event_t record
|
|
*)
|
|
|
|
type
|
|
event_media_meta_changed_t = packed record
|
|
meta_type : libvlc_meta_t;
|
|
end;
|
|
|
|
type
|
|
event_media_subitem_added_t = packed record
|
|
new_child : libvlc_media_t_ptr;
|
|
end;
|
|
|
|
type
|
|
event_media_duration_changed_t = packed record
|
|
new_duration : Int64;
|
|
end;
|
|
|
|
type
|
|
media_parsed_changed_t = packed record
|
|
new_status : Integer;
|
|
end;
|
|
|
|
type
|
|
media_freed_t = packed record
|
|
md : libvlc_media_t_ptr;
|
|
end;
|
|
|
|
type
|
|
media_state_changed_t = packed record
|
|
new_state : libvlc_state_t;
|
|
end;
|
|
|
|
type
|
|
media_subitemtree_added_t = packed record
|
|
item : libvlc_media_t_ptr;
|
|
end;
|
|
|
|
type
|
|
media_player_buffering_t = packed record
|
|
new_cache : Single; // float
|
|
end;
|
|
|
|
type
|
|
media_player_media_changed_t = packed record
|
|
new_media : libvlc_media_t_ptr;
|
|
end;
|
|
|
|
type
|
|
media_player_time_changed_t = packed record
|
|
new_time : libvlc_time_t;
|
|
end;
|
|
|
|
type
|
|
media_player_position_changed_t = packed record
|
|
new_position : Single; // float
|
|
end;
|
|
|
|
type
|
|
media_player_seekable_changed_t = packed record
|
|
new_seekable : Integer;
|
|
end;
|
|
|
|
type
|
|
media_player_pausable_changed_t = packed record
|
|
new_pausable : Integer;
|
|
end;
|
|
|
|
type
|
|
media_player_vout_t = packed record
|
|
new_count : Integer;
|
|
end;
|
|
|
|
type
|
|
media_player_snapshot_taken_t = packed record
|
|
psz_filename : PAnsiChar;
|
|
end;
|
|
|
|
type
|
|
media_player_length_changed_t = packed record
|
|
new_length : libvlc_time_t;
|
|
end;
|
|
|
|
type
|
|
media_player_title_changed_t = packed record
|
|
new_title : Integer;
|
|
end;
|
|
|
|
type
|
|
media_list_item_added_t = packed record
|
|
item : libvlc_media_t_ptr;
|
|
index : Integer;
|
|
end;
|
|
|
|
type
|
|
media_list_will_add_item_t = packed record
|
|
item : libvlc_media_t_ptr;
|
|
index : Integer;
|
|
end;
|
|
|
|
type
|
|
media_list_item_deleted_t = packed record
|
|
item : libvlc_media_t_ptr;
|
|
index : Integer;
|
|
end;
|
|
|
|
type
|
|
media_list_will_delete_item_t = packed record
|
|
item : libvlc_media_t_ptr;
|
|
index : Integer;
|
|
end;
|
|
|
|
type
|
|
media_list_player_next_item_set_t = packed record
|
|
item : libvlc_media_t_ptr;
|
|
end;
|
|
|
|
type
|
|
vlm_media_event_t = packed record
|
|
psz_media_name : PAnsiChar;
|
|
psz_instance_name : PAnsiChar;
|
|
end;
|
|
|
|
{$IFDEF CPUX64}{$A8}{$Z4}{$ENDIF}
|
|
|
|
type
|
|
libvlc_event_t_ptr = ^libvlc_event_t;
|
|
libvlc_event_t = record
|
|
event_type : libvlc_event_type_t;
|
|
p_obj : Pointer; (* Object emitting the event *)
|
|
|
|
case libvlc_event_type_t of
|
|
|
|
// Extra MediaPlayer
|
|
libvlc_MediaPlayerMediaChanged : (media_player_media_changed : media_player_media_changed_t);
|
|
|
|
// media list player
|
|
libvlc_MediaListPlayerNextItemSet : (media_list_player_next_item_set : media_list_player_next_item_set_t);
|
|
|
|
// snapshot taken
|
|
libvlc_MediaPlayerSnapshotTaken : (media_player_snapshot_taken : media_player_snapshot_taken_t);
|
|
|
|
// Length changed
|
|
libvlc_MediaPlayerLengthChanged : (media_player_length_changed : media_player_length_changed_t);
|
|
|
|
// media descriptor
|
|
libvlc_MediaMetaChanged : (media_meta_changed : event_media_meta_changed_t);
|
|
libvlc_MediaSubItemAdded : (media_subitem_added : event_media_subitem_added_t);
|
|
libvlc_MediaDurationChanged : (media_duration_changed : event_media_duration_changed_t);
|
|
libvlc_MediaParsedChanged : (media_parsed_changed : media_parsed_changed_t);
|
|
libvlc_MediaFreed : (media_freed : media_freed_t);
|
|
libvlc_MediaStateChanged : (media_state_changed : media_state_changed_t);
|
|
libvlc_MediaSubItemTreeAdded : (media_subitemtree_added : media_subitemtree_added_t);
|
|
|
|
// media instance
|
|
libvlc_MediaPlayerBuffering : (media_player_buffering : media_player_buffering_t);
|
|
libvlc_MediaPlayerPositionChanged : (media_player_position_changed : media_player_position_changed_t);
|
|
libvlc_MediaPlayerTimeChanged : (media_player_time_changed : media_player_time_changed_t);
|
|
libvlc_MediaPlayerTitleChanged : (media_player_title_changed : media_player_title_changed_t);
|
|
libvlc_MediaPlayerSeekableChanged : (media_player_seekable_changed : media_player_seekable_changed_t);
|
|
libvlc_MediaPlayerPausableChanged : (media_player_pausable_changed : media_player_pausable_changed_t);
|
|
libvlc_MediaPlayerVout : (media_player_vout : media_player_vout_t);
|
|
|
|
// media list
|
|
libvlc_MediaListItemAdded : (media_list_item_added : media_list_item_added_t);
|
|
libvlc_MediaListWillAddItem : (media_list_will_add_item : media_list_will_add_item_t);
|
|
libvlc_MediaListItemDeleted : (media_list_item_deleted : media_list_item_deleted_t);
|
|
libvlc_MediaListWillDeleteItem : (media_list_will_delete_item : media_list_will_delete_item_t);
|
|
|
|
// VLM media
|
|
libvlc_VlmMediaAdded,
|
|
libvlc_VlmMediaRemoved,
|
|
libvlc_VlmMediaChanged,
|
|
libvlc_VlmMediaInstanceStarted,
|
|
libvlc_VlmMediaInstanceStopped,
|
|
libvlc_VlmMediaInstanceStatusInit,
|
|
libvlc_VlmMediaInstanceStatusOpening,
|
|
libvlc_VlmMediaInstanceStatusPlaying,
|
|
libvlc_VlmMediaInstanceStatusPause,
|
|
libvlc_VlmMediaInstanceStatusEnd,
|
|
libvlc_VlmMediaInstanceStatusError : (vlm_media_event : vlm_media_event_t);
|
|
end;
|
|
|
|
(**
|
|
* Callback function notification
|
|
* param p_event the event triggering the callback
|
|
*)
|
|
|
|
type
|
|
libvlc_event_callback_t = procedure(
|
|
p_event : libvlc_event_t_ptr;
|
|
data : Pointer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Option flags for libvlc_media_add_option_flag
|
|
*)
|
|
|
|
{$IFDEF HAS_ENUM_ORDINALITY}
|
|
type
|
|
input_item_option_e = (
|
|
// Allow VLC to trust the given option.
|
|
// By default options are untrusted
|
|
VLC_INPUT_OPTION_TRUSTED = $0002,
|
|
|
|
// Change the value associated to an option if already present,
|
|
// otherwise add the option
|
|
VLC_INPUT_OPTION_UNIQUE = $0100
|
|
);
|
|
{$ELSE}
|
|
type
|
|
input_item_option_e = $0002..$0100;
|
|
const
|
|
VLC_INPUT_OPTION_TRUSTED = $0002;
|
|
VLC_INPUT_OPTION_UNIQUE = $0100;
|
|
{$ENDIF}
|
|
|
|
(*
|
|
*******************************************************************************
|
|
* libvlc.h
|
|
*******************************************************************************
|
|
*)
|
|
|
|
(**
|
|
* A human-readable error message for the last LibVLC error in the calling
|
|
* thread. The resulting string is valid until another error occurs (at least
|
|
* until the next LibVLC call).
|
|
*
|
|
* @warning
|
|
* This will be NULL if there was no error.
|
|
*)
|
|
|
|
var
|
|
libvlc_errmsg : function() : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Clears the LibVLC error status for the current thread. This is optional.
|
|
* By default, the error status is automatically overriden when a new error
|
|
* occurs, and destroyed when the thread exits.
|
|
*)
|
|
|
|
var
|
|
libvlc_clearerr : procedure(); cdecl;
|
|
|
|
(**
|
|
* Sets the LibVLC error status and message for the current thread.
|
|
* Any previous error is overridden.
|
|
* param fmt the format string
|
|
* param ap the arguments
|
|
* @return a nul terminated string in any case
|
|
*)
|
|
|
|
{$IFDEF FPC}
|
|
var
|
|
libvlc_vprinterr : function(
|
|
fmt : PAnsiChar;
|
|
ap : Pointer
|
|
) : PAnsiChar; cdecl;
|
|
{$ELSE}
|
|
var
|
|
libvlc_vprinterr : function(
|
|
fmt : PAnsiChar;
|
|
ap : array of const
|
|
) : PAnsiChar; cdecl;
|
|
{$ENDIF}
|
|
|
|
(**
|
|
* Sets the LibVLC error status and message for the current thread.
|
|
* Any previous error is overridden.
|
|
* param fmt the format string
|
|
* param args the arguments
|
|
* @return a nul terminated string in any case
|
|
*)
|
|
|
|
{$IFDEF FPC}
|
|
var
|
|
libvlc_printerr : function(
|
|
fmt : PAnsiChar;
|
|
arg : Pointer
|
|
) : PAnsiChar; cdecl;
|
|
{$ELSE}
|
|
var
|
|
libvlc_printerr : function(
|
|
fmt : PAnsiChar;
|
|
arg : array of const
|
|
) : PAnsiChar; cdecl;
|
|
{$ENDIF}
|
|
|
|
(**
|
|
* Create and initialize a libvlc instance.
|
|
* This functions accept a list of "command line" arguments similar to the
|
|
* main(). These arguments affect the LibVLC instance default configuration.
|
|
*
|
|
* version
|
|
* Arguments are meant to be passed from the command line to LibVLC, just like
|
|
* VLC media player does. The list of valid arguments depends on the LibVLC
|
|
* version, the operating system and platform, and set of available LibVLC
|
|
* plugins. Invalid or unsupported arguments will cause the function to fail
|
|
* (i.e. return NULL). Also, some arguments may alter the behaviour or
|
|
* otherwise interfere with other LibVLC functions.
|
|
*
|
|
* warning
|
|
* There is absolutely no warranty or promise of forward, backward and
|
|
* cross-platform compatibility with regards to libvlc_new() arguments.
|
|
* We recommend that you do not use them, other than when debugging.
|
|
*
|
|
* param argc the number of arguments (should be 0)
|
|
* param argv list of arguments (should be NULL)
|
|
* return the libvlc instance or NULL in case of error
|
|
*)
|
|
var
|
|
libvlc_new : function(
|
|
argc : Integer;
|
|
args : PPAnsiChar
|
|
) : libvlc_instance_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Decrement the reference count of a libvlc instance, and destroy it
|
|
* if it reaches zero.
|
|
*
|
|
* param p_libvlc_instance the instance to destroy
|
|
*)
|
|
|
|
var
|
|
libvlc_release : procedure(
|
|
p_instance : libvlc_instance_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Increments the reference count of a libvlc instance.
|
|
* The initial reference count is 1 after libvlc_new() returns.
|
|
*
|
|
* param p_instance the instance to reference
|
|
*)
|
|
|
|
var
|
|
libvlc_retain : procedure(
|
|
p_instance : libvlc_instance_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Try to start a user interface for the libvlc instance.
|
|
*
|
|
* param p_instance the instance
|
|
* param name interface name, or NULL for default
|
|
* @return 0 on success, -1 on error.
|
|
*)
|
|
|
|
var
|
|
libvlc_add_intf : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
name : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Registers a callback for the LibVLC exit event. This is mostly useful if
|
|
* the VLC playlist and/or at least one interface are started with
|
|
* libvlc_playlist_play() or libvlc_add_intf() respectively.
|
|
* Typically, this function will wake up your application main loop (from
|
|
* another thread).
|
|
*
|
|
* note This function should be called before the playlist or interface are
|
|
* started. Otherwise, there is a small race condition: the exit event could
|
|
* be raised before the handler is registered.
|
|
*
|
|
* param p_instance LibVLC instance
|
|
* param cb callback to invoke when LibVLC wants to exit,
|
|
* or NULL to disable the exit handler (as by default)
|
|
* param opaque data pointer for the callback
|
|
* warning This function and libvlc_wait() cannot be used at the same time.
|
|
*)
|
|
|
|
type
|
|
libvlc_exit_callback_t = procedure(data: Pointer);
|
|
var
|
|
libvlc_set_exit_handler : procedure (
|
|
p_instance : libvlc_instance_t_ptr;
|
|
cb : libvlc_exit_callback_t;
|
|
opaque : Pointer
|
|
); cdecl;
|
|
|
|
|
|
(**
|
|
* Waits until an interface causes the instance to exit.
|
|
* You should start at least one interface first, using libvlc_add_intf().
|
|
*
|
|
* param p_instance the instance
|
|
* warning This function wastes one thread doing basically nothing.
|
|
* libvlc_set_exit_handler() should be used instead.
|
|
*)
|
|
|
|
var
|
|
libvlc_wait : procedure(
|
|
p_instance : libvlc_instance_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Sets the application name. LibVLC passes this as the user agent string
|
|
* when a protocol requires it.
|
|
*
|
|
* param p_instance LibVLC instance
|
|
* param name human-readable application name, e.g. "FooBar player 1.2.3"
|
|
* param http HTTP User Agent, e.g. "FooBar/1.2.3 Python/2.6.0"
|
|
* version LibVLC 1.1.1 or later
|
|
*)
|
|
|
|
var
|
|
libvlc_set_user_agent : procedure(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
name : PAnsiChar;
|
|
http : PAnsiChar
|
|
); cdecl;
|
|
|
|
(**
|
|
* Sets some meta-informations about the application.
|
|
* See also libvlc_set_user_agent().
|
|
*
|
|
* param p_instance LibVLC instance
|
|
* param id Java-style application identifier, e.g. "com.acme.foobar"
|
|
* param version application version numbers, e.g. "1.2.3"
|
|
* param icon application icon name, e.g. "foobar"
|
|
* version LibVLC 2.1.0 or later.
|
|
*)
|
|
var
|
|
libvlc_set_app_id : procedure(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
id : PAnsiChar;
|
|
version : PAnsiChar;
|
|
icon : PAnsiChar); cdecl;
|
|
|
|
(**
|
|
* Retrieve libvlc version.
|
|
*
|
|
* Example: "1.1.0-git The Luggage"
|
|
*
|
|
* @return a string containing the libvlc version
|
|
*)
|
|
|
|
var
|
|
libvlc_get_version : function() : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Retrieve libvlc compiler version.
|
|
*
|
|
* Example: "gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu6)"
|
|
*
|
|
* @return a string containing the libvlc compiler version
|
|
*)
|
|
|
|
var
|
|
libvlc_get_compiler : function() : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Retrieve libvlc changeset.
|
|
*
|
|
* Example: "aa9bce0bc4"
|
|
*
|
|
* @return a string containing the libvlc changeset
|
|
*)
|
|
|
|
var
|
|
libvlc_get_changeset : function() : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Frees an heap allocation returned by a LibVLC function.
|
|
* If you know you're using the same underlying C run-time as the LibVLC
|
|
* implementation, then you can call ANSI C free() directly instead.
|
|
*
|
|
* param ptr the pointer
|
|
*)
|
|
var
|
|
libvlc_free : procedure(
|
|
ptr : Pointer
|
|
); cdecl;
|
|
|
|
(**
|
|
* LibVLC emits asynchronous events.
|
|
*
|
|
* Several LibVLC objects (such @ref libvlc_instance_t as
|
|
* @ref libvlc_media_player_t) generate events asynchronously. Each of them
|
|
* provides @ref libvlc_event_manager_t event manager. You can subscribe to
|
|
* events with libvlc_event_attach() and unsubscribe with
|
|
* libvlc_event_detach().
|
|
*
|
|
* Event manager that belongs to a libvlc object, and from whom events can
|
|
* be received.
|
|
*)
|
|
|
|
(**
|
|
* Register for an event notification.
|
|
*
|
|
* param p_event_manager the event manager to which you want to attach to.
|
|
* Generally it is obtained by vlc_my_object_event_manager() where
|
|
* my_object is the object you want to listen to.
|
|
* param i_event_type the desired event to which we want to listen
|
|
* param f_callback the function to call when i_event_type occurs
|
|
* param user_data user provided data to carry with the event
|
|
* @return 0 on success, ENOMEM on error
|
|
*)
|
|
|
|
var
|
|
libvlc_event_attach : function(
|
|
p_event_manager : libvlc_event_manager_t_ptr;
|
|
i_event_type : libvlc_event_type_t;
|
|
f_callback : libvlc_event_callback_t;
|
|
user_data : Pointer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Unregister an event notification.
|
|
*
|
|
* param p_event_manager the event manager
|
|
* param i_event_type the desired event to which we want to unregister
|
|
* param f_callback the function to call when i_event_type occurs
|
|
* param p_user_data user provided data to carry with the event
|
|
*)
|
|
|
|
var
|
|
libvlc_event_detach : procedure(
|
|
p_event_manager : libvlc_event_manager_t_ptr;
|
|
i_event_type : libvlc_event_type_t;
|
|
f_callback : libvlc_event_callback_t;
|
|
p_user_data : Pointer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get an event's type name.
|
|
*
|
|
* param event_type the desired event
|
|
*)
|
|
|
|
var
|
|
libvlc_event_type_name : function(
|
|
event_type : libvlc_event_type_t
|
|
) : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Logging messages level.
|
|
* note Future LibVLC versions may define new levels.
|
|
*)
|
|
|
|
{$IFDEF HAS_ENUM_ORDINALITY}
|
|
type
|
|
libvlc_log_level_t = (
|
|
LIBVLC_LOG_DEBUG = 0, // Debug message
|
|
LIBVLC_LOG_NOTICE = 2, // Important informational message
|
|
LIBVLC_LOG_WARNING = 3, // Warning (potential error) message
|
|
LIBVLC_LOG_ERROR = 4 // Error message
|
|
);
|
|
{$ELSE}
|
|
type
|
|
libvlc_log_level_t = 0..4;
|
|
const
|
|
LIBVLC_LOG_DEBUG = 0;
|
|
LIBVLC_LOG_NOTICE = 2;
|
|
LIBVLC_LOG_WARNING = 3;
|
|
LIBVLC_LOG_ERROR = 4;
|
|
{$ENDIF}
|
|
|
|
(**
|
|
* libvlc_log_* functions provide access to the LibVLC messages log.
|
|
* This is used for debugging or by advanced users.
|
|
*)
|
|
|
|
(**
|
|
* Gets debugging informations about a log message: the name of the VLC module
|
|
* emitting the message and the message location within the source code.
|
|
*
|
|
* The returned module name and file name will be NULL if unknown.
|
|
* The returned line number will similarly be zero if unknown.
|
|
*
|
|
* param ctx message context (as passed to the @ref libvlc_log_cb callback)
|
|
* param module module name storage (or NULL) [OUT]
|
|
* param file source code file name storage (or NULL) [OUT]
|
|
* param line source code file line number storage (or NULL) [OUT]
|
|
* warning The returned module name and source code file name, if non-NULL,
|
|
* are only valid until the logging callback returns.
|
|
*
|
|
* version LibVLC 2.1.0 or later
|
|
*)
|
|
var
|
|
libvlc_log_get_context : procedure(
|
|
ctx : libvlc_log_t_ptr;
|
|
var module : PAnsiChar;
|
|
var file_name : PANsiChar;
|
|
var line : LongWord); cdecl;
|
|
|
|
(**
|
|
* Gets VLC object informations about a log message: the type name of the VLC
|
|
* object emitting the message, the object header if any and a temporaly-unique
|
|
* object identifier. These informations are mainly meant for MANUAL
|
|
* troubleshooting.
|
|
*
|
|
* The returned type name may be "generic" if unknown, but it cannot be NULL.
|
|
* The returned header will be NULL if unset; in current versions, the header
|
|
* is used to distinguish for VLM inputs.
|
|
* The returned object ID will be zero if the message is not associated with
|
|
* any VLC object.
|
|
*
|
|
* param ctx message context (as passed to the @ref libvlc_log_cb callback)
|
|
* param name object name storage (or NULL) [OUT]
|
|
* param header object header (or NULL) [OUT]
|
|
* param line source code file line number storage (or NULL) [OUT]
|
|
* warning The returned module name and source code file name, if non-NULL,
|
|
* are only valid until the logging callback returns.
|
|
*
|
|
* version LibVLC 2.1.0 or later
|
|
*)
|
|
var
|
|
libvlc_log_get_object : procedure(
|
|
ctx : libvlc_log_t_ptr;
|
|
var name : PAnsiChar;
|
|
var header : PAnsiChar;
|
|
var id : Pointer); cdecl;
|
|
|
|
(**
|
|
* Callback prototype for LibVLC log message handler.
|
|
* param data data pointer as given to libvlc_log_set()
|
|
* param level message level (@ref enum libvlc_log_level)
|
|
* param ctx message context (meta-informations about the message)
|
|
* param fmt printf() format string (as defined by ISO C11)
|
|
* param args variable argument list for the format
|
|
* note Log message handlers MUST be thread-safe.
|
|
* warning The message context pointer, the format string parameters and the
|
|
* variable arguments are only valid until the callback returns.
|
|
*)
|
|
|
|
{$IFDEF FPC}
|
|
type
|
|
libvlc_log_cb = procedure(
|
|
data : Pointer;
|
|
level : Integer;
|
|
ctx : libvlc_log_t_ptr;
|
|
fmt : PAnsiChar;
|
|
args : Pointer); cdecl;
|
|
{$ELSE}
|
|
type
|
|
libvlc_log_cb = procedure(
|
|
data : Pointer;
|
|
level : Integer;
|
|
ctx : libvlc_log_t_ptr;
|
|
fmt : PAnsiChar;
|
|
args : array of const); cdecl;
|
|
{$ENDIF}
|
|
|
|
(**
|
|
* Unsets the logging callback for a LibVLC instance. This is rarely needed:
|
|
* the callback is implicitly unset when the instance is destroyed.
|
|
* This function will wait for any pending callbacks invocation to complete
|
|
* (causing a deadlock if called from within the callback).
|
|
*
|
|
* param p_instance libvlc instance
|
|
* version LibVLC 2.1.0 or later
|
|
*)
|
|
var
|
|
libvlc_log_unset : procedure(
|
|
p_instance: libvlc_instance_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Sets the logging callback for a LibVLC instance.
|
|
* This function is thread-safe: it will wait for any pending callbacks
|
|
* invocation to complete.
|
|
*
|
|
* param cb callback function pointer
|
|
* param data opaque data pointer for the callback function
|
|
*
|
|
* note Some log messages (especially debug) are emitted by LibVLC while
|
|
* is being initialized. These messages cannot be captured with this interface.
|
|
*
|
|
* warning A deadlock may occur if this function is called from the callback.
|
|
*
|
|
* param p_instance libvlc instance
|
|
* version LibVLC 2.1.0 or later
|
|
*)
|
|
var
|
|
libvlc_log_set : procedure(
|
|
p_instance: libvlc_instance_t_ptr;
|
|
cb : libvlc_log_cb;
|
|
data : Pointer); cdecl;
|
|
|
|
(**
|
|
* Sets up logging to a file.
|
|
* param p_instance libvlc instance
|
|
* param stream FILE pointer opened for writing
|
|
* (the FILE pointer must remain valid until libvlc_log_unset())
|
|
* version LibVLC 2.1.0 or later
|
|
*)
|
|
var
|
|
libvlc_log_set_file : procedure (
|
|
p_instance: libvlc_instance_t_ptr;
|
|
stream : THandle
|
|
); cdecl;
|
|
|
|
(**
|
|
* Return the VLC messaging verbosity level.
|
|
*
|
|
* param p_instance libvlc instance
|
|
* @return verbosity level for messages
|
|
*)
|
|
|
|
// DEPRECATED
|
|
|
|
var
|
|
libvlc_get_log_verbosity : function(
|
|
p_instance : libvlc_instance_t_ptr
|
|
) : LongWord; cdecl;
|
|
|
|
(**
|
|
* Set the VLC messaging verbosity level.
|
|
*
|
|
* param p_instance libvlc instance
|
|
* param level log level
|
|
*)
|
|
|
|
var
|
|
libvlc_set_log_verbosity : procedure(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
level : LongWord
|
|
); cdecl;
|
|
|
|
(**
|
|
* Open a VLC message log instance.
|
|
*
|
|
* param p_instance libvlc instance
|
|
* @return log message instance or NULL on error
|
|
*)
|
|
|
|
var
|
|
libvlc_log_open : function(
|
|
p_instance : libvlc_instance_t_ptr
|
|
) : libvlc_log_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Close a VLC message log instance.
|
|
*
|
|
* param p_log libvlc log instance or NULL
|
|
*)
|
|
|
|
var
|
|
libvlc_log_close : procedure(
|
|
p_log : libvlc_log_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Returns the number of messages in a log instance.
|
|
*
|
|
* param p_log libvlc log instance or NULL
|
|
* @return number of log messages, 0 if p_log is NULL
|
|
*)
|
|
|
|
var
|
|
libvlc_log_count : function(
|
|
p_log : libvlc_log_t_ptr
|
|
) : LongWord; cdecl;
|
|
|
|
(**
|
|
* Clear a log instance.
|
|
*
|
|
* All messages in the log are removed. The log should be cleared on a
|
|
* regular basis to avoid clogging.
|
|
*
|
|
* param p_log libvlc log instance or NULL
|
|
*)
|
|
|
|
var
|
|
libvlc_log_clear : procedure(
|
|
p_log : libvlc_log_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Allocate and returns a new iterator to messages in log.
|
|
*
|
|
* param p_log libvlc log instance
|
|
* @return log iterator object or NULL on error
|
|
*)
|
|
|
|
var
|
|
libvlc_log_get_iterator : function(
|
|
p_log: libvlc_log_t_ptr
|
|
) : libvlc_log_iterator_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Release a previoulsy allocated iterator.
|
|
*
|
|
* param p_iter libvlc log iterator or NULL
|
|
*)
|
|
|
|
var
|
|
libvlc_log_iterator_free : procedure(
|
|
p_log : libvlc_log_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Return whether log iterator has more messages.
|
|
*
|
|
* param p_iter libvlc log iterator or NULL
|
|
* @return true if iterator has more message objects, else false
|
|
*)
|
|
|
|
var
|
|
libvlc_log_iterator_has_next : function(
|
|
p_iter: libvlc_log_iterator_t_ptr
|
|
) : LongInt; cdecl;
|
|
|
|
(**
|
|
* Return the next log message.
|
|
*
|
|
* The message contents must not be freed
|
|
*
|
|
* param p_iter libvlc log iterator or NULL
|
|
* param p_buffer log buffer
|
|
* @return log message object or NULL if none left
|
|
*)
|
|
|
|
var
|
|
libvlc_log_iterator_next : function(
|
|
p_iter : libvlc_log_iterator_t_ptr;
|
|
p_buffer : libvlc_log_message_t_ptr
|
|
) : libvlc_log_message_t_ptr; cdecl;
|
|
|
|
|
|
(**
|
|
* Description of a module.
|
|
*)
|
|
type
|
|
libvlc_module_description_t_ptr = ^libvlc_module_description_t;
|
|
libvlc_module_description_t = packed record
|
|
psz_name : PAnsiChar;
|
|
psz_shortname : PAnsiChar;
|
|
psz_longname : PAnsiChar;
|
|
psz_help : PAnsiChar;
|
|
p_next : libvlc_module_description_t_ptr;
|
|
end;
|
|
|
|
(**
|
|
* Release a list of module descriptions.
|
|
*
|
|
* param p_list the list to be released
|
|
*)
|
|
var
|
|
libvlc_module_description_list_release : procedure(
|
|
p_list : libvlc_module_description_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Returns a list of audio filters that are available.
|
|
*
|
|
* param p_instance libvlc instance
|
|
*
|
|
* return a list of module descriptions. It should be freed with libvlc_module_description_list_release().
|
|
* In case of an error, NULL is returned.
|
|
*
|
|
* see libvlc_module_description_t
|
|
* see libvlc_module_description_list_release
|
|
*)
|
|
var
|
|
libvlc_audio_filter_list_get : function(
|
|
p_instance : libvlc_instance_t_ptr
|
|
) : libvlc_module_description_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Returns a list of video filters that are available.
|
|
*
|
|
* param p_instance libvlc instance
|
|
*
|
|
* return a list of module descriptions. It should be freed with libvlc_module_description_list_release().
|
|
* In case of an error, NULL is returned.
|
|
*
|
|
* see libvlc_module_description_t
|
|
* see libvlc_module_description_list_release
|
|
*)
|
|
var
|
|
libvlc_video_filter_list_get : function(
|
|
p_instance : libvlc_instance_t_ptr
|
|
) : libvlc_module_description_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Return the current time as defined by LibVLC. The unit is the microsecond.
|
|
* Time increases monotonically (regardless of time zone changes and RTC
|
|
* adjustements).
|
|
* The origin is arbitrary but consistent across the whole system
|
|
* (e.g. the system uptim, the time since the system was booted).
|
|
* note On systems that support it, the POSIX monotonic clock is used.
|
|
*)
|
|
var
|
|
libvlc_clock : function() : Int64; cdecl;
|
|
|
|
(**
|
|
* Return the delay (in microseconds) until a certain timestamp.
|
|
* param pts timestamp
|
|
* return negative if timestamp is in the past,
|
|
* positive if it is in the future
|
|
*)
|
|
function libvlc_delay(pts : Int64) : Int64;{$IFDEF DELPHI2005_UP}inline;{$ENDIF}
|
|
|
|
(*******************************************************************************
|
|
* libvlc_media.h
|
|
******************************************************************************)
|
|
|
|
(**
|
|
* Create a media with a certain given media resource location,
|
|
* for instance a valid URL.
|
|
*
|
|
* To refer to a local file with this function,
|
|
* the file://... URI syntax MUST be used (see IETF RFC3986).
|
|
* We recommend using libvlc_media_new_path() instead when dealing with
|
|
* local files.
|
|
*
|
|
* see libvlc_media_release
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_mrl the media location
|
|
* @return the newly created media or NULL on error
|
|
*)
|
|
|
|
var
|
|
libvlc_media_new_location : function (
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_mrl : PAnsiChar
|
|
) : libvlc_media_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Create a media for a certain file path.
|
|
*
|
|
* see libvlc_media_release
|
|
*
|
|
* param p_instance the instance
|
|
* param path local filesystem path
|
|
* @return the newly created media or NULL on error
|
|
*)
|
|
|
|
var
|
|
libvlc_media_new_path : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
path : PAnsiChar
|
|
) : libvlc_media_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Create a media for an already open file descriptor.
|
|
* The file descriptor shall be open for reading (or reading and writing).
|
|
*
|
|
* Regular file descriptors, pipe read descriptors and character device
|
|
* descriptors (including TTYs) are supported on all platforms.
|
|
* Block device descriptors are supported where available.
|
|
* Directory descriptors are supported on systems that provide fdopendir().
|
|
* Sockets are supported on all platforms where they are file descriptors,
|
|
* i.e. all except Windows.
|
|
*
|
|
* This library will NOT automatically close the file descriptor
|
|
* under any circumstance. Nevertheless, a file descriptor can usually only be
|
|
* rendered once in a media player. To render it a second time, the file
|
|
* descriptor should probably be rewound to the beginning with lseek().
|
|
*
|
|
* see libvlc_media_release
|
|
*
|
|
* version LibVLC 1.1.5 and later.
|
|
*
|
|
* param p_instance the instance
|
|
* param fd open file descriptor
|
|
* @return the newly created media or NULL on error
|
|
*)
|
|
|
|
var
|
|
libvlc_media_new_fd : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
fd : Integer
|
|
) : libvlc_media_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Create a media as an empty node with a given name.
|
|
*
|
|
* see libvlc_media_release
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the name of the node
|
|
* @return the new empty media or NULL on error
|
|
*)
|
|
|
|
var
|
|
libvlc_media_new_as_node : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar
|
|
) : libvlc_media_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Add an option to the media.
|
|
*
|
|
* This option will be used to determine how the media_player will
|
|
* read the media. This allows to use VLC's advanced
|
|
* reading/streaming options on a per-media basis.
|
|
*
|
|
* note The options are listed in 'vlc --long-help' from the command line,
|
|
* e.g. "-sout-all". Keep in mind that available options and their semantics
|
|
* vary across LibVLC versions and builds.
|
|
* warning Not all options affects libvlc_media_t objects:
|
|
* Specifically, due to architectural issues most audio and video options,
|
|
* such as text renderer options, have no effects on an individual media.
|
|
* These options must be set through libvlc_new() instead.
|
|
*
|
|
* param p_md the media descriptor
|
|
* param psz_options the options (as a string)
|
|
*
|
|
*)
|
|
|
|
var
|
|
libvlc_media_add_option : procedure(
|
|
p_md : libvlc_media_t_ptr;
|
|
ppsz_options : PAnsiChar
|
|
); cdecl;
|
|
|
|
(**
|
|
* Add an option to the media with configurable flags.
|
|
*
|
|
* This option will be used to determine how the media_player will
|
|
* read the media. This allows to use VLC's advanced
|
|
* reading/streaming options on a per-media basis.
|
|
*
|
|
* The options are detailed in vlc --long-help, for instance
|
|
* "--sout-all". Note that all options are not usable on medias:
|
|
* specifically, due to architectural issues, video-related options
|
|
* such as text renderer options cannot be set on a single media. They
|
|
* must be set on the whole libvlc instance instead.
|
|
*
|
|
* param p_md the media descriptor
|
|
* param psz_options the options (as a string)
|
|
* param i_flags the flags for this option
|
|
*)
|
|
|
|
var
|
|
libvlc_media_add_option_flag : procedure(
|
|
p_md : libvlc_media_t_ptr;
|
|
ppsz_options : PAnsiChar;
|
|
i_flags : input_item_option_e
|
|
); cdecl;
|
|
|
|
(**
|
|
* Retain a reference to a media descriptor object (libvlc_media_t). Use
|
|
* libvlc_media_release() to decrement the reference count of a
|
|
* media descriptor object.
|
|
*
|
|
* param p_md the media descriptor
|
|
*)
|
|
|
|
var
|
|
libvlc_media_retain : procedure(
|
|
p_md: libvlc_media_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Decrement the reference count of a media descriptor object. If the
|
|
* reference count is 0, then libvlc_media_release() will release the
|
|
* media descriptor object. It will send out an libvlc_MediaFreed event
|
|
* to all listeners. If the media descriptor object has been released it
|
|
* should not be used again.
|
|
*
|
|
* param p_md the media descriptor
|
|
*)
|
|
|
|
var
|
|
libvlc_media_release : procedure(
|
|
p_md : libvlc_media_t_ptr
|
|
); cdecl;
|
|
|
|
|
|
(**
|
|
* Get the media resource locator (mrl) from a media descriptor object
|
|
*
|
|
* param p_md a media descriptor object
|
|
* @return string with mrl of media descriptor object
|
|
*)
|
|
|
|
var
|
|
libvlc_media_get_mrl : function(
|
|
p_md : libvlc_media_t_ptr
|
|
) : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Duplicate a media descriptor object.
|
|
*
|
|
* param p_md a media descriptor object.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_duplicate : function (
|
|
p_md : libvlc_media_t_ptr
|
|
) : libvlc_media_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Read the meta of the media.
|
|
*
|
|
* If the media has not yet been parsed this will return NULL.
|
|
*
|
|
* This methods automatically calls libvlc_media_parse_async(), so after calling
|
|
* it you may receive a libvlc_MediaMetaChanged event. If you prefer a synchronous
|
|
* version ensure that you call libvlc_media_parse() before get_meta().
|
|
*
|
|
* see libvlc_media_parse
|
|
* see libvlc_media_parse_async
|
|
* see libvlc_MediaMetaChanged
|
|
*
|
|
* param p_md the media descriptor
|
|
* param e_meta the meta to read
|
|
* @return the media's meta
|
|
*)
|
|
|
|
var
|
|
libvlc_media_get_meta : function(
|
|
p_md : libvlc_media_t_ptr;
|
|
e_meta : libvlc_meta_t
|
|
) : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Set the meta of the media (this function will not save the meta, call
|
|
* libvlc_media_save_meta in order to save the meta)
|
|
*
|
|
* param p_md the media descriptor
|
|
* param e_meta the meta to write
|
|
* param psz_value the media's meta
|
|
*)
|
|
|
|
var
|
|
libvlc_media_set_meta: procedure(
|
|
p_md : libvlc_media_t_ptr;
|
|
e_meta : libvlc_meta_t;
|
|
psz_value : PAnsiChar
|
|
); cdecl;
|
|
|
|
(**
|
|
* Save the meta previously set
|
|
*
|
|
* param p_md the media desriptor
|
|
* @return true if the write operation was successfull
|
|
*)
|
|
|
|
var
|
|
libvlc_media_save_meta : function(
|
|
p_md : libvlc_media_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get current state of media descriptor object. Possible media states
|
|
* are defined in libvlc_structures.c ( libvlc_NothingSpecial=0,
|
|
* libvlc_Opening, libvlc_Buffering, libvlc_Playing, libvlc_Paused,
|
|
* libvlc_Stopped, libvlc_Ended,
|
|
* libvlc_Error).
|
|
*
|
|
* see libvlc_state_t
|
|
* param p_meta_desc a media descriptor object
|
|
* @return state of media descriptor object
|
|
*)
|
|
|
|
var
|
|
libvlc_media_get_state : function(
|
|
p_md : libvlc_media_t_ptr
|
|
) : libvlc_state_t; cdecl;
|
|
|
|
|
|
(**
|
|
* get the current statistics about the media
|
|
* param p_md: media descriptor object
|
|
* param p_stats: structure that contain the statistics about the media
|
|
* (this structure must be allocated by the caller)
|
|
* @return true if the statistics are available, false otherwise
|
|
*)
|
|
|
|
var
|
|
libvlc_media_get_stats : function(
|
|
p_md : libvlc_media_t_ptr;
|
|
p_stats : libvlc_media_stats_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get subitems of media descriptor object. This will increment
|
|
* the reference count of supplied media descriptor object. Use
|
|
* libvlc_media_list_release() to decrement the reference counting.
|
|
*
|
|
* param p_md media descriptor object
|
|
* @return list of media descriptor subitems or NULL
|
|
*)
|
|
|
|
var
|
|
libvlc_media_subitems : function(
|
|
p_md : libvlc_media_t_ptr
|
|
) : libvlc_media_list_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Get event manager from media descriptor object.
|
|
* NOTE: this function doesn't increment reference counting.
|
|
*
|
|
* param p_md a media descriptor object
|
|
* @return event manager object
|
|
*)
|
|
|
|
var
|
|
libvlc_media_event_manager : function(
|
|
p_md : libvlc_media_t_ptr
|
|
) : libvlc_event_manager_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Get duration (in ms) of media descriptor object item.
|
|
*
|
|
* param p_md media descriptor object
|
|
* @return duration of media item or -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_media_get_duration : function(
|
|
p_md : libvlc_media_t_ptr
|
|
) : libvlc_time_t; cdecl;
|
|
|
|
(**
|
|
* Parse a media.
|
|
*
|
|
* This fetches (local) meta data and tracks information.
|
|
* The method is synchronous.
|
|
*
|
|
* see libvlc_media_parse_async
|
|
* see libvlc_media_get_meta
|
|
* see libvlc_media_get_tracks_info
|
|
*
|
|
* param media media descriptor object
|
|
*)
|
|
|
|
var
|
|
libvlc_media_parse : procedure(
|
|
p_md : libvlc_media_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Parse a media.
|
|
*
|
|
* This fetches (local) meta data and tracks information.
|
|
* The method is the asynchronous of libvlc_media_parse().
|
|
*
|
|
* To track when this is over you can listen to libvlc_MediaParsedChanged
|
|
* event. However if the media was already parsed you will not receive this
|
|
* event.
|
|
*
|
|
* see libvlc_media_parse
|
|
* see libvlc_MediaParsedChanged
|
|
* see libvlc_media_get_meta
|
|
* see libvlc_media_get_tracks_info
|
|
*
|
|
* param media media descriptor object
|
|
*)
|
|
|
|
var
|
|
libvlc_media_parse_async : procedure(
|
|
p_md : libvlc_media_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get Parsed status for media descriptor object.
|
|
*
|
|
* see libvlc_MediaParsedChanged
|
|
*
|
|
* param p_md media descriptor object
|
|
* @return true if media object has been parsed otherwise it returns false
|
|
*)
|
|
|
|
var
|
|
libvlc_media_is_parsed : function(
|
|
p_md : libvlc_media_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Sets media descriptor's user_data. user_data is specialized data
|
|
* accessed by the host application, VLC.framework uses it as a pointer to
|
|
* an native object that references a libvlc_media_t pointer
|
|
*
|
|
* param p_md media descriptor object
|
|
* param p_new_user_data pointer to user data
|
|
*)
|
|
|
|
var
|
|
libvlc_media_set_user_data : procedure(
|
|
p_md : libvlc_media_t_ptr;
|
|
p_new_user_data : Pointer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get media descriptor's user_data. user_data is specialized data
|
|
* accessed by the host application, VLC.framework uses it as a pointer to
|
|
* an native object that references a libvlc_media_t pointer
|
|
*
|
|
* param p_md media descriptor object
|
|
*)
|
|
|
|
var
|
|
libvlc_media_get_user_data : function(
|
|
p_md : libvlc_media_t_ptr
|
|
) : Pointer; cdecl;
|
|
|
|
(**
|
|
* Get media descriptor's elementary streams description
|
|
*
|
|
* Note, you need to play the media _one_ time with --sout="#description"
|
|
* Not doing this will result in an empty array, and doing it more than once
|
|
* will duplicate the entries in the array each time. Something like this:
|
|
*
|
|
* libvlc_media_player_t *player = libvlc_media_player_new_from_media(media);
|
|
* libvlc_media_add_option_flag(media, "sout=\"#description\"");
|
|
* libvlc_media_player_play(player);
|
|
* // ... wait until playing
|
|
* libvlc_media_player_release(player);
|
|
*
|
|
* This is very likely to change in next release, and be done at the parsing
|
|
* phase.
|
|
*
|
|
* param media media descriptor object
|
|
* param tracks address to store an allocated array of Elementary Streams
|
|
* descriptions (must be freed by the caller)
|
|
*
|
|
* @return the number of Elementary Streams
|
|
*)
|
|
|
|
var
|
|
libvlc_media_get_tracks_info : function(
|
|
p_md : libvlc_media_t_ptr;
|
|
var tracks : libvlc_media_track_info_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get media descriptor's elementary streams description
|
|
*
|
|
* Note, you need to call libvlc_media_parse() or play the media at least once
|
|
* before calling this function.
|
|
* Not doing this will result in an empty array.
|
|
*
|
|
* version LibVLC 2.1.0 and later.
|
|
*
|
|
* param p_md media descriptor object
|
|
* param tracks address to store an allocated array of Elementary Streams
|
|
* descriptions (must be freed with libvlc_media_tracks_release
|
|
by the caller) [OUT]
|
|
*
|
|
* @return the number of Elementary Streams (zero on error)
|
|
*)
|
|
var
|
|
libvlc_media_tracks_get : function(
|
|
p_md : libvlc_media_t_ptr;
|
|
var tracks : Pointer) : LongWord; cdecl;
|
|
|
|
|
|
(**
|
|
* Release media descriptor's elementary streams description array
|
|
*
|
|
* version LibVLC 2.1.0 and later.
|
|
*
|
|
* param p_tracks tracks info array to release
|
|
* param i_count number of elements in the array
|
|
*)
|
|
var
|
|
libvlc_media_tracks_release : procedure(
|
|
var tracks : Pointer;
|
|
i_count : LongWord ); cdecl;
|
|
|
|
(*
|
|
*******************************************************************************
|
|
* libvlc_media_player.h
|
|
*******************************************************************************
|
|
*)
|
|
|
|
(**
|
|
* Create an empty Media Player object
|
|
*
|
|
* param p_instance the libvlc instance in which the Media Player
|
|
* should be created.
|
|
* @return a new media player object, or NULL on error.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_new : function(
|
|
p_instance : libvlc_instance_t_ptr
|
|
) : libvlc_media_player_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Create a Media Player object from a Media
|
|
*
|
|
* param p_md the media. Afterwards the p_md can be safely destroyed.
|
|
* @return a new media player object, or NULL on error.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_new_from_media : function(
|
|
p_md : libvlc_media_t_ptr
|
|
) : libvlc_media_player_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Release a media_player after use
|
|
* Decrement the reference count of a media player object. If the
|
|
* reference count is 0, then libvlc_media_player_release() will
|
|
* release the media player object. If the media player object
|
|
* has been released, then it should not be used again.
|
|
*
|
|
* param p_mi the Media Player to free
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_release : procedure(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Retain a reference to a media player object. Use
|
|
* libvlc_media_player_release() to decrement reference count.
|
|
*
|
|
* param p_mi media player object
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_retain : procedure(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Set the media that will be used by the media_player. If any,
|
|
* previous md will be released.
|
|
*
|
|
* param p_mi the Media Player
|
|
* param p_md the Media. Afterwards the p_md can be safely destroyed.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_set_media : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
p_md : libvlc_media_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get the media used by the media_player.
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return the media associated with p_mi, or NULL if no media is associated
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_media : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : libvlc_media_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Get the Event Manager from which the media player send event.
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return the event manager associated with p_mi
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_event_manager : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : libvlc_event_manager_t_ptr; cdecl;
|
|
|
|
(**
|
|
* is_playing
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return 1 if the media player is playing, 0 otherwise
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_is_playing : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Play
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return 0 if playback started (and was already started), or -1 on error.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_play : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Pause or resume (no effect if there is no media)
|
|
*
|
|
* param mp the Media Player
|
|
* param do_pause play/resume if zero, pause if non-zero
|
|
* version LibVLC 1.1.1 or later
|
|
*)
|
|
var
|
|
libvlc_media_player_set_pause : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
do_pause : Integer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Toggle pause (no effect if there is no media)
|
|
*
|
|
* param p_mi the Media Player
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_pause : procedure(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Stop (no effect if there is no media)
|
|
*
|
|
* param p_mi the Media Player
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_stop : procedure(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Callback prototype to allocate and lock a picture buffer.
|
|
*
|
|
* Whenever a new video frame needs to be decoded, the lock callback is
|
|
* invoked. Depending on the video chroma, one or three pixel planes of
|
|
* adequate dimensions must be returned via the second parameter. Those
|
|
* planes must be aligned on 32-bytes boundaries.
|
|
*
|
|
* param opaque private pointer as passed to libvlc_video_set_callbacks() [IN]
|
|
* param planes start address of the pixel planes (LibVLC allocates the array
|
|
* of void pointers, this callback must initialize the array) [OUT]
|
|
* @return a private pointer for the display and unlock callbacks to identify the picture buffers
|
|
*)
|
|
|
|
type
|
|
libvlc_video_lock_cb = function(opaque : Pointer; var planes : Pointer) : Pointer; cdecl;
|
|
|
|
(**
|
|
* Callback prototype to unlock a picture buffer.
|
|
*
|
|
* When the video frame decoding is complete, the unlock callback is invoked.
|
|
* This callback might not be needed at all. It is only an indication that the
|
|
* application can now read the pixel values if it needs to.
|
|
*
|
|
* warning A picture buffer is unlocked after the picture is decoded,
|
|
* but before the picture is displayed.
|
|
*
|
|
* param opaque private pointer as passed to libvlc_video_set_callbacks() [IN]
|
|
* param picture private pointer returned from the @ref libvlc_video_lock_cb callback [IN]
|
|
* param planes pixel planes as defined by the @ref libvlc_video_lock_cb callback
|
|
* (this parameter is only for convenience) [IN]
|
|
*)
|
|
|
|
type
|
|
libvlc_video_unlock_cb = function(opaque : Pointer; picture : Pointer; planes : Pointer) : Pointer; cdecl;
|
|
|
|
(**
|
|
* Callback prototype to display a picture.
|
|
*
|
|
* When the video frame needs to be shown, as determined by the media playback
|
|
* clock, the display callback is invoked.
|
|
*
|
|
* param opaque private pointer as passed to libvlc_video_set_callbacks() [IN]
|
|
* param picture private pointer returned from the @ref libvlc_video_lock_cb callback [IN]
|
|
*)
|
|
|
|
type
|
|
libvlc_video_display_cb = function(opaque : Pointer; picture : Pointer) : Pointer; cdecl;
|
|
|
|
(**
|
|
* Set callbacks and private data to render decoded video to a custom area
|
|
* in memory.
|
|
* Use libvlc_video_set_format() or libvlc_video_set_format_callbacks()
|
|
* to configure the decoded format.
|
|
*
|
|
* param mp the media player
|
|
* param lock callback to lock video memory (must not be NULL)
|
|
* param unlock callback to unlock video memory (or NULL if not needed)
|
|
* param display callback to display video (or NULL if not needed)
|
|
* param opaque private pointer for the three callbacks (as first parameter)
|
|
* version LibVLC 1.1.1 or later
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_callbacks : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
lock : libvlc_video_lock_cb;
|
|
unlock : libvlc_video_unlock_cb;
|
|
display : libvlc_video_display_cb;
|
|
opaque : Pointer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Set decoded video chroma and dimensions.
|
|
* This only works in combination with libvlc_video_set_callbacks(),
|
|
* and is mutually exclusive with libvlc_video_set_format_callbacks().
|
|
*
|
|
* param mp the media player
|
|
* param chroma a four-characters string identifying the chroma
|
|
* (e.g. "RV32" or "YUYV")
|
|
* param width pixel width
|
|
* param height pixel height
|
|
* param pitch line pitch (in bytes)
|
|
* version LibVLC 1.1.1 or later
|
|
* bug All pixel planes are expected to have the same pitch.
|
|
* To use the YCbCr color space with chrominance subsampling,
|
|
* consider using libvlc_video_set_format_callbacks() instead.
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_format : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
chroma : PAnsiChar;
|
|
width : Longword;
|
|
height : Longword;
|
|
pitch : Longword
|
|
); cdecl;
|
|
|
|
(**
|
|
* Callback prototype to configure picture buffers format.
|
|
* This callback gets the format of the video as output by the video decoder
|
|
* and the chain of video filters (if any). It can opt to change any parameter
|
|
* as it needs. In that case, LibVLC will attempt to convert the video format
|
|
* (rescaling and chroma conversion) but these operations can be CPU intensive.
|
|
*
|
|
* param opaque pointer to the private pointer passed to
|
|
* libvlc_video_set_callbacks() [IN/OUT]
|
|
* param chroma pointer to the 4 bytes video format identifier [IN/OUT]
|
|
* param width pointer to the pixel width [IN/OUT]
|
|
* param height pointer to the pixel height [IN/OUT]
|
|
* param pitches table of scanline pitches in bytes for each pixel plane
|
|
* (the table is allocated by LibVLC) [OUT]
|
|
* param lines table of scanlines count for each plane [OUT]
|
|
* @return the number of picture buffers allocated, 0 indicates failure
|
|
*
|
|
* note
|
|
* For each pixels plane, the scanline pitch must be bigger than or equal to
|
|
* the number of bytes per pixel multiplied by the pixel width.
|
|
* Similarly, the number of scanlines must be bigger than of equal to
|
|
* the pixel height.
|
|
* Furthermore, we recommend that pitches and lines be multiple of 32
|
|
* to not break assumption that might be made by various optimizations
|
|
* in the video decoders, video filters and/or video converters.
|
|
*)
|
|
|
|
type
|
|
libvlc_video_format_cb = procedure (
|
|
var opaque : Pointer;
|
|
chroma : PAnsiChar;
|
|
var width : LongWord;
|
|
var height : LongWord;
|
|
var pitches : LongWord;
|
|
var lines : LongWord); cdecl;
|
|
|
|
(**
|
|
* Callback prototype to configure picture buffers format.
|
|
*
|
|
* param opaque private pointer as passed to libvlc_video_set_callbacks()
|
|
* (and possibly modified by @ref libvlc_video_format_cb) [IN]
|
|
*)
|
|
|
|
type
|
|
libvlc_video_cleanup_cb = procedure(opaque : Pointer); cdecl;
|
|
|
|
(**
|
|
* Set decoded video chroma and dimensions. This only works in combination with
|
|
* libvlc_video_set_callbacks().
|
|
*
|
|
* param mp the media player
|
|
* param setup callback to select the video format (cannot be NULL)
|
|
* param cleanup callback to release any allocated resources (or NULL)
|
|
* version LibVLC 2.0.0 or later
|
|
*)
|
|
var
|
|
libvlc_video_set_format_callbacks : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
setup : libvlc_video_format_cb;
|
|
cleanup : libvlc_video_cleanup_cb); cdecl;
|
|
|
|
(**
|
|
* Set the NSView handler where the media player should render its video output.
|
|
*
|
|
* Use the vout called "macosx".
|
|
*
|
|
* The drawable is an NSObject that follow the VLCOpenGLVideoViewEmbedding
|
|
* protocol:
|
|
*
|
|
*)
|
|
// @protocol VLCOpenGLVideoViewEmbedding <NSObject>
|
|
// - (void)addVoutSubview:(NSView *)view;
|
|
// - (void)removeVoutSubview:(NSView *)view;
|
|
// @end
|
|
|
|
(*
|
|
* Or it can be an NSView object.
|
|
*
|
|
* If you want to use it along with Qt4 see the QMacCocoaViewContainer. Then
|
|
* the following code should work:
|
|
* @begincode
|
|
* {
|
|
* NSView *video = [[NSView alloc] init];
|
|
* QMacCocoaViewContainer *container = new QMacCocoaViewContainer(video, parent);
|
|
* libvlc_media_player_set_nsobject(mp, video);
|
|
* [video release];
|
|
* }
|
|
* @endcode
|
|
*
|
|
* You can find a live example in VLCVideoView in VLCKit.framework.
|
|
*
|
|
* param p_mi the Media Player
|
|
* param drawable the drawable that is either an NSView or an object following
|
|
* the VLCOpenGLVideoViewEmbedding protocol.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_set_nsobject : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
drawable : Pointer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get the NSView handler previously set with libvlc_media_player_set_nsobject().
|
|
*
|
|
* param p_mi the Media Player
|
|
* return the NSView handler or 0 if none where set
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_nsobject : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Pointer; cdecl;
|
|
|
|
(**
|
|
* Set the agl handler where the media player should render its video output.
|
|
*
|
|
* param p_mi the Media Player
|
|
* param drawable the agl handler
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_set_agl : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
drawable : LongWord
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get the agl handler previously set with libvlc_media_player_set_agl().
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return the agl handler or 0 if none where set
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_agl : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : LongWord; cdecl;
|
|
|
|
(**
|
|
* Set an X Window System drawable where the media player should render its
|
|
* video output. If LibVLC was built without X11 output support, then this has
|
|
* no effects.
|
|
*
|
|
* The specified identifier must correspond to an existing Input/Output class
|
|
* X11 window. Pixmaps are NOT supported. The caller shall ensure that
|
|
* the X11 server is the same as the one the VLC instance has been configured
|
|
* with. This function must be called before video playback is started;
|
|
* otherwise it will only take effect after playback stop and restart.
|
|
*
|
|
* param p_mi the Media Player
|
|
* param drawable the ID of the X window
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_set_xwindow : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
drawable : LongWord
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get the X Window System window identifier previously set with
|
|
* libvlc_media_player_set_xwindow(). Note that this will return the identifier
|
|
* even if VLC is not currently using it (for instance if it is playing an
|
|
* audio-only input).
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return an X window ID, or 0 if none where set.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_xwindow : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : LongWord; cdecl;
|
|
|
|
(**
|
|
* Set a Win32/Win64 API window handle (HWND) where the media player should
|
|
* render its video output. If LibVLC was built without Win32/Win64 API output
|
|
* support, then this has no effects.
|
|
*
|
|
* param p_mi the Media Player
|
|
* param drawable windows handle of the drawable
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_set_hwnd : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
hwnd : THandle
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get the Windows API window handle (HWND) previously set with
|
|
* libvlc_media_player_set_hwnd(). The handle will be returned even if LibVLC
|
|
* is not currently outputting any video to it.
|
|
*
|
|
* param p_mi the Media Player
|
|
* return a window handle or NULL if there are none.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_hwnd : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : THandle; cdecl;
|
|
|
|
|
|
(**
|
|
* Callback prototype for audio playback.
|
|
* param data data pointer as passed to libvlc_audio_set_callbacks() [IN]
|
|
* param samples pointer to the first audio sample to play back [IN]
|
|
* param count number of audio samples to play back
|
|
* param pts expected play time stamp (see libvlc_delay())
|
|
*)
|
|
type
|
|
libvlc_audio_play_cb = procedure(
|
|
data : Pointer;
|
|
const samples : Pointer;
|
|
count : Cardinal;
|
|
pts : Int64); cdecl;
|
|
|
|
(**
|
|
* Callback prototype for audio pause.
|
|
* note The pause callback is never called if the audio is already paused.
|
|
* param data data pointer as passed to libvlc_audio_set_callbacks() [IN]
|
|
* param pts time stamp of the pause request (should be elapsed already)
|
|
*)
|
|
type
|
|
libvlc_audio_pause_cb = procedure(
|
|
data : Pointer;
|
|
pts : Int64); cdecl;
|
|
|
|
(**
|
|
* Callback prototype for audio resumption (i.e. restart from pause).
|
|
* note The resume callback is never called if the audio is not paused.
|
|
* param data data pointer as passed to libvlc_audio_set_callbacks() [IN]
|
|
* param pts time stamp of the resumption request (should be elapsed already)
|
|
*)
|
|
type
|
|
libvlc_audio_resume_cb = procedure(
|
|
data : Pointer;
|
|
pts : Int64); cdecl;
|
|
|
|
(**
|
|
* Callback prototype for audio buffer flush
|
|
* (i.e. discard all pending buffers and stop playback as soon as possible).
|
|
* param data data pointer as passed to libvlc_audio_set_callbacks() [IN]
|
|
*)
|
|
type
|
|
libvlc_audio_flush_cb = procedure(
|
|
data : Pointer;
|
|
pts : Int64); cdecl;
|
|
|
|
(**
|
|
* Callback prototype for audio buffer drain
|
|
* (i.e. wait for pending buffers to be played).
|
|
* param data data pointer as passed to libvlc_audio_set_callbacks() [IN]
|
|
*)
|
|
type
|
|
libvlc_audio_drain_cb = procedure(data : Pointer);
|
|
|
|
(**
|
|
* Callback prototype for audio volume change.
|
|
* param data data pointer as passed to libvlc_audio_set_callbacks() [IN]
|
|
* param volume software volume (1. = nominal, 0. = mute)
|
|
* param mute muted flag
|
|
*)
|
|
type
|
|
libvlc_audio_set_volume_cb = procedure(
|
|
data : Pointer;
|
|
volume : Single;
|
|
mute : Boolean);
|
|
|
|
(**
|
|
* Set callbacks and private data for decoded audio.
|
|
* Use libvlc_audio_set_format() or libvlc_audio_set_format_callbacks()
|
|
* to configure the decoded audio format.
|
|
*
|
|
* param mp the media player
|
|
* param play callback to play audio samples (must not be NULL)
|
|
* param pause callback to pause playback (or NULL to ignore)
|
|
* param resume callback to resume playback (or NULL to ignore)
|
|
* param flush callback to flush audio buffers (or NULL to ignore)
|
|
* param drain callback to drain audio buffers (or NULL to ignore)
|
|
* param opaque private pointer for the audio callbacks (as first parameter)
|
|
* version LibVLC 2.0.0 or later
|
|
*)
|
|
var
|
|
libvlc_audio_set_callbacks : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
play : libvlc_audio_play_cb;
|
|
pause : libvlc_audio_pause_cb;
|
|
resume : libvlc_audio_resume_cb;
|
|
flush : libvlc_audio_flush_cb;
|
|
drain : libvlc_audio_drain_cb;
|
|
opaque : Pointer ); cdecl;
|
|
|
|
(**
|
|
* Set callbacks and private data for decoded audio.
|
|
* Use libvlc_audio_set_format() or libvlc_audio_set_format_callbacks()
|
|
* to configure the decoded audio format.
|
|
*
|
|
* param mp the media player
|
|
* param set_volume callback to apply audio volume,
|
|
* or NULL to apply volume in software
|
|
* version LibVLC 2.0.0 or later
|
|
*)
|
|
var
|
|
libvlc_audio_set_volume_callback : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
set_volume : libvlc_audio_set_volume_cb
|
|
); cdecl;
|
|
|
|
(**
|
|
* Callback prototype to setup the audio playback.
|
|
* This is called when the media player needs to create a new audio output.
|
|
* param opaque pointer to the data pointer passed to
|
|
* libvlc_audio_set_callbacks() [IN/OUT]
|
|
* param format 4 bytes sample format [IN/OUT]
|
|
* param rate sample rate [IN/OUT]
|
|
* param channels channels count [IN/OUT]
|
|
* return 0 on success, anything else to skip audio playback
|
|
*)
|
|
type
|
|
libvlc_audio_setup_cb = function(
|
|
var data : Pointer;
|
|
var format : PAnsiChar;
|
|
var rate : Cardinal;
|
|
var channels : Cardinal) : Integer; cdecl;
|
|
|
|
(**
|
|
* Callback prototype for audio playback cleanup.
|
|
* This is called when the media player no longer needs an audio output.
|
|
* param opaque data pointer as passed to libvlc_audio_set_callbacks() [IN]
|
|
*)
|
|
type
|
|
libvlc_audio_cleanup_cb = procedure(
|
|
data : Pointer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Set decoded audio format. This only works in combination with
|
|
* libvlc_audio_set_callbacks().
|
|
*
|
|
* param mp the media player
|
|
* param setup callback to select the audio format (cannot be NULL)
|
|
* param cleanup callback to release any allocated resources (or NULL)
|
|
* version LibVLC 2.0.0 or later
|
|
*)
|
|
var
|
|
libvlc_audio_set_format_callbacks : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
setup : libvlc_audio_setup_cb;
|
|
cleanup : libvlc_audio_cleanup_cb ); cdecl;
|
|
|
|
(**
|
|
* Set decoded audio format.
|
|
* This only works in combination with libvlc_audio_set_callbacks(),
|
|
* and is mutually exclusive with libvlc_audio_set_format_callbacks().
|
|
*
|
|
* param mp the media player
|
|
* param format a four-characters string identifying the sample format
|
|
* (e.g. "S16N" or "FL32")
|
|
* param rate sample rate (expressed in Hz)
|
|
* param channels channels count
|
|
* version LibVLC 2.0.0 or later
|
|
*)
|
|
var
|
|
libvlc_audio_set_format : procedure(
|
|
p_mp : libvlc_media_player_t_ptr;
|
|
const format : PAnsiChar;
|
|
rate : Cardinal;
|
|
channels : Cardinal); cdecl;
|
|
|
|
(*
|
|
*******************************************************************************
|
|
* bug This might go away ... to be replaced by a broader system */
|
|
*******************************************************************************
|
|
*)
|
|
|
|
(**
|
|
* Get the current movie length (in ms).
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return the movie length (in ms), or -1 if there is no media.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_length : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : libvlc_time_t; cdecl;
|
|
|
|
(**
|
|
* Get the current movie time (in ms).
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return the movie time (in ms), or -1 if there is no media.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_time : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : libvlc_time_t; cdecl;
|
|
|
|
(**
|
|
* Set the movie time (in ms). This has no effect if no media is being played.
|
|
* Not all formats and protocols support this.
|
|
*
|
|
* param p_mi the Media Player
|
|
* param i_time the movie time (in ms).
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_set_time : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_time : libvlc_time_t
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get movie position as percentage between 0.0 and 1.0.
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return movie position in range 0..1, or -1. in case of error
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_position : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Single; cdecl;
|
|
|
|
(**
|
|
* Set movie position as percentage between 0.0 and 1.0.
|
|
* This has no effect if playback is not enabled.
|
|
* This might not work depending on the underlying input format and protocol.
|
|
*
|
|
* param p_mi the Media Player
|
|
* param f_pos the position
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_set_position : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
f_pos : Single // float
|
|
); cdecl;
|
|
|
|
(**
|
|
* Set movie chapter (if applicable).
|
|
*
|
|
* param p_mi the Media Player
|
|
* param i_chapter chapter number to play
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_set_chapter : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_chapter : Integer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get movie chapter.
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return chapter number currently playing, or -1 if there is no media.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_chapter : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get movie chapter count
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return number of chapters in movie, or -1.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_chapter_count : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Is the player able to play
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return boolean
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_will_play : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get title chapter count
|
|
*
|
|
* param p_mi the Media Player
|
|
* param i_title title
|
|
* @return number of chapters in title, or -1
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_chapter_count_for_title : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_title : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set movie title
|
|
*
|
|
* param p_mi the Media Player
|
|
* param i_title title number to play
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_set_title : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_title : Integer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get movie title
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return title number currently playing, or -1
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_title : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get movie title count
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return title number count, or -1
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_title_count : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set previous chapter (if applicable)
|
|
*
|
|
* param p_mi the Media Player
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_previous_chapter : procedure(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Set next chapter (if applicable)
|
|
*
|
|
* param p_mi the Media Player
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_next_chapter : procedure(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get the requested movie play rate.
|
|
* @warning Depending on the underlying media, the requested rate may be
|
|
* different from the real playback rate.
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return movie play rate
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_rate : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Single; cdecl;
|
|
|
|
(**
|
|
* Set movie play rate
|
|
*
|
|
* param p_mi the Media Player
|
|
* param rate movie play rate to set
|
|
* @return -1 if an error was detected, 0 otherwise (but even then, it might
|
|
* not actually work depending on the underlying media protocol)
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_set_rate : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
rate : Single // float
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get current movie state
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return the current state of the media player (playing, paused, ...)
|
|
* see libvlc_state_t
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_state : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : libvlc_state_t; cdecl;
|
|
|
|
(**
|
|
* Get movie fps rate
|
|
*
|
|
* param p_mi the Media Player
|
|
* @return frames per second (fps) for this playing movie, or 0 if unspecified
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_get_fps : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Single; cdecl;
|
|
|
|
(*
|
|
*******************************************************************************
|
|
* end bug
|
|
*******************************************************************************
|
|
*)
|
|
|
|
(**
|
|
* How many video outputs does this media player have?
|
|
*
|
|
* param p_mi the media player
|
|
* @return the number of video outputs
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_has_vout : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : LongWord; cdecl;
|
|
|
|
(**
|
|
* Is this media player seekable?
|
|
*
|
|
* param p_mi the media player
|
|
* @return true if the media player can seek
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_is_seekable : function(
|
|
p_mi: libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Can this media player be paused?
|
|
*
|
|
* param p_mi the media player
|
|
* @return true if the media player can pause
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_can_pause : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
|
|
(**
|
|
* Display the next frame (if supported)
|
|
*
|
|
* param p_mi the media player
|
|
*)
|
|
|
|
var
|
|
libvlc_media_player_next_frame : procedure(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Navigate through DVD Menu
|
|
*
|
|
* param p_mi the Media Player
|
|
* param navigate the Navigation mode
|
|
* version libVLC 2.0.0 or later
|
|
*)
|
|
var
|
|
libvlc_media_player_navigate : procedure (
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
navigate : libvlc_navigate_mode_t ); cdecl;
|
|
|
|
(**
|
|
* Set if, and how, the video title will be shown when media is played.
|
|
*
|
|
* param p_mi the media player
|
|
* param position position at which to display the title,
|
|
* or libvlc_position_disable to prevent
|
|
* the title from being displayed
|
|
* param timeout title display timeout in milliseconds
|
|
* (ignored if libvlc_position_disable)
|
|
* version libVLC 2.1.0 or later
|
|
*)
|
|
var
|
|
libvlc_media_player_set_video_title_display : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
position : libvlc_position_t;
|
|
timeout : LongWord); cdecl;
|
|
|
|
(**
|
|
* Release (free) libvlc_track_description_t
|
|
*
|
|
* param p_track_description the structure to release
|
|
*)
|
|
var
|
|
libvlc_track_description_list_release : procedure(
|
|
p_track_description : libvlc_track_description_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Release (free) libvlc_track_description_t
|
|
*
|
|
* param p_track_description the structure to release
|
|
*)
|
|
|
|
var
|
|
libvlc_track_description_release : procedure(
|
|
p_track_description : libvlc_track_description_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Toggle fullscreen status on non-embedded video outputs.
|
|
*
|
|
* @warning The same limitations applies to this function
|
|
* as to libvlc_set_fullscreen().
|
|
*
|
|
* param p_mi the media player
|
|
*)
|
|
|
|
var
|
|
libvlc_toggle_fullscreen : procedure(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Enable or disable fullscreen.
|
|
*
|
|
* @warning With most window managers, only a top-level windows can be in
|
|
* full-screen mode. Hence, this function will not operate properly if
|
|
* libvlc_media_player_set_xwindow() was used to embed the video in a
|
|
* non-top-level window. In that case, the embedding window must be reparented
|
|
* to the root window BEFORE fullscreen mode is enabled. You will want
|
|
* to reparent it back to its normal parent when disabling fullscreen.
|
|
*
|
|
* param p_mi the media player
|
|
* param b_fullscreen boolean for fullscreen status
|
|
*)
|
|
|
|
var
|
|
libvlc_set_fullscreen : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
b_fullscreen : Integer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get current fullscreen status.
|
|
*
|
|
* param p_mi the media player
|
|
* @return the fullscreen status (boolean)
|
|
*)
|
|
|
|
var
|
|
libvlc_get_fullscreen : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Enable or disable key press events handling, according to the LibVLC hotkeys
|
|
* configuration. By default and for historical reasons, keyboard events are
|
|
* handled by the LibVLC video widget.
|
|
*
|
|
* On X11, there can be only one subscriber for key press and mouse
|
|
* click events per window. If your application has subscribed to those events
|
|
* for the X window ID of the video widget, then LibVLC will not be able to
|
|
* handle key presses and mouse clicks in any case.
|
|
*
|
|
* This function is only implemented for X11 at the moment.
|
|
*
|
|
* param p_mi the media player
|
|
* param on true to handle key press events, false to ignore them.
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_key_input : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
keys_on : LongWord
|
|
); cdecl;
|
|
|
|
(**
|
|
* Enable or disable mouse click events handling. By default, those events are
|
|
* handled. This is needed for DVD menus to work, as well as a few video
|
|
* filters such as "puzzle".
|
|
*
|
|
* See also libvlc_video_set_key_input().
|
|
*
|
|
* This function is only implemented for X11 at the moment.
|
|
*
|
|
* param p_mi the media player
|
|
* param on true to handle mouse click events, false to ignore them.
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_mouse_input: procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
mouse_on : LongWord
|
|
); cdecl;
|
|
|
|
|
|
(**
|
|
* Get the pixel dimensions of a video.
|
|
*
|
|
* param p_mi media player
|
|
* param num number of the video (starting from, and most commonly 0)
|
|
* param px pointer to get the pixel width [OUT]
|
|
* param py pointer to get the pixel height [OUT]
|
|
* @return 0 on success, -1 if the specified video does not exist
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_size : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
num : LongWord;
|
|
var px, py: LongWord
|
|
) : Integer; cdecl;
|
|
|
|
{$IFDEF USE_VLC_DEPRECATED_API}
|
|
(**
|
|
* Get current video height.
|
|
* You should use libvlc_video_get_size() instead.
|
|
*
|
|
* param p_mi the media player
|
|
* @return the video pixel height or 0 if not applicable
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_height : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
{$ENDIF}
|
|
|
|
{$IFDEF USE_VLC_DEPRECATED_API}
|
|
(**
|
|
* Get current video width.
|
|
* You should use libvlc_video_get_size() instead.
|
|
*
|
|
* param p_mi the media player
|
|
* @return the video pixel width or 0 if not applicable
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_width : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
{$ENDIF}
|
|
|
|
(**
|
|
* Get the mouse pointer coordinates over a video.
|
|
* Coordinates are expressed in terms of the decoded video resolution,
|
|
* NOT in terms of pixels on the screen/viewport (to get the latter,
|
|
* you can query your windowing system directly).
|
|
*
|
|
* Either of the coordinates may be negative or larger than the corresponding
|
|
* dimension of the video, if the cursor is outside the rendering area.
|
|
*
|
|
* @warning The coordinates may be out-of-date if the pointer is not located
|
|
* on the video rendering area. LibVLC does not track the pointer if it is
|
|
* outside of the video widget.
|
|
*
|
|
* @note LibVLC does not support multiple pointers (it does of course support
|
|
* multiple input devices sharing the same pointer) at the moment.
|
|
*
|
|
* param p_mi media player
|
|
* param num number of the video (starting from, and most commonly 0)
|
|
* param px pointer to get the abscissa [OUT]
|
|
* param py pointer to get the ordinate [OUT]
|
|
* @return 0 on success, -1 if the specified video does not exist
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_cursor : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
num : LongWord;
|
|
var px, py : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get the current video scaling factor.
|
|
* See also libvlc_video_set_scale().
|
|
*
|
|
* param p_mi the media player
|
|
* @return the currently configured zoom factor, or 0. if the video is set
|
|
* to fit to the output window/drawable automatically.
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_scale : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Single; cdecl;
|
|
|
|
(**
|
|
* Set the video scaling factor. That is the ratio of the number of pixels on
|
|
* screen to the number of pixels in the original decoded video in each
|
|
* dimension. Zero is a special value; it will adjust the video to the output
|
|
* window/drawable (in windowed mode) or the entire screen.
|
|
*
|
|
* Note that not all video outputs support scaling.
|
|
*
|
|
* param p_mi the media player
|
|
* param f_factor the scaling factor, or zero
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_scale : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
f_factor : Single // float
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get current video aspect ratio.
|
|
*
|
|
* param p_mi the media player
|
|
* @return the video aspect ratio or NULL if unspecified
|
|
* (the result must be released with free() or libvlc_free()).
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_aspect_ratio : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Set new video aspect ratio.
|
|
*
|
|
* param p_mi the media player
|
|
* param psz_aspect new video aspect-ratio or NULL to reset to default
|
|
* Invalid aspect ratios are ignored.
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_aspect_ratio : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
psz_aspect : PAnsiChar
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get current video subtitle.
|
|
*
|
|
* param p_mi the media player
|
|
* @return the video subtitle selected, or -1 if none
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_spu : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get the number of available video subtitles.
|
|
*
|
|
* param p_mi the media player
|
|
* @return the number of available video subtitles
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_spu_count : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get the description of available video subtitles.
|
|
*
|
|
* param p_mi the media player
|
|
* @return list containing description of available video subtitles
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_spu_description : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : libvlc_track_description_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Set new video subtitle.
|
|
*
|
|
* param p_mi the media player
|
|
* param i_spu video subtitle track to select (i_id from track description)
|
|
* @return 0 on success, -1 if out of range
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_spu : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_spu : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set new video subtitle file.
|
|
*
|
|
* param p_mi the media player
|
|
* param psz_subtitle new video subtitle file
|
|
* @return the success status (boolean)
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_subtitle_file : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
psz_subtitle : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get the current subtitle delay. Positive values means subtitles are being
|
|
* displayed later, negative values earlier.
|
|
*
|
|
* param p_mi media player
|
|
* return time (in microseconds) the display of subtitles is being delayed
|
|
* version LibVLC 2.0.0 or later
|
|
*)
|
|
var
|
|
libvlc_video_get_spu_delay : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
): Int64; cdecl;
|
|
|
|
(**
|
|
* Set the subtitle delay. This affects the timing of when the subtitle will
|
|
* be displayed. Positive values result in subtitles being displayed later,
|
|
* while negative values will result in subtitles being displayed earlier.
|
|
*
|
|
* The subtitle delay will be reset to zero each time the media changes.
|
|
*
|
|
* param p_mi media player
|
|
* param i_delay time (in microseconds) the display of subtitles should be delayed
|
|
* return 0 on success, -1 on error
|
|
* version LibVLC 2.0.0 or later
|
|
*)
|
|
var
|
|
libvlc_video_set_spu_delay : function (
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_delay : Int64
|
|
) : Integer; cdecl;
|
|
|
|
|
|
(**
|
|
* Get the description of available titles.
|
|
*
|
|
* param p_mi the media player
|
|
* @return list containing description of available titles
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_title_description : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : libvlc_track_description_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Get the description of available chapters for specific title.
|
|
*
|
|
* param p_mi the media player
|
|
* param i_title selected title
|
|
* @return list containing description of available chapter for title i_title
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_chapter_description : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_title : Integer
|
|
) : libvlc_track_description_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Get current crop filter geometry.
|
|
*
|
|
* param p_mi the media player
|
|
* @return the crop filter geometry or NULL if unset
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_crop_geometry : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Set new crop filter geometry.
|
|
*
|
|
* param p_mi the media player
|
|
* param psz_geometry new crop filter geometry (NULL to unset)
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_crop_geometry : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
psz_geometry : PAnsiChar
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get current teletext page requested.
|
|
*
|
|
* param p_mi the media player
|
|
* @return the current teletext page requested.
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_teletext : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set new teletext page to retrieve.
|
|
*
|
|
* param p_mi the media player
|
|
* param i_page teletex page number requested
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_teletext : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_page : Integer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Toggle teletext transparent status on video output.
|
|
*
|
|
* param p_mi the media player
|
|
*)
|
|
|
|
var
|
|
libvlc_toggle_teletext : procedure(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get number of available video tracks.
|
|
*
|
|
* param p_mi media player
|
|
* @return the number of available video tracks (int)
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_track_count : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get the description of available video tracks.
|
|
*
|
|
* param p_mi media player
|
|
* @return list with description of available video tracks, or NULL on error
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_track_description : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : libvlc_track_description_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Get current video track.
|
|
*
|
|
* param p_mi media player
|
|
* @return the video track ID (int) or -1 if no active input
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_track : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set video track.
|
|
*
|
|
* param p_mi media player
|
|
* param i_track the track ID (i_id field from track description)
|
|
* @return 0 on success, -1 if out of range
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_track : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_track : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Take a snapshot of the current video window.
|
|
*
|
|
* If i_width AND i_height is 0, original size is used.
|
|
* If i_width XOR i_height is 0, original aspect-ratio is preserved.
|
|
*
|
|
* param p_mi media player instance
|
|
* param num number of video output (typically 0 for the first/only one)
|
|
* param psz_filepath the path where to save the screenshot to
|
|
* param i_width the snapshot's width
|
|
* param i_height the snapshot's height
|
|
* @return 0 on success, -1 if the video was not found
|
|
*)
|
|
|
|
var
|
|
libvlc_video_take_snapshot : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
num : Integer;
|
|
psz_filepath : PAnsiChar;
|
|
i_width : LongWord;
|
|
i_height : LongWord
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Enable or disable deinterlace filter
|
|
*
|
|
* param p_mi libvlc media player
|
|
* param psz_mode type of deinterlace filter, NULL to disable
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_deinterlace : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
psz_mode : PAnsiChar
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get an integer marquee option value
|
|
*
|
|
* param p_mi libvlc media player
|
|
* param option marq option to get see libvlc_video_marquee_int_option_t
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_marquee_int : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_marquee_option_t
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get a string marquee option value
|
|
*
|
|
* param p_mi libvlc media player
|
|
* param option marq option to get
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_marquee_string : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_marquee_option_t
|
|
) : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Enable, disable or set an integer marquee option
|
|
*
|
|
* Setting libvlc_marquee_Enable has the side effect of enabling (arg !0)
|
|
* or disabling (arg 0) the marq filter.
|
|
*
|
|
* param p_mi libvlc media player
|
|
* param option marq option to set
|
|
* param i_val marq option value
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_marquee_int : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_marquee_option_t;
|
|
i_val : Integer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Set a marquee string option
|
|
*
|
|
* param p_mi libvlc media player
|
|
* param option marq option to set see libvlc_video_marquee_string_option_t
|
|
* param psz_text marq option value
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_marquee_string : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_marquee_option_t;
|
|
psz_text : PAnsiChar
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get integer logo option.
|
|
*
|
|
* param p_mi libvlc media player instance
|
|
* param option logo option to get, values of libvlc_video_logo_option_t
|
|
*)
|
|
|
|
var
|
|
libvlc_video_get_logo_int : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_logo_option_t
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set logo option as integer. Options that take a different type value
|
|
* are ignored.
|
|
* Passing libvlc_logo_enable as option value has the side effect of
|
|
* starting (arg !0) or stopping (arg 0) the logo filter.
|
|
*
|
|
* param p_mi libvlc media player instance
|
|
* param option logo option to set, values of libvlc_video_logo_option_t
|
|
* param value logo option value
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_logo_int : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_logo_option_t;
|
|
value : Integer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Set logo option as string. Options that take a different type value
|
|
* are ignored.
|
|
*
|
|
* param p_mi libvlc media player instance
|
|
* param option logo option to set, values of libvlc_video_logo_option_t
|
|
* param psz_value logo option value
|
|
*)
|
|
|
|
var
|
|
libvlc_video_set_logo_string : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_logo_option_t;
|
|
psz_value : PAnsiChar
|
|
); cdecl;
|
|
|
|
(** option values for libvlc_video_{get,set}_adjust_{int,float,bool} *)
|
|
type
|
|
libvlc_video_adjust_option_t = (
|
|
libvlc_adjust_Enable, // 0
|
|
libvlc_adjust_Contrast,
|
|
libvlc_adjust_Brightness,
|
|
libvlc_adjust_Hue,
|
|
libvlc_adjust_Saturation,
|
|
libvlc_adjust_Gamma
|
|
);
|
|
|
|
(**
|
|
* Get integer adjust option.
|
|
*
|
|
* param p_mi libvlc media player instance
|
|
* param option adjust option to get, values of libvlc_video_adjust_option_t
|
|
* version LibVLC 1.1.1 and later.
|
|
*)
|
|
var
|
|
libvlc_video_get_adjust_int : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : LongWord
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set adjust option as integer. Options that take a different type value
|
|
* are ignored.
|
|
* Passing libvlc_adjust_enable as option value has the side effect of
|
|
* starting (arg !0) or stopping (arg 0) the adjust filter.
|
|
*
|
|
* param p_mi libvlc media player instance
|
|
* param option adust option to set, values of libvlc_video_adjust_option_t
|
|
* param value adjust option value
|
|
* version LibVLC 1.1.1 and later.
|
|
*)
|
|
var
|
|
libvlc_video_set_adjust_int : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : LongWord;
|
|
value : Integer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get float adjust option.
|
|
*
|
|
* param p_mi libvlc media player instance
|
|
* param option adjust option to get, values of libvlc_video_adjust_option_t
|
|
* version LibVLC 1.1.1 and later.
|
|
*)
|
|
var
|
|
libvlc_video_get_adjust_float : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : LongWord
|
|
) : Single; cdecl;
|
|
|
|
(**
|
|
* Set adjust option as float. Options that take a different type value
|
|
* are ignored.
|
|
*
|
|
* param p_mi libvlc media player instance
|
|
* param option adust option to set, values of libvlc_video_adjust_option_t
|
|
* param value adjust option value
|
|
* version LibVLC 1.1.1 and later.
|
|
*)
|
|
var
|
|
libvlc_video_set_adjust_float : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : LongWord;
|
|
value : Single
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get the list of available audio outputs
|
|
*
|
|
* param p_instance libvlc instance
|
|
* @return list of available audio outputs. It must be freed it with
|
|
* see libvlc_audio_output_list_release see libvlc_audio_output_t .
|
|
* In case of error, NULL is returned.
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_output_list_get : function(
|
|
p_instance : libvlc_instance_t_ptr
|
|
) : libvlc_audio_output_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Free the list of available audio outputs
|
|
*
|
|
* param p_list list with audio outputs for release
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_output_list_release : procedure(
|
|
p_list : libvlc_audio_output_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Sets the audio output.
|
|
* note Any change will take be effect only after playback is stopped and
|
|
* restarted. Audio output cannot be changed while playing.
|
|
*
|
|
* param p_mi media player
|
|
* param psz_name name of audio output,
|
|
* use psz_name of see libvlc_audio_output_t
|
|
* @return 0 if function succeded, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_output_set : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
psz_name : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get count of devices for audio output, these devices are hardware oriented
|
|
* like analog or digital output of sound card
|
|
*
|
|
* param p_instance libvlc instance
|
|
* param psz_audio_output - name of audio output, see libvlc_audio_output_t
|
|
* @return number of devices
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_output_device_count : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_audio_output : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get long name of device, if not available short name given
|
|
*
|
|
* param p_instance libvlc instance
|
|
* param psz_audio_output - name of audio output, see libvlc_audio_output_t
|
|
* param i_device device index
|
|
* @return long name of device
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_output_device_longname : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_audio_output : PAnsiChar;
|
|
i_device : Integer
|
|
) : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Get id name of device
|
|
*
|
|
* param p_instance libvlc instance
|
|
* param psz_audio_output - name of audio output, see libvlc_audio_output_t
|
|
* param i_device device index
|
|
* @return id name of device, use for setting device, need to be free after use
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_output_device_id : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_audio_output : PAnsiChar;
|
|
i_device : Integer
|
|
) : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Gets a list of audio output devices for a given audio output.
|
|
* see libvlc_audio_output_device_set().
|
|
*
|
|
* note Not all audio outputs support this. In particular, an empty (NULL)
|
|
* list of devices does NOT imply that the specified audio output does
|
|
* not work.
|
|
*
|
|
* note The list might not be exhaustive.
|
|
*
|
|
* warning Some audio output devices in the list might not actually work in
|
|
* some circumstances. By default, it is recommended to not specify any
|
|
* explicit audio device.
|
|
*
|
|
* param p_instance libvlc instance
|
|
* param psz_aout audio output name
|
|
* (as returned by libvlc_audio_output_list_get())
|
|
* @return A NULL-terminated linked list of potential audio output devices.
|
|
* It must be freed it with libvlc_audio_output_device_list_release()
|
|
* version LibVLC 2.1.0 or later.
|
|
*)
|
|
var
|
|
libvlc_audio_output_device_list_get : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
aout : PAnsiChar
|
|
) : libvlc_audio_output_device_t_ptr; cdecl;
|
|
|
|
|
|
(**
|
|
* Frees a list of available audio output devices.
|
|
*
|
|
* param p_list list with audio outputs for release
|
|
* version LibVLC 2.1.0 or later.
|
|
*)
|
|
var
|
|
libvlc_audio_output_device_list_release : procedure(
|
|
p_list : libvlc_audio_output_device_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Configures an explicit audio output device for a given audio output plugin.
|
|
* A list of possible devices can be obtained with
|
|
* libvlc_audio_output_device_list_get().
|
|
*
|
|
* note This function does not select the specified audio output plugin.
|
|
* libvlc_audio_output_set() is used for that purpose.
|
|
*
|
|
* warning The syntax for the device parameter depends on the audio output.
|
|
* This is not portable. Only use this function if you know what you are doing.
|
|
* Some audio outputs do not support this function (e.g. PulseAudio, WASAPI).
|
|
* Some audio outputs require further parameters (e.g. ALSA: channels map).
|
|
*
|
|
* param p_mi media player
|
|
* param psz_audio_output - name of audio output, see libvlc_audio_output_t
|
|
* param psz_device_id device
|
|
* @return Nothing. Errors are ignored.
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_output_device_set : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
psz_audio_output : PAnsiChar;
|
|
psz_device_id : PAnsiChar
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get current audio device type. Device type describes something like
|
|
* character of output sound - stereo sound, 2.1, 5.1 etc
|
|
*
|
|
* param p_mi media player
|
|
* @return the audio devices type see libvlc_audio_output_device_types_t
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_output_get_device_type : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : libvlc_audio_output_device_types_t; cdecl;
|
|
|
|
(**
|
|
* Set current audio device type.
|
|
*
|
|
* param p_mi vlc instance
|
|
* param device_type the audio device type,
|
|
according to see libvlc_audio_output_device_types_t
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_output_set_device_type : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
device_type : libvlc_audio_output_device_types_t
|
|
); cdecl;
|
|
|
|
(**
|
|
* Toggle mute status.
|
|
*
|
|
* param p_mi media player
|
|
* warning Toggling mute atomically is not always possible: On some platforms,
|
|
* other processes can mute the VLC audio playback stream asynchronously. Thus,
|
|
* there is a small race condition where toggling will not work.
|
|
* See also the limitations of libvlc_audio_set_mute().
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_toggle_mute : procedure(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get current mute status.
|
|
*
|
|
* param p_mi media player
|
|
* @return the mute status (boolean) if defined, -1 if undefined/unapplicable
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_get_mute : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set mute status.
|
|
*
|
|
* param p_mi media player
|
|
* param status If status is true then mute, otherwise unmute
|
|
* warning This function does not always work. If there are no active audio
|
|
* playback stream, the mute status might not be available. If digital
|
|
* pass-through (S/PDIF, HDMI...) is in use, muting may be unapplicable. Also
|
|
* some audio output plugins do not support muting at all.
|
|
* note To force silent playback, disable all audio tracks. This is more
|
|
* efficient and reliable than mute.
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_set_mute : procedure(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
status : Integer
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get current software audio volume.
|
|
*
|
|
* param p_mi media player
|
|
* return the software volume in percents
|
|
* (0 = mute, 100 = nominal / 0dB)
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_get_volume : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set current software audio volume.
|
|
*
|
|
* param p_mi media player
|
|
* param i_volume the volume in percents (0 = mute, 100 = 0dB)
|
|
* return 0 if the volume was set, -1 if it was out of range
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_set_volume : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_volume : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get number of available audio tracks.
|
|
*
|
|
* param p_mi media player
|
|
* @return the number of available audio tracks (int), or -1 if unavailable
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_get_track_count : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get the description of available audio tracks.
|
|
*
|
|
* param p_mi media player
|
|
* @return list with description of available audio tracks, or NULL
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_get_track_description : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : libvlc_track_description_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Get current audio track.
|
|
*
|
|
* param p_mi media player
|
|
* @return the audio track ID or -1 if no active input.
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_get_track : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set current audio track.
|
|
*
|
|
* param p_mi media player
|
|
* param i_track the track ID (i_id field from track description)
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_set_track : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_track : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get current audio channel.
|
|
*
|
|
* param p_mi media player
|
|
* @return the audio channel see libvlc_audio_output_channel_t
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_get_channel : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : libvlc_audio_output_channel_t; cdecl;
|
|
|
|
(**
|
|
* Set current audio channel.
|
|
*
|
|
* param p_mi media player
|
|
* param channel the audio channel, see libvlc_audio_output_channel_t
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_audio_set_channel : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_channel : libvlc_audio_output_channel_t
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get current audio delay.
|
|
*
|
|
* param p_mi media player
|
|
* return the audio delay (microseconds)
|
|
* version LibVLC 1.1.1 or later
|
|
*)
|
|
var
|
|
libvlc_audio_get_delay : function(
|
|
p_mi : libvlc_media_player_t_ptr
|
|
) : Int64; cdecl;
|
|
|
|
(**
|
|
* Set current audio delay. The audio delay will be reset to zero each time the media changes.
|
|
*
|
|
* param p_mi media player
|
|
* param i_delay the audio delay (microseconds)
|
|
* return 0 on success, -1 on error
|
|
* version LibVLC 1.1.1 or later
|
|
*)
|
|
var
|
|
libvlc_audio_set_delay : function(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_delay : Int64
|
|
) : Integer; cdecl;
|
|
|
|
(*
|
|
*******************************************************************************
|
|
* libvlc_media_list.h
|
|
*******************************************************************************
|
|
*)
|
|
|
|
(**
|
|
* Create an empty media list.
|
|
*
|
|
* param p_instance libvlc instance
|
|
* @return empty media list, or NULL on error
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_new : function(
|
|
p_instance : libvlc_instance_t_ptr
|
|
) : libvlc_media_list_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Release media list created with libvlc_media_list_new().
|
|
*
|
|
* param p_ml a media list created with libvlc_media_list_new()
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_release : procedure(
|
|
p_ml : libvlc_media_list_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Retain reference to a media list
|
|
*
|
|
* param p_ml a media list created with libvlc_media_list_new()
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_retain : procedure(
|
|
p_ml : libvlc_media_list_t_ptr
|
|
); cdecl;
|
|
|
|
{$IFDEF USE_VLC_DEPRECATED_API}
|
|
var
|
|
libvlc_media_list_add_file_content: function(
|
|
p_ml : libvlc_media_list_t_ptr;
|
|
psz_uri : PAnsiChar
|
|
) : Integer; cdecl;
|
|
{$ENDIF}
|
|
|
|
(**
|
|
* Associate media instance with this media list instance.
|
|
* If another media instance was present it will be released.
|
|
* The libvlc_media_list_lock should NOT be held upon entering this function.
|
|
*
|
|
* param p_ml a media list instance
|
|
* param p_md media instance to add
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_set_media : procedure(
|
|
p_ml : libvlc_media_list_t_ptr;
|
|
p_md : libvlc_media_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get media instance from this media list instance. This action will increase
|
|
* the refcount on the media instance.
|
|
* The libvlc_media_list_lock should NOT be held upon entering this function.
|
|
*
|
|
* param p_ml a media list instance
|
|
* return media instance
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_media : function(
|
|
p_ml : libvlc_media_list_t_ptr
|
|
) : libvlc_media_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Add media instance to media list
|
|
* The libvlc_media_list_lock should be held upon entering this function.
|
|
*
|
|
* param p_ml a media list instance
|
|
* param p_md a media instance
|
|
* @return 0 on success, -1 if the media list is read-only
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_add_media : function(
|
|
p_ml : libvlc_media_list_t_ptr;
|
|
p_md : libvlc_media_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Insert media instance in media list on a position
|
|
* The libvlc_media_list_lock should be held upon entering this function.
|
|
*
|
|
* param p_ml a media list instance
|
|
* param p_md a media instance
|
|
* param i_pos position in array where to insert
|
|
* @return 0 on success, -1 if the media list si read-only
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_insert_media : function(
|
|
p_ml : libvlc_media_list_t_ptr;
|
|
p_md : libvlc_media_t_ptr;
|
|
i_pos : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Remove media instance from media list on a position
|
|
* The libvlc_media_list_lock should be held upon entering this function.
|
|
*
|
|
* param p_ml a media list instance
|
|
* param i_pos position in array where to insert
|
|
* @return 0 on success, -1 if the list is read-only or the item was not found
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_remove_index : function(
|
|
p_ml : libvlc_media_list_t_ptr;
|
|
i_pos : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get count on media list items
|
|
* The libvlc_media_list_lock should be held upon entering this function.
|
|
*
|
|
* param p_ml a media list instance
|
|
* @return number of items in media list
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_count : function(
|
|
p_ml : libvlc_media_list_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* List media instance in media list at a position
|
|
* The libvlc_media_list_lock should be held upon entering this function.
|
|
*
|
|
* param p_ml a media list instance
|
|
* param i_pos position in array where to insert
|
|
* @return media instance at position i_pos, or -1 if not found.
|
|
* In case of success, libvlc_media_retain() is called to increase the refcount
|
|
* on the media.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_item_at_index : function(
|
|
p_ml : libvlc_media_list_t_ptr;
|
|
i_pos : Integer
|
|
) : libvlc_media_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Find index position of List media instance in media list.
|
|
* Warning: the function will return the first matched position.
|
|
* The libvlc_media_list_lock should be held upon entering this function.
|
|
*
|
|
* param p_ml a media list instance
|
|
* param p_md media list instance
|
|
* @return position of media instance
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_index_of_item : function(
|
|
p_ml : libvlc_media_list_t_ptr;
|
|
p_md : libvlc_media_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* This indicates if this media list is read-only from a user point of view
|
|
*
|
|
* param p_ml media list instance
|
|
* @return 1 on readonly, 0 on readwrite
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_is_readonly : function(
|
|
p_ml : libvlc_media_list_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get lock on media list items
|
|
*
|
|
* param p_ml a media list instance
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_lock : procedure(
|
|
p_ml : libvlc_media_list_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Release lock on media list items
|
|
* The libvlc_media_list_lock should be held upon entering this function.
|
|
*
|
|
* param p_ml a media list instance
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_unlock : procedure(
|
|
p_ml : libvlc_media_list_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get libvlc_event_manager from this media list instance.
|
|
* The p_event_manager is immutable, so you don't have to hold the lock
|
|
*
|
|
* param p_ml a media list instance
|
|
* @return libvlc_event_manager
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_event_manager : function(
|
|
p_ml : libvlc_media_list_t_ptr
|
|
) : libvlc_event_manager_t_ptr; cdecl;
|
|
|
|
(*******************************************************************************
|
|
* libvlc_media_list_player.h
|
|
*******************************************************************************
|
|
*)
|
|
|
|
(**
|
|
* The LibVLC media list player plays a @ref libvlc_media_list_t list of media,
|
|
* in a certain order.
|
|
* This is required to especially support playlist files.
|
|
* The normal @ref libvlc_media_player_t LibVLC media player can only play a
|
|
* single media, and does not handle playlist files properly.
|
|
*)
|
|
|
|
(**
|
|
* Create new media_list_player.
|
|
*
|
|
* param p_instance libvlc instance
|
|
* @return media list player instance or NULL on error
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_new : function(
|
|
p_instance : libvlc_instance_t_ptr
|
|
) : libvlc_media_list_player_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Release a media_list_player after use
|
|
* Decrement the reference count of a media player object. If the
|
|
* reference count is 0, then libvlc_media_list_player_release() will
|
|
* release the media player object. If the media player object
|
|
* has been released, then it should not be used again.
|
|
*
|
|
* param p_mlp media list player instance
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_release : procedure(
|
|
p_mlp : libvlc_media_list_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Retain a reference to a media player list object. Use
|
|
* libvlc_media_list_player_release() to decrement reference count.
|
|
*
|
|
* param p_mlp media player list object
|
|
*)
|
|
var
|
|
libvlc_media_list_player_retain : procedure(
|
|
p_mlp : libvlc_media_list_player_t_ptr
|
|
); cdecl;
|
|
|
|
|
|
(**
|
|
* Return the event manager of this media_list_player.
|
|
*
|
|
* param p_mlp media list player instance
|
|
* @return the event manager
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_event_manager : function(
|
|
p_mlp : libvlc_media_list_player_t_ptr
|
|
) : libvlc_event_manager_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Replace media player in media_list_player with this instance.
|
|
*
|
|
* param p_mlp media list player instance
|
|
* param p_mi media player instance
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_set_media_player : procedure(
|
|
p_mlp : libvlc_media_list_player_t_ptr;
|
|
p_mi : libvlc_media_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Set the media list associated with the player
|
|
*
|
|
* param p_mlp media list player instance
|
|
* param p_mlist list of media
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_set_media_list : procedure(
|
|
p_mlp : libvlc_media_list_player_t_ptr;
|
|
p_mlist : libvlc_media_list_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Play media list
|
|
*
|
|
* param p_mlp media list player instance
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_play : procedure(
|
|
p_mlp : libvlc_media_list_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Toggle pause (or resume) media list
|
|
*
|
|
* param p_mlp media list player instance
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_pause : procedure(
|
|
p_mlp : libvlc_media_list_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Is media list playing?
|
|
*
|
|
* param p_mlp media list player instance
|
|
* @return true for playing and false for not playing
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_is_playing : function(
|
|
p_mlp : libvlc_media_list_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get current libvlc_state of media list player
|
|
*
|
|
* param p_mlp media list player instance
|
|
* @return libvlc_state_t for media list player
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_get_state : function(
|
|
p_mlp : libvlc_media_list_player_t_ptr
|
|
) : libvlc_state_t; cdecl;
|
|
|
|
(**
|
|
* Play media list item at position index
|
|
*
|
|
* param p_mlp media list player instance
|
|
* param i_index index in media list to play
|
|
* @return 0 upon success -1 if the item wasn't found
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_play_item_at_index : function(
|
|
p_mlp : libvlc_media_list_player_t_ptr;
|
|
i_index : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Play the given media item
|
|
*
|
|
* param p_mlp media list player instance
|
|
* param p_md the media instance
|
|
* @return 0 upon success, -1 if the media is not part of the media list
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_play_item : function(
|
|
p_mlp : libvlc_media_list_player_t_ptr;
|
|
p_md : libvlc_media_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Stop playing media list
|
|
*
|
|
* param p_mlp media list player instance
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_stop : procedure(
|
|
p_mlp : libvlc_media_list_player_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Play next item from media list
|
|
*
|
|
* param p_mlp media list player instance
|
|
* @return 0 upon success -1 if there is no next item
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_next : function(
|
|
p_mlp : libvlc_media_list_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Play previous item from media list
|
|
*
|
|
* param p_mlp media list player instance
|
|
* @return 0 upon success -1 if there is no previous item
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_previous : function(
|
|
p_mlp : libvlc_media_list_player_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Sets the playback mode for the playlist
|
|
*
|
|
* param p_mlp media list player instance
|
|
* param e_mode playback mode specification
|
|
*)
|
|
|
|
var
|
|
libvlc_media_list_player_set_playback_mode : procedure(
|
|
p_mlp : libvlc_media_list_player_t_ptr;
|
|
e_mode : libvlc_playback_mode_t
|
|
); cdecl;
|
|
|
|
(*
|
|
*******************************************************************************
|
|
* libvlc_media_library.h
|
|
*******************************************************************************
|
|
*)
|
|
|
|
(**
|
|
* Create an new Media Library object
|
|
*
|
|
* param p_instance the libvlc instance
|
|
* @return a new object or NULL on error
|
|
*)
|
|
|
|
var
|
|
libvlc_media_library_new : function(
|
|
p_instance : libvlc_instance_t_ptr
|
|
) : libvlc_media_library_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Release media library object. This functions decrements the
|
|
* reference count of the media library object. If it reaches 0,
|
|
* then the object will be released.
|
|
*
|
|
* param p_mlib media library object
|
|
*)
|
|
|
|
var
|
|
libvlc_media_library_release : procedure(
|
|
p_mlib : libvlc_media_library_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Retain a reference to a media library object. This function will
|
|
* increment the reference counting for this object. Use
|
|
* libvlc_media_library_release() to decrement the reference count.
|
|
*
|
|
* param p_mlib media library object
|
|
*)
|
|
|
|
var
|
|
libvlc_media_library_retain : procedure(
|
|
p_mlib : libvlc_media_library_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Load media library.
|
|
*
|
|
* param p_mlib media library object
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_media_library_load : function(
|
|
p_mlib : libvlc_media_library_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get media library subitems.
|
|
*
|
|
* param p_mlib media library object
|
|
* @return media list subitems
|
|
*)
|
|
|
|
var
|
|
libvlc_media_library_media_list : function(
|
|
p_mlib : libvlc_media_library_t_ptr
|
|
) : libvlc_media_list_t_ptr; cdecl;
|
|
|
|
(*******************************************************************************
|
|
* libvlc_media_discoverer.h
|
|
*******************************************************************************
|
|
*)
|
|
|
|
(**
|
|
* LibVLC media discovery finds available media via various means.
|
|
* This corresponds to the service discovery functionality in VLC media player.
|
|
* Different plugins find potential medias locally (e.g. user media directory),
|
|
* from peripherals (e.g. video capture device), on the local network
|
|
* (e.g. SAP) or on the Internet (e.g. Internet radios).
|
|
*)
|
|
|
|
(**
|
|
* Discover media service by name.
|
|
*
|
|
* param p_inst libvlc instance
|
|
* param psz_name service name
|
|
* @return media discover object or NULL in case of error
|
|
*)
|
|
|
|
var
|
|
libvlc_media_discoverer_new_from_name : function(
|
|
p_inst : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar
|
|
) : libvlc_media_discoverer_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Release media discover object. If the reference count reaches 0, then
|
|
* the object will be released.
|
|
*
|
|
* param p_mdis media service discover object
|
|
*)
|
|
|
|
var
|
|
libvlc_media_discoverer_release : procedure(
|
|
p_mdis : libvlc_media_discoverer_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Get media service discover object its localized name.
|
|
*
|
|
* param p_mdis media discover object
|
|
* @return localized name
|
|
*)
|
|
|
|
var
|
|
libvlc_media_discoverer_localized_name : function(
|
|
p_mdis : libvlc_media_discoverer_t_ptr
|
|
) : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Get media service discover media list.
|
|
*
|
|
* param p_mdis media service discover object
|
|
* @return list of media items
|
|
*)
|
|
|
|
var
|
|
libvlc_media_discoverer_media_list : function(
|
|
p_mdis : libvlc_media_discoverer_t_ptr
|
|
) : libvlc_media_list_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Get event manager from media service discover object.
|
|
*
|
|
* param p_mdis media service discover object
|
|
* @return event manager object.
|
|
*)
|
|
|
|
var
|
|
libvlc_media_discoverer_event_manager : function(
|
|
p_mdis : libvlc_media_discoverer_t_ptr
|
|
) : libvlc_event_manager_t_ptr; cdecl;
|
|
|
|
(**
|
|
* Query if media service discover object is running.
|
|
*
|
|
* param p_mdis media service discover object
|
|
* @return true if running, false if not
|
|
*)
|
|
|
|
var
|
|
libvlc_media_discoverer_is_running : function(
|
|
p_mdis : libvlc_media_discoverer_t_ptr
|
|
) : Integer; cdecl;
|
|
|
|
(*
|
|
*******************************************************************************
|
|
* libvlc_vlm.h
|
|
*******************************************************************************
|
|
*)
|
|
|
|
(**
|
|
* Release the vlm instance related to the given libvlc_instance_t
|
|
*
|
|
* param p_instance the instance
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_release : procedure(
|
|
p_instance : libvlc_instance_t_ptr
|
|
); cdecl;
|
|
|
|
(**
|
|
* Add a broadcast, with one input.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the name of the new broadcast
|
|
* param psz_input the input MRL
|
|
* param psz_output the output MRL (the parameter to the "sout" variable)
|
|
* param i_options number of additional options
|
|
* param ppsz_options additional options
|
|
* param b_enabled boolean for enabling the new broadcast
|
|
* param b_loop Should this broadcast be played in loop ?
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_add_broadcast : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
psz_input : PAnsiChar;
|
|
psz_output : PAnsiChar;
|
|
i_options : Integer;
|
|
ppsz_options : PPAnsiChar;
|
|
b_enabled : Integer;
|
|
b_loop : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Add a vod, with one input.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the name of the new vod media
|
|
* param psz_input the input MRL
|
|
* param i_options number of additional options
|
|
* param ppsz_options additional options
|
|
* param b_enabled boolean for enabling the new vod
|
|
* param psz_mux the muxer of the vod media
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_add_vod : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
psz_input : PAnsiChar;
|
|
i_options : Integer;
|
|
ppsz_options : PPAnsiChar;
|
|
b_enabled : Integer;
|
|
psz_mux : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Delete a media (VOD or broadcast).
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the media to delete
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_del_media : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Enable or disable a media (VOD or broadcast).
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the media to work on
|
|
* param b_enabled the new status
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_set_enabled : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
b_enabled : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set the output for a media.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the media to work on
|
|
* param psz_output the output MRL (the parameter to the "sout" variable)
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_set_output : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
psz_output : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set a media's input MRL. This will delete all existing inputs and
|
|
* add the specified one.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the media to work on
|
|
* param psz_input the input MRL
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_set_input : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
psz_input : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Add a media's input MRL. This will add the specified one.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the media to work on
|
|
* param psz_input the input MRL
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_add_input : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
psz_input : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set a media's loop status.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the media to work on
|
|
* param b_loop the new status
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_set_loop : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
b_loop : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Set a media's vod muxer.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the media to work on
|
|
* param psz_mux the new muxer
|
|
* return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_set_mux : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
psz_mux : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Edit the parameters of a media. This will delete all existing inputs and
|
|
* add the specified one.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the name of the new broadcast
|
|
* param psz_input the input MRL
|
|
* param psz_output the output MRL (the parameter to the "sout" variable)
|
|
* param i_options number of additional options
|
|
* param ppsz_options additional options
|
|
* param b_enabled boolean for enabling the new broadcast
|
|
* param b_loop Should this broadcast be played in loop ?
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_change_media : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
psz_input : PAnsiChar;
|
|
psz_output : PAnsiChar;
|
|
i_options : Integer;
|
|
ppsz_options : PPAnsiChar;
|
|
b_enabled : Integer;
|
|
b_loop : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Play the named broadcast.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the name of the broadcast
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_play_media : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Stop the named broadcast.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the name of the broadcast
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_stop_media : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Pause the named broadcast.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the name of the broadcast
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_pause_media : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Seek in the named broadcast.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the name of the broadcast
|
|
* param f_percentage the percentage to seek to
|
|
* @return 0 on success, -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_seek_media : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
f_percentage : Single // float
|
|
) : Integer; cdecl;
|
|
|
|
|
|
(**
|
|
* Return information about the named media as a JSON
|
|
* string representation.
|
|
*
|
|
* This function is mainly intended for debugging use,
|
|
* if you want programmatic access to the state of
|
|
* a vlm_media_instance_t, please use the corresponding
|
|
* libvlc_vlm_get_media_instance_xxx -functions.
|
|
* Currently there are no such functions available for
|
|
* vlm_media_t though.
|
|
*
|
|
* param p_instance the instance
|
|
* param psz_name the name of the media,
|
|
* if the name is an empty string, all media is described
|
|
* @return string with information about named media, or NULL on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_show_media : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar
|
|
) : PAnsiChar; cdecl;
|
|
|
|
(**
|
|
* Get vlm_media instance position by name or instance id
|
|
*
|
|
* param p_instance a libvlc instance
|
|
* param psz_name name of vlm media instance
|
|
* param i_instance instance id
|
|
* @return position as float or -1. on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_get_media_instance_position : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
i_instance : Integer
|
|
) : Single; cdecl;
|
|
|
|
(**
|
|
* Get vlm_media instance time by name or instance id
|
|
*
|
|
* param p_instance a libvlc instance
|
|
* param psz_name name of vlm media instance
|
|
* param i_instance instance id
|
|
* @return time as integer or -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_get_media_instance_time : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
i_instance : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get vlm_media instance length by name or instance id
|
|
*
|
|
* param p_instance a libvlc instance
|
|
* param psz_name name of vlm media instance
|
|
* param i_instance instance id
|
|
* @return length of media item or -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_get_media_instance_length : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
i_instance : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get vlm_media instance playback rate by name or instance id
|
|
*
|
|
* param p_instance a libvlc instance
|
|
* param psz_name name of vlm media instance
|
|
* param i_instance instance id
|
|
* @return playback rate or -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_get_media_instance_rate : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
i_instance : Integer
|
|
) : Integer; cdecl;
|
|
|
|
{$IFDEF IS_0_GT_1}
|
|
(**
|
|
* Get vlm_media instance title number by name or instance id
|
|
* bug will always return 0
|
|
*
|
|
* param p_instance a libvlc instance
|
|
* param psz_name name of vlm media instance
|
|
* param i_instance instance id
|
|
* @return title as number or -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_get_media_instance_title : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
i_instance : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Get vlm_media instance chapter number by name or instance id
|
|
* bug will always return 0
|
|
*
|
|
* param p_instance a libvlc instance
|
|
* param psz_name name of vlm media instance
|
|
* param i_instance instance id
|
|
* @return chapter as number or -1 on error
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_get_media_instance_chapter : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
i_instance : Integer
|
|
) : Integer; cdecl;
|
|
|
|
(**
|
|
* Is libvlc instance seekable ?
|
|
* bug will always return 0
|
|
*
|
|
* param p_instance a libvlc instance
|
|
* param psz_name name of vlm media instance
|
|
* param i_instance instance id
|
|
* @return 1 if seekable, 0 if not, -1 if media does not exist
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_get_media_instance_seekable : function(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_name : PAnsiChar;
|
|
i_instance : Integer
|
|
) : Integer; cdecl;
|
|
{$ENDIF}
|
|
|
|
(**
|
|
* Get libvlc_event_manager from a vlm media.
|
|
* The p_event_manager is immutable, so you don't have to hold the lock
|
|
*
|
|
* param p_instance a libvlc instance
|
|
* @return libvlc_event_manager
|
|
*)
|
|
|
|
var
|
|
libvlc_vlm_get_event_manager : function(
|
|
p_instance : libvlc_instance_t_ptr
|
|
) : libvlc_event_manager_t_ptr; cdecl;
|
|
|
|
(*
|
|
*******************************************************************************
|
|
* decpecated.h
|
|
*******************************************************************************
|
|
*)
|
|
|
|
{$IFDEF USE_VLC_DEPRECATED_API}
|
|
|
|
(**
|
|
* Start playing (if there is any item in the playlist).
|
|
*
|
|
* Additionnal playlist item options can be specified for addition to the
|
|
* item before it is played.
|
|
*
|
|
* param p_instance the playlist instance
|
|
* param i_id the item to play. If this is a negative number, the next
|
|
* item will be selected. Otherwise, the item with the given ID will be
|
|
* played
|
|
* param i_options the number of options to add to the item
|
|
* param ppsz_options the options to add to the item
|
|
*)
|
|
|
|
var
|
|
libvlc_playlist_play : procedure(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
i_id : Integer;
|
|
i_options : Integer;
|
|
ppsz_options : PPAnsiChar
|
|
); cdecl;
|
|
|
|
{$ENDIF}
|
|
|
|
{$IFDEF MSWINDOWS}
|
|
{$IFDEF LCLGTK2}
|
|
|
|
function GDK_WINDOW_HWND(window: Pointer) : THandle;
|
|
|
|
{$ENDIF}
|
|
{$ENDIF}
|
|
|
|
procedure libvlc_media_player_set_display_window(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
window_handle : THandle
|
|
);
|
|
|
|
{$IFNDEF HAS_UTF8_ENCODE_DECODE}
|
|
|
|
function Utf8Encode(const sWS: WideString): AnsiString;
|
|
function Utf8Decode(const sUTF8: AnsiString): WideString;
|
|
|
|
{$ENDIF}
|
|
|
|
implementation
|
|
|
|
{$IFDEF DELPHI_XE6_UP}
|
|
uses
|
|
System.AnsiStrings;
|
|
{$ENDIF}
|
|
|
|
const
|
|
{$IFDEF UNIX}
|
|
LIBVLC_DLL_NAME = 'libvlc.' + SharedSuffix; // from dynlibs.inc
|
|
{$ENDIF}
|
|
{$IFDEF MSWINDOWS}
|
|
LIBVLC_DLL_NAME = 'libvlc.dll';
|
|
{$ENDIF}
|
|
|
|
var
|
|
libvlc_handle : THandle;
|
|
|
|
function libvlc_delay(pts : Int64) : Int64;{$IFDEF DELPHI2005_UP}inline;{$ENDIF}
|
|
begin
|
|
Result := pts - libvlc_clock();
|
|
end;
|
|
|
|
{$IFNDEF HAS_UTF8_ENCODE_DECODE}
|
|
|
|
// for Delphi 4 and Delphi 5
|
|
|
|
function Utf8Encode(const sWS: WideString): AnsiString;
|
|
var
|
|
dLeng : Integer;
|
|
sIndx : Integer;
|
|
sCode : Word;
|
|
begin
|
|
Result := '';
|
|
if (Length(sWS) = 0) then exit;
|
|
SetLength(Result, Length(sWS) * 3); // assume, max 3 bytes per char
|
|
dLeng := 0;
|
|
for sIndx := 1 to Length(sWS) do
|
|
begin
|
|
sCode := Ord(sWS[sIndx]);
|
|
// 0x00 .. 0x7F - 0xxxxxxx
|
|
if (sCode <= $007F) then // (sCode >= $0000) and
|
|
begin
|
|
Inc(dLeng);
|
|
Result[dLeng] := AnsiChar(sCode and $7F);
|
|
end
|
|
// 0x80 .. 0x7FF - 110xxxxx 10xxxxxx
|
|
else if (sCode >= $0080) and (sCode <= $07FF) then
|
|
begin
|
|
Inc(dLeng);
|
|
Result[dLeng] := AnsiChar($C0 or ((sCode shr 6) and $1F));
|
|
Inc(dLeng);
|
|
Result[dLeng] := AnsiChar($80 or (sCode and $3F));
|
|
continue;
|
|
end
|
|
// 0x800 .. 0xFFFF - 1110xxxx 10xxxxxx 10xxxxxx
|
|
else if (sCode >= $0800) then // and (sCode <= $FFFF)
|
|
begin // $0800 .. $FFFF
|
|
Inc(dLeng);
|
|
Result[dLeng] := AnsiChar($E0 or ((sCode shr 12) and $0F));
|
|
Inc(dLeng);
|
|
Result[dLeng] := AnsiChar($80 or ((sCode shr 6) and $3F));
|
|
Inc(dLeng);
|
|
Result[dLeng] := AnsiChar($80 or (sCode and $3F));
|
|
end;
|
|
// 0x0010000 .. 0x001FFFFF - 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|
|
// 0x0200000 .. 0x03FFFFFF - 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
|
|
// 0x4000000 .. 0x7FFFFFFF - 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
|
|
end;
|
|
// correct length
|
|
SetLength(Result, dLeng);
|
|
end;
|
|
|
|
function Utf8Decode(const sUTF8: AnsiString): WideString;
|
|
var
|
|
sTmp0 : Word;
|
|
sTmp1 : Word;
|
|
sTmp2 : Word;
|
|
sTmp3 : Word;
|
|
sTmp4 : Word;
|
|
sTmp5 : Word;
|
|
sIndx : Integer;
|
|
sLeft : Integer;
|
|
dLeng : Integer;
|
|
begin
|
|
Result := '';
|
|
if (Length(sUTF8) = 0) then exit;
|
|
SetLength(Result, Length(sUTF8));
|
|
sIndx := 1;
|
|
sLeft := Length(sUTF8);
|
|
dLeng := 0;
|
|
while (sLeft > 0) do
|
|
begin
|
|
sTmp0 := Ord(sUTF8[sIndx]);
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
// 1-byte code => 0x00 do 0x7F - 0xxxxxxx
|
|
if ((sTmp0 and $80) = 0) then
|
|
begin
|
|
Inc(dLeng);
|
|
Result[dLeng] := WideChar(sTmp0);
|
|
continue;
|
|
end;
|
|
// 2-byte code => 0x80 .. 0x7FF - 110x xxxx 10xx xxxx
|
|
if (sLeft < 1) then break;
|
|
if ((sTmp0 and $E0) = $C0) then
|
|
begin
|
|
sTmp1 := Ord(sUTF8[sIndx]);
|
|
if (sTmp1 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
Inc(dLeng);
|
|
Result[dLeng] := WideChar(((sTmp0 and $1F) shl 6) or (sTmp1 and $3F));
|
|
continue;
|
|
end;
|
|
// 3-byte code => 0x800 .. 0xFFFF - 1110 xxxx 10xx xxxx 10xx xxxx
|
|
if (sLeft < 2) then break;
|
|
if ((sTmp0 and $E0) = $E0) then
|
|
begin
|
|
sTmp1 := Ord(sUTF8[sIndx]);
|
|
if (sTmp1 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
sTmp2 := Ord(sUTF8[sIndx]);
|
|
if (sTmp2 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
Inc(dLeng);
|
|
Result[dLeng] := WideChar(((sTmp0 and $0F) shl 12) or ((sTmp1 and $3F) shl 6) or (sTmp2 and $3F));
|
|
continue;
|
|
end;
|
|
// 4-byte code => 0x0010000 .. 0x001FFFFF - 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx
|
|
if (sLeft < 3) then break;
|
|
if ((sTmp0 and $F8) = $F0) then
|
|
begin
|
|
sTmp1 := Ord(sUTF8[sIndx]);
|
|
if (sTmp1 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
sTmp2 := Ord(sUTF8[sIndx]);
|
|
if (sTmp2 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
sTmp3 := Ord(sUTF8[sIndx]);
|
|
if (sTmp3 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
Result[dLeng] := '?';
|
|
continue;
|
|
end;
|
|
// 5-byte code => 0x0200000 .. 0x03FFFFFF - 1111 10xx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx
|
|
if (sLeft < 4) then break;
|
|
if ((sTmp0 and $FC) = $F8) then
|
|
begin
|
|
sTmp1 := Ord(sUTF8[sIndx]);
|
|
if (sTmp1 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
sTmp2 := Ord(sUTF8[sIndx]);
|
|
if (sTmp2 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
sTmp3 := Ord(sUTF8[sIndx]);
|
|
if (sTmp3 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
sTmp4 := Ord(sUTF8[sIndx]);
|
|
if (sTmp4 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
Result[dLeng] := '?';
|
|
continue;
|
|
end;
|
|
// 6-byte code => 0x4000000 .. 0x7FFFFFFF - 1111 110x 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx
|
|
if (sLeft < 5) then break;
|
|
if ((sTmp0 and $FE) = $FC) then
|
|
begin
|
|
sTmp1 := Ord(sUTF8[sIndx]);
|
|
if (sTmp1 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
sTmp2 := Ord(sUTF8[sIndx]);
|
|
if (sTmp2 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
sTmp3 := Ord(sUTF8[sIndx]);
|
|
if (sTmp3 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
sTmp4 := Ord(sUTF8[sIndx]);
|
|
if (sTmp4 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
sTmp5 := Ord(sUTF8[sIndx]);
|
|
if (sTmp5 and $C0) <> $80 then break;
|
|
Inc(sIndx);
|
|
Dec(sLeft);
|
|
|
|
Result[dLeng] := '?';
|
|
continue;
|
|
end;
|
|
break;
|
|
end;
|
|
// correct length
|
|
SetLength(Result, dLeng);
|
|
end;
|
|
|
|
{$ENDIF}
|
|
|
|
{$IFNDEF HAS_FILE_EXISTS}
|
|
|
|
function FileExists(fileName : string) : Boolean;
|
|
var
|
|
sr : TSearchRec;
|
|
re : Integer;
|
|
begin
|
|
re := SysUtils.FindFirst(fileName, faAnyFile, sr);
|
|
SysUtils.FindClose(sr);
|
|
Result := (re = 0) and ((sr.Attr and FILE_ATTRIBUTE_DIRECTORY) = 0);
|
|
end;
|
|
|
|
{$ENDIF}
|
|
|
|
{$IFNDEF HAS_DIRECTORY_EXISTS}
|
|
|
|
function DirectoryExists(fileName : string) : Boolean;
|
|
var
|
|
sr : TSearchRec;
|
|
re : Integer;
|
|
begin
|
|
re := SysUtils.FindFirst(fileName, faAnyFile, sr);
|
|
SysUtils.FindClose(sr);
|
|
Result := (re = 0) and ((sr.Attr and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY);
|
|
end;
|
|
|
|
{$ENDIF}
|
|
|
|
function libvlc_get_install_path() : string;
|
|
{$IFDEF UNIX}
|
|
// Linux searches a library in the paths of the environment variable
|
|
// LD_LIBRARY_PATH, then in /lib, then /usr/lib and finally the paths of
|
|
// /etc/ld.so.conf.
|
|
const
|
|
pathLst : array[0..3] of string = (
|
|
'/usr/lib',
|
|
'/lib',
|
|
'/usr/local/lib',
|
|
'/Applications/VLC.app/Contents/MacOS/lib'
|
|
);
|
|
var
|
|
pathIdx : Integer;
|
|
sr : TSearchRec;
|
|
re : Integer;
|
|
begin
|
|
for pathIdx := Low(pathLst) to High(pathLst) do
|
|
begin
|
|
if not DirectoryExists(pathLst[pathIdx]) then continue;
|
|
// look for libvlc.so
|
|
if FileExists(pathLst[pathIdx] + PathDelim + LIBVLC_DLL_NAME) then
|
|
begin
|
|
Result := pathLst[pathIdx];
|
|
exit;
|
|
end;
|
|
// look for libvlc.so.x.x
|
|
re := SysUtils.FindFirst(pathLst[pathIdx] + PathDelim + LIBVLC_DLL_NAME + '.*', faAnyFile, sr);
|
|
FindClose(sr);
|
|
if (re = 0) then
|
|
begin
|
|
Result := pathLst[pathIdx];
|
|
exit;
|
|
end;
|
|
end;
|
|
Result := '';
|
|
end;
|
|
{$ENDIF}
|
|
|
|
{$IFDEF MSWINDOWS}
|
|
var
|
|
reKey : HKEY;
|
|
reRes : Longint;
|
|
vType : DWORD;
|
|
vSize : DWORD;
|
|
vBuff : packed array[0..2047] of Char;
|
|
begin
|
|
Result := '';
|
|
FillChar(vBuff, sizeof(vBuff), 0);
|
|
reKey := INVALID_HANDLE_VALUE;
|
|
reRes := RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'Software\VideoLAN\VLC', 0, KEY_READ, reKey);
|
|
if (reRes = ERROR_SUCCESS) then
|
|
begin
|
|
vSize := sizeof(vBuff);
|
|
vType := REG_SZ;
|
|
reRes := RegQueryValueEx(reKey, 'InstallDir', NIL, PDWORD(@vType), Pointer(@vBuff), PDWORD(@vSize));
|
|
if (reRes = ERROR_SUCCESS) and (vType = REG_SZ) then
|
|
begin
|
|
Result := string(PChar(@vBuff));
|
|
end;
|
|
end;
|
|
RegCloseKey(reKey);
|
|
end;
|
|
{$ENDIF}
|
|
|
|
function libvlc_get_install_file(libvlc_install_path : string) : string;
|
|
var
|
|
sr : TSearchRec;
|
|
re : Integer;
|
|
begin
|
|
if (DirectoryExists(libvlc_install_path)) then
|
|
begin
|
|
Result := LIBVLC_DLL_NAME;
|
|
// look for libvlc.so
|
|
if FileExists(libvlc_install_path + PathDelim + Result) then exit;
|
|
// look for libvlc.so.x.x
|
|
re := SysUtils.FindFirst(libvlc_install_path + PathDelim + LIBVLC_DLL_NAME + '.*', faAnyFile, sr);
|
|
SysUtils.FindClose(sr);
|
|
if (re = 0) then
|
|
begin
|
|
Result := sr.Name;
|
|
exit;
|
|
end;
|
|
end;
|
|
Result := '';
|
|
end;
|
|
|
|
function libvlc_dll_get_proc_addr(
|
|
var addr : Pointer;
|
|
const name : PAnsiChar
|
|
) : Boolean;
|
|
begin
|
|
{$IFDEF UNIX}
|
|
addr := GetProcedureAddress(libvlc_handle, name);
|
|
{$ENDIF}
|
|
{$IFDEF MSWINDOWS}
|
|
addr := GetProcAddress(libvlc_handle, name);
|
|
{$ENDIF}
|
|
Result := (addr <> NIL);
|
|
if not Result then
|
|
begin
|
|
libvlc_dynamic_dll_error := 'Entry point "' + name + '" not found!';
|
|
end;
|
|
end;
|
|
|
|
procedure require_version(function_name, require_version: string);
|
|
begin
|
|
{$IFDEF MSWINDOWS}
|
|
MessageBox(0, PChar(function_name + ' require libvlc ' + require_version), 'libvlc', MB_ICONHAND or MB_OK);
|
|
{$ELSE}
|
|
ShowMessage(function_name + ' require libvlc ' + require_version);
|
|
{$ENDIF}
|
|
end;
|
|
|
|
{$HINTS OFF}
|
|
|
|
{$IFDEF DELPHI2005_UP}{$REGION '1.1.0'}{$ENDIF}
|
|
|
|
function require_version_libvlc_errmsg() : PAnsiChar; cdecl;
|
|
begin
|
|
Result := NIL;
|
|
require_version('libvlc_errmsg', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_clearerr(); cdecl;
|
|
begin
|
|
require_version('version_libvlc_clearerr', '1.1.0');
|
|
end;
|
|
|
|
{$IFDEF FPC}
|
|
function require_version_libvlc_printerr(
|
|
fmt : PAnsiChar;
|
|
arg : Pointer
|
|
) : PAnsiChar; cdecl;
|
|
{$ELSE}
|
|
function require_version_libvlc_printerr(
|
|
fmt : PAnsiChar;
|
|
arg : array of const
|
|
) : PAnsiChar; cdecl;
|
|
{$ENDIF}
|
|
begin
|
|
Result := NIL;
|
|
require_version('libvlc_printerr', '1.1.0');
|
|
end;
|
|
|
|
{$IFNDEF FPC}
|
|
function require_version_libvlc_vprinterr(fmt : PAnsiChar; ap : array of const) : PAnsiChar; cdecl;
|
|
begin
|
|
Result := NIL;
|
|
require_version('libvlc_vprinterr', '1.1.0');
|
|
end;
|
|
{$ENDIF}
|
|
|
|
function require_version_libvlc_video_get_logo_int(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_logo_option_t) : Integer; cdecl;
|
|
begin
|
|
Result := -1;
|
|
require_version('libvlc_video_get_logo_int', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_video_set_logo_int(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_logo_option_t;
|
|
value : Integer); cdecl;
|
|
begin
|
|
require_version('libvlc_video_set_logo_int', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_video_set_logo_string(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_logo_option_t;
|
|
psz_value : PAnsiChar); cdecl;
|
|
begin
|
|
require_version('libvlc_video_set_logo_string', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_video_get_marquee_int(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_marquee_option_t) : Integer; cdecl;
|
|
begin
|
|
Result := -1;
|
|
require_version('libvlc_video_get_marquee_int', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_video_get_marquee_string(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_marquee_option_t) : PAnsiChar; cdecl;
|
|
begin
|
|
Result := NIL;
|
|
require_version('libvlc_video_get_marquee_string', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_video_set_marquee_int(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_marquee_option_t;
|
|
i_val : Integer); cdecl;
|
|
begin
|
|
require_version('libvlc_video_set_marquee_int', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_video_set_marquee_string(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : libvlc_video_marquee_option_t;
|
|
psz_text : PAnsiChar); cdecl;
|
|
begin
|
|
require_version('libvlc_video_set_marquee_string', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_video_get_cursor(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
num : LongWord;
|
|
var px, py : Integer) : Integer; cdecl;
|
|
begin
|
|
Result := -1;
|
|
require_version('libvlc_video_get_cursor', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_video_get_size(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
num : LongWord;
|
|
var px, py : LongWord) : Integer; cdecl;
|
|
begin
|
|
Result := -1;
|
|
require_version('libvlc_video_get_size', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_video_set_key_input(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
keys_on : LongWord); cdecl;
|
|
begin
|
|
require_version('libvlc_video_set_key_input', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_video_set_mouse_input(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
mouse_on : LongWord); cdecl;
|
|
begin
|
|
require_version('libvlc_video_set_mouse_input', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_video_set_deinterlace(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
psz_mode : PAnsiChar
|
|
); cdecl;
|
|
begin
|
|
require_version('libvlc_video_set_deinterlace', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_media_player_next_frame(
|
|
p_mi : libvlc_media_player_t_ptr); cdecl;
|
|
begin
|
|
require_version('libvlc_media_player_next_frame', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_media_list_player_set_playback_mode(
|
|
p_mlp : libvlc_media_list_player_t_ptr;
|
|
e_mode : libvlc_playback_mode_t
|
|
); cdecl;
|
|
begin
|
|
require_version('libvlc_media_list_player_set_playback_mode', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_media_list_player_previous(
|
|
p_mlp : libvlc_media_list_player_t_ptr
|
|
) : Integer; cdecl;
|
|
begin
|
|
Result := -1;
|
|
require_version('libvlc_media_list_player_previous', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_media_list_player_event_manager(
|
|
p_mlp : libvlc_media_list_player_t_ptr) : libvlc_event_manager_t_ptr; cdecl;
|
|
begin
|
|
Result := NIL;
|
|
require_version('libvlc_media_list_player_event_manager', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_vlm_get_event_manager(
|
|
p_instance : libvlc_instance_t_ptr) : libvlc_event_manager_t_ptr; cdecl;
|
|
begin
|
|
Result := NIL;
|
|
require_version('libvlc_vlm_get_event_manager', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_media_parse(
|
|
p_md : libvlc_media_t_ptr); cdecl;
|
|
begin
|
|
require_version('libvlc_media_parse', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_media_parse_async(
|
|
p_md : libvlc_media_t_ptr); cdecl;
|
|
begin
|
|
require_version('libvlc_media_parse_async', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_media_is_parsed(
|
|
p_md : libvlc_media_t_ptr) : Integer; cdecl;
|
|
begin
|
|
Result := 0;
|
|
require_version('libvlc_media_is_parsed', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_media_new_location(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
psz_mrl : PAnsiChar) : libvlc_media_t_ptr; cdecl;
|
|
begin
|
|
Result := NIL;
|
|
require_version('libvlc_media_new_location', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_media_new_path(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
path : PAnsiChar) : libvlc_media_t_ptr; cdecl;
|
|
begin
|
|
Result := NIL;
|
|
require_version('libvlc_media_new_path', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_media_add_option_flag(
|
|
p_md : libvlc_media_t_ptr;
|
|
ppsz_options : PAnsiChar;
|
|
i_flags : input_item_option_e); cdecl;
|
|
begin
|
|
require_version('libvlc_media_add_option_flag', '1.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_media_set_meta(
|
|
p_md : libvlc_media_t_ptr;
|
|
e_meta : libvlc_meta_t;
|
|
psz_value : PAnsiChar); cdecl;
|
|
begin
|
|
require_version('libvlc_media_set_meta', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_media_save_meta(
|
|
p_md : libvlc_media_t_ptr) : Integer; cdecl;
|
|
begin
|
|
Result := 0;
|
|
require_version('libvlc_media_save_meta', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_media_get_stats(
|
|
p_md : libvlc_media_t_ptr;
|
|
p_stats : libvlc_media_stats_t_ptr) : Integer; cdecl;
|
|
begin
|
|
Result := 0;
|
|
require_version('libvlc_media_get_stats', '1.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_media_get_tracks_info(
|
|
p_md : libvlc_media_t_ptr;
|
|
var tracks : libvlc_media_track_info_t_ptr) : Integer; cdecl;
|
|
begin
|
|
Result := 0;
|
|
require_version('libvlc_media_get_tracks_info', '1.1.0');
|
|
end;
|
|
|
|
{$IFDEF DELPHI2005_UP}{$ENDREGION}{$ENDIF}
|
|
|
|
{$IFDEF DELPHI2005_UP}{$REGION '1.1.1'}{$ENDIF}
|
|
|
|
procedure require_version_libvlc_video_set_format(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
chroma : PAnsiChar;
|
|
width : Longword;
|
|
height : Longword; pitch : Longword); cdecl;
|
|
begin
|
|
require_version('libvlc_video_set_format', '1.1.1');
|
|
end;
|
|
|
|
procedure require_version_libvlc_set_user_agent(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
name : PAnsiChar;
|
|
http : PAnsiChar); cdecl;
|
|
begin
|
|
require_version('libvlc_set_user_agent', '1.1.1');
|
|
end;
|
|
|
|
procedure require_version_libvlc_video_set_callbacks(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
lock : libvlc_video_lock_cb;
|
|
unlock : libvlc_video_unlock_cb;
|
|
display : libvlc_video_display_cb;
|
|
opaque : Pointer); cdecl;
|
|
begin
|
|
require_version('libvlc_video_set_callbacks', '1.1.1');
|
|
end;
|
|
|
|
function require_version_libvlc_audio_get_delay(
|
|
p_mi : libvlc_media_player_t_ptr) : Int64; cdecl;
|
|
begin
|
|
Result := 0;
|
|
require_version('libvlc_audio_get_delay', '1.1.1');
|
|
end;
|
|
|
|
function require_version_libvlc_audio_set_delay(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_delay : Int64) : Integer; cdecl;
|
|
begin
|
|
Result := -1;
|
|
require_version('libvlc_audio_set_delay', '1.1.1');
|
|
end;
|
|
|
|
function require_version_libvlc_video_get_adjust_int(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : LongWord) : Integer; cdecl;
|
|
begin
|
|
Result := 0;
|
|
require_version('libvlc_video_get_adjust_int', '1.1.1');
|
|
end;
|
|
|
|
procedure require_version_libvlc_video_set_adjust_int(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : LongWord;
|
|
value : Integer); cdecl;
|
|
begin
|
|
require_version('libvlc_video_set_adjust_int', '1.1.1');
|
|
end;
|
|
|
|
function require_version_libvlc_video_get_adjust_float(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : LongWord) : Single; cdecl;
|
|
begin
|
|
Result := 0;
|
|
require_version('libvlc_video_get_adjust_float', '1.1.1');
|
|
end;
|
|
|
|
procedure require_version_libvlc_video_set_adjust_float(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
option : LongWord;
|
|
value : Single); cdecl;
|
|
begin
|
|
require_version('libvlc_video_set_adjust_float', '1.1.1');
|
|
end;
|
|
|
|
procedure require_version_libvlc_media_player_set_pause(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
do_pause : Integer); cdecl;
|
|
begin
|
|
require_version('libvlc_media_player_set_pause', '1.1.1');
|
|
end;
|
|
|
|
{$IFDEF DELPHI2005_UP}{$ENDREGION}{$ENDIF}
|
|
|
|
{$IFDEF DELPHI2005_UP}{$REGION '1.1.5'}{$ENDIF}
|
|
|
|
function require_version_libvlc_media_new_fd(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
fd : Integer) : libvlc_media_t_ptr; cdecl;
|
|
begin
|
|
Result := NIL;
|
|
require_version('libvlc_media_new_fd', '1.1.5');
|
|
end;
|
|
|
|
{$IFDEF DELPHI2005_UP}{$ENDREGION}{$ENDIF}
|
|
|
|
{$IFDEF DELPHI2005_UP}{$REGION '2.0.0'}{$ENDIF}
|
|
|
|
function require_version_libvlc_video_filter_list_get(
|
|
p_instance : libvlc_instance_t_ptr) : libvlc_module_description_t_ptr; cdecl;
|
|
begin
|
|
Result := NIL;
|
|
require_version('libvlc_video_filter_list_get', '2.0.0');
|
|
end;
|
|
|
|
function require_version_libvlc_audio_filter_list_get(
|
|
p_instance : libvlc_instance_t_ptr) : libvlc_module_description_t_ptr; cdecl;
|
|
begin
|
|
Result := NIL;
|
|
require_version('libvlc_audio_filter_list_get', '2.0.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_module_description_list_release(
|
|
p_list : libvlc_module_description_t_ptr); cdecl;
|
|
begin
|
|
require_version('libvlc_module_description_list_release', '2.0.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_set_exit_handler(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
cb : libvlc_exit_callback_t;
|
|
opaque : Pointer); cdecl;
|
|
begin
|
|
require_version('libvlc_set_exit_handler', '2.0.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_free(
|
|
ptr : Pointer); cdecl;
|
|
begin
|
|
require_version('libvlc_free', '2.0.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_video_set_format_callbacks(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
setup : libvlc_video_format_cb;
|
|
cleanup : libvlc_video_cleanup_cb); cdecl;
|
|
begin
|
|
require_version('libvlc_video_set_format_callbacks', '2.0.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_audio_set_callbacks(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
play : libvlc_audio_play_cb;
|
|
pause : libvlc_audio_pause_cb;
|
|
resume : libvlc_audio_resume_cb;
|
|
flush : libvlc_audio_flush_cb;
|
|
drain : libvlc_audio_drain_cb;
|
|
opaque : Pointer ); cdecl;
|
|
begin
|
|
require_version('libvlc_audio_set_callbacks', '2.0.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_audio_set_volume_callback(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
set_volume : libvlc_audio_set_volume_cb); cdecl;
|
|
begin
|
|
require_version('libvlc_audio_set_volume_callback', '2.0.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_audio_set_format_callbacks(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
setup : libvlc_audio_setup_cb;
|
|
cleanup : libvlc_audio_cleanup_cb ); cdecl;
|
|
begin
|
|
require_version('libvlc_audio_set_format_callbacks', '2.0.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_audio_set_format(
|
|
p_mp : libvlc_media_player_t_ptr;
|
|
const format : PAnsiChar;
|
|
rate : Cardinal;
|
|
channels : Cardinal); cdecl;
|
|
begin
|
|
require_version('libvlc_audio_set_format', '2.0.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_media_player_navigate(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
navigate : libvlc_navigate_mode_t ); cdecl;
|
|
begin
|
|
require_version('libvlc_media_player_navigate', '2.0.0');
|
|
end;
|
|
|
|
function require_version_libvlc_video_get_spu_delay(
|
|
p_mi : libvlc_media_player_t_ptr): Int64; cdecl;
|
|
begin
|
|
Result := 0;
|
|
require_version('libvlc_video_get_spu_delay', '2.0.0');
|
|
end;
|
|
|
|
function require_version_libvlc_video_set_spu_delay(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
i_delay : Int64) : Integer; cdecl;
|
|
begin
|
|
Result := -1;
|
|
require_version('libvlc_video_set_spu_delay', '2.0.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_media_list_player_retain(
|
|
p_mlp : libvlc_media_list_player_t_ptr); cdecl;
|
|
begin
|
|
require_version('libvlc_media_list_player_retain', '2.0.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_track_description_list_release(
|
|
p_track_description : libvlc_track_description_t_ptr); cdecl;
|
|
begin
|
|
require_version('libvlc_track_description_list_release', '2.0.0');
|
|
end;
|
|
|
|
{$IFDEF DELPHI2005_UP}{$ENDREGION}{$ENDIF}
|
|
|
|
{$IFDEF DELPHI2005_UP}{$REGION '2.1.0'}{$ENDIF}
|
|
|
|
procedure require_version_libvlc_media_player_set_video_title_display(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
position : libvlc_position_t;
|
|
timeout : LongWord); cdecl;
|
|
begin
|
|
require_version('libvlc_media_player_set_video_title_display', '2.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_audio_output_device_list_get(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
aout : PAnsiChar
|
|
) : libvlc_audio_output_device_t_ptr; cdecl;
|
|
begin
|
|
Result := NIL;
|
|
require_version('libvlc_audio_output_device_list_get', '2.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_audio_output_device_list_release(
|
|
p_list : libvlc_audio_output_device_t_ptr
|
|
); cdecl;
|
|
begin
|
|
require_version('libvlc_audio_output_device_list_release', '2.1.0');
|
|
end;
|
|
|
|
function require_version_libvlc_media_tracks_get(
|
|
p_md : libvlc_media_t_ptr;
|
|
var tracks : Pointer
|
|
) : LongWord; cdecl;
|
|
begin
|
|
Result := 0;
|
|
require_version('libvlc_media_tracks_get', '2.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_media_tracks_release(
|
|
var tracks : Pointer;
|
|
i_count : LongWord
|
|
); cdecl;
|
|
begin
|
|
require_version('libvlc_media_tracks_release', '2.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_set_app_id (
|
|
p_instance : libvlc_instance_t_ptr;
|
|
id : PAnsiChar;
|
|
version : PAnsiChar;
|
|
icon : PAnsiChar
|
|
); cdecl;
|
|
begin
|
|
require_version('libvlc_set_app_id', '2.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_log_get_context(
|
|
ctx : libvlc_log_t_ptr;
|
|
var module : PAnsiChar;
|
|
var file_name : PANsiChar;
|
|
var line : LongWord
|
|
); cdecl;
|
|
begin
|
|
require_version('log_get_context', '2.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_log_get_object(
|
|
ctx : libvlc_log_t_ptr;
|
|
var name : PAnsiChar;
|
|
var header : PAnsiChar;
|
|
var id : Pointer
|
|
); cdecl;
|
|
begin
|
|
require_version('libvlc_log_get_object', '2.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_log_set(
|
|
p_instance : libvlc_instance_t_ptr;
|
|
cb : libvlc_log_cb;
|
|
data : Pointer
|
|
); cdecl;
|
|
begin
|
|
require_version('libvlc_log_unset', '2.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_log_unset(
|
|
p_instance: libvlc_instance_t_ptr
|
|
); cdecl;
|
|
begin
|
|
require_version('libvlc_log_unset', '2.1.0');
|
|
end;
|
|
|
|
procedure require_version_libvlc_log_set_file(
|
|
p_instance: libvlc_instance_t_ptr;
|
|
stream : THandle
|
|
); cdecl;
|
|
begin
|
|
require_version('require_version_libvlc_log_set_file', '2.1.0');
|
|
end;
|
|
|
|
{$IFDEF DELPHI2005_UP}{$ENDREGION}{$ENDIF}
|
|
|
|
{$HINTS ON}
|
|
|
|
function read_dec_number(var ptr : PAnsiChar) : LongWord;
|
|
begin
|
|
Result := 0;
|
|
if (ptr <> NIL) then
|
|
begin
|
|
while ((ptr^ <> #00) and (ptr^ > '0') and (ptr^ <= '9')) do
|
|
begin
|
|
Result := Result * 10 + LongWord(Byte(ptr^) - 48);
|
|
Inc(ptr);
|
|
end;
|
|
if (ptr^ = '.') then Inc(ptr);
|
|
end;
|
|
end;
|
|
|
|
// inspired by "Marcio Wesley Borges" <marciowb@gmail.com>
|
|
procedure libvlc_reset_function_pointers(force : boolean = FALSE);
|
|
begin
|
|
if (not force) then
|
|
begin
|
|
if (libvlc_handle <> 0) then exit;
|
|
end;
|
|
|
|
libvlc_get_version := NIL;
|
|
|
|
libvlc_new := NIL;
|
|
libvlc_release := NIL;
|
|
libvlc_retain := NIL;
|
|
|
|
libvlc_add_intf := NIL;
|
|
libvlc_wait := NIL;
|
|
libvlc_get_compiler := NIL;
|
|
libvlc_get_changeset := NIL;
|
|
libvlc_event_attach := NIL;
|
|
libvlc_event_detach := NIL;
|
|
libvlc_event_type_name := NIL;
|
|
libvlc_get_log_verbosity := NIL;
|
|
libvlc_set_log_verbosity := NIL;
|
|
libvlc_log_open := NIL;
|
|
libvlc_log_close := NIL;
|
|
libvlc_log_count := NIL;
|
|
libvlc_log_clear := NIL;
|
|
libvlc_log_get_iterator := NIL;
|
|
libvlc_log_iterator_free := NIL;
|
|
libvlc_log_iterator_has_next := NIL;
|
|
libvlc_log_iterator_next := NIL;
|
|
libvlc_media_new_as_node := NIL;
|
|
libvlc_media_add_option := NIL;
|
|
libvlc_media_retain := NIL;
|
|
libvlc_media_release := NIL;
|
|
libvlc_media_get_mrl := NIL;
|
|
libvlc_media_duplicate := NIL;
|
|
libvlc_media_get_meta := NIL;
|
|
libvlc_media_get_state := NIL;
|
|
libvlc_media_subitems := NIL;
|
|
libvlc_media_event_manager := NIL;
|
|
libvlc_media_get_duration := NIL;
|
|
libvlc_media_set_user_data := NIL;
|
|
libvlc_media_get_user_data := NIL;
|
|
libvlc_media_player_new := NIL;
|
|
libvlc_media_player_new_from_media := NIL;
|
|
libvlc_media_player_release := NIL;
|
|
libvlc_media_player_retain := NIL;
|
|
libvlc_media_player_set_media := NIL;
|
|
libvlc_media_player_get_media := NIL;
|
|
libvlc_media_player_event_manager := NIL;
|
|
libvlc_media_player_is_playing := NIL;
|
|
libvlc_media_player_play := NIL;
|
|
libvlc_media_player_pause := NIL;
|
|
libvlc_media_player_stop := NIL;
|
|
libvlc_media_player_set_nsobject := NIL;
|
|
libvlc_media_player_get_nsobject := NIL;
|
|
libvlc_media_player_set_agl := NIL;
|
|
libvlc_media_player_get_agl := NIL;
|
|
libvlc_media_player_set_xwindow := NIL;
|
|
libvlc_media_player_get_xwindow := NIL;
|
|
libvlc_media_player_set_hwnd := NIL;
|
|
libvlc_media_player_get_hwnd := NIL;
|
|
libvlc_media_player_get_length := NIL;
|
|
libvlc_media_player_get_time := NIL;
|
|
libvlc_media_player_set_time := NIL;
|
|
libvlc_media_player_get_position := NIL;
|
|
libvlc_media_player_set_position := NIL;
|
|
libvlc_media_player_set_chapter := NIL;
|
|
libvlc_media_player_get_chapter := NIL;
|
|
libvlc_media_player_get_chapter_count := NIL;
|
|
libvlc_media_player_will_play := NIL;
|
|
libvlc_media_player_get_chapter_count_for_title := NIL;
|
|
libvlc_media_player_set_title := NIL;
|
|
libvlc_media_player_get_title := NIL;
|
|
libvlc_media_player_get_title_count := NIL;
|
|
libvlc_media_player_previous_chapter := NIL;
|
|
libvlc_media_player_next_chapter := NIL;
|
|
libvlc_media_player_set_rate := NIL;
|
|
libvlc_media_player_get_rate := NIL;
|
|
libvlc_media_player_get_state := NIL;
|
|
libvlc_media_player_get_fps := NIL;
|
|
libvlc_media_player_has_vout := NIL;
|
|
libvlc_media_player_is_seekable := NIL;
|
|
libvlc_media_player_can_pause := NIL;
|
|
libvlc_track_description_release := NIL;
|
|
libvlc_toggle_fullscreen := NIL;
|
|
libvlc_set_fullscreen := NIL;
|
|
libvlc_get_fullscreen := NIL;
|
|
|
|
{$IFDEF USE_VLC_DEPRECATED_API}
|
|
libvlc_video_get_height := NIL;
|
|
{$ENDIF}
|
|
|
|
{$IFDEF USE_VLC_DEPRECATED_API}
|
|
libvlc_video_get_width := NIL;
|
|
{$ENDIF}
|
|
|
|
libvlc_video_get_scale := NIL;
|
|
libvlc_video_set_scale := NIL;
|
|
libvlc_video_get_aspect_ratio := NIL;
|
|
libvlc_video_set_aspect_ratio := NIL;
|
|
libvlc_video_get_spu := NIL;
|
|
libvlc_video_get_spu_count := NIL;
|
|
libvlc_video_get_spu_description := NIL;
|
|
libvlc_video_set_spu := NIL;
|
|
libvlc_video_set_subtitle_file := NIL;
|
|
libvlc_video_get_title_description := NIL;
|
|
libvlc_video_get_chapter_description := NIL;
|
|
libvlc_video_get_crop_geometry := NIL;
|
|
libvlc_video_set_crop_geometry := NIL;
|
|
libvlc_video_get_teletext := NIL;
|
|
libvlc_video_set_teletext := NIL;
|
|
libvlc_toggle_teletext := NIL;
|
|
libvlc_video_get_track_count := NIL;
|
|
libvlc_video_get_track_description := NIL;
|
|
libvlc_video_get_track := NIL;
|
|
libvlc_video_set_track := NIL;
|
|
libvlc_video_take_snapshot := NIL;
|
|
libvlc_audio_output_list_get := NIL;
|
|
libvlc_audio_output_list_release := NIL;
|
|
libvlc_audio_output_set := NIL;
|
|
libvlc_audio_output_device_count := NIL;
|
|
libvlc_audio_output_device_longname := NIL;
|
|
libvlc_audio_output_device_id := NIL;
|
|
libvlc_audio_output_device_set := NIL;
|
|
libvlc_audio_output_get_device_type := NIL;
|
|
libvlc_audio_output_set_device_type := NIL;
|
|
libvlc_audio_toggle_mute := NIL;
|
|
libvlc_audio_get_mute := NIL;
|
|
libvlc_audio_set_mute := NIL;
|
|
libvlc_audio_get_volume := NIL;
|
|
libvlc_audio_set_volume := NIL;
|
|
libvlc_audio_get_track_count := NIL;
|
|
libvlc_audio_get_track_description := NIL;
|
|
libvlc_audio_get_track := NIL;
|
|
libvlc_audio_set_track := NIL;
|
|
libvlc_audio_get_channel := NIL;
|
|
libvlc_audio_set_channel := NIL;
|
|
libvlc_media_list_new := NIL;
|
|
libvlc_media_list_release := NIL;
|
|
libvlc_media_list_retain := NIL;
|
|
|
|
{$IFDEF USE_VLC_DEPRECATED_API}
|
|
libvlc_media_list_add_file_content := NIL;
|
|
{$ENDIF}
|
|
|
|
libvlc_media_list_set_media := NIL;
|
|
libvlc_media_list_media := NIL;
|
|
libvlc_media_list_add_media := NIL;
|
|
libvlc_media_list_insert_media := NIL;
|
|
libvlc_media_list_remove_index := NIL;
|
|
libvlc_media_list_count := NIL;
|
|
libvlc_media_list_item_at_index := NIL;
|
|
libvlc_media_list_index_of_item := NIL;
|
|
libvlc_media_list_is_readonly := NIL;
|
|
libvlc_media_list_lock := NIL;
|
|
libvlc_media_list_unlock := NIL;
|
|
libvlc_media_list_event_manager := NIL;
|
|
libvlc_media_list_player_new := NIL;
|
|
libvlc_media_list_player_release := NIL;
|
|
libvlc_media_list_player_set_media_player := NIL;
|
|
libvlc_media_list_player_set_media_list := NIL;
|
|
libvlc_media_list_player_play := NIL;
|
|
libvlc_media_list_player_pause := NIL;
|
|
libvlc_media_list_player_is_playing := NIL;
|
|
libvlc_media_list_player_get_state := NIL;
|
|
libvlc_media_list_player_play_item_at_index := NIL;
|
|
libvlc_media_list_player_play_item := NIL;
|
|
libvlc_media_list_player_stop := NIL;
|
|
libvlc_media_list_player_next := NIL;
|
|
libvlc_media_library_new := NIL;
|
|
libvlc_media_library_release := NIL;
|
|
libvlc_media_library_retain := NIL;
|
|
libvlc_media_library_load := NIL;
|
|
libvlc_media_library_media_list := NIL;
|
|
libvlc_media_discoverer_new_from_name := NIL;
|
|
libvlc_media_discoverer_release := NIL;
|
|
libvlc_media_discoverer_localized_name := NIL;
|
|
libvlc_media_discoverer_media_list := NIL;
|
|
libvlc_media_discoverer_event_manager := NIL;
|
|
libvlc_media_discoverer_is_running := NIL;
|
|
libvlc_vlm_release := NIL;
|
|
libvlc_vlm_add_broadcast := NIL;
|
|
libvlc_vlm_add_vod := NIL;
|
|
libvlc_vlm_del_media := NIL;
|
|
libvlc_vlm_set_enabled := NIL;
|
|
libvlc_vlm_set_output := NIL;
|
|
libvlc_vlm_set_input := NIL;
|
|
libvlc_vlm_add_input := NIL;
|
|
libvlc_vlm_set_loop := NIL;
|
|
libvlc_vlm_set_mux := NIL;
|
|
libvlc_vlm_change_media := NIL;
|
|
libvlc_vlm_play_media := NIL;
|
|
libvlc_vlm_stop_media := NIL;
|
|
libvlc_vlm_pause_media := NIL;
|
|
libvlc_vlm_seek_media := NIL;
|
|
libvlc_vlm_show_media := NIL;
|
|
libvlc_vlm_get_media_instance_position := NIL;
|
|
libvlc_vlm_get_media_instance_time := NIL;
|
|
libvlc_vlm_get_media_instance_length := NIL;
|
|
libvlc_vlm_get_media_instance_rate := NIL;
|
|
|
|
{$IFDEF IS_0_GT_1}
|
|
libvlc_vlm_get_media_instance_title := NIL;
|
|
libvlc_vlm_get_media_instance_chapter := NIL;
|
|
libvlc_vlm_get_media_instance_seekable := NIL;
|
|
{$ENDIF}
|
|
|
|
{$IFDEF USE_VLC_DEPRECATED_API}
|
|
libvlc_playlist_play := NIL;
|
|
{$ENDIF}
|
|
|
|
(* 1.1.0 *)
|
|
|
|
libvlc_errmsg := require_version_libvlc_errmsg;
|
|
libvlc_clearerr := require_version_libvlc_clearerr;
|
|
libvlc_printerr := require_version_libvlc_printerr;
|
|
{$IFNDEF FPC}
|
|
libvlc_vprinterr := require_version_libvlc_vprinterr;
|
|
{$ENDIF}
|
|
libvlc_video_get_logo_int := require_version_libvlc_video_get_logo_int;
|
|
libvlc_video_set_logo_int := require_version_libvlc_video_set_logo_int;
|
|
libvlc_video_set_logo_string := require_version_libvlc_video_set_logo_string;
|
|
libvlc_video_get_marquee_int := require_version_libvlc_video_get_marquee_int;
|
|
libvlc_video_get_marquee_string := require_version_libvlc_video_get_marquee_string;
|
|
libvlc_video_set_marquee_int := require_version_libvlc_video_set_marquee_int;
|
|
libvlc_video_set_marquee_string := require_version_libvlc_video_set_marquee_string;
|
|
libvlc_video_get_cursor := require_version_libvlc_video_get_cursor;
|
|
libvlc_video_get_size := require_version_libvlc_video_get_size;
|
|
libvlc_video_set_key_input := require_version_libvlc_video_set_key_input;
|
|
libvlc_video_set_mouse_input := require_version_libvlc_video_set_mouse_input;
|
|
libvlc_video_set_deinterlace := require_version_libvlc_video_set_deinterlace;
|
|
|
|
libvlc_media_player_next_frame := require_version_libvlc_media_player_next_frame;
|
|
|
|
libvlc_media_list_player_event_manager := require_version_libvlc_media_list_player_event_manager;
|
|
libvlc_media_list_player_set_playback_mode := require_version_libvlc_media_list_player_set_playback_mode;
|
|
libvlc_media_list_player_previous := require_version_libvlc_media_list_player_previous;
|
|
|
|
libvlc_media_parse := require_version_libvlc_media_parse;
|
|
libvlc_media_parse_async := require_version_libvlc_media_parse_async;
|
|
libvlc_media_is_parsed := require_version_libvlc_media_is_parsed;
|
|
libvlc_media_new_location := require_version_libvlc_media_new_location;
|
|
libvlc_media_new_path := require_version_libvlc_media_new_path;
|
|
libvlc_media_add_option_flag := require_version_libvlc_media_add_option_flag;
|
|
libvlc_media_set_meta := require_version_libvlc_media_set_meta;
|
|
libvlc_media_save_meta := require_version_libvlc_media_save_meta;
|
|
libvlc_media_get_tracks_info := require_version_libvlc_media_get_tracks_info;
|
|
libvlc_media_get_stats := require_version_libvlc_media_get_stats;
|
|
|
|
libvlc_vlm_get_event_manager := require_version_libvlc_vlm_get_event_manager;
|
|
|
|
(* 1.1.1 *)
|
|
|
|
libvlc_set_user_agent := require_version_libvlc_set_user_agent;
|
|
libvlc_video_set_callbacks := require_version_libvlc_video_set_callbacks;
|
|
libvlc_audio_get_delay := require_version_libvlc_audio_get_delay;
|
|
libvlc_audio_set_delay := require_version_libvlc_audio_set_delay;
|
|
libvlc_video_set_format := require_version_libvlc_video_set_format;
|
|
libvlc_video_get_adjust_int := require_version_libvlc_video_get_adjust_int;
|
|
libvlc_video_set_adjust_int := require_version_libvlc_video_set_adjust_int;
|
|
libvlc_video_get_adjust_float := require_version_libvlc_video_get_adjust_float;
|
|
libvlc_video_set_adjust_float := require_version_libvlc_video_set_adjust_float;
|
|
libvlc_media_player_set_pause := require_version_libvlc_media_player_set_pause;
|
|
|
|
(* 1.1.5 *)
|
|
|
|
libvlc_media_new_fd := require_version_libvlc_media_new_fd;
|
|
|
|
(* 2.0.0 *)
|
|
|
|
libvlc_audio_filter_list_get := require_version_libvlc_audio_filter_list_get;
|
|
libvlc_audio_set_callbacks := require_version_libvlc_audio_set_callbacks;
|
|
libvlc_audio_set_volume_callback := require_version_libvlc_audio_set_volume_callback;
|
|
libvlc_audio_set_format_callbacks := require_version_libvlc_audio_set_format_callbacks;
|
|
libvlc_audio_set_format := require_version_libvlc_audio_set_format;
|
|
libvlc_video_filter_list_get := require_version_libvlc_video_filter_list_get;
|
|
libvlc_video_set_format_callbacks := require_version_libvlc_video_set_format_callbacks;
|
|
libvlc_video_get_spu_delay := require_version_libvlc_video_get_spu_delay;
|
|
libvlc_video_set_spu_delay := require_version_libvlc_video_set_spu_delay;
|
|
libvlc_media_player_navigate := require_version_libvlc_media_player_navigate;
|
|
libvlc_media_list_player_retain := require_version_libvlc_media_list_player_retain;
|
|
libvlc_module_description_list_release := require_version_libvlc_module_description_list_release;
|
|
libvlc_set_exit_handler := require_version_libvlc_set_exit_handler;
|
|
libvlc_free := require_version_libvlc_free;
|
|
libvlc_track_description_list_release := require_version_libvlc_track_description_list_release;
|
|
|
|
(* 2.1.0 *)
|
|
libvlc_media_player_set_video_title_display := require_version_libvlc_media_player_set_video_title_display;
|
|
libvlc_audio_output_device_list_get := require_version_libvlc_audio_output_device_list_get;
|
|
libvlc_audio_output_device_list_release := require_version_libvlc_audio_output_device_list_release;
|
|
libvlc_media_tracks_get := require_version_libvlc_media_tracks_get;
|
|
libvlc_media_tracks_release := require_version_libvlc_media_tracks_release;
|
|
libvlc_set_app_id := require_version_libvlc_set_app_id;
|
|
libvlc_log_get_context := require_version_libvlc_log_get_context;
|
|
libvlc_log_get_object := require_version_libvlc_log_get_object;
|
|
libvlc_log_set := require_version_libvlc_log_set;
|
|
libvlc_log_unset := require_version_libvlc_log_unset;
|
|
libvlc_log_set_file := require_version_libvlc_log_set_file;
|
|
end;
|
|
|
|
procedure libvlc_dynamic_dll_init_with_path(vlc_install_path: string);
|
|
var
|
|
cdir: string;
|
|
va, vb, vc : LongWord;
|
|
vp : PAnsiChar;
|
|
begin
|
|
if (libvlc_handle <> 0) then exit;
|
|
|
|
// no error
|
|
libvlc_dynamic_dll_error := '';
|
|
libvlc_dynamic_dll_path := vlc_install_path;
|
|
libvlc_dynamic_dll_file := libvlc_get_install_file(vlc_install_path);
|
|
|
|
// remove path separator from end of path
|
|
while ((libvlc_dynamic_dll_path <> '') and (libvlc_dynamic_dll_path[Length(libvlc_dynamic_dll_path)] = PathDelim)) do
|
|
begin
|
|
SetLength(libvlc_dynamic_dll_path, Length(libvlc_dynamic_dll_path)-1);
|
|
end;
|
|
|
|
// try load library
|
|
// before loading libvlc.dll program must change directry to
|
|
// libvlc_dynamic_dll_path
|
|
if (libvlc_dynamic_dll_path <> '') then
|
|
begin
|
|
cdir := GetCurrentDir();
|
|
SetCurrentDir(libvlc_dynamic_dll_path);
|
|
{$IFDEF SUPPORTS_UNICODE}
|
|
libvlc_handle := LoadLibrary(PWideChar(libvlc_dynamic_dll_path + PathDelim + libvlc_dynamic_dll_file));
|
|
{$ELSE}
|
|
libvlc_handle := LoadLibrary(PAnsiChar(libvlc_dynamic_dll_path + PathDelim + libvlc_dynamic_dll_file));
|
|
{$ENDIF}
|
|
SetCurrentDir(cdir);
|
|
end
|
|
else
|
|
begin
|
|
{$IFDEF SUPPORTS_UNICODE}
|
|
libvlc_handle := LoadLibrary(PWideChar(libvlc_dynamic_dll_file));
|
|
{$ELSE}
|
|
libvlc_handle := LoadLibrary(PAnsiChar(libvlc_dynamic_dll_file));
|
|
{$ENDIF}
|
|
end;
|
|
|
|
// exit, report error
|
|
if (libvlc_handle = 0) then
|
|
begin
|
|
libvlc_dynamic_dll_error :=
|
|
'Library not found ' + LIBVLC_DLL_NAME + ', '+
|
|
{$IFDEF UNIX}
|
|
'GetLastError() = ' + IntToStr(GetLastOSError())
|
|
{$ENDIF}
|
|
{$IFDEF MSWINDOWS}
|
|
'GetLastError() = ' + IntToStr(GetLastError())
|
|
{$ENDIF}
|
|
;
|
|
exit;
|
|
end;
|
|
|
|
libvlc_reset_function_pointers(TRUE);
|
|
|
|
(****************************************************************************)
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_get_version,
|
|
'libvlc_get_version') then exit;
|
|
|
|
vp := libvlc_get_version();
|
|
libvlc_dynamic_dll_version := {$IFDEF DELPHI_XE2_UP}UTF8ToWideString{$ELSE}UTF8Decode{$ENDIF}(vp);
|
|
|
|
va := read_dec_number(vp) and $ff;
|
|
vb := read_dec_number(vp) and $ff;
|
|
vc := read_dec_number(vp) and $ff;
|
|
|
|
libvlc_dynamic_dll_version_bin := (va shl 16) or (vb shl 8) or vc;
|
|
|
|
(****************************************************************************)
|
|
|
|
if (libvlc_dynamic_dll_version_bin < $010000) then
|
|
begin
|
|
libvlc_dynamic_dll_error :=
|
|
'Current libvlc version: ' + IntToStr(va) + '.' + IntToStr(vb) + '.' + IntToStr(vc) +
|
|
', minimum supported version is 1.0.0';
|
|
exit;
|
|
end;
|
|
|
|
(****************************************************************************)
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_new,
|
|
'libvlc_new') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_release,
|
|
'libvlc_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_retain,
|
|
'libvlc_retain') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_add_intf,
|
|
'libvlc_add_intf') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_wait,
|
|
'libvlc_wait') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_get_compiler,
|
|
'libvlc_get_compiler') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_get_changeset,
|
|
'libvlc_get_changeset') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_event_attach,
|
|
'libvlc_event_attach') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_event_detach,
|
|
'libvlc_event_detach') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_event_type_name,
|
|
'libvlc_event_type_name') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_get_log_verbosity,
|
|
'libvlc_get_log_verbosity') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_set_log_verbosity,
|
|
'libvlc_set_log_verbosity') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_open,
|
|
'libvlc_log_open') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_close,
|
|
'libvlc_log_close') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_count,
|
|
'libvlc_log_count') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_clear,
|
|
'libvlc_log_clear') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_get_iterator,
|
|
'libvlc_log_get_iterator') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_iterator_free,
|
|
'libvlc_log_iterator_free') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_iterator_has_next,
|
|
'libvlc_log_iterator_has_next') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_iterator_next,
|
|
'libvlc_log_iterator_next') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_new_as_node,
|
|
'libvlc_media_new_as_node') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_add_option,
|
|
'libvlc_media_add_option') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_retain,
|
|
'libvlc_media_retain') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_release,
|
|
'libvlc_media_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_get_mrl,
|
|
'libvlc_media_get_mrl') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_duplicate,
|
|
'libvlc_media_duplicate') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_get_meta,
|
|
'libvlc_media_get_meta') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_get_state,
|
|
'libvlc_media_get_state') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_subitems,
|
|
'libvlc_media_subitems') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_event_manager,
|
|
'libvlc_media_event_manager') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_get_duration,
|
|
'libvlc_media_get_duration') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_set_user_data,
|
|
'libvlc_media_set_user_data') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_get_user_data,
|
|
'libvlc_media_get_user_data') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_new,
|
|
'libvlc_media_player_new') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_new_from_media,
|
|
'libvlc_media_player_new_from_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_release,
|
|
'libvlc_media_player_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_retain,
|
|
'libvlc_media_player_retain') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_set_media,
|
|
'libvlc_media_player_set_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_media,
|
|
'libvlc_media_player_get_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_event_manager,
|
|
'libvlc_media_player_event_manager') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_is_playing,
|
|
'libvlc_media_player_is_playing') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_play,
|
|
'libvlc_media_player_play') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_pause,
|
|
'libvlc_media_player_pause') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_stop,
|
|
'libvlc_media_player_stop') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_set_nsobject,
|
|
'libvlc_media_player_set_nsobject') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_nsobject,
|
|
'libvlc_media_player_get_nsobject') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_set_agl,
|
|
'libvlc_media_player_set_agl') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_agl,
|
|
'libvlc_media_player_get_agl') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_set_xwindow,
|
|
'libvlc_media_player_set_xwindow') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_xwindow,
|
|
'libvlc_media_player_get_xwindow') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_set_hwnd,
|
|
'libvlc_media_player_set_hwnd') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_hwnd,
|
|
'libvlc_media_player_get_hwnd') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_length,
|
|
'libvlc_media_player_get_length') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_time,
|
|
'libvlc_media_player_get_time') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_set_time,
|
|
'libvlc_media_player_set_time') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_position,
|
|
'libvlc_media_player_get_position') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_set_position,
|
|
'libvlc_media_player_set_position') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_set_chapter,
|
|
'libvlc_media_player_set_chapter') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_chapter,
|
|
'libvlc_media_player_get_chapter') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_chapter_count,
|
|
'libvlc_media_player_get_chapter_count') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_will_play,
|
|
'libvlc_media_player_will_play') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_chapter_count_for_title,
|
|
'libvlc_media_player_get_chapter_count_for_title') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_set_title,
|
|
'libvlc_media_player_set_title') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_title,
|
|
'libvlc_media_player_get_title') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_title_count,
|
|
'libvlc_media_player_get_title_count') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_previous_chapter,
|
|
'libvlc_media_player_previous_chapter') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_next_chapter,
|
|
'libvlc_media_player_next_chapter') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_set_rate,
|
|
'libvlc_media_player_set_rate') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_rate,
|
|
'libvlc_media_player_get_rate') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_state,
|
|
'libvlc_media_player_get_state') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_get_fps,
|
|
'libvlc_media_player_get_fps') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_has_vout,
|
|
'libvlc_media_player_has_vout') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_is_seekable,
|
|
'libvlc_media_player_is_seekable') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_can_pause,
|
|
'libvlc_media_player_can_pause') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_track_description_release,
|
|
'libvlc_track_description_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_toggle_fullscreen,
|
|
'libvlc_toggle_fullscreen') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_set_fullscreen,
|
|
'libvlc_set_fullscreen') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_get_fullscreen,
|
|
'libvlc_get_fullscreen') then exit;
|
|
|
|
{$IFDEF USE_VLC_DEPRECATED_API}
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_height,
|
|
'libvlc_video_get_height') then exit;
|
|
{$ENDIF}
|
|
|
|
{$IFDEF USE_VLC_DEPRECATED_API}
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_width,
|
|
'libvlc_video_get_width') then exit;
|
|
{$ENDIF}
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_scale,
|
|
'libvlc_video_get_scale') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_scale,
|
|
'libvlc_video_set_scale') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_aspect_ratio,
|
|
'libvlc_video_get_aspect_ratio') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_aspect_ratio,
|
|
'libvlc_video_set_aspect_ratio') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_spu,
|
|
'libvlc_video_get_spu') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_spu_count,
|
|
'libvlc_video_get_spu_count') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_spu_description,
|
|
'libvlc_video_get_spu_description') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_spu,
|
|
'libvlc_video_set_spu') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_subtitle_file,
|
|
'libvlc_video_set_subtitle_file') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_title_description,
|
|
'libvlc_video_get_title_description') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_chapter_description,
|
|
'libvlc_video_get_chapter_description') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_crop_geometry,
|
|
'libvlc_video_get_crop_geometry') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_crop_geometry,
|
|
'libvlc_video_set_crop_geometry') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_teletext,
|
|
'libvlc_video_get_teletext') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_teletext,
|
|
'libvlc_video_set_teletext') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_toggle_teletext,
|
|
'libvlc_toggle_teletext') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_track_count,
|
|
'libvlc_video_get_track_count') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_track_description,
|
|
'libvlc_video_get_track_description') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_track,
|
|
'libvlc_video_get_track') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_track,
|
|
'libvlc_video_set_track') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_take_snapshot,
|
|
'libvlc_video_take_snapshot') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_output_list_get,
|
|
'libvlc_audio_output_list_get') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_output_list_release,
|
|
'libvlc_audio_output_list_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_output_set,
|
|
'libvlc_audio_output_set') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_output_device_count,
|
|
'libvlc_audio_output_device_count') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_output_device_longname,
|
|
'libvlc_audio_output_device_longname') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_output_device_id,
|
|
'libvlc_audio_output_device_id') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_output_device_set,
|
|
'libvlc_audio_output_device_set') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_output_get_device_type,
|
|
'libvlc_audio_output_get_device_type') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_output_set_device_type,
|
|
'libvlc_audio_output_set_device_type') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_toggle_mute,
|
|
'libvlc_audio_toggle_mute') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_get_mute,
|
|
'libvlc_audio_get_mute') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_set_mute,
|
|
'libvlc_audio_set_mute') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_get_volume,
|
|
'libvlc_audio_get_volume') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_set_volume,
|
|
'libvlc_audio_set_volume') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_get_track_count,
|
|
'libvlc_audio_get_track_count') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_get_track_description,
|
|
'libvlc_audio_get_track_description') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_get_track,
|
|
'libvlc_audio_get_track') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_set_track,
|
|
'libvlc_audio_set_track') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_get_channel,
|
|
'libvlc_audio_get_channel') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_set_channel,
|
|
'libvlc_audio_set_channel') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_new,
|
|
'libvlc_media_list_new') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_release,
|
|
'libvlc_media_list_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_retain,
|
|
'libvlc_media_list_retain') then exit;
|
|
|
|
{$IFDEF USE_VLC_DEPRECATED_API}
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_add_file_content,
|
|
'libvlc_media_list_add_file_content') then exit;
|
|
{$ENDIF}
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_set_media,
|
|
'libvlc_media_list_set_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_media,
|
|
'libvlc_media_list_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_add_media,
|
|
'libvlc_media_list_add_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_insert_media,
|
|
'libvlc_media_list_insert_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_remove_index,
|
|
'libvlc_media_list_remove_index') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_count,
|
|
'libvlc_media_list_count') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_item_at_index,
|
|
'libvlc_media_list_item_at_index') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_index_of_item,
|
|
'libvlc_media_list_index_of_item') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_is_readonly,
|
|
'libvlc_media_list_is_readonly') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_lock,
|
|
'libvlc_media_list_lock') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_unlock,
|
|
'libvlc_media_list_unlock') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_event_manager,
|
|
'libvlc_media_list_event_manager') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_new,
|
|
'libvlc_media_list_player_new') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_release,
|
|
'libvlc_media_list_player_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_set_media_player,
|
|
'libvlc_media_list_player_set_media_player') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_set_media_list,
|
|
'libvlc_media_list_player_set_media_list') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_play,
|
|
'libvlc_media_list_player_play') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_pause,
|
|
'libvlc_media_list_player_pause') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_is_playing,
|
|
'libvlc_media_list_player_is_playing') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_get_state,
|
|
'libvlc_media_list_player_get_state') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_play_item_at_index,
|
|
'libvlc_media_list_player_play_item_at_index') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_play_item,
|
|
'libvlc_media_list_player_play_item') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_stop,
|
|
'libvlc_media_list_player_stop') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_next,
|
|
'libvlc_media_list_player_next') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_library_new,
|
|
'libvlc_media_library_new') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_library_release,
|
|
'libvlc_media_library_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_library_retain,
|
|
'libvlc_media_library_retain') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_library_load,
|
|
'libvlc_media_library_load') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_library_media_list,
|
|
'libvlc_media_library_media_list') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_discoverer_new_from_name,
|
|
'libvlc_media_discoverer_new_from_name') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_discoverer_release,
|
|
'libvlc_media_discoverer_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_discoverer_localized_name,
|
|
'libvlc_media_discoverer_localized_name') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_discoverer_media_list,
|
|
'libvlc_media_discoverer_media_list') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_discoverer_event_manager,
|
|
'libvlc_media_discoverer_event_manager') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_discoverer_is_running,
|
|
'libvlc_media_discoverer_is_running') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_release,
|
|
'libvlc_vlm_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_add_broadcast,
|
|
'libvlc_vlm_add_broadcast') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_add_vod,
|
|
'libvlc_vlm_add_vod') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_del_media,
|
|
'libvlc_vlm_del_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_set_enabled,
|
|
'libvlc_vlm_set_enabled') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_set_output,
|
|
'libvlc_vlm_set_output') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_set_input,
|
|
'libvlc_vlm_set_input') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_add_input,
|
|
'libvlc_vlm_add_input') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_set_loop,
|
|
'libvlc_vlm_set_loop') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_set_mux,
|
|
'libvlc_vlm_set_mux') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_change_media,
|
|
'libvlc_vlm_change_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_play_media,
|
|
'libvlc_vlm_play_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_stop_media,
|
|
'libvlc_vlm_stop_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_pause_media,
|
|
'libvlc_vlm_pause_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_seek_media,
|
|
'libvlc_vlm_seek_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_show_media,
|
|
'libvlc_vlm_show_media') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_get_media_instance_position,
|
|
'libvlc_vlm_get_media_instance_position') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_get_media_instance_time,
|
|
'libvlc_vlm_get_media_instance_time') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_get_media_instance_length,
|
|
'libvlc_vlm_get_media_instance_length') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_get_media_instance_rate,
|
|
'libvlc_vlm_get_media_instance_rate') then exit;
|
|
|
|
{$IFDEF IS_0_GT_1}
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_get_media_instance_title,
|
|
'libvlc_vlm_get_media_instance_title') then exit;
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_get_media_instance_chapter,
|
|
'libvlc_vlm_get_media_instance_chapter') then exit;
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_get_media_instance_seekable,
|
|
'libvlc_vlm_get_media_instance_seekable') then exit;
|
|
{$ENDIF}
|
|
|
|
{$IFDEF USE_VLC_DEPRECATED_API}
|
|
if not libvlc_dll_get_proc_addr(@libvlc_playlist_play,
|
|
'libvlc_playlist_play') then exit;
|
|
{$ENDIF}
|
|
|
|
(****************************************************************************)
|
|
if (libvlc_dynamic_dll_version_bin < $010100) then exit;
|
|
(****************************************************************************)
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_errmsg,
|
|
'libvlc_errmsg') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_logo_int,
|
|
'libvlc_video_get_logo_int') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_logo_int,
|
|
'libvlc_video_set_logo_int') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_logo_string,
|
|
'libvlc_video_set_logo_string') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_marquee_int,
|
|
'libvlc_video_get_marquee_int') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_marquee_string,
|
|
'libvlc_video_get_marquee_string') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_marquee_int,
|
|
'libvlc_video_set_marquee_int') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_marquee_string,
|
|
'libvlc_video_set_marquee_string') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_deinterlace,
|
|
'libvlc_video_set_deinterlace') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_cursor,
|
|
'libvlc_video_get_cursor') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_size,
|
|
'libvlc_video_get_size') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_key_input,
|
|
'libvlc_video_set_key_input') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_mouse_input,
|
|
'libvlc_video_set_mouse_input') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_clearerr,
|
|
'libvlc_clearerr') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vprinterr,
|
|
'libvlc_vprinterr') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_printerr,
|
|
'libvlc_printerr') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_event_manager,
|
|
'libvlc_media_list_player_event_manager') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_set_playback_mode,
|
|
'libvlc_media_list_player_set_playback_mode') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_previous,
|
|
'libvlc_media_list_player_previous') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_next_frame,
|
|
'libvlc_media_player_next_frame') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_vlm_get_event_manager,
|
|
'libvlc_vlm_get_event_manager') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_parse,
|
|
'libvlc_media_parse') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_parse_async,
|
|
'libvlc_media_parse_async') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_is_parsed,
|
|
'libvlc_media_is_parsed') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_new_location,
|
|
'libvlc_media_new_location') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_new_path,
|
|
'libvlc_media_new_path') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_add_option_flag,
|
|
'libvlc_media_add_option_flag') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_set_meta,
|
|
'libvlc_media_set_meta') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_save_meta,
|
|
'libvlc_media_save_meta') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_get_stats,
|
|
'libvlc_media_get_stats') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_get_tracks_info,
|
|
'libvlc_media_get_tracks_info') then exit;
|
|
|
|
(****************************************************************************)
|
|
if (libvlc_dynamic_dll_version_bin < $010101) then exit;
|
|
(****************************************************************************)
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_format,
|
|
'libvlc_video_set_format') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_set_user_agent,
|
|
'libvlc_set_user_agent') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_set_pause,
|
|
'libvlc_media_player_set_pause') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_callbacks,
|
|
'libvlc_video_set_callbacks') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_get_delay,
|
|
'libvlc_audio_get_delay') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_set_delay,
|
|
'libvlc_audio_set_delay') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_adjust_int,
|
|
'libvlc_video_get_adjust_int') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_adjust_int,
|
|
'libvlc_video_set_adjust_int') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_adjust_float,
|
|
'libvlc_video_get_adjust_float') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_adjust_float,
|
|
'libvlc_video_set_adjust_float') then exit;
|
|
|
|
(****************************************************************************)
|
|
if (libvlc_dynamic_dll_version_bin < $010105) then exit;
|
|
(****************************************************************************)
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_new_fd,
|
|
'libvlc_media_new_fd') then exit;
|
|
|
|
(****************************************************************************)
|
|
if (libvlc_dynamic_dll_version_bin < $020000) then exit;
|
|
(****************************************************************************)
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_filter_list_get,
|
|
'libvlc_video_filter_list_get') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_filter_list_get,
|
|
'libvlc_audio_filter_list_get') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_module_description_list_release,
|
|
'libvlc_module_description_list_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_set_exit_handler,
|
|
'libvlc_set_exit_handler') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_free,
|
|
'libvlc_free') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_format_callbacks,
|
|
'libvlc_video_set_format_callbacks') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_set_callbacks,
|
|
'libvlc_audio_set_callbacks') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_set_volume_callback,
|
|
'libvlc_audio_set_volume_callback') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_set_format_callbacks,
|
|
'libvlc_audio_set_format_callbacks') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_set_format,
|
|
'libvlc_audio_set_format') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_navigate,
|
|
'libvlc_media_player_navigate') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_get_spu_delay,
|
|
'libvlc_video_get_spu_delay') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_video_set_spu_delay,
|
|
'libvlc_video_set_spu_delay') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_list_player_retain,
|
|
'libvlc_media_list_player_retain') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_track_description_list_release,
|
|
'libvlc_track_description_list_release') then exit;
|
|
|
|
(****************************************************************************)
|
|
if (libvlc_dynamic_dll_version_bin < $020003) then exit;
|
|
(****************************************************************************)
|
|
|
|
(****************************************************************************)
|
|
if (libvlc_dynamic_dll_version_bin < $020100) then exit;
|
|
(****************************************************************************)
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_player_set_video_title_display,
|
|
'libvlc_media_player_set_video_title_display') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_output_device_list_get,
|
|
'libvlc_audio_output_device_list_get') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_audio_output_device_list_release,
|
|
'libvlc_audio_output_device_list_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_tracks_get,
|
|
'libvlc_media_tracks_get') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_media_tracks_release,
|
|
'libvlc_media_tracks_release') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_set_app_id,
|
|
'libvlc_set_app_id') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_get_context,
|
|
'libvlc_log_get_context') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_get_object,
|
|
'libvlc_log_get_object') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_set,
|
|
'libvlc_log_set') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_unset,
|
|
'libvlc_log_unset') then exit;
|
|
|
|
if not libvlc_dll_get_proc_addr(@libvlc_log_set_file,
|
|
'libvlc_log_set_file') then exit;
|
|
end;
|
|
|
|
procedure libvlc_dynamic_dll_init();
|
|
begin
|
|
if (libvlc_handle <> 0) then exit;
|
|
libvlc_dynamic_dll_init_with_path(libvlc_get_install_path());
|
|
end;
|
|
|
|
procedure libvlc_dynamic_dll_done();
|
|
begin
|
|
{$IFDEF UNIX}
|
|
if (libvlc_handle <> 0) then
|
|
begin
|
|
if UnloadLibrary(libvlc_handle) then
|
|
begin
|
|
libvlc_handle := 0;
|
|
end;
|
|
end;
|
|
{$ENDIF}
|
|
{$IFDEF MSWINDOWS}
|
|
if (libvlc_handle <> 0) then
|
|
begin
|
|
if FreeLibrary(libvlc_handle) then
|
|
begin
|
|
libvlc_handle := 0;
|
|
end;
|
|
end;
|
|
{$ENDIF}
|
|
|
|
libvlc_reset_function_pointers();
|
|
end;
|
|
|
|
(******************************************************************************)
|
|
(* GDK_WINDOW_HWND is not defined in GDK2 for WIN32
|
|
(******************************************************************************)
|
|
|
|
{$IFDEF MSWINDOWS}
|
|
{$IFDEF LCLGTK2}
|
|
|
|
type
|
|
PGTypeClass = ^TGTypeClass;
|
|
TGTypeClass = packed record
|
|
g_type : Cardinal;
|
|
end;
|
|
|
|
TGTypeInstance = packed record
|
|
g_class : PGTypeClass;
|
|
end;
|
|
|
|
TGObject = packed record
|
|
g_type_instance : TGTypeInstance;
|
|
ref_count : Cardinal;
|
|
qdata : Pointer;
|
|
end;
|
|
|
|
PGdkDrawable = ^TGdkDrawable;
|
|
TGdkDrawable = packed record
|
|
parent_instance : TGObject;
|
|
end;
|
|
|
|
PGdkWindowObject = ^TGdkWindowObject;
|
|
TGdkWindowObject = packed record
|
|
parent_instance : TGdkDrawable;
|
|
impl : PGdkDrawable;
|
|
parent : PGdkWindowObject;
|
|
user_data : Pointer;
|
|
end;
|
|
|
|
|
|
function gdk_win32_drawable_get_handle(d : PGdkDrawable) : THandle; cdecl; external 'libgdk-win32-2.0-0.dll';
|
|
|
|
function GDK_WINDOW_HWND(window : Pointer) : THandle;
|
|
begin
|
|
Result := 0;
|
|
if (window <> NIL) then
|
|
begin
|
|
Result := gdk_win32_drawable_get_handle(PGdkWindowObject(window)^.impl);
|
|
end;
|
|
end;
|
|
|
|
{$ENDIF}
|
|
{$ENDIF}
|
|
|
|
// http://www.videolan.org/developers/vlc/doc/doxygen/html/group__libvlc.html
|
|
|
|
procedure libvlc_media_player_set_display_window(
|
|
p_mi : libvlc_media_player_t_ptr;
|
|
window_handle : THandle);
|
|
begin
|
|
{$IFDEF DARWIN}
|
|
{$IFDEF LCLCARBON}
|
|
// libvlc_media_player_set_nsobject(p_mi, TCarbonWidget(window_handle).Widget); // Carbon ???
|
|
// NSView *video = [[NSView alloc] init]; QMacCocoaViewContainer *container = new QMacCocoaViewContainer(video, parent); libvlc_media_player_set_nsobject(mp, video);
|
|
// uses
|
|
// CocoaAll;
|
|
// {$mode objfpc}{$H+}
|
|
// {$modeswitch objectivec1}
|
|
// uses
|
|
// FPCMacOSAll, AppKit, Foundation;
|
|
// svn co http://svn.freepascal.org/svn/lazarus/trunk/lcl/interfaces/carbon/objc objc
|
|
// svn co http://svn.freepascal.org/svn/lazarus/trunk/lcl/interfaces/carbon/pascocoa pascocoa
|
|
// http://wiki.freepascal.org/PasCocoa
|
|
{$ENDIF}
|
|
{$ELSE}
|
|
|
|
{$IFDEF UNIX}
|
|
{$IFDEF LCLGTK2}
|
|
libvlc_media_player_set_xwindow(p_mi, GDK_WINDOW_XID(PGtkWidget(window_handle)^.window));
|
|
{$ELSE}
|
|
{$IFDEF LCLQT}
|
|
libvlc_media_player_set_xwindow(p_mi, QWidget_winid(TQtWidget(window_handle).Widget));
|
|
{$ELSE}
|
|
libvlc_media_player_set_xwindow(p_mi, window_handle); // NOT GTK2 AND NOT QT
|
|
{$ENDIF}
|
|
{$ENDIF}
|
|
{$ENDIF}
|
|
|
|
{$IFDEF MSWINDOWS}
|
|
{$IFDEF LCLGTK2}
|
|
libvlc_media_player_set_hwnd(p_mi, GDK_WINDOW_HWND(PGtkWidget(window_handle)^.window));
|
|
{$ELSE}
|
|
{$IFDEF LCLQT}
|
|
libvlc_media_player_set_hwnd(p_mi, QWidget_winid(TQtWidget(window_handle).Widget));
|
|
{$ELSE}
|
|
libvlc_media_player_set_hwnd(p_mi, window_handle); // LCL WIN32
|
|
{$ENDIF}
|
|
{$ENDIF}
|
|
{$ENDIF}
|
|
|
|
{$ENDIF}
|
|
end;
|
|
|
|
initialization
|
|
|
|
libvlc_handle := 0;
|
|
|
|
libvlc_dynamic_dll_path := '';
|
|
libvlc_dynamic_dll_file := '';
|
|
libvlc_dynamic_dll_version := '';
|
|
libvlc_dynamic_dll_version_bin := 0;
|
|
libvlc_dynamic_dll_error := '';
|
|
|
|
finalization
|
|
|
|
// without this code Lazarus heaptrc report memory leaks
|
|
libvlc_dynamic_dll_path := '';
|
|
libvlc_dynamic_dll_file := '';
|
|
libvlc_dynamic_dll_version := '';
|
|
libvlc_dynamic_dll_error := '';
|
|
|
|
end.
|