<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Icebob</id>
	<title>VideoLAN Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Icebob"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Icebob/"/>
	<updated>2026-11-04T16:39:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=IceVLCPlayer&amp;diff=12303</id>
		<title>IceVLCPlayer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=IceVLCPlayer&amp;diff=12303"/>
		<updated>2008-08-27T14:12:18Z</updated>

		<summary type="html">&lt;p&gt;Icebob: New page: This is a VCL component for Delphi to use VLC Player (0.8.6i) in your application.    ------------------------------------------------------------------------------ IceVLCPlayer.pas:  &amp;lt;pre...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a VCL component for Delphi to use VLC Player (0.8.6i) in your application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
IceVLCPlayer.pas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unit IceVLCPlayer;&lt;br /&gt;
&lt;br /&gt;
{ TIceVLCPlayer  -  VLC Player for Delphi (0.8.6i) (c)2008 by Norbert Mereg    }&lt;br /&gt;
&lt;br /&gt;
interface&lt;br /&gt;
&lt;br /&gt;
uses&lt;br /&gt;
  SysUtils, Classes, Controls, ExtCtrls, libVLC, Graphics, Windows,&lt;br /&gt;
  Forms;&lt;br /&gt;
&lt;br /&gt;
type&lt;br /&gt;
  TEVLCException = class(Exception);&lt;br /&gt;
  TEVLCNotFound = class(Exception);&lt;br /&gt;
  TEVLCLoadLibrary = class(Exception);&lt;br /&gt;
&lt;br /&gt;
  TErrorEvent = procedure(Sender: TObject; ErrorCode: integer; ErrorMessage: string) of object;&lt;br /&gt;
&lt;br /&gt;
  TIceVLCPlayer = class(TCustomPanel)&lt;br /&gt;
  private&lt;br /&gt;
    VLC      : libvlc_instance;&lt;br /&gt;
    VLCVideo : integer;&lt;br /&gt;
    VLCInput : libvlc_input;&lt;br /&gt;
    VLCError : libvlc_exception;&lt;br /&gt;
    FLength: Int64;&lt;br /&gt;
    FIsPlaying: boolean;&lt;br /&gt;
    FTime: Int64;&lt;br /&gt;
    FPosition: Single;&lt;br /&gt;
&lt;br /&gt;
    FTimer: TTimer;&lt;br /&gt;
    FVideoWidth: integer;&lt;br /&gt;
    FVideoHeight: integer;&lt;br /&gt;
&lt;br /&gt;
    FOnPlay: TNotifyEvent;&lt;br /&gt;
    FOnStop: TNotifyEvent;&lt;br /&gt;
    FOnError: TErrorEvent;&lt;br /&gt;
&lt;br /&gt;
    function CheckError: boolean;&lt;br /&gt;
    procedure FTimerTimer(Sender: TObject);&lt;br /&gt;
    procedure StartPlaying;&lt;br /&gt;
    procedure SetOnPlay(const Value: TNotifyEvent);&lt;br /&gt;
    procedure StopPlaying;&lt;br /&gt;
    procedure SetOnStop(const Value: TNotifyEvent);&lt;br /&gt;
    procedure SetOnError(const Value: TErrorEvent);&lt;br /&gt;
    procedure StopIfPlaying;&lt;br /&gt;
&lt;br /&gt;
    { Private declarations }&lt;br /&gt;
  protected&lt;br /&gt;
    { Protected declarations }&lt;br /&gt;
  public&lt;br /&gt;
    { Public declarations }&lt;br /&gt;
    property Length: Int64 read FLength;&lt;br /&gt;
    property Time: Int64 read FTime;&lt;br /&gt;
    property Position: Single read FPosition;&lt;br /&gt;
    property IsPlaying: boolean read FIsPlaying;&lt;br /&gt;
    property VideoWidth: integer read FVideoWidth;&lt;br /&gt;
    property VideoHeight: integer read FVideoHeight;&lt;br /&gt;
&lt;br /&gt;
    constructor Create(AOwner: TComponent); override;&lt;br /&gt;
    destructor Destroy; override;&lt;br /&gt;
&lt;br /&gt;
    procedure Play(const FileName: string);&lt;br /&gt;
    procedure PlayTV(const CaptureDev: string; const Channel: integer; const Country: integer = 0);&lt;br /&gt;
&lt;br /&gt;
    procedure Stop;&lt;br /&gt;
  published&lt;br /&gt;
    { Published declarations }&lt;br /&gt;
    property Align;&lt;br /&gt;
    property OnPlay: TNotifyEvent read FOnPlay write SetOnPlay;&lt;br /&gt;
    property OnStop: TNotifyEvent read FOnStop write SetOnStop;&lt;br /&gt;
    property OnError: TErrorEvent read FOnError write SetOnError;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
procedure Register;&lt;br /&gt;
&lt;br /&gt;
implementation&lt;br /&gt;
&lt;br /&gt;
procedure Register;&lt;br /&gt;
begin&lt;br /&gt;
  RegisterComponents(&#039;IcePackage&#039;, [TIceVLCPlayer]);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
{ TIceVLCPlayer }&lt;br /&gt;
&lt;br /&gt;
constructor TIceVLCPlayer.Create(AOwner: TComponent);&lt;br /&gt;
var&lt;br /&gt;
  Args: array [0..1] of PChar;&lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  inherited Create(AOwner);&lt;br /&gt;
&lt;br /&gt;
  VLC := nil;&lt;br /&gt;
  VLCInput := nil;&lt;br /&gt;
  FIsPlaying := False;&lt;br /&gt;
&lt;br /&gt;
  ParentBackground := False;&lt;br /&gt;
  Color := clBlack;&lt;br /&gt;
  Width := 320;&lt;br /&gt;
  Height := 240;&lt;br /&gt;
  Caption := &#039;&#039;;&lt;br /&gt;
  BevelOuter := bvNone;&lt;br /&gt;
&lt;br /&gt;
  case VLD_Startup of&lt;br /&gt;
   VLD_SUCCESS  :&lt;br /&gt;
    begin&lt;br /&gt;
&lt;br /&gt;
    end;&lt;br /&gt;
   VLD_NOLIB    :&lt;br /&gt;
    begin&lt;br /&gt;
      raise TEVLCLoadLibrary.Create(&#039;VLC Player not installed! Please re-install.&#039;);&lt;br /&gt;
      exit;&lt;br /&gt;
    end;&lt;br /&gt;
   VLD_NOTFOUND :&lt;br /&gt;
    begin&lt;br /&gt;
      raise TEVLCNotFound.Create(&#039;VLC Player not installed or wrong version! Please re-install.&#039;);&lt;br /&gt;
      exit;&lt;br /&gt;
    end;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  //Clear error var.&lt;br /&gt;
  FillChar(VLCError,SizeOf(VLCError),0);&lt;br /&gt;
&lt;br /&gt;
  //Create new VLC object&lt;br /&gt;
  Args[0] := PChar(VLD_LibPath);&lt;br /&gt;
  Args[1] := nil;&lt;br /&gt;
  VLC := libvlc_new( 1, @Args[0], VLCError);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FTimer := TTimer.Create(nil);&lt;br /&gt;
  FTimer.Enabled := False;&lt;br /&gt;
  FTimer.Interval := 500;&lt;br /&gt;
  FTimer.OnTimer := FTimerTimer;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
destructor TIceVLCPlayer.Destroy;&lt;br /&gt;
begin&lt;br /&gt;
  FTimer.Free;&lt;br /&gt;
&lt;br /&gt;
  // NTDLL.DLL error :(&lt;br /&gt;
  //  if Assigned(VLC) then&lt;br /&gt;
  //    libvlc_destroy(VLC);&lt;br /&gt;
&lt;br /&gt;
  inherited;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TIceVLCPlayer.Stop;&lt;br /&gt;
begin&lt;br /&gt;
  StopIfPlaying;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TIceVLCPlayer.StopIfPlaying;&lt;br /&gt;
begin&lt;br /&gt;
  if IsPlaying then&lt;br /&gt;
  begin&lt;br /&gt;
    if Assigned(VLCInput) then&lt;br /&gt;
    begin&lt;br /&gt;
      libvlc_playlist_stop(VLC, VLCError);&lt;br /&gt;
      CheckError;&lt;br /&gt;
    end;&lt;br /&gt;
    libvlc_playlist_clear(VLC, VLCError);&lt;br /&gt;
    CheckError;&lt;br /&gt;
&lt;br /&gt;
    FTimer.Enabled := False;&lt;br /&gt;
    FIsPlaying := False;&lt;br /&gt;
&lt;br /&gt;
    libvlc_input_free(VLCInput);&lt;br /&gt;
    VLCInput := nil;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TIceVLCPlayer.Play(const FileName: string);&lt;br /&gt;
begin&lt;br /&gt;
  StopIfPlaying;&lt;br /&gt;
&lt;br /&gt;
  VLCVideo := libvlc_playlist_add(VLC, PChar(UTF8Encode(FileName)), &#039;&#039;, VLCError);&lt;br /&gt;
  CheckError;&lt;br /&gt;
&lt;br /&gt;
  StartPlaying;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TIceVLCPlayer.PlayTV(const CaptureDev: string; const Channel, Country: integer);&lt;br /&gt;
var&lt;br /&gt;
  Args: array[0..14] of PChar;&lt;br /&gt;
  DevStr: string;&lt;br /&gt;
begin&lt;br /&gt;
  StopIfPlaying;&lt;br /&gt;
&lt;br /&gt;
  args[0] := &#039;:dshow-adev=&amp;quot;&amp;quot;&#039;;&lt;br /&gt;
  args[1] := &#039;:dshow-size=&amp;quot;&amp;quot;&#039;;&lt;br /&gt;
  args[2] := &#039;:dshow-caching=200&#039;;&lt;br /&gt;
  args[3] := &#039;:dshow-chroma=&amp;quot;&amp;quot;&#039;;&lt;br /&gt;
  args[4] := &#039;:dshow-fps=0.000000&#039;;&lt;br /&gt;
  args[5] := &#039;:no-dshow-config&#039;;&lt;br /&gt;
  args[6] := &#039;:no-dshow-tuner&#039;;&lt;br /&gt;
  args[7] := PChar(&#039;:dshow-tuner-channel=&#039; + IntToStr(Channel));&lt;br /&gt;
  args[8] := PChar(&#039;:dshow-tuner-country=&#039; + IntToStr(Country));&lt;br /&gt;
  args[9] := &#039;:dshow-tuner-input=2&#039;; //1-Cable, 2-Antenna&lt;br /&gt;
  args[10] := &#039;:dshow-video-input=-1&#039;;&lt;br /&gt;
  args[11] := &#039;:dshow-audio-input=-1&#039;;&lt;br /&gt;
  args[12] := &#039;:dshow-video-output=-1&#039;;&lt;br /&gt;
  args[13] := &#039;:dshow-audio-output=-1&#039;;&lt;br /&gt;
  args[14] := nil;&lt;br /&gt;
&lt;br /&gt;
  DevStr := &#039;dshow:// :dshow-vdev=&amp;quot;&#039; + CaptureDev + &#039;&amp;quot;&#039;;&lt;br /&gt;
  VLCVideo := libvlc_playlist_add_extended(VLC, PChar(UTF8Encode(DevStr)), &#039;&#039;, 14, @Args[0], VLCError);&lt;br /&gt;
  CheckError;&lt;br /&gt;
&lt;br /&gt;
  StartPlaying;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function TIceVLCPlayer.CheckError: boolean;&lt;br /&gt;
var&lt;br /&gt;
  ErrorCode: Integer;&lt;br /&gt;
  ErrorMsg: string;&lt;br /&gt;
begin&lt;br /&gt;
  if VLCError.Code &amp;lt;&amp;gt; 0 then&lt;br /&gt;
  begin&lt;br /&gt;
    Result := False;&lt;br /&gt;
    ErrorCode := VLCError.Code;&lt;br /&gt;
    ErrorMsg := VLCError.Message;&lt;br /&gt;
    libvlc_exception_clear(VLCError);&lt;br /&gt;
&lt;br /&gt;
    if Assigned(OnError) then&lt;br /&gt;
      OnError(Self, ErrorCode, ErrorMsg);&lt;br /&gt;
&lt;br /&gt;
//    raise TEVLCException.CreateFmt(&#039;Error %d! %s&#039;, [ErrorCode, ErrorMsg]);&lt;br /&gt;
  end&lt;br /&gt;
  else&lt;br /&gt;
    Result := True;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TIceVLCPlayer.StartPlaying;&lt;br /&gt;
begin&lt;br /&gt;
  //Set current parent (Self)&lt;br /&gt;
  libvlc_video_set_parent(VLC, Self.Handle, VLCError);&lt;br /&gt;
  CheckError;&lt;br /&gt;
&lt;br /&gt;
  //Start play&lt;br /&gt;
  libvlc_playlist_play(VLC, VLCVideo, 0, nil, VLCError);&lt;br /&gt;
  CheckError;&lt;br /&gt;
&lt;br /&gt;
  FLength := -2; //returned Length = -1 - stream; 0 -  TV , &amp;gt;0 - local file&lt;br /&gt;
&lt;br /&gt;
  FTimer.Enabled := true;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TIceVLCPlayer.StopPlaying;&lt;br /&gt;
begin&lt;br /&gt;
  FTimer.Enabled := False;&lt;br /&gt;
  FIsPlaying := False;&lt;br /&gt;
&lt;br /&gt;
  //Freeing current input&lt;br /&gt;
  libvlc_input_free(VLCInput);&lt;br /&gt;
  VLCInput := nil;&lt;br /&gt;
&lt;br /&gt;
  if Assigned(OnStop) then&lt;br /&gt;
    OnStop(Self);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TIceVLCPlayer.FTimerTimer(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
  Ln: int64;&lt;br /&gt;
begin&lt;br /&gt;
  FTimer.Enabled := False;&lt;br /&gt;
&lt;br /&gt;
  try&lt;br /&gt;
    //Get current input&lt;br /&gt;
    VLCInput := libvlc_playlist_get_input(VLC, VLCError);&lt;br /&gt;
    CheckError;&lt;br /&gt;
&lt;br /&gt;
    //Get current movie length (msec)&lt;br /&gt;
    Ln := libvlc_input_get_length(VLCInput, VLCError);&lt;br /&gt;
&lt;br /&gt;
    if not CheckError then&lt;br /&gt;
    begin&lt;br /&gt;
      if IsPlaying then&lt;br /&gt;
      begin&lt;br /&gt;
        //If end of movie then cause error.&lt;br /&gt;
        FIsPlaying := False;&lt;br /&gt;
        StopPlaying;&lt;br /&gt;
        exit;&lt;br /&gt;
      end&lt;br /&gt;
      else&lt;br /&gt;
      begin&lt;br /&gt;
        FTimer.Enabled := True;&lt;br /&gt;
        exit;&lt;br /&gt;
      end;&lt;br /&gt;
    end;&lt;br /&gt;
    FLength := Ln;&lt;br /&gt;
&lt;br /&gt;
    //Get current movie current time (msec)&lt;br /&gt;
    FTime := libvlc_input_get_time(VLCInput, VLCError);&lt;br /&gt;
    CheckError;&lt;br /&gt;
&lt;br /&gt;
    //Get current movie current position (0 -&amp;gt; 1)&lt;br /&gt;
    FPosition := libvlc_input_get_position(VLCInput, VLCError);&lt;br /&gt;
    CheckError;&lt;br /&gt;
&lt;br /&gt;
    if CheckError and (not IsPlaying) then&lt;br /&gt;
    begin&lt;br /&gt;
      FIsPlaying := True;&lt;br /&gt;
&lt;br /&gt;
      if Assigned(OnPlay) then&lt;br /&gt;
        OnPlay(Self);&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
//    FVideoWidth := libvlc_video_get_width(VLCInput, VLCError);&lt;br /&gt;
//    CheckError;&lt;br /&gt;
//    FVideoHeight := libvlc_video_get_height(VLCInput, VLCError);&lt;br /&gt;
//    CheckError;&lt;br /&gt;
&lt;br /&gt;
    FTimer.Enabled := True;&lt;br /&gt;
  Except&lt;br /&gt;
    if IsPlaying then&lt;br /&gt;
      StopPlaying;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TIceVLCPlayer.SetOnError(const Value: TErrorEvent);&lt;br /&gt;
begin&lt;br /&gt;
  FOnError := Value;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TIceVLCPlayer.SetOnPlay(const Value: TNotifyEvent);&lt;br /&gt;
begin&lt;br /&gt;
  FOnPlay := Value;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TIceVLCPlayer.SetOnStop(const Value: TNotifyEvent);&lt;br /&gt;
begin&lt;br /&gt;
  FOnStop := Value;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
end.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------&lt;br /&gt;
libVLC.pas - Thanks to Paul TOTH&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unit libVLC;&lt;br /&gt;
&lt;br /&gt;
{ VideoLAN libvcl.dll (0.8.6b) Interface for Delphi (c)2007 by Paul TOTH&lt;br /&gt;
  - Modified by Norbert Mereg     libvcl.dll (0.8.6i)                       }&lt;br /&gt;
&lt;br /&gt;
// http://wiki.videolan.org/ExternalAPI#VLC_Control&lt;br /&gt;
&lt;br /&gt;
interface&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
const&lt;br /&gt;
 LibName = &#039;libvlc.dll&#039;;&lt;br /&gt;
&lt;br /&gt;
// Structures&lt;br /&gt;
type&lt;br /&gt;
  libvlc_exception = record&lt;br /&gt;
    Code    : integer;&lt;br /&gt;
    Message : pchar;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
 libvlc_instance = pointer;&lt;br /&gt;
 libvlc_input    = pointer;&lt;br /&gt;
&lt;br /&gt;
{$IFDEF STATIC}&lt;br /&gt;
&lt;br /&gt;
// Core&lt;br /&gt;
function libvlc_new(argc:integer; args:ppchar; var exception:libvlc_exception):libvlc_instance; cdecl external lib;&lt;br /&gt;
procedure libvlc_destroy(vlc:libvlc_instance); cdecl external lib;&lt;br /&gt;
procedure libvlc_exception_clear(var exception:libvlc_exception); cdecl external lib;&lt;br /&gt;
&lt;br /&gt;
// Playlist&lt;br /&gt;
function libvlc_playlist_add(vlc:libvlc_instance; fileName,name:pchar; var exception:libvlc_exception):integer; cdecl external lib;&lt;br /&gt;
function libvlc_playlist_add_extended(vlc:libvlc_instance; fileName,name:pchar; optCount:integer; opts:ppchar; var exception:libvlc_exception):integer; cdecl external lib;&lt;br /&gt;
procedure libvlc_playlist_clear(vlc:libvlc_instance; var exception:libvlc_exception); cdecl external lib;&lt;br /&gt;
function libvlc_playlist_items_count(vlc:libvlc_instance; var exception:libvlc_exception):integer; cdecl external lib;&lt;br /&gt;
function libvlc_playlist_isplaying(vlc:libvlc_instance; var exception:libvlc_exception):longbool; cdecl external lib;&lt;br /&gt;
procedure libvlc_playlist_play(vlc:libvlc_instance; index,optCount:integer; opts:ppchar; var exception:libvlc_exception); cdecl external lib;&lt;br /&gt;
procedure libvlc_playlist_pause(vlc:libvlc_instance; var exception:libvlc_exception); cdecl external lib;&lt;br /&gt;
procedure libvlc_playlist_stop(vlc:libvlc_instance; var exception:libvlc_exception); cdecl external lib;&lt;br /&gt;
procedure libvlc_playlist_next(vlc:libvlc_instance; var exception:libvlc_exception); cdecl external lib;&lt;br /&gt;
procedure libvlc_playlist_prev(vlc:libvlc_instance; var exception:libvlc_exception); cdecl external lib;&lt;br /&gt;
function libvlc_playlist_get_input(vlc:libvlc_instance; var exception:libvlc_exception):libvlc_input; cdecl external lib;&lt;br /&gt;
&lt;br /&gt;
// Input&lt;br /&gt;
procedure libvlc_input_free(input:libvlc_input); cdecl external lib;&lt;br /&gt;
function libvlc_input_get_length(input:libvlc_input; var exception:libvlc_exception):int64; cdecl external lib;&lt;br /&gt;
function libvlc_input_get_time(input:libvlc_input; var exception:libvlc_exception):int64; cdecl external lib;&lt;br /&gt;
function libvlc_input_get_position(input:libvlc_input; var exception:libvlc_exception):single; cdecl external lib;&lt;br /&gt;
procedure libvlc_toggle_fullscreen(input:libvlc_input; var exception:libvlc_exception); cdecl external lib;&lt;br /&gt;
procedure libvlc_set_fullscreen(input:libvlc_input; var exception:libvlc_exception); cdecl external lib;&lt;br /&gt;
function libvlc_get_fullscreen(input:libvlc_input; var exception:libvlc_exception):longbool; cdecl external lib;&lt;br /&gt;
&lt;br /&gt;
// Video&lt;br /&gt;
function libvlc_video_get_width(input:libvlc_input; var exception:libvlc_exception):integer; cdecl external lib;&lt;br /&gt;
function libvlc_video_get_height(input:libvlc_input; var exception:libvlc_exception):integer; cdecl external lib;&lt;br /&gt;
&lt;br /&gt;
// Audio&lt;br /&gt;
function libvlc_audio_get_mute(vlc:libvlc_instance; var exception:libvlc_exception):longbool; cdecl external lib;&lt;br /&gt;
procedure libvlc_audio_set_mute(vlc:libvlc_instance; mute:longbool; var exception:libvlc_exception); cdecl external lib;&lt;br /&gt;
function libvlc_audio_get_volume(vlc:libvlc_instance; var exception:libvlc_exception):integer; cdecl external lib;&lt;br /&gt;
procedure libvlc_audio_set_volume(vlc:libvlc_instance; volume:integer; var exception:libvlc_exception); cdecl external lib;&lt;br /&gt;
&lt;br /&gt;
//Other&lt;br /&gt;
procedure libvlc_video_set_parent(vlc:libvlc_instance; libvlc_drawable_t:integer; var exception:libvlc_exception); cdecl external lib;&lt;br /&gt;
//function libvlc_video_get_parent(vlc:libvlc_instance; var exception:libvlc_exception):integer; cdecl external lib;&lt;br /&gt;
 {$ELSE}&lt;br /&gt;
&lt;br /&gt;
var&lt;br /&gt;
&lt;br /&gt;
// Core&lt;br /&gt;
 libvlc_new:function(argc:integer; args:ppchar; var exception:libvlc_exception):libvlc_instance; cdecl;&lt;br /&gt;
 libvlc_destroy:procedure(vlc:libvlc_instance); cdecl;&lt;br /&gt;
 libvlc_exception_clear:procedure(var exception:libvlc_exception); cdecl;&lt;br /&gt;
// Playlist&lt;br /&gt;
 libvlc_playlist_add:function(vlc:libvlc_instance; fileName,name:pchar; var exception:libvlc_exception):integer; cdecl;&lt;br /&gt;
 libvlc_playlist_add_extended:function(vlc:libvlc_instance; fileName,name:pchar; optCount:integer; opts:ppchar; var exception:libvlc_exception):integer; cdecl;&lt;br /&gt;
 libvlc_playlist_clear:procedure(vlc:libvlc_instance; var exception:libvlc_exception); cdecl;&lt;br /&gt;
 libvlc_playlist_items_count:function(vlc:libvlc_instance; var exception:libvlc_exception):integer; cdecl;&lt;br /&gt;
 libvlc_playlist_isplaying:function(vlc:libvlc_instance; var exception:libvlc_exception):longbool; cdecl;&lt;br /&gt;
 libvlc_playlist_play:procedure(vlc:libvlc_instance; index,optCount:integer; opts:ppchar; var exception:libvlc_exception); cdecl;&lt;br /&gt;
 libvlc_playlist_pause:procedure(vlc:libvlc_instance; var exception:libvlc_exception); cdecl;&lt;br /&gt;
 libvlc_playlist_stop:procedure(vlc:libvlc_instance; var exception:libvlc_exception); cdecl;&lt;br /&gt;
 libvlc_playlist_next:procedure(vlc:libvlc_instance; var exception:libvlc_exception); cdecl;&lt;br /&gt;
 libvlc_playlist_prev:procedure(vlc:libvlc_instance; var exception:libvlc_exception); cdecl;&lt;br /&gt;
 libvlc_playlist_get_input:function(vlc:libvlc_instance; var exception:libvlc_exception):libvlc_input; cdecl;&lt;br /&gt;
 // Input (Vout)&lt;br /&gt;
 libvlc_input_free:procedure(input:libvlc_input); cdecl;&lt;br /&gt;
 libvlc_input_get_length:function(input:libvlc_input; var exception:libvlc_exception):int64; cdecl;&lt;br /&gt;
 libvlc_input_get_time:function(input:libvlc_input; var exception:libvlc_exception):int64; cdecl;&lt;br /&gt;
 libvlc_input_get_position:function(input:libvlc_input; var exception:libvlc_exception):single; cdecl;&lt;br /&gt;
 libvlc_toggle_fullscreen:procedure(input:libvlc_input; var exception:libvlc_exception); cdecl;&lt;br /&gt;
 libvlc_set_fullscreen:procedure(input:libvlc_input; var exception:libvlc_exception); cdecl;&lt;br /&gt;
 libvlc_get_fullscreen:function(input:libvlc_input; var exception:libvlc_exception):longbool; cdecl;&lt;br /&gt;
 // audio&lt;br /&gt;
 libvlc_video_get_width:function(input:libvlc_input; var exception:libvlc_exception):integer; cdecl;&lt;br /&gt;
 libvlc_video_get_height:function(input:libvlc_input; var exception:libvlc_exception):integer; cdecl;&lt;br /&gt;
 // Audio&lt;br /&gt;
 libvlc_audio_get_mute:function(vlc:libvlc_instance; var exception:libvlc_exception):longbool; cdecl;&lt;br /&gt;
 libvlc_audio_set_mute:procedure(vlc:libvlc_instance; mute:longbool; var exception:libvlc_exception); cdecl;&lt;br /&gt;
 libvlc_audio_get_volume:function(vlc:libvlc_instance; var exception:libvlc_exception):integer; cdecl;&lt;br /&gt;
 libvlc_audio_set_volume:procedure(vlc:libvlc_instance; volume:integer; var exception:libvlc_exception); cdecl;&lt;br /&gt;
&lt;br /&gt;
 //Other&lt;br /&gt;
 libvlc_video_set_parent:procedure(vlc:libvlc_instance; libvlc_drawable_t:integer; var exception:libvlc_exception); cdecl;&lt;br /&gt;
 libvlc_video_get_parent:function(vlc:libvlc_instance; var exception:libvlc_exception):integer; cdecl;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
const&lt;br /&gt;
  VLD_SUCCESS  =  0;&lt;br /&gt;
  VLD_NOLIB    = -1;&lt;br /&gt;
  VLD_NOTFOUND = -2;&lt;br /&gt;
&lt;br /&gt;
// load libvlc.dll (get Install path from registry)&lt;br /&gt;
function VLD_LoadLibrary:integer;&lt;br /&gt;
// return Install path found in registry by VLD_LoadLibrary&lt;br /&gt;
function VLD_LibPath:string;&lt;br /&gt;
// return libvlc.dll proc adress&lt;br /&gt;
function VLD_GetProcAddress(Name:pchar; var addr:pointer):integer;&lt;br /&gt;
// return (and clear) last VLD error&lt;br /&gt;
function VLD_LastError:integer;&lt;br /&gt;
// load everything (dll &amp;amp; procs) and return last VLD error&lt;br /&gt;
function VLD_Startup:integer;&lt;br /&gt;
&lt;br /&gt;
{$ENDIF}&lt;br /&gt;
&lt;br /&gt;
implementation&lt;br /&gt;
&lt;br /&gt;
{$IFNDEF STATIC}&lt;br /&gt;
&lt;br /&gt;
uses&lt;br /&gt;
 Windows;&lt;br /&gt;
 &lt;br /&gt;
var&lt;br /&gt;
  LibVLCHandle: THandle = 0;&lt;br /&gt;
  LibPath: string;&lt;br /&gt;
  LastError: integer = VLD_SUCCESS;&lt;br /&gt;
  VLCLibLoaded: boolean = false;&lt;br /&gt;
&lt;br /&gt;
function GetLibPath: boolean;&lt;br /&gt;
var&lt;br /&gt;
 Handle: HKEY;&lt;br /&gt;
 RegType: integer;&lt;br /&gt;
 DataSize: integer;&lt;br /&gt;
begin&lt;br /&gt;
  Result := False;&lt;br /&gt;
  if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, &#039;Software\VideoLAN\VLC&#039;, 0, KEY_ALL_ACCESS, Handle) = ERROR_SUCCESS) then&lt;br /&gt;
  begin&lt;br /&gt;
    if RegQueryValueEx(Handle, &#039;InstallDir&#039;, nil, @RegType, nil, @DataSize) = ERROR_SUCCESS then&lt;br /&gt;
    begin&lt;br /&gt;
      SetLength(LibPath, Datasize);&lt;br /&gt;
      RegQueryValueEx(Handle, &#039;InstallDir&#039;, nil, @RegType, PByte(@LibPath[1]), @DataSize);&lt;br /&gt;
      LibPath[DataSize] := &#039;\&#039;;&lt;br /&gt;
      Result := True;&lt;br /&gt;
    end;&lt;br /&gt;
    RegCloseKey(Handle);&lt;br /&gt;
 end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function VLD_LibPath: string;&lt;br /&gt;
begin&lt;br /&gt;
  if LibPath = &#039;&#039; then&lt;br /&gt;
    getLibPath;&lt;br /&gt;
  Result := LibPath;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function VLD_LoadLibrary:integer;&lt;br /&gt;
begin&lt;br /&gt;
  if LibVLCHandle = 0 then&lt;br /&gt;
  begin&lt;br /&gt;
    LibVLCHandle := LoadLibrary(LibName);&lt;br /&gt;
    if (LibVLCHandle = 0) and (getLibPath) then&lt;br /&gt;
      LibVLCHandle := LoadLibrary(PChar(LibPath + LibName));&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  if LibVLCHandle &amp;lt;&amp;gt; 0 then&lt;br /&gt;
    Result := VLD_SUCCESS&lt;br /&gt;
  else&lt;br /&gt;
  begin&lt;br /&gt;
    LastError := VLD_NOLIB;&lt;br /&gt;
    Result := LastError;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function VLD_GetProcAddress(Name: PChar; var Addr: Pointer): Integer;&lt;br /&gt;
begin&lt;br /&gt;
  if LibVLCHandle = 0 then&lt;br /&gt;
  begin&lt;br /&gt;
    Result := VLD_LoadLibrary;&lt;br /&gt;
    if Result &amp;lt;&amp;gt; VLD_SUCCESS then exit;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  Addr := GetProcAddress(LibVLCHandle, Name);&lt;br /&gt;
  if Addr &amp;lt;&amp;gt; nil then&lt;br /&gt;
    Result := VLD_SUCCESS&lt;br /&gt;
  else&lt;br /&gt;
  begin&lt;br /&gt;
    LastError := VLD_NOTFOUND;&lt;br /&gt;
    Result := LastError;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function VLD_LastError: Integer;&lt;br /&gt;
begin&lt;br /&gt;
 Result := LastError;&lt;br /&gt;
 LastError := VLD_SUCCESS;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function VLD_Startup: Integer;&lt;br /&gt;
begin&lt;br /&gt;
  LastError := VLD_SUCCESS;&lt;br /&gt;
  if VLD_LoadLibrary = VLD_SUCCESS then&lt;br /&gt;
  begin&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_new&#039;, @libvlc_new);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_destroy&#039;, @libvlc_destroy);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_exception_clear&#039;, @libvlc_exception_clear);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_playlist_add&#039;, @libvlc_playlist_add);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_playlist_add_extended&#039;, @libvlc_playlist_add_extended);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_playlist_clear&#039;, @libvlc_playlist_clear);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_playlist_items_count&#039;, @libvlc_playlist_items_count);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_playlist_isplaying&#039;, @libvlc_playlist_isplaying);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_playlist_play&#039;, @libvlc_playlist_play);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_playlist_pause&#039;, @libvlc_playlist_pause);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_playlist_stop&#039;, @libvlc_playlist_stop);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_playlist_next&#039;, @libvlc_playlist_next);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_playlist_prev&#039;, @libvlc_playlist_prev);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_playlist_get_input&#039;, @libvlc_playlist_get_input);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_input_free&#039;, @libvlc_input_free);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_input_get_length&#039;, @libvlc_input_get_length);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_input_get_time&#039;, @libvlc_input_get_time);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_input_get_position&#039;, @libvlc_input_get_position);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_toggle_fullscreen&#039;, @libvlc_toggle_fullscreen);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_set_fullscreen&#039;, @libvlc_set_fullscreen);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_get_fullscreen&#039;, @libvlc_get_fullscreen);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_video_get_width&#039;, @libvlc_video_get_width);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_video_get_height&#039;, @libvlc_video_get_height);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_audio_get_mute&#039;, @libvlc_audio_get_mute);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_audio_set_mute&#039;, @libvlc_audio_set_mute);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_audio_get_volume&#039;, @libvlc_audio_get_volume);&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_audio_set_volume&#039;, @libvlc_audio_set_volume);&lt;br /&gt;
&lt;br /&gt;
    VLD_GetProcAddress(&#039;libvlc_video_set_parent&#039;, @libvlc_video_set_parent);&lt;br /&gt;
//    VLD_GetProcAddress(&#039;libvlc_video_get_parent&#039;, @libvlc_video_get_parent);&lt;br /&gt;
    VLCLibLoaded := true;&lt;br /&gt;
  end;&lt;br /&gt;
  Result := LastError;&lt;br /&gt;
end;&lt;br /&gt;
{$ENDIF}&lt;br /&gt;
&lt;br /&gt;
end.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Icebob</name></author>
	</entry>
</feed>