Browse Source

--- Merging r22943 into '.':
A packages/libvlc
A packages/libvlc/example
A packages/libvlc/example/testvlc.pp
A packages/libvlc/example/tvlc.pp
A packages/libvlc/example/testvlc.lpi
A packages/libvlc/example/tvlc.lpi
A packages/libvlc/Makefile
A packages/libvlc/fpmake.pp
A packages/libvlc/Makefile.fpc
A packages/libvlc/src
A packages/libvlc/src/vlc.pp
A packages/libvlc/src/libvlc.pp

# revisions: 22943
r22943 | michael | 2012-11-06 23:42:15 +0100 (Tue, 06 Nov 2012) | 1 line
Changed paths:
A /trunk/packages/libvlc
A /trunk/packages/libvlc/Makefile
A /trunk/packages/libvlc/Makefile.fpc
A /trunk/packages/libvlc/example
A /trunk/packages/libvlc/example/testvlc.lpi
A /trunk/packages/libvlc/example/testvlc.pp
A /trunk/packages/libvlc/example/tvlc.lpi
A /trunk/packages/libvlc/example/tvlc.pp
A /trunk/packages/libvlc/fpmake.pp
A /trunk/packages/libvlc/src
A /trunk/packages/libvlc/src/libvlc.pp
A /trunk/packages/libvlc/src/vlc.pp

* Initial version of libvlc units

git-svn-id: branches/fixes_2_6@24563 -

marco 12 years ago
parent
commit
776d63607a

+ 9 - 0
.gitattributes

@@ -5008,6 +5008,15 @@ packages/libsee/examples/tlibsee.pp svneol=native#text/plain
 packages/libsee/fpmake.pp svneol=native#text/plain
 packages/libsee/src/libsee.pas svneol=native#text/plain
 packages/libsee/src/libseewrap.c svneol=native#text/plain
+packages/libvlc/Makefile svneol=native#text/plain
+packages/libvlc/Makefile.fpc svneol=native#text/plain
+packages/libvlc/example/testvlc.lpi svneol=native#text/plain
+packages/libvlc/example/testvlc.pp svneol=native#text/plain
+packages/libvlc/example/tvlc.lpi svneol=native#text/plain
+packages/libvlc/example/tvlc.pp svneol=native#text/plain
+packages/libvlc/fpmake.pp svneol=native#text/plain
+packages/libvlc/src/libvlc.pp svneol=native#text/plain
+packages/libvlc/src/vlc.pp svneol=native#text/plain
 packages/libxml/Makefile svneol=native#text/plain
 packages/libxml/Makefile.fpc svneol=native#text/plain
 packages/libxml/examples/Makefile svneol=native#text/plain

+ 79 - 15
packages/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2013/01/27]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2013/05/23]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -287,19 +287,19 @@ FPCFPMAKE=$(FPC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer graph libc unixutil graph pxlib bzip2
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer libvlc graph libc unixutil graph pxlib bzip2
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv graph unzip gdbint
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint libpng mad tcl opengl gtk1 gtk2 librsvg a52 cdrom fpgtk openal fftw lua fcl-extra zorba oggvorbis sdl openssl graph pcap  httpd22 httpd24  pxlib numlib winceunits cairo libxml gmp opencl libsee nvapi ptc aspell dblib fpindexer
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint libpng mad tcl opengl gtk1 gtk2 librsvg a52 cdrom fpgtk openal fftw lua fcl-extra zorba oggvorbis sdl openssl graph pcap  httpd22 httpd24  pxlib numlib winceunits cairo libxml gmp opencl libsee nvapi ptc aspell dblib fpindexer libvlc
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv zlib libpng x11 tcl fpgtk rexx os2units gtk1 imlib
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 httpd24  pxlib numlib users iconvenc gmp fcl-extra libxml dblib fpindexer
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 httpd24  pxlib numlib users iconvenc gmp fcl-extra libxml dblib fpindexer libvlc
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 httpd24  pxlib numlib iconvenc fpindexer
@@ -353,10 +353,10 @@ ifeq ($(FULL_TARGET),i386-iphonesim)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick libpng gdbm tcl syslog libcurl bfd aspell utmp fftw pcap openssl numlib iconvenc gmp fcl-extra univint fpindexer httpd22 httpd24  opengles objcrtl dblib
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer libvlc graph
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 httpd24  pxlib numlib users iconvenc gmp fcl-extra libxml dblib fpindexer
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 httpd24  pxlib numlib users iconvenc gmp fcl-extra libxml dblib fpindexer libvlc
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib dblib fpindexer
@@ -377,7 +377,7 @@ ifeq ($(FULL_TARGET),m68k-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer libvlc graph
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib dblib fpindexer
@@ -401,7 +401,7 @@ ifeq ($(FULL_TARGET),powerpc-wii)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  libogcfpc
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer libvlc graph
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib dblib fpindexer
@@ -413,10 +413,10 @@ ifeq ($(FULL_TARGET),sparc-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer libvlc graph
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 httpd24  pxlib numlib users iconvenc gmp fcl-extra libxml dblib fpindexer
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 httpd24  pxlib numlib users iconvenc gmp fcl-extra libxml dblib fpindexer libvlc
 endif
 ifeq ($(FULL_TARGET),x86_64-netbsd)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib dblib fpindexer
@@ -431,13 +431,13 @@ ifeq ($(FULL_TARGET),x86_64-darwin)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick libpng gdbm tcl syslog libcurl bfd aspell utmp fftw pcap openssl numlib iconvenc gmp fcl-extra univint dblib fpindexer opengl x11 cairo gtk1 gtk2 librsvg fpgtk xforms gnome1  httpd22 httpd24  imlib cocoaint
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint tcl opengl gtk1 fpgtk fftw sdl openssl cdrom  httpd22 httpd24  numlib fcl-extra opencl nvapi ptc graph dblib fpindexer
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint tcl opengl gtk1 fpgtk fftw sdl openssl cdrom  httpd22 httpd24  numlib fcl-extra opencl nvapi ptc graph dblib fpindexer libvlc
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer libvlc graph
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  palmunits
@@ -461,7 +461,7 @@ ifeq ($(FULL_TARGET),arm-symbian)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer libvlc graph
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick libpng gdbm tcl syslog libcurl bfd aspell utmp fftw pcap openssl numlib iconvenc gmp fcl-extra univint dblib fpindexer opengl x11 cairo gtk1 gtk2 librsvg fpgtk xforms gnome1  httpd22 httpd24  imlib cocoaint
@@ -473,13 +473,13 @@ ifeq ($(FULL_TARGET),avr-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer libvlc
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json fcl-js fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2 hermes fppkg  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  pxlib numlib gmp libsee ptc dblib fpindexer libvlc
 endif
 override INSTALL_FPCPACKAGE=y
 override INSTALL_FPCSUBDIR=packages
@@ -1516,6 +1516,7 @@ TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 TARGET_DIRS_GRAPH=1
 TARGET_DIRS_LIBC=1
 TARGET_DIRS_UNIXUTIL=1
@@ -1627,6 +1628,7 @@ TARGET_DIRS_PTC=1
 TARGET_DIRS_ASPELL=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 TARGET_DIRS_HASH=1
@@ -1740,6 +1742,7 @@ TARGET_DIRS_FCL-EXTRA=1
 TARGET_DIRS_LIBXML=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 TARGET_DIRS_HASH=1
@@ -2626,6 +2629,7 @@ TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 TARGET_DIRS_GRAPH=1
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
@@ -2704,6 +2708,7 @@ TARGET_DIRS_FCL-EXTRA=1
 TARGET_DIRS_LIBXML=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 TARGET_DIRS_HASH=1
@@ -3046,6 +3051,7 @@ TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 TARGET_DIRS_GRAPH=1
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
@@ -3421,6 +3427,7 @@ TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 TARGET_DIRS_GRAPH=1
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
@@ -3683,6 +3690,7 @@ TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 TARGET_DIRS_GRAPH=1
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
@@ -3761,6 +3769,7 @@ TARGET_DIRS_FCL-EXTRA=1
 TARGET_DIRS_LIBXML=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 endif
 ifeq ($(FULL_TARGET),x86_64-netbsd)
 TARGET_DIRS_HASH=1
@@ -4102,6 +4111,7 @@ TARGET_DIRS_PTC=1
 TARGET_DIRS_GRAPH=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
 TARGET_DIRS_HASH=1
@@ -4222,6 +4232,7 @@ TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 TARGET_DIRS_GRAPH=1
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
@@ -4557,6 +4568,7 @@ TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 TARGET_DIRS_GRAPH=1
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
@@ -4775,6 +4787,7 @@ TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
 TARGET_DIRS_HASH=1
@@ -4895,6 +4908,7 @@ TARGET_DIRS_LIBSEE=1
 TARGET_DIRS_PTC=1
 TARGET_DIRS_DBLIB=1
 TARGET_DIRS_FPINDEXER=1
+TARGET_DIRS_LIBVLC=1
 endif
 ifdef TARGET_DIRS_HASH
 hash_all:
@@ -8991,6 +9005,51 @@ fpindexer:
 	$(MAKE) -C fpindexer all
 .PHONY: fpindexer_all fpindexer_debug fpindexer_smart fpindexer_release fpindexer_units fpindexer_examples fpindexer_shared fpindexer_install fpindexer_sourceinstall fpindexer_exampleinstall fpindexer_distinstall fpindexer_zipinstall fpindexer_zipsourceinstall fpindexer_zipexampleinstall fpindexer_zipdistinstall fpindexer_clean fpindexer_distclean fpindexer_cleanall fpindexer_info fpindexer_makefiles fpindexer
 endif
+ifdef TARGET_DIRS_LIBVLC
+libvlc_all:
+	$(MAKE) -C libvlc all
+libvlc_debug:
+	$(MAKE) -C libvlc debug
+libvlc_smart:
+	$(MAKE) -C libvlc smart
+libvlc_release:
+	$(MAKE) -C libvlc release
+libvlc_units:
+	$(MAKE) -C libvlc units
+libvlc_examples:
+	$(MAKE) -C libvlc examples
+libvlc_shared:
+	$(MAKE) -C libvlc shared
+libvlc_install:
+	$(MAKE) -C libvlc install
+libvlc_sourceinstall:
+	$(MAKE) -C libvlc sourceinstall
+libvlc_exampleinstall:
+	$(MAKE) -C libvlc exampleinstall
+libvlc_distinstall:
+	$(MAKE) -C libvlc distinstall
+libvlc_zipinstall:
+	$(MAKE) -C libvlc zipinstall
+libvlc_zipsourceinstall:
+	$(MAKE) -C libvlc zipsourceinstall
+libvlc_zipexampleinstall:
+	$(MAKE) -C libvlc zipexampleinstall
+libvlc_zipdistinstall:
+	$(MAKE) -C libvlc zipdistinstall
+libvlc_clean:
+	$(MAKE) -C libvlc clean
+libvlc_distclean:
+	$(MAKE) -C libvlc distclean
+libvlc_cleanall:
+	$(MAKE) -C libvlc cleanall
+libvlc_info:
+	$(MAKE) -C libvlc info
+libvlc_makefiles:
+	$(MAKE) -C libvlc makefiles
+libvlc:
+	$(MAKE) -C libvlc all
+.PHONY: libvlc_all libvlc_debug libvlc_smart libvlc_release libvlc_units libvlc_examples libvlc_shared libvlc_install libvlc_sourceinstall libvlc_exampleinstall libvlc_distinstall libvlc_zipinstall libvlc_zipsourceinstall libvlc_zipexampleinstall libvlc_zipdistinstall libvlc_clean libvlc_distclean libvlc_cleanall libvlc_info libvlc_makefiles libvlc
+endif
 ifdef TARGET_DIRS_GRAPH
 graph_all:
 	$(MAKE) -C graph all
@@ -9828,6 +9887,11 @@ fcl-registry_debug: fcl-xml_debug
 fcl-registry_smart: fcl-xml_smart
 fcl-registry_release: fcl-xml_release
 fcl-registry_shared: fcl-xml_shared
+libvlc_all: fcl-base_all
+libvlc_debug: fcl-base_debug
+libvlc_smart: fcl-base_smart
+libvlc_release: fcl-base_release
+libvlc_shared: fcl-base_shared
 ifeq ($(findstring $(OS_TARGET),linux darwin iphonesim freebsd openbsd netbsd solaris),)
 fcl-net_all: fcl-passrc_all fcl-xml_all
 fcl-net_debug: fcl-passrc_debug fcl-xml_debug

+ 10 - 4
packages/Makefile.fpc

@@ -24,7 +24,7 @@ dirs_haiku=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc pos
 dirs_freebsd=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick \
                gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib \
                imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg  httpd22 httpd24  pxlib numlib \
-               users iconvenc gmp fcl-extra libxml dblib fpindexer
+               users iconvenc gmp fcl-extra libxml dblib fpindexer libvlc
 dirs_darwin=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick \
                libpng gdbm tcl syslog libcurl bfd aspell utmp fftw pcap openssl numlib iconvenc gmp fcl-extra univint dblib fpindexer
 dirs_iphonesim=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick \
@@ -48,13 +48,13 @@ dirs_linux=fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle db
                gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl opencl cairo gtk1 gtk2 librsvg \
                a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba \
                imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1  httpd22 httpd24  \
-               pxlib numlib gmp libsee ptc dblib fpindexer
+               pxlib numlib gmp libsee ptc dblib fpindexer libvlc
 dirs_win32=fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick \
                gdbint libpng mad tcl opengl gtk1 gtk2 librsvg a52 cdrom fpgtk openal fftw lua fcl-extra zorba \
                oggvorbis sdl openssl graph pcap  httpd22 httpd24  pxlib numlib winceunits cairo libxml \
-               gmp opencl libsee nvapi ptc aspell dblib fpindexer
+               gmp opencl libsee nvapi ptc aspell dblib fpindexer libvlc
 dirs_win64=fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint \
-                tcl opengl gtk1 fpgtk fftw sdl openssl cdrom  httpd22 httpd24  numlib fcl-extra opencl nvapi ptc graph dblib fpindexer
+                tcl opengl gtk1 fpgtk fftw sdl openssl cdrom  httpd22 httpd24  numlib fcl-extra opencl nvapi ptc graph dblib fpindexer libvlc
 dirs_wince=winceunits httpd22 httpd24  fcl-web fastcgi tcl fftw unzip zlib sqlite mysql ibase postgres oracle odbc sdl openssl oggvorbis numlib dblib fpindexer
 dirs_os2=fv zlib libpng x11 tcl fpgtk rexx os2units gtk1 imlib
 dirs_emx=fv zlib libpng x11 tcl fpgtk rexx os2units gtk1 imlib
@@ -178,6 +178,12 @@ fcl-registry_smart: fcl-xml_smart
 fcl-registry_release: fcl-xml_release
 fcl-registry_shared: fcl-xml_shared
 
+libvlc_all: fcl-base_all
+libvlc_debug: fcl-base_debug
+libvlc_smart: fcl-base_smart
+libvlc_release: fcl-base_release
+libvlc_shared: fcl-base_shared
+
 ifeq ($(findstring $(OS_TARGET),linux darwin iphonesim freebsd openbsd netbsd solaris),)
 fcl-net_all: fcl-passrc_all fcl-xml_all
 fcl-net_debug: fcl-passrc_debug fcl-xml_debug

+ 2458 - 0
packages/libvlc/Makefile

@@ -0,0 +1,2458 @@
+#
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2013/05/23]
+#
+default: all
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
+BSDs = freebsd netbsd openbsd darwin
+UNIXs = linux $(BSDs) solaris qnx haiku
+LIMIT83fs = go32v2 os2 emx watcom
+OSNeedsComspecToRunBatch = go32v2 watcom
+FORCE:
+.PHONY: FORCE
+override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
+ifneq ($(findstring darwin,$(OSTYPE)),)
+inUnix=1 #darwin
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+ifeq ($(findstring ;,$(PATH)),)
+inUnix=1
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+SEARCHPATH:=$(subst ;, ,$(PATH))
+endif
+endif
+SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
+PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
+ifeq ($(PWD),)
+PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
+ifeq ($(PWD),)
+$(error You need the GNU utils package to use this Makefile)
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=
+endif
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=.exe
+endif
+ifndef inUnix
+ifeq ($(OS),Windows_NT)
+inWinNT=1
+else
+ifdef OS2_SHELL
+inOS2=1
+endif
+endif
+else
+ifneq ($(findstring cygdrive,$(PATH)),)
+inCygWin=1
+endif
+endif
+ifdef inUnix
+SRCBATCHEXT=.sh
+else
+ifdef inOS2
+SRCBATCHEXT=.cmd
+else
+SRCBATCHEXT=.bat
+endif
+endif
+ifdef COMSPEC
+ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
+ifndef RUNBATCH
+RUNBATCH=$(COMSPEC) /C
+endif
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+ifdef inCygWin
+PATHSEP=/
+endif
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifdef inOS2
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=echo
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+endif
+override DEFAULT_FPCDIR=../..
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+ifneq ($(CPU_TARGET),)
+FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
+else
+FPC:=$(shell $(FPCPROG) -PB)
+endif
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+else
+ifeq ($(strip $(wildcard $(FPC))),)
+FPC:=$(firstword $(FPCPROG))
+endif
+endif
+else
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+FOUNDFPC:=$(strip $(wildcard $(FPC)))
+ifeq ($(FOUNDFPC),)
+FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
+ifeq ($(FOUNDFPC),)
+$(error Compiler $(FPC) not found)
+endif
+endif
+ifndef FPC_COMPILERINFO
+FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
+endif
+ifndef FPC_VERSION
+FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+endif
+export FPC FPC_VERSION FPC_COMPILERINFO
+unexport CHECKDEPEND ALLDEPENDENCIES
+ifndef CPU_TARGET
+ifdef CPU_TARGET_DEFAULT
+CPU_TARGET=$(CPU_TARGET_DEFAULT)
+endif
+endif
+ifndef OS_TARGET
+ifdef OS_TARGET_DEFAULT
+OS_TARGET=$(OS_TARGET_DEFAULT)
+endif
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+endif
+ifndef OS_TARGET
+OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+endif
+FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifeq ($(CPU_TARGET),armeb)
+ARCH=arm
+override FPCOPT+=-Cb
+else
+ifeq ($(CPU_TARGET),armel)
+ARCH=arm
+override FPCOPT+=-CaEABI
+else
+ARCH=$(CPU_TARGET)
+endif
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+SOURCESUFFIX=$(OS_SOURCE)
+else
+ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+else
+TARGETSUFFIX=$(FULL_TARGET)
+endif
+SOURCESUFFIX=$(FULL_SOURCE)
+endif
+ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+CROSSCOMPILE=1
+endif
+ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
+ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
+$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
+endif
+endif
+ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),linux)
+linuxHier=1
+endif
+export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+else
+override FPCDIR=wrong
+endif
+ifdef DEFAULT_FPCDIR
+ifeq ($(FPCDIR),wrong)
+override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+endif
+endif
+ifeq ($(FPCDIR),wrong)
+ifdef inUnix
+override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
+ifeq ($(wildcard $(FPCDIR)/units),)
+override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
+endif
+else
+override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(BASEDIR)
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=c:/pp
+endif
+endif
+endif
+endif
+endif
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_SOURCE),darwin)
+DARWIN2DARWIN=1
+endif
+endif
+ifndef BINUTILSPREFIX
+ifndef CROSSBINDIR
+ifdef CROSSCOMPILE
+ifndef DARWIN2DARWIN
+BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
+endif
+endif
+endif
+endif
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
+ifeq ($(UNITSDIR),)
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
+ifndef FPCFPMAKE
+ifdef CROSSCOMPILE
+ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+FPCFPMAKE:=$(shell $(FPCPROG) -PB)
+ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
+FPCFPMAKE:=$(firstword $(FPCPROG))
+endif
+else
+override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+else
+FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
+FPMAKE_SKIP_CONFIG=-n
+export FPCFPMAKE
+export FPMAKE_SKIP_CONFIG
+endif
+else
+FPMAKE_SKIP_CONFIG=-n
+FPCFPMAKE=$(FPC)
+endif
+endif
+override PACKAGE_NAME=libvlc
+override PACKAGE_VERSION=2.6.3
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override TARGET_UNITS+=libvlc vlc
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_UNITS+=libvlc vlc
+endif
+override INSTALL_FPCPACKAGE=y
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_SOURCEDIR+=src example
+endif
+ifdef REQUIRE_UNITSDIR
+override UNITSDIR+=$(REQUIRE_UNITSDIR)
+endif
+ifdef REQUIRE_PACKAGESDIR
+override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
+endif
+ifdef ZIPINSTALL
+ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
+UNIXHier=1
+endif
+else
+ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
+UNIXHier=1
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef PREFIX
+INSTALL_PREFIX=$(PREFIX)
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef UNIXHier
+INSTALL_PREFIX=/usr/local
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=/pp
+else
+INSTALL_BASEDIR:=/$(PACKAGE_NAME)
+endif
+endif
+endif
+export INSTALL_PREFIX
+ifdef INSTALL_FPCSUBDIR
+export INSTALL_FPCSUBDIR
+endif
+ifndef DIST_DESTDIR
+DIST_DESTDIR:=$(BASEDIR)
+endif
+export DIST_DESTDIR
+ifndef COMPILER_UNITTARGETDIR
+ifdef PACKAGEDIR_MAIN
+COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
+else
+COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
+endif
+endif
+ifndef COMPILER_TARGETDIR
+COMPILER_TARGETDIR=.
+endif
+ifndef INSTALL_BASEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
+endif
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)
+endif
+endif
+ifndef INSTALL_BINDIR
+ifdef UNIXHier
+INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
+else
+INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
+ifdef INSTALL_FPCPACKAGE
+ifdef CROSSCOMPILE
+ifdef CROSSINSTALL
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+endif
+endif
+endif
+ifndef INSTALL_UNITDIR
+INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
+ifdef INSTALL_FPCPACKAGE
+ifdef PACKAGE_NAME
+INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
+endif
+endif
+endif
+ifndef INSTALL_LIBDIR
+ifdef UNIXHier
+INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
+else
+INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
+endif
+endif
+ifndef INSTALL_SOURCEDIR
+ifdef UNIXHier
+ifdef BSDhier
+SRCPREFIXDIR=share/src
+else
+ifdef linuxHier
+SRCPREFIXDIR=share/src
+else
+SRCPREFIXDIR=src
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
+endif
+endif
+endif
+ifndef INSTALL_DOCDIR
+ifdef UNIXHier
+ifdef BSDhier
+DOCPREFIXDIR=share/doc
+else
+ifdef linuxHier
+DOCPREFIXDIR=share/doc
+else
+DOCPREFIXDIR=doc
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
+endif
+endif
+endif
+ifndef INSTALL_EXAMPLEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
+endif
+endif
+else
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+endif
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
+endif
+endif
+endif
+ifndef INSTALL_DATADIR
+INSTALL_DATADIR=$(INSTALL_BASEDIR)
+endif
+ifndef INSTALL_SHAREDDIR
+INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
+endif
+ifdef CROSSCOMPILE
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
+ifeq ($(CROSSBINDIR),)
+CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
+endif
+endif
+else
+CROSSBINDIR=
+endif
+BATCHEXT=.bat
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+SHAREDLIBPREFIX=libfp
+STATICLIBPREFIX=libp
+IMPORTLIBPREFIX=libimp
+RSTEXT=.rst
+EXEDBGEXT=.dbg
+ifeq ($(OS_TARGET),go32v1)
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+OEXT=.obj
+ASMEXT=.asm
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=wat
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),linux)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+ifeq ($(OS_TARGET),freebsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=fbs
+endif
+ifeq ($(OS_TARGET),netbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=nbs
+endif
+ifeq ($(OS_TARGET),openbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=obs
+endif
+ifeq ($(OS_TARGET),win32)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=os2
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),emx)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=emx
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),morphos)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=mos
+endif
+ifeq ($(OS_TARGET),atari)
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),haiku)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=hai
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nw
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),netwlibc)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nwl
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+IMPORTLIBPREFIX=imp
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=dwn
+EXEDBGEXT=.dSYM
+endif
+ifeq ($(OS_TARGET),gba)
+EXEEXT=.gba
+SHAREDLIBEXT=.so
+SHORTSUFFIX=gba
+endif
+ifeq ($(OS_TARGET),symbian)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=symbian
+endif
+ifeq ($(OS_TARGET),NativeNT)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=nativent
+endif
+ifeq ($(OS_TARGET),wii)
+EXEEXT=.dol
+SHAREDLIBEXT=.so
+SHORTSUFFIX=wii
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+FPCMADE=fpcmade.$(SHORTSUFFIX)
+ZIPSUFFIX=$(SHORTSUFFIX)
+ZIPCROSSPREFIX=
+ZIPSOURCESUFFIX=src
+ZIPEXAMPLESUFFIX=exm
+else
+FPCMADE=fpcmade.$(TARGETSUFFIX)
+ZIPSOURCESUFFIX=.source
+ZIPEXAMPLESUFFIX=.examples
+ifdef CROSSCOMPILE
+ZIPSUFFIX=.$(SOURCESUFFIX)
+ZIPCROSSPREFIX=$(TARGETSUFFIX)-
+else
+ZIPSUFFIX=.$(TARGETSUFFIX)
+ZIPCROSSPREFIX=
+endif
+endif
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO= __missing_command_ECHO
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE= __missing_command_DATE
+else
+DATE:=$(firstword $(DATE))
+endif
+else
+DATE:=$(firstword $(DATE))
+endif
+endif
+export DATE
+ifndef GINSTALL
+GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL= __missing_command_GINSTALL
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+endif
+export GINSTALL
+ifndef CPPROG
+CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(CPPROG),)
+CPPROG= __missing_command_CPPROG
+else
+CPPROG:=$(firstword $(CPPROG))
+endif
+endif
+export CPPROG
+ifndef RMPROG
+RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(RMPROG),)
+RMPROG= __missing_command_RMPROG
+else
+RMPROG:=$(firstword $(RMPROG))
+endif
+endif
+export RMPROG
+ifndef MVPROG
+MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MVPROG),)
+MVPROG= __missing_command_MVPROG
+else
+MVPROG:=$(firstword $(MVPROG))
+endif
+endif
+export MVPROG
+ifndef MKDIRPROG
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG= __missing_command_MKDIRPROG
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+endif
+export MKDIRPROG
+ifndef ECHOREDIR
+ifndef inUnix
+ECHOREDIR=echo
+else
+ECHOREDIR=$(ECHO)
+endif
+endif
+ifndef COPY
+COPY:=$(CPPROG) -fp
+endif
+ifndef COPYTREE
+COPYTREE:=$(CPPROG) -Rfp
+endif
+ifndef MKDIRTREE
+MKDIRTREE:=$(MKDIRPROG) -p
+endif
+ifndef MOVE
+MOVE:=$(MVPROG) -f
+endif
+ifndef DEL
+DEL:=$(RMPROG) -f
+endif
+ifndef DELTREE
+DELTREE:=$(RMPROG) -rf
+endif
+ifndef INSTALL
+ifdef inUnix
+INSTALL:=$(GINSTALL) -c -m 644
+else
+INSTALL:=$(COPY)
+endif
+endif
+ifndef INSTALLEXE
+ifdef inUnix
+INSTALLEXE:=$(GINSTALL) -c -m 755
+else
+INSTALLEXE:=$(COPY)
+endif
+endif
+ifndef MKDIR
+MKDIR:=$(GINSTALL) -m 755 -d
+endif
+export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE= __missing_command_PPUMOVE
+else
+PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+export PPUMOVE
+ifndef FPCMAKE
+FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(FPCMAKE),)
+FPCMAKE= __missing_command_FPCMAKE
+else
+FPCMAKE:=$(firstword $(FPCMAKE))
+endif
+endif
+export FPCMAKE
+ifndef ZIPPROG
+ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ZIPPROG),)
+ZIPPROG= __missing_command_ZIPPROG
+else
+ZIPPROG:=$(firstword $(ZIPPROG))
+endif
+endif
+export ZIPPROG
+ifndef TARPROG
+TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG= __missing_command_TARPROG
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+endif
+export TARPROG
+ASNAME=$(BINUTILSPREFIX)as
+LDNAME=$(BINUTILSPREFIX)ld
+ARNAME=$(BINUTILSPREFIX)ar
+RCNAME=$(BINUTILSPREFIX)rc
+ifndef ASPROG
+ifdef CROSSBINDIR
+ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
+else
+ASPROG=$(ASNAME)
+endif
+endif
+ifndef LDPROG
+ifdef CROSSBINDIR
+LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
+else
+LDPROG=$(LDNAME)
+endif
+endif
+ifndef RCPROG
+ifdef CROSSBINDIR
+RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
+else
+RCPROG=$(RCNAME)
+endif
+endif
+ifndef ARPROG
+ifdef CROSSBINDIR
+ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
+else
+ARPROG=$(ARNAME)
+endif
+endif
+AS=$(ASPROG)
+LD=$(LDPROG)
+RC=$(RCPROG)
+AR=$(ARPROG)
+PPAS=ppas$(SRCBATCHEXT)
+ifdef inUnix
+LDCONFIG=ldconfig
+else
+LDCONFIG=
+endif
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+else
+DATESTR=
+endif
+ZIPOPT=-9
+ZIPEXT=.zip
+ifeq ($(USETAR),bz2)
+TAROPT=vj
+TAREXT=.tar.bz2
+else
+TAROPT=vz
+TAREXT=.tar.gz
+endif
+override REQUIRE_PACKAGES=rtl rtl fcl-base
+ifeq ($(FULL_TARGET),i386-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+endif
+ifdef REQUIRE_PACKAGES_RTL
+PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_RTL),)
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
+UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
+else
+UNITDIR_RTL=$(PACKAGEDIR_RTL)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_RTL=
+UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_RTL),)
+UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
+else
+UNITDIR_RTL=
+endif
+endif
+ifdef UNITDIR_RTL
+override COMPILER_UNITDIR+=$(UNITDIR_RTL)
+endif
+ifdef UNITDIR_FPMAKE_RTL
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FCL-BASE
+PACKAGEDIR_FCL-BASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-base/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FCL-BASE),)
+ifneq ($(wildcard $(PACKAGEDIR_FCL-BASE)/units/$(TARGETSUFFIX)),)
+UNITDIR_FCL-BASE=$(PACKAGEDIR_FCL-BASE)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FCL-BASE=$(PACKAGEDIR_FCL-BASE)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FCL-BASE)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-BASE=$(PACKAGEDIR_FCL-BASE)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FCL-BASE)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-BASE=$(PACKAGEDIR_FCL-BASE)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FCL-BASE=$(PACKAGEDIR_FCL-BASE)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FCL-BASE)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_FCL-BASE) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-BASE)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FCL-BASE=
+UNITDIR_FCL-BASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-base/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FCL-BASE),)
+UNITDIR_FCL-BASE:=$(firstword $(UNITDIR_FCL-BASE))
+else
+UNITDIR_FCL-BASE=
+endif
+endif
+ifdef UNITDIR_FCL-BASE
+override COMPILER_UNITDIR+=$(UNITDIR_FCL-BASE)
+endif
+ifdef UNITDIR_FPMAKE_FCL-BASE
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-BASE)
+endif
+endif
+ifdef REQUIRE_PACKAGES_UNIVINT
+PACKAGEDIR_UNIVINT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /univint/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_UNIVINT),)
+ifneq ($(wildcard $(PACKAGEDIR_UNIVINT)/units/$(TARGETSUFFIX)),)
+UNITDIR_UNIVINT=$(PACKAGEDIR_UNIVINT)/units/$(TARGETSUFFIX)
+else
+UNITDIR_UNIVINT=$(PACKAGEDIR_UNIVINT)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_UNIVINT)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_UNIVINT=$(PACKAGEDIR_UNIVINT)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_UNIVINT)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_UNIVINT=$(PACKAGEDIR_UNIVINT)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_UNIVINT=$(PACKAGEDIR_UNIVINT)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_UNIVINT)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_UNIVINT) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_UNIVINT)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_UNIVINT=
+UNITDIR_UNIVINT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /univint/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_UNIVINT),)
+UNITDIR_UNIVINT:=$(firstword $(UNITDIR_UNIVINT))
+else
+UNITDIR_UNIVINT=
+endif
+endif
+ifdef UNITDIR_UNIVINT
+override COMPILER_UNITDIR+=$(UNITDIR_UNIVINT)
+endif
+ifdef UNITDIR_FPMAKE_UNIVINT
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_UNIVINT)
+endif
+endif
+ifndef NOCPUDEF
+override FPCOPTDEF=$(ARCH)
+endif
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifneq ($(CPU_TARGET),$(CPU_SOURCE))
+override FPCOPT+=-P$(ARCH)
+endif
+ifeq ($(OS_SOURCE),openbsd)
+override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
+override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
+endif
+ifndef CROSSBOOTSTRAP
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-XP$(BINUTILSPREFIX)
+endif
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-Xr$(RLINKPATH)
+endif
+endif
+ifndef CROSSCOMPILE
+ifneq ($(BINUTILSPREFIX),)
+override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
+endif
+endif
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
+endif
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
+endif
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+endif
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+endif
+ifdef LINKSMART
+override FPCOPT+=-XX
+endif
+ifdef CREATESMART
+override FPCOPT+=-CX
+endif
+ifdef DEBUG
+override FPCOPT+=-gl
+override FPCOPTDEF+=DEBUG
+endif
+ifdef RELEASE
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifeq ($(CPU_TARGET),i386)
+FPCCPUOPT:=-OG2p3
+endif
+ifeq ($(CPU_TARGET),powerpc)
+FPCCPUOPT:=-O1r
+endif
+else
+FPCCPUOPT:=-O2
+endif
+override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
+override FPCOPTDEF+=RELEASE
+endif
+ifdef STRIP
+override FPCOPT+=-Xs
+endif
+ifdef OPTIMIZE
+override FPCOPT+=-O2
+endif
+ifdef VERBOSE
+override FPCOPT+=-vwni
+endif
+ifdef COMPILER_OPTIONS
+override FPCOPT+=$(COMPILER_OPTIONS)
+endif
+ifdef COMPILER_UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
+endif
+ifdef COMPILER_LIBRARYDIR
+override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
+endif
+ifdef COMPILER_OBJECTDIR
+override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
+endif
+ifdef COMPILER_INCLUDEDIR
+override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
+endif
+ifdef CROSSBINDIR
+override FPCOPT+=-FD$(CROSSBINDIR)
+endif
+ifdef COMPILER_TARGETDIR
+override FPCOPT+=-FE$(COMPILER_TARGETDIR)
+ifeq ($(COMPILER_TARGETDIR),.)
+override TARGETDIRPREFIX=
+else
+override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+endif
+ifdef COMPILER_UNITTARGETDIR
+override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
+ifeq ($(COMPILER_UNITTARGETDIR),.)
+override UNITTARGETDIRPREFIX=
+else
+override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
+endif
+else
+ifdef COMPILER_TARGETDIR
+override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
+override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
+endif
+endif
+ifdef CREATESHARED
+override FPCOPT+=-Cg
+ifeq ($(CPU_TARGET),i386)
+override FPCOPT+=-Aas
+endif
+endif
+ifeq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),)
+ifeq ($(CPU_TARGET),x86_64)
+override FPCOPT+=-Cg
+endif
+endif
+endif
+ifdef LINKSHARED
+endif
+ifdef OPT
+override FPCOPT+=$(OPT)
+endif
+ifdef FPCOPTDEF
+override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
+endif
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
+endif
+ifdef USEENV
+override FPCEXTCMD:=$(FPCOPT)
+override FPCOPT:=!FPCEXTCMD
+export FPCEXTCMD
+endif
+override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
+override ACROSSCOMPILE=1
+endif
+ifdef ACROSSCOMPILE
+override FPCOPT+=$(CROSSOPT)
+endif
+override COMPILER:=$(FPC) $(FPCOPT)
+ifeq (,$(findstring -s ,$(COMPILER)))
+EXECPPAS=
+else
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+ifdef RUNBATCH
+EXECPPAS:=@$(RUNBATCH) $(PPAS)
+else
+EXECPPAS:=@$(PPAS)
+endif
+endif
+endif
+.PHONY: fpc_units
+ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
+override ALLTARGET+=fpc_units
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
+override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
+override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
+endif
+fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
+ifdef TARGET_RSTS
+override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
+override CLEANRSTFILES+=$(RSTFILES)
+endif
+.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
+$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
+	@$(ECHOREDIR) Compiled > $(FPCMADE)
+fpc_all: $(FPCMADE)
+fpc_smart:
+	$(MAKE) all LINKSMART=1 CREATESMART=1
+fpc_debug:
+	$(MAKE) all DEBUG=1
+fpc_release:
+	$(MAKE) all RELEASE=1
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
+$(COMPILER_UNITTARGETDIR):
+	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
+$(COMPILER_TARGETDIR):
+	$(MKDIRTREE) $(COMPILER_TARGETDIR)
+%$(PPUEXT): %.pp
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(PPUEXT): %.pas
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.pp
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.pas
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.lpr
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.dpr
+	$(COMPILER) $<
+	$(EXECPPAS)
+%.res: %.rc
+	windres -i $< -o $@
+vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.inc $(COMPILER_INCLUDEDIR)
+vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
+vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
+.PHONY: fpc_shared
+override INSTALLTARGET+=fpc_shared_install
+ifndef SHARED_LIBVERSION
+SHARED_LIBVERSION=$(FPC_VERSION)
+endif
+ifndef SHARED_LIBNAME
+SHARED_LIBNAME=$(PACKAGE_NAME)
+endif
+ifndef SHARED_FULLNAME
+SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
+endif
+ifndef SHARED_LIBUNITS
+SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
+override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
+endif
+fpc_shared:
+ifdef HASSHAREDLIB
+	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
+ifneq ($(SHARED_BUILD),n)
+	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
+endif
+else
+	@$(ECHO) Shared Libraries not supported
+endif
+fpc_shared_install:
+ifneq ($(SHARED_BUILD),n)
+ifneq ($(SHARED_LIBUNITS),)
+ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
+	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
+endif
+endif
+endif
+.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
+ifdef INSTALL_UNITS
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
+endif
+ifdef INSTALL_BUILDUNIT
+override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
+endif
+ifdef INSTALLPPUFILES
+override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
+ifneq ($(UNITTARGETDIRPREFIX),)
+override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
+override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
+endif
+override INSTALL_CREATEPACKAGEFPC=1
+endif
+ifdef INSTALLEXEFILES
+ifneq ($(TARGETDIRPREFIX),)
+override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
+endif
+endif
+fpc_install: all $(INSTALLTARGET)
+ifdef INSTALLEXEFILES
+	$(MKDIR) $(INSTALL_BINDIR)
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
+endif
+ifdef INSTALL_CREATEPACKAGEFPC
+ifdef FPCMAKE
+ifdef PACKAGE_VERSION
+ifneq ($(wildcard Makefile.fpc),)
+	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
+endif
+endif
+endif
+endif
+ifdef INSTALLPPUFILES
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
+endif
+ifneq ($(wildcard $(LIB_FULLNAME)),)
+	$(MKDIR) $(INSTALL_LIBDIR)
+	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
+ifdef inUnix
+	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
+endif
+endif
+endif
+ifdef INSTALL_FILES
+	$(MKDIR) $(INSTALL_DATADIR)
+	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
+endif
+fpc_sourceinstall: distclean
+	$(MKDIR) $(INSTALL_SOURCEDIR)
+	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
+fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
+ifdef HASEXAMPLES
+	$(MKDIR) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef EXAMPLESOURCEFILES
+	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
+endif
+.PHONY: fpc_distinstall
+fpc_distinstall: install exampleinstall
+.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall
+ifndef PACKDIR
+ifndef inUnix
+PACKDIR=$(BASEDIR)/../fpc-pack
+else
+PACKDIR=/tmp/fpc-pack
+endif
+endif
+ifndef ZIPNAME
+ifdef DIST_ZIPNAME
+ZIPNAME=$(DIST_ZIPNAME)
+else
+ZIPNAME=$(PACKAGE_NAME)
+endif
+endif
+ifndef FULLZIPNAME
+FULLZIPNAME=$(ZIPCROSSPREFIX)$(ZIPPREFIX)$(ZIPNAME)$(ZIPSUFFIX)
+endif
+ifndef ZIPTARGET
+ifdef DIST_ZIPTARGET
+ZIPTARGET=DIST_ZIPTARGET
+else
+ZIPTARGET=install
+endif
+endif
+ifndef USEZIP
+ifdef inUnix
+USETAR=1
+endif
+endif
+ifndef inUnix
+USEZIPWRAPPER=1
+endif
+ifdef USEZIPWRAPPER
+ZIPPATHSEP=$(PATHSEP)
+ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT))
+else
+ZIPPATHSEP=/
+endif
+ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))
+ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))
+ifdef USETAR
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT)
+ZIPCMD_ZIP:=$(TARPROG) c$(TAROPT)f $(ZIPDESTFILE) *
+else
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT)
+ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) *
+endif
+fpc_zipinstall:
+	$(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1
+	$(MKDIR) $(DIST_DESTDIR)
+	$(DEL) $(ZIPDESTFILE)
+ifdef USEZIPWRAPPER
+ifneq ($(ECHOREDIR),echo)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPER)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPPER)
+else
+	echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)
+	echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)
+	echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)
+endif
+ifdef inUnix
+	/bin/sh $(ZIPWRAPPER)
+else
+ifdef RUNBATCH
+	$(RUNBATCH) $(ZIPWRAPPER)
+else
+	$(ZIPWRAPPER)
+endif
+endif
+	$(DEL) $(ZIPWRAPPER)
+else
+	$(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)
+endif
+	$(DELTREE) $(PACKDIR)
+fpc_zipsourceinstall:
+	$(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIPSOURCESUFFIX)
+fpc_zipexampleinstall:
+ifdef HASEXAMPLES
+	$(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZIPEXAMPLESUFFIX)
+endif
+fpc_zipdistinstall:
+	$(MAKE) fpc_zipinstall ZIPTARGET=distinstall
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
+endif
+ifdef CLEAN_PROGRAMS
+override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+ifdef DEBUGSYMEXT
+override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
+endif
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANEXEDBGFILES
+	-$(DELTREE) $(CLEANEXEDBGFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef COMPILER_UNITTARGETDIR
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+	-$(DELTREE) units
+	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+ifneq ($(PPUEXT),.ppu)
+	-$(DEL) *.o *.ppu *.a
+endif
+	-$(DELTREE) *$(SMARTEXT)
+	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *_ppas$(BATCHEXT)
+ifdef AOUTEXT
+	-$(DEL) *$(AOUTEXT)
+endif
+ifdef DEBUGSYMEXT
+	-$(DEL) *$(DEBUGSYMEXT)
+endif
+fpc_distclean: cleanall
+.PHONY: fpc_baseinfo
+override INFORULES+=fpc_baseinfo
+fpc_baseinfo:
+	@$(ECHO)
+	@$(ECHO)  == Package info ==
+	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
+	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
+	@$(ECHO)
+	@$(ECHO)  == Configuration info ==
+	@$(ECHO)
+	@$(ECHO)  FPC.......... $(FPC)
+	@$(ECHO)  FPC Version.. $(FPC_VERSION)
+	@$(ECHO)  Source CPU... $(CPU_SOURCE)
+	@$(ECHO)  Target CPU... $(CPU_TARGET)
+	@$(ECHO)  Source OS.... $(OS_SOURCE)
+	@$(ECHO)  Target OS.... $(OS_TARGET)
+	@$(ECHO)  Full Source.. $(FULL_SOURCE)
+	@$(ECHO)  Full Target.. $(FULL_TARGET)
+	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
+	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
+	@$(ECHO)  FPC fpmake... $(FPCFPMAKE)
+	@$(ECHO)
+	@$(ECHO)  == Directory info ==
+	@$(ECHO)
+	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
+	@$(ECHO)
+	@$(ECHO)  Basedir......... $(BASEDIR)
+	@$(ECHO)  FPCDir.......... $(FPCDIR)
+	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
+	@$(ECHO)  UnitsDir........ $(UNITSDIR)
+	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
+	@$(ECHO)
+	@$(ECHO)  GCC library..... $(GCCLIBDIR)
+	@$(ECHO)  Other library... $(OTHERLIBDIR)
+	@$(ECHO)
+	@$(ECHO)  == Tools info ==
+	@$(ECHO)
+	@$(ECHO)  As........ $(AS)
+	@$(ECHO)  Ld........ $(LD)
+	@$(ECHO)  Ar........ $(AR)
+	@$(ECHO)  Rc........ $(RC)
+	@$(ECHO)
+	@$(ECHO)  Mv........ $(MVPROG)
+	@$(ECHO)  Cp........ $(CPPROG)
+	@$(ECHO)  Rm........ $(RMPROG)
+	@$(ECHO)  GInstall.. $(GINSTALL)
+	@$(ECHO)  Echo...... $(ECHO)
+	@$(ECHO)  Shell..... $(SHELL)
+	@$(ECHO)  Date...... $(DATE)
+	@$(ECHO)  FPCMake... $(FPCMAKE)
+	@$(ECHO)  PPUMove... $(PPUMOVE)
+	@$(ECHO)  Zip....... $(ZIPPROG)
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
+	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
+	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
+	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
+	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
+	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
+	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
+	@$(ECHO)
+	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
+	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
+	@$(ECHO)
+	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
+	@$(ECHO)  Install Files....... $(INSTALL_FILES)
+	@$(ECHO)
+	@$(ECHO)  == Install info ==
+	@$(ECHO)
+	@$(ECHO)  DateStr.............. $(DATESTR)
+	@$(ECHO)  ZipName.............. $(ZIPNAME)
+	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
+	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
+	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
+	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
+	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
+	@$(ECHO)
+	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
+	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
+	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
+	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
+	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
+	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
+	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
+	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
+	@$(ECHO)
+	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
+	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
+	@$(ECHO)
+.PHONY: fpc_info
+fpc_info: $(INFORULES)
+.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
+	fpc_makefile_dirs
+fpc_makefile:
+	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
+fpc_makefile_sub1:
+ifdef TARGET_DIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
+endif
+fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
+fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
+fpc_makefiles: fpc_makefile fpc_makefile_dirs
+all: fpc_all
+debug: fpc_debug
+smart: fpc_smart
+release: fpc_release
+units: fpc_units
+examples:
+shared: fpc_shared
+install: fpc_install
+sourceinstall: fpc_sourceinstall
+exampleinstall: fpc_exampleinstall
+distinstall: fpc_distinstall
+zipinstall: fpc_zipinstall
+zipsourceinstall: fpc_zipsourceinstall
+zipexampleinstall: fpc_zipexampleinstall
+zipdistinstall: fpc_zipdistinstall
+clean: fpc_clean
+distclean: fpc_distclean
+cleanall: fpc_cleanall
+info: fpc_info
+makefiles: fpc_makefiles
+.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
+ifneq ($(wildcard fpcmake.loc),)
+include fpcmake.loc
+endif
+.NOTPARALLEL:

+ 30 - 0
packages/libvlc/Makefile.fpc

@@ -0,0 +1,30 @@
+#
+#   Makefile.fpc for chm library
+#
+
+[package]
+name=libvlc
+version=2.6.3
+
+[target]
+units=libvlc vlc
+programs=
+examples=
+
+[require]
+packages=fcl-base
+
+[install]
+fpcpackage=y
+
+[default]
+fpcdir=../..
+
+[compiler]
+includedir=src
+sourcedir=src example
+
+[rules]
+.NOTPARALLEL:
+
+

+ 84 - 0
packages/libvlc/example/testvlc.lpi

@@ -0,0 +1,84 @@
+<?xml version="1.0"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="9"/>
+    <General>
+      <Flags>
+        <MainUnitHasCreateFormStatements Value="False"/>
+        <MainUnitHasTitleStatement Value="False"/>
+      </Flags>
+      <SessionStorage Value="InProjectDir"/>
+      <MainUnit Value="0"/>
+      <Title Value="testvlc"/>
+      <UseAppBundle Value="False"/>
+      <ResourceType Value="res"/>
+    </General>
+    <i18n>
+      <EnableI18N LFM="False"/>
+    </i18n>
+    <VersionInfo>
+      <StringTable ProductVersion=""/>
+    </VersionInfo>
+    <BuildModes Count="1">
+      <Item1 Name="Default" Default="True"/>
+    </BuildModes>
+    <PublishOptions>
+      <Version Value="2"/>
+      <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
+      <ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/>
+    </PublishOptions>
+    <RunParams>
+      <local>
+        <FormatVersion Value="1"/>
+        <LaunchingApplication PathPlusParams="/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
+      </local>
+    </RunParams>
+    <Units Count="3">
+      <Unit0>
+        <Filename Value="testvlc.pp"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="testvlc"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="../src/libvlc.pp"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="libvlc"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="../src/vlc.pas"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="vlc"/>
+      </Unit2>
+    </Units>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="11"/>
+    <Target>
+      <Filename Value="testvlc"/>
+    </Target>
+    <SearchPaths>
+      <IncludeFiles Value="$(ProjOutDir)"/>
+      <OtherUnitFiles Value="../src"/>
+      <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
+    </SearchPaths>
+    <Other>
+      <CompilerMessages>
+        <MsgFileName Value=""/>
+      </CompilerMessages>
+      <CompilerPath Value="$(CompPath)"/>
+    </Other>
+  </CompilerOptions>
+  <Debugging>
+    <Exceptions Count="3">
+      <Item1>
+        <Name Value="EAbort"/>
+      </Item1>
+      <Item2>
+        <Name Value="ECodetoolError"/>
+      </Item2>
+      <Item3>
+        <Name Value="EFOpenError"/>
+      </Item3>
+    </Exceptions>
+  </Debugging>
+</CONFIG>

+ 52 - 0
packages/libvlc/example/testvlc.pp

@@ -0,0 +1,52 @@
+program testvlc;
+
+{$mode objfpc}{$H+}
+
+uses
+{$ifdef unix} cthreads,{$endif}
+  Sysutils, Classes, math, libvlc, vlc;
+
+Var
+  P :  TVLCMediaPlayer;
+  LP : TVLCMediaListPlayer;
+  I : Integer;
+
+begin
+  // This is needed, or loading the VLC libraries will fail with a SIGFPE
+  setexceptionmask([exInvalidOp, exDenormalized, exZeroDivide,
+                     exOverflow, exUnderflow, exPrecision]);
+  P:=TVLCMediaPlayer.Create(Nil);
+  if ParamCount=1 then
+    With P do
+      try
+        PlayFile(ParamStr(1));
+        Repeat
+          Sleep(100);
+        until State in [libvlc_Ended,libvlc_Error];
+      finally
+        Free;
+      end
+  else
+    begin
+    LP:=TVLCMediaListPlayer.Create(Nil);
+    try
+      P:=TVLCMediaPlayer.Create(Nil);
+      try
+        LP.Player:=P;
+        For I:=1 to ParamCount do
+          begin
+          TVLCMediaItem(LP.MediaItems.Add).Path:=ParamStr(i);
+          end;
+        LP.Play;
+        Repeat
+          Sleep(100);
+        until LP.State in [libvlc_Ended,libvlc_Error];
+      finally
+        P.Free;
+      end;
+    finally
+      LP.free;
+    end;
+    end;
+end.
+

+ 74 - 0
packages/libvlc/example/tvlc.lpi

@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="9"/>
+    <General>
+      <Flags>
+        <MainUnitHasCreateFormStatements Value="False"/>
+        <MainUnitHasTitleStatement Value="False"/>
+        <UseDefaultCompilerOptions Value="True"/>
+      </Flags>
+      <SessionStorage Value="InProjectDir"/>
+      <MainUnit Value="0"/>
+      <Title Value="tvlc"/>
+      <UseAppBundle Value="False"/>
+      <ResourceType Value="res"/>
+    </General>
+    <i18n>
+      <EnableI18N LFM="False"/>
+    </i18n>
+    <VersionInfo>
+      <StringTable ProductVersion=""/>
+    </VersionInfo>
+    <BuildModes Count="1">
+      <Item1 Name="Default" Default="True"/>
+    </BuildModes>
+    <PublishOptions>
+      <Version Value="2"/>
+      <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
+      <ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/>
+    </PublishOptions>
+    <RunParams>
+      <local>
+        <FormatVersion Value="1"/>
+        <LaunchingApplication PathPlusParams="/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
+      </local>
+    </RunParams>
+    <Units Count="1">
+      <Unit0>
+        <Filename Value="tvlc.pp"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="tvlc"/>
+      </Unit0>
+    </Units>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="11"/>
+    <Target>
+      <Filename Value="tvlc"/>
+    </Target>
+    <SearchPaths>
+      <IncludeFiles Value="$(ProjOutDir)"/>
+      <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
+    </SearchPaths>
+    <Other>
+      <CompilerMessages>
+        <MsgFileName Value=""/>
+      </CompilerMessages>
+      <CompilerPath Value="$(CompPath)"/>
+    </Other>
+  </CompilerOptions>
+  <Debugging>
+    <Exceptions Count="3">
+      <Item1>
+        <Name Value="EAbort"/>
+      </Item1>
+      <Item2>
+        <Name Value="ECodetoolError"/>
+      </Item2>
+      <Item3>
+        <Name Value="EFOpenError"/>
+      </Item3>
+    </Exceptions>
+  </Debugging>
+</CONFIG>

+ 18 - 0
packages/libvlc/example/tvlc.pp

@@ -0,0 +1,18 @@
+{$linklib pthread}
+program tvlc;
+
+uses cthreads, libvlc, math;
+
+Var
+  Args: Array[0..3] of pchar;
+  fhandle : pointer;
+ 
+begin
+  // This is needed, or loading the VLC libraries will fail with a SIGFPE
+  setexceptionmask([exInvalidOp, exDenormalized, exZeroDivide,
+                     exOverflow, exUnderflow, exPrecision]);
+  LoadLibVLC('libvlc.so.5',False);
+  args[0] := PAnsiChar('libvlc.so.5');
+  args[2] := NIL;
+  FHandle := libvlc_new(1, @args);
+end.

+ 33 - 0
packages/libvlc/fpmake.pp

@@ -0,0 +1,33 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+  T : TTarget;
+  P : TPackage;
+begin
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+    P:=AddPackage('libvlc');
+{$ifdef ALLPACKAGES}
+    P.Directory:='libvlc';
+{$endif ALLPACKAGES}
+    P.Version:='1.0';
+    P.License := 'LGPL with modification';
+    P.HomepageURL := 'www.freepascal.org';
+    P.Email := '[email protected]';
+    P.Description := 'VLC library (version 2 or higher) interface and component.';
+    T:=P.Targets.AddUnit('src/libvlc.pp');
+    T:=P.Targets.AddUnit('src/vlc.pp');
+    with T.Dependencies do
+      begin
+      AddUnit('libvlc');
+      end;
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif}

+ 1172 - 0
packages/libvlc/src/libvlc.pp

@@ -0,0 +1,1172 @@
+{
+    Copyright (c) 2012 by Michael Van Canneyt
+    member of the Free Pascal development team
+
+    This is a translation of the VLC library headers.
+    The original VLC library license applies if you use the VLC libraries.
+    See http://www.videolan.org/ for license details.
+    
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    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.
+
+ **********************************************************************}
+
+{$mode objfpc}
+unit libvlc;
+interface
+
+uses
+  ctypes;
+
+{$IFDEF FPC}
+{$PACKRECORDS C}
+{$ENDIF}
+
+Const
+
+{$ifdef unix}
+  libname = 'libvlc.so.5';
+{$else}
+{$ifdef windows}
+  DefaultlibPath = 'C:\Program files\Videolan\VLC\';
+  corelibname    = 'libvlccore.dll';
+  libname        = 'libvlc.dll';
+{$endif}
+{$endif}
+
+  Type
+  _bool = cint;
+   Ppcchar = ^Pcchar;
+
+  // Opaque types.  
+  libvlc_event_manager_t = record end;
+  Libvlc_instance_t = record end;
+  Libvlc_log_iterator_t = record end;
+  Libvlc_log_t = record end;
+  Libvlc_media_discoverer_t = record end;
+  Libvlc_media_library_t = record end;
+  Libvlc_media_list_player_t = record end;
+  Libvlc_media_list_t = record end;
+  Libvlc_media_player_t = record end;
+  Libvlc_media_t = record end;
+  
+  Plibvlc_audio_output_t  = ^libvlc_audio_output_t;
+  Plibvlc_event_manager_t  = ^libvlc_event_manager_t;
+  Plibvlc_event_t  = ^libvlc_event_t;
+  Plibvlc_instance_t  = ^libvlc_instance_t;
+  Plibvlc_log_iterator_t  = ^libvlc_log_iterator_t;
+  Plibvlc_log_message_t  = ^libvlc_log_message_t;
+  Plibvlc_log_t  = ^libvlc_log_t;
+  Plibvlc_media_discoverer_t  = ^libvlc_media_discoverer_t;
+  Plibvlc_media_library_t  = ^libvlc_media_library_t;
+  Plibvlc_media_list_player_t  = ^libvlc_media_list_player_t;
+  Plibvlc_media_list_t  = ^libvlc_media_list_t;
+  Plibvlc_media_player_t  = ^libvlc_media_player_t;
+  Plibvlc_media_stats_t  = ^libvlc_media_stats_t;
+  Plibvlc_media_t  = ^libvlc_media_t;
+  Plibvlc_media_track_info_t  = ^libvlc_media_track_info_t;
+  Plibvlc_module_description_t  = ^libvlc_module_description_t;
+  Plibvlc_track_description_t  = ^libvlc_track_description_t;
+
+  int8_t = cschar;
+  int16_t = csint;
+  int32_t = cint;
+  int64_t = clong;
+  uint8_t = cuchar;
+  uint16_t = csint;
+  uint32_t = cuint;
+  uint64_t = culong;
+  int_least8_t = cschar;
+  int_least16_t = csint;
+  int_least32_t = cint;
+  int_least64_t = clong;
+  uint_least8_t = cuchar;
+  uint_least16_t = csint;
+  uint_least32_t = cuint;
+  uint_least64_t = culong;
+  int_fast8_t = cschar;
+  int_fast16_t = clong;
+  int_fast32_t = clong;
+  int_fast64_t = clong;
+  uint_fast8_t = cuchar;
+  uint_fast16_t = culong;
+  uint_fast32_t = culong;
+  uint_fast64_t = culong;
+  intptr_t = clong;
+  uintptr_t = culong;
+  intmax_t = clong;
+  uintmax_t = culong;
+
+  libvlc_time_t = int64_t;
+  libvlc_log_message_t = record
+    i_severity : cint;
+    psz_type : ^cchar;
+    psz_name : ^cchar;
+    psz_header : ^cchar;
+    psz_message : ^cchar;
+  end;
+
+  libvlc_event_type_t = cint;
+  libvlc_callback_t = procedure (_para1:Plibvlc_event_t; _para2:pointer);cdecl;
+
+  libvlc_module_description_t = record
+    psz_name : ^cchar;
+    psz_shortname : ^cchar;
+    psz_longname : ^cchar;
+    psz_help : ^cchar;
+    p_next : ^libvlc_module_description_t;
+  end;
+
+{
+static inline int64_t libvlc_delay(int64_t pts)
+
+    return pts - libvlc_clock();
+
+ }
+
+
+  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);
+
+  libvlc_state_t = (libvlc_NothingSpecial := 0,libvlc_Opening,
+    libvlc_Buffering,libvlc_Playing,libvlc_Paused,
+    libvlc_Stopped,libvlc_Ended,libvlc_Error
+    );
+
+  libvlc_media_option_t = (libvlc_media_option_trusted := $2,libvlc_media_option_unique := $100
+    );
+
+  libvlc_track_type_t = (libvlc_track_unknown := -(1),libvlc_track_audio := 0,
+    libvlc_track_video := 1,libvlc_track_text := 2
+    );
+
+  libvlc_media_stats_t = record
+    i_read_bytes : cint;
+    f_input_bitrate : cfloat;
+    i_demux_read_bytes : cint;
+    f_demux_bitrate : cfloat;
+    i_demux_corrupted : cint;
+    i_demux_discontinuity : cint;
+    i_decoded_video : cint;
+    i_decoded_audio : cint;
+    i_displayed_pictures : cint;
+    i_lost_pictures : cint;
+    i_played_abuffers : cint;
+    i_lost_abuffers : cint;
+    i_sent_packets : cint;
+    i_sent_bytes : cint;
+    f_send_bitrate : cfloat;
+  end;
+
+  libvlc_media_track_info_t = record
+    i_codec : uint32_t;
+    i_id : cint;
+    i_type : libvlc_track_type_t;
+    i_profile : cint;
+    i_level : cint;
+    u : record
+      case longint of
+        0 : ( audio : record
+            i_channels : cunsigned;
+            i_rate : cunsigned;
+          end );
+        1 : ( video : record
+            i_height : cunsigned;
+            i_width : cunsigned;
+          end );
+      end;
+  end;
+
+
+  libvlc_track_description_t = record
+    i_id : cint;
+    psz_name : ^cchar;
+    p_next : ^libvlc_track_description_t;
+  end;
+
+  libvlc_audio_output_t = record
+    psz_name : ^cchar;
+    psz_description : ^cchar;
+    p_next : ^libvlc_audio_output_t;
+  end;
+
+  libvlc_rectangle_t = record
+    top : cint;
+    left : cint;
+    bottom : cint;
+    right : cint;
+  end;
+
+  libvlc_video_marquee_option_t = (libvlc_marquee_Enable := 0,libvlc_marquee_Text,
+    libvlc_marquee_Color,libvlc_marquee_Opacity,
+    libvlc_marquee_Position,libvlc_marquee_Refresh,
+    libvlc_marquee_Size,libvlc_marquee_Timeout,
+    libvlc_marquee_X,libvlc_marquee_Y);
+
+  libvlc_navigate_mode_t = (libvlc_navigate_activate := 0,libvlc_navigate_up,
+    libvlc_navigate_down,libvlc_navigate_left,
+    libvlc_navigate_right);
+
+
+  libvlc_video_lock_cb = function (opaque:pointer; planes:Ppointer):pointer;cdecl;
+  libvlc_video_unlock_cb = procedure (opaque:pointer; picture:pointer; planes:Ppointer);cdecl;
+  libvlc_video_display_cb = procedure (opaque:pointer; picture:pointer);cdecl;
+  libvlc_video_format_cb = function (opaque:Ppointer; chroma:pcchar; width:pcunsigned; height:pcunsigned; pitches:pcunsigned;
+               lines:pcunsigned):cunsigned;cdecl;
+  libvlc_video_cleanup_cb = procedure (opaque:pointer);cdecl;
+  libvlc_audio_play_cb = procedure (data:pointer; samples:pointer; count:cunsigned; pts:int64_t);cdecl;
+  libvlc_audio_pause_cb = procedure (data:pointer; pts:int64_t);cdecl;
+  libvlc_audio_resume_cb = procedure (data:pointer; pts:int64_t);cdecl;
+  libvlc_audio_flush_cb = procedure (data:pointer; pts:int64_t);cdecl;
+  libvlc_audio_drain_cb = procedure (data:pointer);cdecl;
+  libvlc_audio_set_volume_cb = procedure (data:pointer; volume:cfloat; mute:_Bool);cdecl;
+  libvlc_audio_setup_cb = function (data:Ppointer; format:pcchar; rate:pcunsigned; channels:pcunsigned):cint;cdecl;
+  libvlc_audio_cleanup_cb = procedure (data:pointer);cdecl;
+  libvlc_video_logo_option_t = (libvlc_logo_enable,libvlc_logo_file,libvlc_logo_x,
+    libvlc_logo_y,libvlc_logo_delay,libvlc_logo_repeat,
+    libvlc_logo_opacity,libvlc_logo_position
+    );
+  libvlc_video_adjust_option_t = (libvlc_adjust_Enable := 0,libvlc_adjust_Contrast,
+    libvlc_adjust_Brightness,libvlc_adjust_Hue,
+    libvlc_adjust_Saturation,libvlc_adjust_Gamma
+    );
+  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
+    );
+
+  libvlc_audio_output_channel_t = (libvlc_AudioChannel_Error := -(1),libvlc_AudioChannel_Stereo := 1,
+    libvlc_AudioChannel_RStereo := 2,libvlc_AudioChannel_Left := 3,
+    libvlc_AudioChannel_Right := 4,libvlc_AudioChannel_Dolbys := 5
+    );
+  libvlc_playback_mode_t = (libvlc_playback_mode_default,libvlc_playback_mode_loop,
+    libvlc_playback_mode_repeat);
+
+  libvlc_event_e = (libvlc_MediaMetaChanged := 0,
+    libvlc_MediaSubItemAdded,
+    libvlc_MediaDurationChanged,libvlc_MediaParsedChanged,
+    libvlc_MediaFreed,libvlc_MediaStateChanged,
+    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);
+
+
+  libvlc_event_t = record
+    _type : cint;
+    p_obj : pointer;
+      case longint of
+        0 : ( media_meta_changed : record
+            meta_type : libvlc_meta_t;
+          end );
+        1 : ( media_subitem_added : record
+            new_child : ^libvlc_media_t;
+          end );
+        2 : ( media_duration_changed : record
+            new_duration : int64_t;
+          end );
+        3 : ( media_parsed_changed : record
+            new_status : cint;
+          end );
+        4 : ( media_freed : record
+            md : ^libvlc_media_t;
+          end );
+        5 : ( media_state_changed : record
+            new_state : libvlc_state_t;
+          end );
+        6 : ( media_player_buffering : record
+            new_cache : cfloat;
+          end );
+        7 : ( media_player_position_changed : record
+            new_position : cfloat;
+          end );
+        8 : ( media_player_time_changed : record
+            new_time : libvlc_time_t;
+          end );
+        9 : ( media_player_title_changed : record
+            new_title : cint;
+          end );
+        10 : ( media_player_seekable_changed : record
+            new_seekable : cint;
+          end );
+        11 : ( media_player_pausable_changed : record
+            new_pausable : cint;
+          end );
+        12 : ( media_player_vout : record
+            new_count : cint;
+          end );
+        13 : ( media_list_item_added : record
+            item : ^libvlc_media_t;
+            index : cint;
+          end );
+        14 : ( media_list_will_add_item : record
+            item : ^libvlc_media_t;
+            index : cint;
+          end );
+        15 : ( media_list_item_deleted : record
+            item : ^libvlc_media_t;
+            index : cint;
+          end );
+        16 : ( media_list_will_delete_item : record
+            item : ^libvlc_media_t;
+            index : cint;
+          end );
+        17 : ( media_list_player_next_item_set : record
+            item : ^libvlc_media_t;
+          end );
+        18 : ( media_player_snapshot_taken : record
+            psz_filename : ^cchar;
+          end );
+        19 : ( media_player_length_changed : record
+            new_length : libvlc_time_t;
+          end );
+        20 : ( vlm_media_event : record
+            psz_media_name : ^cchar;
+            psz_instance_name : ^cchar;
+          end );
+        21 : ( media_player_media_changed : record
+            new_media : ^libvlc_media_t;
+          end );
+    end;
+
+  PPlibvlc_media_track_info_t = ^Plibvlc_media_track_info_t;
+  cbtype1 = procedure (_para1:pointer); cdecl;
+
+Var
+    libvlc_media_player_new : function(p_libvlc_instance:Plibvlc_instance_t):plibvlc_media_player_t; cdecl;
+    libvlc_media_player_new_from_media : function(p_md:Plibvlc_media_t):plibvlc_media_player_t; cdecl;
+    libvlc_media_player_release : procedure(p_mi:Plibvlc_media_player_t); cdecl;
+    libvlc_media_player_retain : procedure(p_mi:Plibvlc_media_player_t); cdecl;
+    libvlc_media_player_set_media : procedure(p_mi:Plibvlc_media_player_t; p_md:Plibvlc_media_t); cdecl;
+    libvlc_media_player_get_media : function(p_mi:Plibvlc_media_player_t):plibvlc_media_t; cdecl;
+    libvlc_media_player_event_manager : function(p_mi:Plibvlc_media_player_t):plibvlc_event_manager_t; cdecl;
+    libvlc_media_player_is_playing : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_media_player_play : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_media_player_set_pause : procedure(mp:Plibvlc_media_player_t; do_pause:cint); cdecl;
+    libvlc_media_player_pause : procedure(p_mi:Plibvlc_media_player_t); cdecl;
+    libvlc_media_player_stop : procedure(p_mi:Plibvlc_media_player_t); cdecl;
+    libvlc_media_new_location : function(p_instance:Plibvlc_instance_t; psz_mrl:pcchar):plibvlc_media_t; cdecl;
+    libvlc_media_new_path : function(p_instance:Plibvlc_instance_t; path:pcchar):plibvlc_media_t; cdecl;
+    libvlc_media_new_fd : function(p_instance:Plibvlc_instance_t; fd:cint):plibvlc_media_t; cdecl;
+    libvlc_media_new_as_node : function(p_instance:Plibvlc_instance_t; psz_name:pcchar):plibvlc_media_t; cdecl;
+    libvlc_media_add_option : procedure(p_md:Plibvlc_media_t; ppsz_options:pcchar); cdecl;
+    libvlc_media_add_option_flag : procedure(p_md:Plibvlc_media_t; ppsz_options:pcchar; i_flags:cunsigned); cdecl;
+    libvlc_media_retain : procedure(p_md:Plibvlc_media_t); cdecl;
+    libvlc_media_release : procedure(p_md:Plibvlc_media_t); cdecl;
+    libvlc_media_get_mrl : function(p_md:Plibvlc_media_t):pcchar; cdecl;
+    libvlc_media_duplicate : function(p_md:Plibvlc_media_t):plibvlc_media_t; cdecl;
+    libvlc_media_get_meta : function(p_md:Plibvlc_media_t; e_meta:libvlc_meta_t):pcchar; cdecl;
+    libvlc_media_set_meta : procedure(p_md:Plibvlc_media_t; e_meta:libvlc_meta_t; psz_value:pcchar); cdecl;
+    libvlc_media_save_meta : function(p_md:Plibvlc_media_t):cint; cdecl;
+    libvlc_media_get_state : function(p_md:Plibvlc_media_t):libvlc_state_t; cdecl;
+    libvlc_media_get_stats : function(p_md:Plibvlc_media_t; p_stats:Plibvlc_media_stats_t):cint; cdecl;
+    libvlc_media_subitems : function(p_md:Plibvlc_media_t):plibvlc_media_list_t; cdecl;
+    libvlc_media_event_manager : function(p_md:Plibvlc_media_t):plibvlc_event_manager_t; cdecl;
+    libvlc_media_get_duration : function(p_md:Plibvlc_media_t):libvlc_time_t; cdecl;
+    libvlc_media_parse : procedure(p_md:Plibvlc_media_t); cdecl;
+    libvlc_media_parse_async : procedure(p_md:Plibvlc_media_t); cdecl;
+    libvlc_media_is_parsed : function(p_md:Plibvlc_media_t):cint; cdecl;
+    libvlc_media_set_user_data : procedure(p_md:Plibvlc_media_t; p_new_user_data:pointer); cdecl;
+    libvlc_media_get_user_data : function(p_md:Plibvlc_media_t):pointer; cdecl;
+    libvlc_media_get_tracks_info : function(p_md:Plibvlc_media_t; tracks:PPlibvlc_media_track_info_t):cint; cdecl;
+    libvlc_module_description_list_release : procedure(p_list:Plibvlc_module_description_t); cdecl;
+    libvlc_audio_filter_list_get : function(p_instance:Plibvlc_instance_t):plibvlc_module_description_t; cdecl;
+    libvlc_video_filter_list_get : function(p_instance:Plibvlc_instance_t):plibvlc_module_description_t; cdecl;
+    libvlc_clock : function:int64_t; cdecl;
+
+    libvlc_errmsg : function:pcchar; cdecl;
+    libvlc_clearerr : procedure; cdecl;
+    libvlc_printerr : function(fmt:pcchar):pcchar;varargs; cdecl;
+
+    libvlc_new : function(argc:cint; argv:Ppcchar):plibvlc_instance_t; cdecl;
+    libvlc_release : procedure(p_instance:Plibvlc_instance_t); cdecl;
+    libvlc_retain : procedure(p_instance:Plibvlc_instance_t); cdecl;
+    libvlc_add_intf : function(p_instance:Plibvlc_instance_t; name:pcchar):cint; cdecl;
+    libvlc_set_exit_handler : procedure(p_instance:Plibvlc_instance_t; cb:cbtype1; opaque:pointer); cdecl;
+    libvlc_wait : procedure(p_instance:Plibvlc_instance_t); cdecl;
+    libvlc_set_user_agent : procedure(p_instance:Plibvlc_instance_t; name:pcchar; http:pcchar); cdecl;
+    libvlc_get_version : function:pcchar; cdecl;
+    libvlc_get_compiler : function:pcchar; cdecl;
+    libvlc_get_changeset : function:pcchar; cdecl;
+    libvlc_free : procedure(ptr:pointer); cdecl;
+    libvlc_event_attach : function(p_event_manager:Plibvlc_event_manager_t; i_event_type:libvlc_event_type_t; f_callback:libvlc_callback_t; user_data:pointer):cint; cdecl;
+    libvlc_event_detach : procedure(p_event_manager:Plibvlc_event_manager_t; i_event_type:libvlc_event_type_t; f_callback:libvlc_callback_t; p_user_data:pointer); cdecl;
+    libvlc_event_type_name : function(event_type:libvlc_event_type_t):pcchar; cdecl;
+    libvlc_get_log_verbosity : function(p_instance:Plibvlc_instance_t):cunsigned; cdecl;
+    libvlc_set_log_verbosity : procedure(p_instance:Plibvlc_instance_t; level:cunsigned); cdecl;
+    libvlc_log_open : function(p_instance:Plibvlc_instance_t):plibvlc_log_t; cdecl;
+    libvlc_log_close : procedure(p_log:Plibvlc_log_t); cdecl;
+    libvlc_log_count : function(p_log:Plibvlc_log_t):cunsigned; cdecl;
+    libvlc_log_clear : procedure(p_log:Plibvlc_log_t); cdecl;
+    libvlc_log_get_iterator : function(p_log:Plibvlc_log_t):plibvlc_log_iterator_t; cdecl;
+    libvlc_log_iterator_free : procedure(p_iter:Plibvlc_log_iterator_t); cdecl;
+    libvlc_log_iterator_has_next : function(p_iter:Plibvlc_log_iterator_t):cint; cdecl;
+    libvlc_log_iterator_next : function(p_iter:Plibvlc_log_iterator_t; p_buffer:Plibvlc_log_message_t):plibvlc_log_message_t; cdecl;
+    libvlc_audio_output_list_get : function(p_instance:Plibvlc_instance_t):plibvlc_audio_output_t; cdecl;
+    libvlc_audio_output_list_release : procedure(p_list:Plibvlc_audio_output_t); cdecl;
+    libvlc_audio_output_set : function(p_mi:Plibvlc_media_player_t; psz_name:pcchar):cint; cdecl;
+    libvlc_audio_output_device_count : function(p_instance:Plibvlc_instance_t; psz_audio_output:pcchar):cint; cdecl;
+    libvlc_audio_output_device_longname : function(p_instance:Plibvlc_instance_t; psz_audio_output:pcchar; i_device:cint):pcchar; cdecl;
+    libvlc_audio_output_device_id : function(p_instance:Plibvlc_instance_t; psz_audio_output:pcchar; i_device:cint):pcchar; cdecl;
+    libvlc_audio_output_device_set : procedure(p_mi:Plibvlc_media_player_t; psz_audio_output:pcchar; psz_device_id:pcchar); cdecl;
+    libvlc_audio_output_get_device_type : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_audio_output_set_device_type : procedure(p_mi:Plibvlc_media_player_t; device_type:cint); cdecl;
+    libvlc_audio_toggle_mute : procedure(p_mi:Plibvlc_media_player_t); cdecl;
+    libvlc_audio_get_mute : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_audio_set_mute : procedure(p_mi:Plibvlc_media_player_t; status:cint); cdecl;
+    libvlc_audio_get_volume : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_audio_set_volume : function(p_mi:Plibvlc_media_player_t; i_volume:cint):cint; cdecl;
+    libvlc_audio_get_track_count : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_audio_get_track_description : function(p_mi:Plibvlc_media_player_t):plibvlc_track_description_t; cdecl;
+    libvlc_audio_get_track : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_audio_set_track : function(p_mi:Plibvlc_media_player_t; i_track:cint):cint; cdecl;
+    libvlc_audio_get_channel : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_audio_set_channel : function(p_mi:Plibvlc_media_player_t; channel:cint):cint; cdecl;
+    libvlc_audio_get_delay : function(p_mi:Plibvlc_media_player_t):int64_t; cdecl;
+    libvlc_audio_set_delay : function(p_mi:Plibvlc_media_player_t; i_delay:int64_t):cint; cdecl;
+    libvlc_media_list_new : function(p_instance:Plibvlc_instance_t):plibvlc_media_list_t; cdecl;
+    libvlc_media_list_release : procedure(p_ml:Plibvlc_media_list_t); cdecl;
+    libvlc_media_list_retain : procedure(p_ml:Plibvlc_media_list_t); cdecl;
+
+    libvlc_media_list_add_file_content : function(p_ml:Plibvlc_media_list_t; psz_uri:pcchar):cint; cdecl;
+    libvlc_media_list_set_media : procedure(p_ml:Plibvlc_media_list_t; p_md:Plibvlc_media_t); cdecl;
+    libvlc_media_list_media : function(p_ml:Plibvlc_media_list_t):plibvlc_media_t; cdecl;
+    libvlc_media_list_add_media : function(p_ml:Plibvlc_media_list_t; p_md:Plibvlc_media_t):cint; cdecl;
+    libvlc_media_list_insert_media : function(p_ml:Plibvlc_media_list_t; p_md:Plibvlc_media_t; i_pos:cint):cint; cdecl;
+    libvlc_media_list_remove_index : function(p_ml:Plibvlc_media_list_t; i_pos:cint):cint; cdecl;
+    libvlc_media_list_count : function(p_ml:Plibvlc_media_list_t):cint; cdecl;
+    libvlc_media_list_item_at_index : function(p_ml:Plibvlc_media_list_t; i_pos:cint):plibvlc_media_t; cdecl;
+    libvlc_media_list_index_of_item : function(p_ml:Plibvlc_media_list_t; p_md:Plibvlc_media_t):cint; cdecl;
+    libvlc_media_list_is_readonly : function(p_ml:Plibvlc_media_list_t):cint; cdecl;
+    libvlc_media_list_lock : procedure(p_ml:Plibvlc_media_list_t); cdecl;
+    libvlc_media_list_unlock : procedure(p_ml:Plibvlc_media_list_t); cdecl;
+    libvlc_media_list_event_manager : function(p_ml:Plibvlc_media_list_t):plibvlc_event_manager_t; cdecl;
+    libvlc_media_list_player_new : function(p_instance:Plibvlc_instance_t):plibvlc_media_list_player_t; cdecl;
+    libvlc_media_list_player_release : procedure(p_mlp:Plibvlc_media_list_player_t); cdecl;
+    libvlc_media_list_player_retain : procedure(p_mlp:Plibvlc_media_list_player_t); cdecl;
+    libvlc_media_list_player_event_manager : function(p_mlp:Plibvlc_media_list_player_t):plibvlc_event_manager_t; cdecl;
+    libvlc_media_list_player_set_media_player : procedure(p_mlp:Plibvlc_media_list_player_t; p_mi:Plibvlc_media_player_t); cdecl;
+    libvlc_media_list_player_set_media_list : procedure(p_mlp:Plibvlc_media_list_player_t; p_mlist:Plibvlc_media_list_t); cdecl;
+    libvlc_media_list_player_play : procedure(p_mlp:Plibvlc_media_list_player_t); cdecl;
+    libvlc_media_list_player_pause : procedure(p_mlp:Plibvlc_media_list_player_t); cdecl;
+    libvlc_media_list_player_is_playing : function(p_mlp:Plibvlc_media_list_player_t):cint; cdecl;
+    libvlc_media_list_player_get_state : function(p_mlp:Plibvlc_media_list_player_t):libvlc_state_t; cdecl;
+    libvlc_media_list_player_play_item_at_index : function(p_mlp:Plibvlc_media_list_player_t; i_index:cint):cint; cdecl;
+    libvlc_media_list_player_play_item : function(p_mlp:Plibvlc_media_list_player_t; p_md:Plibvlc_media_t):cint; cdecl;
+    libvlc_media_list_player_stop : procedure(p_mlp:Plibvlc_media_list_player_t); cdecl;
+    libvlc_media_list_player_next : function(p_mlp:Plibvlc_media_list_player_t):cint; cdecl;
+    libvlc_media_list_player_previous : function(p_mlp:Plibvlc_media_list_player_t):cint; cdecl;
+    libvlc_media_list_player_set_playback_mode : procedure(p_mlp:Plibvlc_media_list_player_t; e_mode:libvlc_playback_mode_t); cdecl;
+    libvlc_media_library_new : function(p_instance:Plibvlc_instance_t):plibvlc_media_library_t; cdecl;
+    libvlc_media_library_release : procedure(p_mlib:Plibvlc_media_library_t); cdecl;
+    libvlc_media_library_retain : procedure(p_mlib:Plibvlc_media_library_t); cdecl;
+    libvlc_media_library_load : function(p_mlib:Plibvlc_media_library_t):cint; cdecl;
+    libvlc_media_library_media_list : function(p_mlib:Plibvlc_media_library_t):plibvlc_media_list_t; cdecl;
+    libvlc_video_get_adjust_int : function(p_mi:Plibvlc_media_player_t; option:cunsigned):cint; cdecl;
+    libvlc_video_set_adjust_int : procedure(p_mi:Plibvlc_media_player_t; option:cunsigned; value:cint); cdecl;
+    libvlc_video_get_adjust_float : function(p_mi:Plibvlc_media_player_t; option:cunsigned):cfloat; cdecl;
+    libvlc_video_set_adjust_float : procedure(p_mi:Plibvlc_media_player_t; option:cunsigned; value:cfloat); cdecl;
+    libvlc_video_get_logo_int : function(p_mi:Plibvlc_media_player_t; option:cunsigned):cint; cdecl;
+    libvlc_video_set_logo_int : procedure(p_mi:Plibvlc_media_player_t; option:cunsigned; value:cint); cdecl;
+    libvlc_video_set_logo_string : procedure(p_mi:Plibvlc_media_player_t; option:cunsigned; psz_value:pcchar); cdecl;
+    libvlc_audio_set_format_callbacks : procedure(mp:Plibvlc_media_player_t; setup:libvlc_audio_setup_cb; cleanup:libvlc_audio_cleanup_cb); cdecl;
+    libvlc_audio_set_format : procedure(mp:Plibvlc_media_player_t; format:pcchar; rate:cunsigned; channels:cunsigned); cdecl;
+    libvlc_media_player_get_length : function(p_mi:Plibvlc_media_player_t):libvlc_time_t; cdecl;
+    libvlc_media_player_get_time : function(p_mi:Plibvlc_media_player_t):libvlc_time_t; cdecl;
+    libvlc_media_player_set_time : procedure(p_mi:Plibvlc_media_player_t; i_time:libvlc_time_t); cdecl;
+    libvlc_media_player_get_position : function(p_mi:Plibvlc_media_player_t):cfloat; cdecl;
+    libvlc_media_player_set_position : procedure(p_mi:Plibvlc_media_player_t; f_pos:cfloat); cdecl;
+    libvlc_media_player_set_chapter : procedure(p_mi:Plibvlc_media_player_t; i_chapter:cint); cdecl;
+    libvlc_media_player_get_chapter : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_media_player_get_chapter_count : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_media_player_will_play : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_media_player_get_chapter_count_for_title : function(p_mi:Plibvlc_media_player_t; i_title:cint):cint; cdecl;
+    libvlc_media_player_set_title : procedure(p_mi:Plibvlc_media_player_t; i_title:cint); cdecl;
+    libvlc_media_player_get_title : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_media_player_get_title_count : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_media_player_previous_chapter : procedure(p_mi:Plibvlc_media_player_t); cdecl;
+    libvlc_media_player_next_chapter : procedure(p_mi:Plibvlc_media_player_t); cdecl;
+    libvlc_media_player_get_rate : function(p_mi:Plibvlc_media_player_t):cfloat; cdecl;
+    libvlc_media_player_set_rate : function(p_mi:Plibvlc_media_player_t; rate:cfloat):cint; cdecl;
+    libvlc_media_player_get_state : function(p_mi:Plibvlc_media_player_t):libvlc_state_t; cdecl;
+    libvlc_media_player_get_fps : function(p_mi:Plibvlc_media_player_t):cfloat; cdecl;
+    libvlc_media_player_has_vout : function(p_mi:Plibvlc_media_player_t):cunsigned; cdecl;
+    libvlc_media_player_is_seekable : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_media_player_can_pause : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_media_player_next_frame : procedure(p_mi:Plibvlc_media_player_t); cdecl;
+    libvlc_media_player_navigate : procedure(p_mi:Plibvlc_media_player_t; navigate:cunsigned); cdecl;
+    libvlc_track_description_list_release : procedure(p_track_description:Plibvlc_track_description_t); cdecl;
+    libvlc_track_description_release : procedure(p_track_description:Plibvlc_track_description_t); cdecl;
+    libvlc_toggle_fullscreen : procedure(p_mi:Plibvlc_media_player_t); cdecl;
+    libvlc_set_fullscreen : procedure(p_mi:Plibvlc_media_player_t; b_fullscreen:cint); cdecl;
+    libvlc_get_fullscreen : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_video_set_key_input : procedure(p_mi:Plibvlc_media_player_t; on:cunsigned); cdecl;
+    libvlc_video_set_mouse_input : procedure(p_mi:Plibvlc_media_player_t; on:cunsigned); cdecl;
+    libvlc_video_get_size : function(p_mi:Plibvlc_media_player_t; num:cunsigned; px:pcunsigned; py:pcunsigned):cint; cdecl;
+    libvlc_video_get_height : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_video_get_width : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_video_get_cursor : function(p_mi:Plibvlc_media_player_t; num:cunsigned; px:pcint; py:pcint):cint; cdecl;
+    libvlc_video_get_scale : function(p_mi:Plibvlc_media_player_t):cfloat; cdecl;
+    libvlc_video_set_scale : procedure(p_mi:Plibvlc_media_player_t; f_factor:cfloat); cdecl;
+    libvlc_video_get_aspect_ratio : function(p_mi:Plibvlc_media_player_t):pcchar; cdecl;
+    libvlc_video_set_aspect_ratio : procedure(p_mi:Plibvlc_media_player_t; psz_aspect:pcchar); cdecl;
+    libvlc_video_get_spu : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_video_get_spu_count : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_video_get_spu_description : function(p_mi:Plibvlc_media_player_t):plibvlc_track_description_t; cdecl;
+    libvlc_video_set_spu : function(p_mi:Plibvlc_media_player_t; i_spu:cunsigned):cint; cdecl;
+    libvlc_video_set_subtitle_file : function(p_mi:Plibvlc_media_player_t; psz_subtitle:pcchar):cint; cdecl;
+    libvlc_video_get_spu_delay : function(p_mi:Plibvlc_media_player_t):int64_t; cdecl;
+    libvlc_video_set_spu_delay : function(p_mi:Plibvlc_media_player_t; i_delay:int64_t):cint; cdecl;
+    libvlc_video_get_title_description : function(p_mi:Plibvlc_media_player_t):plibvlc_track_description_t; cdecl;
+    libvlc_video_get_chapter_description : function(p_mi:Plibvlc_media_player_t; i_title:cint):plibvlc_track_description_t; cdecl;
+    libvlc_video_get_crop_geometry : function(p_mi:Plibvlc_media_player_t):pcchar; cdecl;
+    libvlc_video_set_crop_geometry : procedure(p_mi:Plibvlc_media_player_t; psz_geometry:pcchar); cdecl;
+    libvlc_video_get_teletext : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_video_set_teletext : procedure(p_mi:Plibvlc_media_player_t; i_page:cint); cdecl;
+    libvlc_toggle_teletext : procedure(p_mi:Plibvlc_media_player_t); cdecl;
+    libvlc_video_get_track_count : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_video_get_track_description : function(p_mi:Plibvlc_media_player_t):plibvlc_track_description_t; cdecl;
+    libvlc_video_get_track : function(p_mi:Plibvlc_media_player_t):cint; cdecl;
+    libvlc_video_set_track : function(p_mi:Plibvlc_media_player_t; i_track:cint):cint; cdecl;
+    libvlc_video_take_snapshot : function(p_mi:Plibvlc_media_player_t; num:cunsigned; psz_filepath:pcchar; i_width:cuint; i_height:cuint):cint; cdecl;
+    libvlc_video_set_deinterlace : procedure(p_mi:Plibvlc_media_player_t; psz_mode:pcchar); cdecl;
+    libvlc_video_get_marquee_int : function(p_mi:Plibvlc_media_player_t; option:cunsigned):cint; cdecl;
+    libvlc_video_get_marquee_string : function(p_mi:Plibvlc_media_player_t; option:cunsigned):pcchar; cdecl;
+    libvlc_video_set_marquee_int : procedure(p_mi:Plibvlc_media_player_t; option:cunsigned; i_val:cint); cdecl;
+    libvlc_video_set_marquee_string : procedure(p_mi:Plibvlc_media_player_t; option:cunsigned; psz_text:pcchar); cdecl;
+    libvlc_audio_set_callbacks : procedure(mp:Plibvlc_media_player_t; 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;
+    libvlc_audio_set_volume_callback : procedure(mp:Plibvlc_media_player_t; set_volume:libvlc_audio_set_volume_cb); cdecl;
+    libvlc_video_set_callbacks : procedure(mp:Plibvlc_media_player_t; lock:libvlc_video_lock_cb; unlock:libvlc_video_unlock_cb; display:libvlc_video_display_cb; opaque:pointer); cdecl;
+    libvlc_video_set_format : procedure(mp:Plibvlc_media_player_t; chroma:pcchar; width:cunsigned; height:cunsigned; pitch:cunsigned); cdecl;
+    libvlc_video_set_format_callbacks : procedure(mp:Plibvlc_media_player_t; setup:libvlc_video_format_cb; cleanup:libvlc_video_cleanup_cb); cdecl;
+    libvlc_media_player_set_nsobject : procedure(p_mi:Plibvlc_media_player_t; drawable:pointer); cdecl;
+    libvlc_media_player_get_nsobject : function(p_mi:Plibvlc_media_player_t):pointer; cdecl;
+    libvlc_media_player_set_agl : procedure(p_mi:Plibvlc_media_player_t; drawable:uint32_t); cdecl;
+    libvlc_media_player_get_agl : function(p_mi:Plibvlc_media_player_t):uint32_t; cdecl;
+    libvlc_media_player_set_xwindow : procedure(p_mi:Plibvlc_media_player_t; drawable:uint32_t); cdecl;
+    libvlc_media_player_get_xwindow : function(p_mi:Plibvlc_media_player_t):uint32_t; cdecl;
+    libvlc_media_player_set_hwnd : procedure(p_mi:Plibvlc_media_player_t; drawable:pointer); cdecl;
+    libvlc_media_player_get_hwnd : function(p_mi:Plibvlc_media_player_t):pointer; cdecl;
+    libvlc_media_discoverer_new_from_name : function(p_inst:Plibvlc_instance_t; psz_name:pcchar):plibvlc_media_discoverer_t; cdecl;
+    libvlc_media_discoverer_release : procedure(p_mdis:Plibvlc_media_discoverer_t); cdecl;
+    libvlc_media_discoverer_localized_name : function(p_mdis:Plibvlc_media_discoverer_t):pcchar; cdecl;
+    libvlc_media_discoverer_media_list : function(p_mdis:Plibvlc_media_discoverer_t):plibvlc_media_list_t; cdecl;
+    libvlc_media_discoverer_event_manager : function(p_mdis:Plibvlc_media_discoverer_t):plibvlc_event_manager_t; cdecl;
+    libvlc_media_discoverer_is_running : function(p_mdis:Plibvlc_media_discoverer_t):cint; cdecl;
+    libvlc_vlm_release : procedure(p_instance:Plibvlc_instance_t); cdecl;
+    libvlc_vlm_add_broadcast : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; psz_input:pcchar; psz_output:pcchar; i_options:cint; 
+      ppsz_options:Ppcchar; b_enabled:cint; b_loop:cint):cint; cdecl;
+    libvlc_vlm_add_vod : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; psz_input:pcchar; i_options:cint; ppsz_options:Ppcchar; 
+      b_enabled:cint; psz_mux:pcchar):cint; cdecl;
+    libvlc_vlm_del_media : function(p_instance:Plibvlc_instance_t; psz_name:pcchar):cint; cdecl;
+    libvlc_vlm_set_enabled : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; b_enabled:cint):cint; cdecl;
+    libvlc_vlm_set_output : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; psz_output:pcchar):cint; cdecl;
+    libvlc_vlm_set_input : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; psz_input:pcchar):cint; cdecl;
+    libvlc_vlm_add_input : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; psz_input:pcchar):cint; cdecl;
+    libvlc_vlm_set_loop : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; b_loop:cint):cint; cdecl;
+    libvlc_vlm_set_mux : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; psz_mux:pcchar):cint; cdecl;
+    libvlc_vlm_change_media : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; psz_input:pcchar; psz_output:pcchar; i_options:cint; 
+      ppsz_options:Ppcchar; b_enabled:cint; b_loop:cint):cint; cdecl;
+    libvlc_vlm_play_media : function(p_instance:Plibvlc_instance_t; psz_name:pcchar):cint; cdecl;
+    libvlc_vlm_stop_media : function(p_instance:Plibvlc_instance_t; psz_name:pcchar):cint; cdecl;
+    libvlc_vlm_pause_media : function(p_instance:Plibvlc_instance_t; psz_name:pcchar):cint; cdecl;
+    libvlc_vlm_seek_media : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; f_percentage:cfloat):cint; cdecl;
+    libvlc_vlm_show_media : function(p_instance:Plibvlc_instance_t; psz_name:pcchar):pcchar; cdecl;
+    libvlc_vlm_get_media_instance_position : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; i_instance:cint):cfloat; cdecl;
+    libvlc_vlm_get_media_instance_time : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; i_instance:cint):cint; cdecl;
+    libvlc_vlm_get_media_instance_length : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; i_instance:cint):cint; cdecl;
+    libvlc_vlm_get_media_instance_rate : function(p_instance:Plibvlc_instance_t; psz_name:pcchar; i_instance:cint):cint; cdecl;
+    libvlc_vlm_get_event_manager : function(p_instance:Plibvlc_instance_t):plibvlc_event_manager_t; cdecl;
+    libvlc_playlist_play : procedure(p_instance:Plibvlc_instance_t; i_id:cint; i_options:cint; ppsz_options:Ppcchar); cdecl;
+
+Procedure Freelibvlc;
+Procedure Loadlibvlc(lib : AnsiString; CheckProcNames : Boolean = False);
+
+implementation
+
+uses
+  SysUtils, dynlibs;
+
+var
+  hlib : tlibhandle;
+  LibRefCount : Integer;
+
+procedure Freelibvlc;
+
+begin
+  if (LibRefCount>0) then
+    Dec(LibRefCount);
+  if LibRefCount>0 then
+    exit;
+  FreeLibrary(hlib);
+  libvlc_errmsg:=nil;
+  libvlc_clearerr:=nil;
+  libvlc_printerr:=nil;
+  libvlc_new:=nil;
+  libvlc_release:=nil;
+  libvlc_retain:=nil;
+  libvlc_add_intf:=nil;
+  libvlc_set_exit_handler:=nil;
+  libvlc_wait:=nil;
+  libvlc_set_user_agent:=nil;
+  libvlc_get_version:=nil;
+  libvlc_get_compiler:=nil;
+  libvlc_get_changeset:=nil;
+  libvlc_free:=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_module_description_list_release:=nil;
+  libvlc_audio_filter_list_get:=nil;
+  libvlc_video_filter_list_get:=nil;
+  libvlc_clock:=nil;
+  libvlc_media_new_location:=nil;
+  libvlc_media_new_path:=nil;
+  libvlc_media_new_fd:=nil;
+  libvlc_media_new_as_node:=nil;
+  libvlc_media_add_option:=nil;
+  libvlc_media_add_option_flag:=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_set_meta:=nil;
+  libvlc_media_save_meta:=nil;
+  libvlc_media_get_state:=nil;
+  libvlc_media_get_stats:=nil;
+  libvlc_media_subitems:=nil;
+  libvlc_media_event_manager:=nil;
+  libvlc_media_get_duration:=nil;
+  libvlc_media_parse:=nil;
+  libvlc_media_parse_async:=nil;
+  libvlc_media_is_parsed:=nil;
+  libvlc_media_set_user_data:=nil;
+  libvlc_media_get_user_data:=nil;
+  libvlc_media_get_tracks_info:=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_set_pause:=nil;
+  libvlc_media_player_pause:=nil;
+  libvlc_media_player_stop:=nil;
+  libvlc_video_set_callbacks:=nil;
+  libvlc_video_set_format:=nil;
+  libvlc_video_set_format_callbacks:=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_audio_set_callbacks:=nil;
+  libvlc_audio_set_volume_callback:=nil;
+  libvlc_audio_set_format_callbacks:=nil;
+  libvlc_audio_set_format:=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_get_rate:=nil;
+  libvlc_media_player_set_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_media_player_next_frame:=nil;
+  libvlc_media_player_navigate:=nil;
+  libvlc_track_description_list_release:=nil;
+  libvlc_track_description_release:=nil;
+  libvlc_toggle_fullscreen:=nil;
+  libvlc_set_fullscreen:=nil;
+  libvlc_get_fullscreen:=nil;
+  libvlc_video_set_key_input:=nil;
+  libvlc_video_set_mouse_input:=nil;
+  libvlc_video_get_size:=nil;
+  libvlc_video_get_height:=nil;
+  libvlc_video_get_width:=nil;
+  libvlc_video_get_cursor:=nil;
+  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_spu_delay:=nil;
+  libvlc_video_set_spu_delay:=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_video_set_deinterlace:=nil;
+  libvlc_video_get_marquee_int:=nil;
+  libvlc_video_get_marquee_string:=nil;
+  libvlc_video_set_marquee_int:=nil;
+  libvlc_video_set_marquee_string:=nil;
+  libvlc_video_get_logo_int:=nil;
+  libvlc_video_set_logo_int:=nil;
+  libvlc_video_set_logo_string:=nil;
+  libvlc_video_get_adjust_int:=nil;
+  libvlc_video_set_adjust_int:=nil;
+  libvlc_video_get_adjust_float:=nil;
+  libvlc_video_set_adjust_float:=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_audio_get_delay:=nil;
+  libvlc_audio_set_delay:=nil;
+  libvlc_media_list_new:=nil;
+  libvlc_media_list_release:=nil;
+  libvlc_media_list_retain:=nil;
+  libvlc_media_list_add_file_content:=nil;
+  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_retain:=nil;
+  libvlc_media_list_player_event_manager:=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_list_player_previous:=nil;
+  libvlc_media_list_player_set_playback_mode:=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;
+  libvlc_vlm_get_event_manager:=nil;
+  libvlc_playlist_play:=nil;
+end;
+
+
+Procedure Loadlibvlc(lib : AnsiString; CheckProcNames : Boolean = False);
+
+  Function GetProcAddress(h : TLibHandle; Name : AnsiString) : Pointer;
+  
+  begin
+    Result:=dynlibs.GetProcAddress(h,Name);
+    If (Result=Nil) and CheckProcNames then
+      raise Exception.CreateFmt('Could not find procedure address: %s ',[Name]);
+  end;
+  
+  Procedure EM(FN : String);
+  
+  begin
+    {$ifndef VER2_6}
+    Raise Exception.CreateFmt('Could not load library "%s": %s',[FN,GetLoadErrorStr]);
+    {$else}
+    raise Exception.CreateFmt('Could not load library "%s"',[FN]);
+    {$endif}
+  end;
+  
+  
+  
+Var
+  D : String;
+  
+begin
+  if (hLib<>NilHandle) then
+    begin
+    Inc(LibRefCount);
+    Exit;
+    end;
+  D:=ExtractFilePath(lib);
+  {$ifdef windows}
+  if (LoadLibrary(d+corelibname)=NilHandle) then
+    if (d='') and (LoadLibrary(DefaultlibPath+corelibname)=NilHandle) then
+      EM(DefaultlibPath+corelibname);
+  {$endif}
+  hlib:=LoadLibrary(lib);
+  if (hlib=NilHandle) then
+{$ifndef windows}
+    EM(Lib);
+{$else}
+    if (d='') then
+      begin
+      hlib:=LoadLibrary(DefaultlibPath+ExtractFileName(Lib));
+      if (hlib=NilHandle) then
+        EM(Lib);
+      end;
+{$endif}
+  Inc(LibRefCount);
+  pointer(libvlc_errmsg):=GetProcAddress(hlib,'libvlc_errmsg');
+  pointer(libvlc_clearerr):=GetProcAddress(hlib,'libvlc_clearerr');
+  pointer(libvlc_printerr):=GetProcAddress(hlib,'libvlc_printerr');
+  pointer(libvlc_new):=GetProcAddress(hlib,'libvlc_new');
+  pointer(libvlc_release):=GetProcAddress(hlib,'libvlc_release');
+  pointer(libvlc_retain):=GetProcAddress(hlib,'libvlc_retain');
+  pointer(libvlc_add_intf):=GetProcAddress(hlib,'libvlc_add_intf');
+  pointer(libvlc_set_exit_handler):=GetProcAddress(hlib,'libvlc_set_exit_handler');
+  pointer(libvlc_wait):=GetProcAddress(hlib,'libvlc_wait');
+  pointer(libvlc_set_user_agent):=GetProcAddress(hlib,'libvlc_set_user_agent');
+  pointer(libvlc_get_version):=GetProcAddress(hlib,'libvlc_get_version');
+  pointer(libvlc_get_compiler):=GetProcAddress(hlib,'libvlc_get_compiler');
+  pointer(libvlc_get_changeset):=GetProcAddress(hlib,'libvlc_get_changeset');
+  pointer(libvlc_free):=GetProcAddress(hlib,'libvlc_free');
+  pointer(libvlc_event_attach):=GetProcAddress(hlib,'libvlc_event_attach');
+  pointer(libvlc_event_detach):=GetProcAddress(hlib,'libvlc_event_detach');
+  pointer(libvlc_event_type_name):=GetProcAddress(hlib,'libvlc_event_type_name');
+  pointer(libvlc_get_log_verbosity):=GetProcAddress(hlib,'libvlc_get_log_verbosity');
+  pointer(libvlc_set_log_verbosity):=GetProcAddress(hlib,'libvlc_set_log_verbosity');
+  pointer(libvlc_log_open):=GetProcAddress(hlib,'libvlc_log_open');
+  pointer(libvlc_log_close):=GetProcAddress(hlib,'libvlc_log_close');
+  pointer(libvlc_log_count):=GetProcAddress(hlib,'libvlc_log_count');
+  pointer(libvlc_log_clear):=GetProcAddress(hlib,'libvlc_log_clear');
+  pointer(libvlc_log_get_iterator):=GetProcAddress(hlib,'libvlc_log_get_iterator');
+  pointer(libvlc_log_iterator_free):=GetProcAddress(hlib,'libvlc_log_iterator_free');
+  pointer(libvlc_log_iterator_has_next):=GetProcAddress(hlib,'libvlc_log_iterator_has_next');
+  pointer(libvlc_log_iterator_next):=GetProcAddress(hlib,'libvlc_log_iterator_next');
+  pointer(libvlc_module_description_list_release):=GetProcAddress(hlib,'libvlc_module_description_list_release');
+  pointer(libvlc_audio_filter_list_get):=GetProcAddress(hlib,'libvlc_audio_filter_list_get');
+  pointer(libvlc_video_filter_list_get):=GetProcAddress(hlib,'libvlc_video_filter_list_get');
+  pointer(libvlc_clock):=GetProcAddress(hlib,'libvlc_clock');
+  pointer(libvlc_media_new_location):=GetProcAddress(hlib,'libvlc_media_new_location');
+  pointer(libvlc_media_new_path):=GetProcAddress(hlib,'libvlc_media_new_path');
+  pointer(libvlc_media_new_fd):=GetProcAddress(hlib,'libvlc_media_new_fd');
+  pointer(libvlc_media_new_as_node):=GetProcAddress(hlib,'libvlc_media_new_as_node');
+  pointer(libvlc_media_add_option):=GetProcAddress(hlib,'libvlc_media_add_option');
+  pointer(libvlc_media_add_option_flag):=GetProcAddress(hlib,'libvlc_media_add_option_flag');
+  pointer(libvlc_media_retain):=GetProcAddress(hlib,'libvlc_media_retain');
+  pointer(libvlc_media_release):=GetProcAddress(hlib,'libvlc_media_release');
+  pointer(libvlc_media_get_mrl):=GetProcAddress(hlib,'libvlc_media_get_mrl');
+  pointer(libvlc_media_duplicate):=GetProcAddress(hlib,'libvlc_media_duplicate');
+  pointer(libvlc_media_get_meta):=GetProcAddress(hlib,'libvlc_media_get_meta');
+  pointer(libvlc_media_set_meta):=GetProcAddress(hlib,'libvlc_media_set_meta');
+  pointer(libvlc_media_save_meta):=GetProcAddress(hlib,'libvlc_media_save_meta');
+  pointer(libvlc_media_get_state):=GetProcAddress(hlib,'libvlc_media_get_state');
+  pointer(libvlc_media_get_stats):=GetProcAddress(hlib,'libvlc_media_get_stats');
+  pointer(libvlc_media_subitems):=GetProcAddress(hlib,'libvlc_media_subitems');
+  pointer(libvlc_media_event_manager):=GetProcAddress(hlib,'libvlc_media_event_manager');
+  pointer(libvlc_media_get_duration):=GetProcAddress(hlib,'libvlc_media_get_duration');
+  pointer(libvlc_media_parse):=GetProcAddress(hlib,'libvlc_media_parse');
+  pointer(libvlc_media_parse_async):=GetProcAddress(hlib,'libvlc_media_parse_async');
+  pointer(libvlc_media_is_parsed):=GetProcAddress(hlib,'libvlc_media_is_parsed');
+  pointer(libvlc_media_set_user_data):=GetProcAddress(hlib,'libvlc_media_set_user_data');
+  pointer(libvlc_media_get_user_data):=GetProcAddress(hlib,'libvlc_media_get_user_data');
+  pointer(libvlc_media_get_tracks_info):=GetProcAddress(hlib,'libvlc_media_get_tracks_info');
+  pointer(libvlc_media_player_new):=GetProcAddress(hlib,'libvlc_media_player_new');
+  pointer(libvlc_media_player_new_from_media):=GetProcAddress(hlib,'libvlc_media_player_new_from_media');
+  pointer(libvlc_media_player_release):=GetProcAddress(hlib,'libvlc_media_player_release');
+  pointer(libvlc_media_player_retain):=GetProcAddress(hlib,'libvlc_media_player_retain');
+  pointer(libvlc_media_player_set_media):=GetProcAddress(hlib,'libvlc_media_player_set_media');
+  pointer(libvlc_media_player_get_media):=GetProcAddress(hlib,'libvlc_media_player_get_media');
+  pointer(libvlc_media_player_event_manager):=GetProcAddress(hlib,'libvlc_media_player_event_manager');
+  pointer(libvlc_media_player_is_playing):=GetProcAddress(hlib,'libvlc_media_player_is_playing');
+  pointer(libvlc_media_player_play):=GetProcAddress(hlib,'libvlc_media_player_play');
+  pointer(libvlc_media_player_set_pause):=GetProcAddress(hlib,'libvlc_media_player_set_pause');
+  pointer(libvlc_media_player_pause):=GetProcAddress(hlib,'libvlc_media_player_pause');
+  pointer(libvlc_media_player_stop):=GetProcAddress(hlib,'libvlc_media_player_stop');
+  pointer(libvlc_video_set_callbacks):=GetProcAddress(hlib,'libvlc_video_set_callbacks');
+  pointer(libvlc_video_set_format):=GetProcAddress(hlib,'libvlc_video_set_format');
+  pointer(libvlc_video_set_format_callbacks):=GetProcAddress(hlib,'libvlc_video_set_format_callbacks');
+  pointer(libvlc_media_player_set_nsobject):=GetProcAddress(hlib,'libvlc_media_player_set_nsobject');
+  pointer(libvlc_media_player_get_nsobject):=GetProcAddress(hlib,'libvlc_media_player_get_nsobject');
+  pointer(libvlc_media_player_set_agl):=GetProcAddress(hlib,'libvlc_media_player_set_agl');
+  pointer(libvlc_media_player_get_agl):=GetProcAddress(hlib,'libvlc_media_player_get_agl');
+  pointer(libvlc_media_player_set_xwindow):=GetProcAddress(hlib,'libvlc_media_player_set_xwindow');
+  pointer(libvlc_media_player_get_xwindow):=GetProcAddress(hlib,'libvlc_media_player_get_xwindow');
+  pointer(libvlc_media_player_set_hwnd):=GetProcAddress(hlib,'libvlc_media_player_set_hwnd');
+  pointer(libvlc_media_player_get_hwnd):=GetProcAddress(hlib,'libvlc_media_player_get_hwnd');
+  pointer(libvlc_audio_set_callbacks):=GetProcAddress(hlib,'libvlc_audio_set_callbacks');
+  pointer(libvlc_audio_set_volume_callback):=GetProcAddress(hlib,'libvlc_audio_set_volume_callback');
+  pointer(libvlc_audio_set_format_callbacks):=GetProcAddress(hlib,'libvlc_audio_set_format_callbacks');
+  pointer(libvlc_audio_set_format):=GetProcAddress(hlib,'libvlc_audio_set_format');
+  pointer(libvlc_media_player_get_length):=GetProcAddress(hlib,'libvlc_media_player_get_length');
+  pointer(libvlc_media_player_get_time):=GetProcAddress(hlib,'libvlc_media_player_get_time');
+  pointer(libvlc_media_player_set_time):=GetProcAddress(hlib,'libvlc_media_player_set_time');
+  pointer(libvlc_media_player_get_position):=GetProcAddress(hlib,'libvlc_media_player_get_position');
+  pointer(libvlc_media_player_set_position):=GetProcAddress(hlib,'libvlc_media_player_set_position');
+  pointer(libvlc_media_player_set_chapter):=GetProcAddress(hlib,'libvlc_media_player_set_chapter');
+  pointer(libvlc_media_player_get_chapter):=GetProcAddress(hlib,'libvlc_media_player_get_chapter');
+  pointer(libvlc_media_player_get_chapter_count):=GetProcAddress(hlib,'libvlc_media_player_get_chapter_count');
+  pointer(libvlc_media_player_will_play):=GetProcAddress(hlib,'libvlc_media_player_will_play');
+  pointer(libvlc_media_player_get_chapter_count_for_title):=GetProcAddress(hlib,'libvlc_media_player_get_chapter_count_for_title');
+  pointer(libvlc_media_player_set_title):=GetProcAddress(hlib,'libvlc_media_player_set_title');
+  pointer(libvlc_media_player_get_title):=GetProcAddress(hlib,'libvlc_media_player_get_title');
+  pointer(libvlc_media_player_get_title_count):=GetProcAddress(hlib,'libvlc_media_player_get_title_count');
+  pointer(libvlc_media_player_previous_chapter):=GetProcAddress(hlib,'libvlc_media_player_previous_chapter');
+  pointer(libvlc_media_player_next_chapter):=GetProcAddress(hlib,'libvlc_media_player_next_chapter');
+  pointer(libvlc_media_player_get_rate):=GetProcAddress(hlib,'libvlc_media_player_get_rate');
+  pointer(libvlc_media_player_set_rate):=GetProcAddress(hlib,'libvlc_media_player_set_rate');
+  pointer(libvlc_media_player_get_state):=GetProcAddress(hlib,'libvlc_media_player_get_state');
+  pointer(libvlc_media_player_get_fps):=GetProcAddress(hlib,'libvlc_media_player_get_fps');
+  pointer(libvlc_media_player_has_vout):=GetProcAddress(hlib,'libvlc_media_player_has_vout');
+  pointer(libvlc_media_player_is_seekable):=GetProcAddress(hlib,'libvlc_media_player_is_seekable');
+  pointer(libvlc_media_player_can_pause):=GetProcAddress(hlib,'libvlc_media_player_can_pause');
+  pointer(libvlc_media_player_next_frame):=GetProcAddress(hlib,'libvlc_media_player_next_frame');
+  pointer(libvlc_media_player_navigate):=GetProcAddress(hlib,'libvlc_media_player_navigate');
+  pointer(libvlc_track_description_list_release):=GetProcAddress(hlib,'libvlc_track_description_list_release');
+  pointer(libvlc_track_description_release):=GetProcAddress(hlib,'libvlc_track_description_release');
+  pointer(libvlc_toggle_fullscreen):=GetProcAddress(hlib,'libvlc_toggle_fullscreen');
+  pointer(libvlc_set_fullscreen):=GetProcAddress(hlib,'libvlc_set_fullscreen');
+  pointer(libvlc_get_fullscreen):=GetProcAddress(hlib,'libvlc_get_fullscreen');
+  pointer(libvlc_video_set_key_input):=GetProcAddress(hlib,'libvlc_video_set_key_input');
+  pointer(libvlc_video_set_mouse_input):=GetProcAddress(hlib,'libvlc_video_set_mouse_input');
+  pointer(libvlc_video_get_size):=GetProcAddress(hlib,'libvlc_video_get_size');
+  pointer(libvlc_video_get_height):=GetProcAddress(hlib,'libvlc_video_get_height');
+  pointer(libvlc_video_get_width):=GetProcAddress(hlib,'libvlc_video_get_width');
+  pointer(libvlc_video_get_cursor):=GetProcAddress(hlib,'libvlc_video_get_cursor');
+  pointer(libvlc_video_get_scale):=GetProcAddress(hlib,'libvlc_video_get_scale');
+  pointer(libvlc_video_set_scale):=GetProcAddress(hlib,'libvlc_video_set_scale');
+  pointer(libvlc_video_get_aspect_ratio):=GetProcAddress(hlib,'libvlc_video_get_aspect_ratio');
+  pointer(libvlc_video_set_aspect_ratio):=GetProcAddress(hlib,'libvlc_video_set_aspect_ratio');
+  pointer(libvlc_video_get_spu):=GetProcAddress(hlib,'libvlc_video_get_spu');
+  pointer(libvlc_video_get_spu_count):=GetProcAddress(hlib,'libvlc_video_get_spu_count');
+  pointer(libvlc_video_get_spu_description):=GetProcAddress(hlib,'libvlc_video_get_spu_description');
+  pointer(libvlc_video_set_spu):=GetProcAddress(hlib,'libvlc_video_set_spu');
+  pointer(libvlc_video_set_subtitle_file):=GetProcAddress(hlib,'libvlc_video_set_subtitle_file');
+  pointer(libvlc_video_get_spu_delay):=GetProcAddress(hlib,'libvlc_video_get_spu_delay');
+  pointer(libvlc_video_set_spu_delay):=GetProcAddress(hlib,'libvlc_video_set_spu_delay');
+  pointer(libvlc_video_get_title_description):=GetProcAddress(hlib,'libvlc_video_get_title_description');
+  pointer(libvlc_video_get_chapter_description):=GetProcAddress(hlib,'libvlc_video_get_chapter_description');
+  pointer(libvlc_video_get_crop_geometry):=GetProcAddress(hlib,'libvlc_video_get_crop_geometry');
+  pointer(libvlc_video_set_crop_geometry):=GetProcAddress(hlib,'libvlc_video_set_crop_geometry');
+  pointer(libvlc_video_get_teletext):=GetProcAddress(hlib,'libvlc_video_get_teletext');
+  pointer(libvlc_video_set_teletext):=GetProcAddress(hlib,'libvlc_video_set_teletext');
+  pointer(libvlc_toggle_teletext):=GetProcAddress(hlib,'libvlc_toggle_teletext');
+  pointer(libvlc_video_get_track_count):=GetProcAddress(hlib,'libvlc_video_get_track_count');
+  pointer(libvlc_video_get_track_description):=GetProcAddress(hlib,'libvlc_video_get_track_description');
+  pointer(libvlc_video_get_track):=GetProcAddress(hlib,'libvlc_video_get_track');
+  pointer(libvlc_video_set_track):=GetProcAddress(hlib,'libvlc_video_set_track');
+  pointer(libvlc_video_take_snapshot):=GetProcAddress(hlib,'libvlc_video_take_snapshot');
+  pointer(libvlc_video_set_deinterlace):=GetProcAddress(hlib,'libvlc_video_set_deinterlace');
+  pointer(libvlc_video_get_marquee_int):=GetProcAddress(hlib,'libvlc_video_get_marquee_int');
+  pointer(libvlc_video_get_marquee_string):=GetProcAddress(hlib,'libvlc_video_get_marquee_string');
+  pointer(libvlc_video_set_marquee_int):=GetProcAddress(hlib,'libvlc_video_set_marquee_int');
+  pointer(libvlc_video_set_marquee_string):=GetProcAddress(hlib,'libvlc_video_set_marquee_string');
+  pointer(libvlc_video_get_logo_int):=GetProcAddress(hlib,'libvlc_video_get_logo_int');
+  pointer(libvlc_video_set_logo_int):=GetProcAddress(hlib,'libvlc_video_set_logo_int');
+  pointer(libvlc_video_set_logo_string):=GetProcAddress(hlib,'libvlc_video_set_logo_string');
+  pointer(libvlc_video_get_adjust_int):=GetProcAddress(hlib,'libvlc_video_get_adjust_int');
+  pointer(libvlc_video_set_adjust_int):=GetProcAddress(hlib,'libvlc_video_set_adjust_int');
+  pointer(libvlc_video_get_adjust_float):=GetProcAddress(hlib,'libvlc_video_get_adjust_float');
+  pointer(libvlc_video_set_adjust_float):=GetProcAddress(hlib,'libvlc_video_set_adjust_float');
+  pointer(libvlc_audio_output_list_get):=GetProcAddress(hlib,'libvlc_audio_output_list_get');
+  pointer(libvlc_audio_output_list_release):=GetProcAddress(hlib,'libvlc_audio_output_list_release');
+  pointer(libvlc_audio_output_set):=GetProcAddress(hlib,'libvlc_audio_output_set');
+  pointer(libvlc_audio_output_device_count):=GetProcAddress(hlib,'libvlc_audio_output_device_count');
+  pointer(libvlc_audio_output_device_longname):=GetProcAddress(hlib,'libvlc_audio_output_device_longname');
+  pointer(libvlc_audio_output_device_id):=GetProcAddress(hlib,'libvlc_audio_output_device_id');
+  pointer(libvlc_audio_output_device_set):=GetProcAddress(hlib,'libvlc_audio_output_device_set');
+  pointer(libvlc_audio_output_get_device_type):=GetProcAddress(hlib,'libvlc_audio_output_get_device_type');
+  pointer(libvlc_audio_output_set_device_type):=GetProcAddress(hlib,'libvlc_audio_output_set_device_type');
+  pointer(libvlc_audio_toggle_mute):=GetProcAddress(hlib,'libvlc_audio_toggle_mute');
+  pointer(libvlc_audio_get_mute):=GetProcAddress(hlib,'libvlc_audio_get_mute');
+  pointer(libvlc_audio_set_mute):=GetProcAddress(hlib,'libvlc_audio_set_mute');
+  pointer(libvlc_audio_get_volume):=GetProcAddress(hlib,'libvlc_audio_get_volume');
+  pointer(libvlc_audio_set_volume):=GetProcAddress(hlib,'libvlc_audio_set_volume');
+  pointer(libvlc_audio_get_track_count):=GetProcAddress(hlib,'libvlc_audio_get_track_count');
+  pointer(libvlc_audio_get_track_description):=GetProcAddress(hlib,'libvlc_audio_get_track_description');
+  pointer(libvlc_audio_get_track):=GetProcAddress(hlib,'libvlc_audio_get_track');
+  pointer(libvlc_audio_set_track):=GetProcAddress(hlib,'libvlc_audio_set_track');
+  pointer(libvlc_audio_get_channel):=GetProcAddress(hlib,'libvlc_audio_get_channel');
+  pointer(libvlc_audio_set_channel):=GetProcAddress(hlib,'libvlc_audio_set_channel');
+  pointer(libvlc_audio_get_delay):=GetProcAddress(hlib,'libvlc_audio_get_delay');
+  pointer(libvlc_audio_set_delay):=GetProcAddress(hlib,'libvlc_audio_set_delay');
+  pointer(libvlc_media_list_new):=GetProcAddress(hlib,'libvlc_media_list_new');
+  pointer(libvlc_media_list_release):=GetProcAddress(hlib,'libvlc_media_list_release');
+  pointer(libvlc_media_list_retain):=GetProcAddress(hlib,'libvlc_media_list_retain');
+  pointer(libvlc_media_list_add_file_content):=GetProcAddress(hlib,'libvlc_media_list_add_file_content');
+  pointer(libvlc_media_list_set_media):=GetProcAddress(hlib,'libvlc_media_list_set_media');
+  pointer(libvlc_media_list_media):=GetProcAddress(hlib,'libvlc_media_list_media');
+  pointer(libvlc_media_list_add_media):=GetProcAddress(hlib,'libvlc_media_list_add_media');
+  pointer(libvlc_media_list_insert_media):=GetProcAddress(hlib,'libvlc_media_list_insert_media');
+  pointer(libvlc_media_list_remove_index):=GetProcAddress(hlib,'libvlc_media_list_remove_index');
+  pointer(libvlc_media_list_count):=GetProcAddress(hlib,'libvlc_media_list_count');
+  pointer(libvlc_media_list_item_at_index):=GetProcAddress(hlib,'libvlc_media_list_item_at_index');
+  pointer(libvlc_media_list_index_of_item):=GetProcAddress(hlib,'libvlc_media_list_index_of_item');
+  pointer(libvlc_media_list_is_readonly):=GetProcAddress(hlib,'libvlc_media_list_is_readonly');
+  pointer(libvlc_media_list_lock):=GetProcAddress(hlib,'libvlc_media_list_lock');
+  pointer(libvlc_media_list_unlock):=GetProcAddress(hlib,'libvlc_media_list_unlock');
+  pointer(libvlc_media_list_event_manager):=GetProcAddress(hlib,'libvlc_media_list_event_manager');
+  pointer(libvlc_media_list_player_new):=GetProcAddress(hlib,'libvlc_media_list_player_new');
+  pointer(libvlc_media_list_player_release):=GetProcAddress(hlib,'libvlc_media_list_player_release');
+  pointer(libvlc_media_list_player_retain):=GetProcAddress(hlib,'libvlc_media_list_player_retain');
+  pointer(libvlc_media_list_player_event_manager):=GetProcAddress(hlib,'libvlc_media_list_player_event_manager');
+  pointer(libvlc_media_list_player_set_media_player):=GetProcAddress(hlib,'libvlc_media_list_player_set_media_player');
+  pointer(libvlc_media_list_player_set_media_list):=GetProcAddress(hlib,'libvlc_media_list_player_set_media_list');
+  pointer(libvlc_media_list_player_play):=GetProcAddress(hlib,'libvlc_media_list_player_play');
+  pointer(libvlc_media_list_player_pause):=GetProcAddress(hlib,'libvlc_media_list_player_pause');
+  pointer(libvlc_media_list_player_is_playing):=GetProcAddress(hlib,'libvlc_media_list_player_is_playing');
+  pointer(libvlc_media_list_player_get_state):=GetProcAddress(hlib,'libvlc_media_list_player_get_state');
+  pointer(libvlc_media_list_player_play_item_at_index):=GetProcAddress(hlib,'libvlc_media_list_player_play_item_at_index');
+  pointer(libvlc_media_list_player_play_item):=GetProcAddress(hlib,'libvlc_media_list_player_play_item');
+  pointer(libvlc_media_list_player_stop):=GetProcAddress(hlib,'libvlc_media_list_player_stop');
+  pointer(libvlc_media_list_player_next):=GetProcAddress(hlib,'libvlc_media_list_player_next');
+  pointer(libvlc_media_list_player_previous):=GetProcAddress(hlib,'libvlc_media_list_player_previous');
+  pointer(libvlc_media_list_player_set_playback_mode):=GetProcAddress(hlib,'libvlc_media_list_player_set_playback_mode');
+  pointer(libvlc_media_library_new):=GetProcAddress(hlib,'libvlc_media_library_new');
+  pointer(libvlc_media_library_release):=GetProcAddress(hlib,'libvlc_media_library_release');
+  pointer(libvlc_media_library_retain):=GetProcAddress(hlib,'libvlc_media_library_retain');
+  pointer(libvlc_media_library_load):=GetProcAddress(hlib,'libvlc_media_library_load');
+  pointer(libvlc_media_library_media_list):=GetProcAddress(hlib,'libvlc_media_library_media_list');
+  pointer(libvlc_media_discoverer_new_from_name):=GetProcAddress(hlib,'libvlc_media_discoverer_new_from_name');
+  pointer(libvlc_media_discoverer_release):=GetProcAddress(hlib,'libvlc_media_discoverer_release');
+  pointer(libvlc_media_discoverer_localized_name):=GetProcAddress(hlib,'libvlc_media_discoverer_localized_name');
+  pointer(libvlc_media_discoverer_media_list):=GetProcAddress(hlib,'libvlc_media_discoverer_media_list');
+  pointer(libvlc_media_discoverer_event_manager):=GetProcAddress(hlib,'libvlc_media_discoverer_event_manager');
+  pointer(libvlc_media_discoverer_is_running):=GetProcAddress(hlib,'libvlc_media_discoverer_is_running');
+  pointer(libvlc_vlm_release):=GetProcAddress(hlib,'libvlc_vlm_release');
+  pointer(libvlc_vlm_add_broadcast):=GetProcAddress(hlib,'libvlc_vlm_add_broadcast');
+  pointer(libvlc_vlm_add_vod):=GetProcAddress(hlib,'libvlc_vlm_add_vod');
+  pointer(libvlc_vlm_del_media):=GetProcAddress(hlib,'libvlc_vlm_del_media');
+  pointer(libvlc_vlm_set_enabled):=GetProcAddress(hlib,'libvlc_vlm_set_enabled');
+  pointer(libvlc_vlm_set_output):=GetProcAddress(hlib,'libvlc_vlm_set_output');
+  pointer(libvlc_vlm_set_input):=GetProcAddress(hlib,'libvlc_vlm_set_input');
+  pointer(libvlc_vlm_add_input):=GetProcAddress(hlib,'libvlc_vlm_add_input');
+  pointer(libvlc_vlm_set_loop):=GetProcAddress(hlib,'libvlc_vlm_set_loop');
+  pointer(libvlc_vlm_set_mux):=GetProcAddress(hlib,'libvlc_vlm_set_mux');
+  pointer(libvlc_vlm_change_media):=GetProcAddress(hlib,'libvlc_vlm_change_media');
+  pointer(libvlc_vlm_play_media):=GetProcAddress(hlib,'libvlc_vlm_play_media');
+  pointer(libvlc_vlm_stop_media):=GetProcAddress(hlib,'libvlc_vlm_stop_media');
+  pointer(libvlc_vlm_pause_media):=GetProcAddress(hlib,'libvlc_vlm_pause_media');
+  pointer(libvlc_vlm_seek_media):=GetProcAddress(hlib,'libvlc_vlm_seek_media');
+  pointer(libvlc_vlm_show_media):=GetProcAddress(hlib,'libvlc_vlm_show_media');
+  pointer(libvlc_vlm_get_media_instance_position):=GetProcAddress(hlib,'libvlc_vlm_get_media_instance_position');
+  pointer(libvlc_vlm_get_media_instance_time):=GetProcAddress(hlib,'libvlc_vlm_get_media_instance_time');
+  pointer(libvlc_vlm_get_media_instance_length):=GetProcAddress(hlib,'libvlc_vlm_get_media_instance_length');
+  pointer(libvlc_vlm_get_media_instance_rate):=GetProcAddress(hlib,'libvlc_vlm_get_media_instance_rate');
+  pointer(libvlc_vlm_get_event_manager):=GetProcAddress(hlib,'libvlc_vlm_get_event_manager');
+  pointer(libvlc_playlist_play):=GetProcAddress(hlib,'libvlc_playlist_play');
+end;
+
+
+end.

+ 1762 - 0
packages/libvlc/src/vlc.pp

@@ -0,0 +1,1762 @@
+{
+    Copyright (c) 2012 by Michael Van Canneyt
+    member of the Free Pascal development team
+
+    This is a OOP wrapper around the VLC libraries.
+    
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    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.
+
+ **********************************************************************}
+unit vlc;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, ctypes, libvlc, syncobjs;
+
+Type
+
+  { TVLCLibrary }
+
+  TVLCLibrary = class(TComponent)
+  private
+    FInstance : plibvlc_instance_t;
+    FLibraryArgs: TStrings;
+    FLibraryPath : String;
+    function GetI: Boolean;
+    function GetLastError: String;
+    Function GetVersion : String;
+    Function GetCompiler : String;
+    Function GetChangeSet : String;
+    Procedure SetLibraryPath(Const AValue : String);
+  Protected
+    Function GetInstance : plibvlc_instance_t; virtual;
+    property Instance : plibvlc_instance_t read GetInstance;
+  public
+    constructor Create (AOwner : TComponent); override;
+    destructor Destroy; override;
+    Procedure Initialize;
+    Procedure Release;
+    property LastError : String read GetLastError;
+    property Version : String read GetVersion;
+    property Compiler : String read GetCompiler;
+    property ChangeSer : String read GetChangeSet;
+    property LibraryPath : String read FLibraryPath write SetLibraryPath;
+    Property LibraryArgs : TStrings read FLibraryArgs Write FLibraryArgs;
+    Property Initialized : Boolean Read GetI;
+  end;
+
+  TVLCLibraryClass = Class of TVLCLibrary;
+
+  TCustomVLCMediaPlayer = Class;
+  TVLCMediaItems = Class;
+
+  { TVLCMediaItem }
+  TSnapShotFormat = (ssfPNG,ssfJPG);
+  TDeinterlaceMode   = (dmBlend, dmDiscard, dmBob, dmLinear, dmMean, dmX, dmYadif, dmYadif2x);
+
+  TVLCMediaItem = Class(TCollectionItem)
+  private
+    FDIM: TDeinterlaceMode;
+    FInstance : plibvlc_media_t;
+    FOpts : Array [0..3] of Boolean; // Keep in sync with property indexes
+    FPath: String;
+    FSS: TSNapshotFormat;
+    FFD: Integer;
+    function GetInstance: plibvlc_media_t;
+    function GetM(AIndex: Integer): Boolean;
+    function GetMD(AMeta : libvlc_meta_t): String;
+    function GetMRL: String;
+    function GetParsed: Boolean;
+    function GetUD: Pointer;
+    procedure SetDIM(AValue: TDeinterlaceMode);
+    procedure SetFSS(AValue: TSNapshotFormat);
+    procedure SetM(AIndex: Integer; AValue: Boolean);
+    Function GetBoolOpt(AIndex : Integer; AValue : Boolean) : String;
+    procedure SetMD(AMeta : libvlc_meta_t; AValue: String);
+    procedure SetUD(AValue: Pointer);
+    function GetState : libvlc_state_t;
+    function GetDuration : TDateTime;
+  Protected
+    Procedure RegisterInstance;
+    Procedure UnRegisterInstance;
+    procedure SetMRL(AValue: String); virtual;
+    procedure SetPath(AValue: String); virtual;
+    procedure SetFD(AValue: Integer); virtual;
+    Function GetVLC : TVLCLibrary; virtual;
+    function GetEventManager : plibvlc_event_manager_t;
+    Procedure SetInstance( Avalue : plibvlc_media_t);
+    Property Instance : plibvlc_media_t Read GetInstance;
+  Public
+    Destructor Destroy; override;
+    Procedure AddOption(Const AValue : String);
+    procedure Parse;
+    procedure ParseAsync;
+    Procedure SaveMetaData;
+    Function GetStats(Var AStats : libvlc_media_stats_t) : Boolean;
+    Function Duplicate : TVLCMediaItem;
+    Property Parsed : Boolean Read GetParsed;
+    Property ShowTitle : Boolean Index 0 Read GetM Write SetM;
+    Property VideoOnTop : Boolean Index 1 Read GetM Write SetM;
+    Property UseOverlay : Boolean Index 2 Read GetM Write SetM;
+    Property FullScreen : Boolean Index 3 Read GetM Write SetM;
+    Property DeinterlaceFilter : Boolean Index 4 Read GetM Write SetM;
+    Property DeInterlaceMode : TDeinterlaceMode Read FDIM Write SetDIM;
+    Property SnapShotFormat : TSNapshotFormat Read FSS Write SetFSS;
+    Property UserData : Pointer Read GetUD Write SetUD;
+    Property State :  libvlc_state_t Read GetState;
+    Property Duration : TDateTime Read GetDuration;
+    Property MetaData[AMeta : libvlc_meta_t] : String Read GetMD Write SetMD;
+    // These must be set prior to using any of the above.
+    Property MRL : String Read GetMRL Write SetMRL;
+    Property Path : String Read FPath Write SetPath;
+    property FileDescriptor : Integer Read FFD Write SetFD;
+  end;
+
+  TVLCMediaItemClass = Class of TVLCMediaItem;
+
+  { TVLCMediaItems }
+  TVLCPlayMode = (pmNormal,pmLoop,pmRepeat);
+
+  TVLCMediaItems = Class(TCollection)
+  Private
+    FPlayer: TCustomVLCMediaPlayer;
+    FPlayMode: TVLCPlayMode;
+    FVLC : TVLCLibrary;
+    FInstance : Plibvlc_media_list_t;
+    function GetI(AIndex : Integer): TVLCMediaItem;
+    function GetInstance: Plibvlc_media_list_t;
+    function GetIsReadOnly: Boolean;
+    procedure SetI(AIndex : Integer; AValue: TVLCMediaItem);
+  Protected
+    Function GetVLC : TVLCLibrary; virtual;
+  Public
+    Constructor Create(ALibrary : TVLCLibrary;AItemClass: TVLCMediaItemClass = Nil); overload;
+    Constructor Create(AInstance : Plibvlc_media_list_t;AItemClass: TVLCMediaItemClass = Nil); overload;
+    Procedure Lock;
+    Procedure Unlock;
+    Property Instance : Plibvlc_media_list_t read GetInstance;
+    Property VLC : TVLCLibrary Read GetVLC Write FVLC;
+    Property MediaItems[AIndex : Integer] : TVLCMediaItem Read GetI Write SetI; default;
+    Property ReadOnly : Boolean Read GetIsReadOnly;
+  end;
+
+  { TCustomVLCMediaPlayer }
+  TBooleanEvent = procedure(Sender : TObject; Const AValue : Boolean) of object;
+  TTitleEvent = procedure(Sender : TObject; Const ATitle : Integer) of object;
+  TSnapshotEvent = procedure(Sender : TObject; Const AfileName : string) of object;
+  TErrorEvent = procedure(Sender : TObject; Const AError : string) of object;
+  TTimeEvent = procedure(Sender : TObject; Const time : TDateTime) of object;
+  TPositionEvent = procedure(Sender : TObject; Const APos : Double)  of object;
+
+  TCustomVLCMediaPlayer = Class(TComponent)
+  private
+    FFitWindow: Boolean;
+    FOnBackward: TNotifyEvent;
+    FOnBuffering: TNotifyEvent;
+    FOnEOF: TNotifyEvent;
+    FOnError: TErrorEvent;
+    FOnForward: TNotifyEvent;
+    FOnLengthChanged: TTimeEvent;
+    FOnMediaChanged: TNotifyEvent;
+    FOnNothingSpecial: TNotifyEvent;
+    FOnOpening: TNotifyEvent;
+    FOnPausableChanged: TBooleanEvent;
+    FOnPause: TNotifyEvent;
+    FOnPlaying: TNotifyEvent;
+    FOnPositionChanged: TPositionEvent;
+    FOnSeekableChanged: TBooleanEvent;
+    FOnSnapShot: TSnapShotEvent;
+    FOnStop: TNotifyEvent;
+    FOnTimeChanged: TTimeEvent;
+    FOnTitleChanged: TTitleEvent;
+    FUseEvents: Boolean;
+    Finstance : Plibvlc_media_player_t;
+    FVLC: TVLCLibrary;
+    FECS : TCriticalSection;
+    function GetAspectRatio: String;
+    function GetAudioMuted: Boolean;
+    function GetAudioTrack: Integer;
+    function GetState: libvlc_state_t;
+    function GetVideoDuration: TDateTime;
+    function GetVideoFPS: Double;
+    function GetVideoFractional: Double;
+    function GetVideoHeight: Cardinal;
+    function GetVideoLength: Int64;
+    function GetVideoPos: Int64;
+    function GetVideoScale: Double;
+    function GetVideoWidth: Cardinal;
+    function GetVLC: TVLCLibrary;
+    procedure SetAspectRatio(AValue: String);
+    procedure SetAudioMuted(AValue: Boolean);
+    procedure SetFitWindow(AValue: Boolean);
+    procedure SetUseEVents(AValue: Boolean);
+    function GetAudioTrackCount : Integer;
+    procedure SetAudioTrack(AValue: Integer);
+    function GetAudioTrackDescriptions(AIndex : Integer) : String;
+    function GetChannel: Integer;
+    procedure SetChannel(AValue : Integer);
+    function GetAudioDelay : Int64;
+    procedure SetAudioDelay (AValue: Int64);
+    function GetPlaying : Boolean;
+    function GetChapter : Integer;
+    procedure SetChapter(AValue : Integer);
+    function GetChapterCount: Integer;
+    Function GetPlayable : Boolean;
+    Function GetPausable : Boolean;
+    Function GetSeekable : Boolean;
+    function GetAudioVolume : Integer;
+    function GetPlayRate: Integer;
+    procedure SetAudioVolume(AValue : Integer);
+    procedure SetPlayRate(AValue: Integer);
+    procedure SetFullScreenMode(AValue: Boolean);
+    function  GetFullScreenMode: Boolean;
+    procedure SetVideoFractional(AValue: Double);
+    procedure SetVideoPos(AValue: Int64);
+    procedure SetVideoScale(AValue: Double);
+  Protected
+    function GetInstance: Plibvlc_media_player_t; virtual;
+    // Called to set parent window. Descendents must override this.
+    Procedure SetParentWindow; virtual;
+    // Called when FitWindow is true.
+    Procedure SetParentWindowSize(AWidth,AHeight : Cardinal); Virtual;
+    procedure DoMediaChanged; virtual;
+    procedure DoNothingSpecial; virtual;
+    procedure DoOnBackward; virtual;
+    procedure DoOnBuffering;virtual;
+    procedure DoOnEOF;virtual;
+    procedure DoOnError;virtual;
+    procedure DoOnForward;virtual;
+    procedure DoOnOpening;virtual;
+    procedure DoOnPause;virtual;
+    procedure DoOnPlaying;virtual;
+    procedure DoOnStop;virtual;
+    procedure DoOnLengthChanged(const ATime: libvlc_time_t); virtual;
+    procedure DoOnPausableChanged(const APausable: Boolean); virtual;
+    procedure DoOnPositionChanged(const Aposition: Double); virtual;
+    procedure DoOnSeekableChanged(const ASeekable: Boolean); virtual;
+    procedure DoOnTimeChanged(const ATime: libvlc_time_t); virtual;
+    procedure DoOnTitleChanged(const ATitle: cint); virtual;
+    procedure DoOnSnapshot(const AFileName: PCChar); virtual;
+    procedure HookupEvents; virtual;
+    procedure UnHookEvents; virtual;
+    procedure HandleVLCEvent(e: Plibvlc_event_t); virtual;
+    Property VLC : TVLCLibrary Read GetVLC Write FVLC;
+    Property Instance : Plibvlc_media_player_t Read GetInstance;
+  Public
+    Destructor Destroy; override;
+    procedure Play;
+    procedure SetMedia(M: TVLCMediaItem);
+    Procedure Play(M : TVLCMediaItem);
+    Procedure PlayFile(Const AFileName : String);
+    Procedure Stop;
+    procedure Pause;
+    procedure Resume;
+    procedure NextFrame;
+    function Snapshot(Const AFileName: String): Boolean;
+    function Snapshot(Const AFileName: String; AWidth, AHeight: Cardinal): Boolean;
+    function GetVideoSize(Var AWidth, AHeight: Cardinal): Boolean;
+  // These can be made public/published in descendents
+  Protected
+    Property Playable : Boolean Read GetPlayable;
+    Property Pausable : Boolean Read GetPausable;
+    Property Seekable : Boolean Read GetSeekable;
+    Property Playing : Boolean Read GetPlaying;
+    Property State : libvlc_state_t Read GetState;
+    Property AudioTrackDescriptions [AIndex : Integer] : String Read GetAudioTrackDescriptions;
+    Property ChapterCount : Integer Read GetChapterCount;
+    Property AudioTrackCount : Integer Read GetAudioTrackCount;
+    Property AudioTrack : Integer Read GetAudioTrack Write SetAudioTrack;
+    Property AudioDelay : Int64 Read GetAudioDelay Write SetAudioDelay;
+    Property AudioVolume : Integer Read GetAudioVolume Write SetAudioVolume;
+    Property AudioMuted : Boolean Read GetAudioMuted Write SetAudioMuted;
+    Property FitWindow : Boolean Read FFitWindow Write SetFitWindow;
+    Property VideoWidth : Cardinal Read GetVideoWidth;
+    Property VideoHeight : Cardinal Read GetVideoHeight;
+    // In MS.
+    Property VideoLength : Int64 Read GetVideoLength;
+    Property VideoDuration : TDateTime Read GetVideoDuration;
+    // In MS
+    Property VideoPosition : Int64 Read GetVideoPos Write SetVideoPos;
+    Property VideoFractionalPosition : Double Read GetVideoFractional Write SetVideoFractional;
+    Property VideoFramesPerSecond : Double Read GetVideoFPS;
+    Property VideoScale : Double Read GetVideoScale Write SetVideoScale;
+    Property AspectRatio : String Read GetAspectRatio Write SetAspectRatio;
+    Property Channel : Integer Read GetChannel Write SetChannel;
+    Property Chapter : Integer Read GetChapter Write SetChapter;
+    Property FullScreenMode : Boolean Read GetFullScreenMode Write SetFullScreenMode;
+    Property UseEvents : Boolean Read FUseEvents Write SetUseEVents;
+    // Events from VLC player
+    Property OnMediaChanged : TNotifyEvent Read FOnMediaChanged Write FOnMediaChanged;
+    Property OnNothingSpecial : TNotifyEvent Read FOnNothingSpecial Write FOnNothingSpecial;
+    Property OnBackward : TNotifyEvent Read FOnBackward Write FOnBackward;
+    Property OnBuffering : TNotifyEvent Read FOnBuffering Write FOnBuffering;
+    Property OnEOF : TNotifyEvent Read FOnEOF Write FOnEOF;
+    Property OnError : TErrorEvent Read FOnError Write FOnError;
+    Property OnForward : TNotifyEvent Read FOnForward Write FOnForward;
+    Property OnOpening : TNotifyEvent Read FOnOpening Write FOnOpening;
+    Property OnPause : TNotifyEvent Read FOnPause Write FOnPause;
+    Property OnPlaying : TNotifyEvent Read FOnPlaying Write FOnPlaying;
+    Property OnStop : TNotifyEvent Read FOnStop Write FOnStop;
+    Property OnLengthChanged : TTimeEvent Read FOnLengthChanged Write FOnLengthChanged;
+    Property OnTimeChanged : TTimeEvent Read FOnTimeChanged Write FOnTimeChanged;
+    Property OnPausableChanged : TBooleanEvent Read FOnPausableChanged Write FOnPausableChanged;
+    Property OnPositionChanged : TPositionEvent Read FOnPositionChanged Write FOnPositionChanged;
+    Property OnSeekableChanged : TBooleanEvent Read FOnSeekableChanged Write FOnSeekableChanged;
+    Property OnTitleChanged : TTitleEvent Read FOnTitleChanged Write FOnTitleChanged;
+    Property OnSnapshot : TSnapShotEvent Read FOnSnapShot Write FOnSnapShot;
+  end;
+
+  EVLC = Class(Exception);
+
+  TVLCMediaPlayer = Class(TCustomVLCMediaPlayer)
+  Public
+    Property Playable ;
+    Property Pausable ;
+    Property Seekable ;
+    Property PLaying ;
+    Property State ;
+    Property AudioTrackDescriptions;
+    Property ChapterCount ;
+    Property AudioTrackCount ;
+    Property AudioTrack ;
+    Property VideoWidth ;
+    Property VideoHeight;
+    Property VideoLength;
+    Property VideoDuration ;
+    Property VideoPosition ;
+    Property VideoFractionalPosition ;
+    Property VideoFramesPerSecond;
+    Property VideoScale : Double;
+    Property AspectRatio : String;
+  Published
+    Property AudioDelay ;
+    Property AudioVolume ;
+    Property AudioMuted ;
+    Property Channel ;
+    Property Chapter ;
+    Property FitWindow;
+    Property FullScreenMode ;
+    Property UseEvents ;
+    Property OnMediaChanged ;
+    Property OnNothingSpecial ;
+    Property OnBackward ;
+    Property OnBuffering ;
+    Property OnEOF ;
+    Property OnError ;
+    Property OnForward ;
+    Property OnOpening ;
+    Property OnPause ;
+    Property OnPlaying ;
+    Property OnStop ;
+    Property OnLengthChanged ;
+    Property OnTimeChanged ;
+    Property OnPausableChanged ;
+    Property OnPositionChanged ;
+    Property OnSeekableChanged ;
+    Property OnTitleChanged ;
+    Property OnSnapshot ;
+  end;
+
+  { TCustomVLCMediaListPlayer }
+
+  TCustomVLCMediaListPlayer = Class(TComponent)
+  Private
+    FMediaItems: TVLCMediaItems;
+    FPlayer: TCustomVLCMediaPlayer;
+    FPlayMode: TVLCPlayMode;
+    FInstance : plibvlc_media_list_player_t;
+    FVLC: TVLCLibrary;
+    function GetInstance: plibvlc_media_list_player_t;
+    function  GetPlaying : Boolean;
+    function  GetState: libvlc_state_t;
+    function GetVLC: TVLCLibrary;
+    procedure SetMediaItems(AValue: TVLCMediaItems);
+    procedure SetPlayer(AValue: TCustomVLCMediaPlayer); virtual;
+    procedure SetPlayMode(AValue: TVLCPlayMode);
+  Protected
+    Function CreateMediaItems : TVLCMediaItems; virtual;
+    Property Instance : plibvlc_media_list_player_t Read GetInstance;
+    Property Player : TCustomVLCMediaPlayer Read FPlayer write SetPlayer;
+    Property PlayMode : TVLCPlayMode read FPlayMode write SetPlayMode;
+    Property Playing : Boolean Read GetPLaying;
+    Property State : libvlc_state_t Read GetState;
+    Property MediaItems : TVLCMediaItems Read FMediaItems Write SetMediaItems;
+    Property VLC : TVLCLibrary Read GetVLC Write FVLC;
+  Public
+    Constructor Create(AOwner : TComponent); override;
+    Destructor Destroy; override;
+    procedure Play(Item : TVLCMediaItem);
+    procedure Play;
+    procedure Pause;
+    procedure Stop;
+    procedure Next;
+    procedure Prev;
+  end;
+
+  TVLCMediaListPlayer = Class(TCustomVLCMediaListPlayer)
+  Public
+    Property VLC : TVLCLibrary;
+  Published
+    Property Player;
+    Property PlayMode;
+    Property Playing;
+    Property State;
+    Property MediaItems;
+  end;
+
+Function VLCLibrary  : TVLCLibrary;
+
+Var
+  VLCLibraryClass : TVLCLibraryClass = TVLCLibrary;
+
+Function VLCTimeToDateTime (T : libvlc_time_t) : TDateTime;
+
+implementation
+
+{ TVLCLibrary }
+Var
+  LVLC : TVLCLibrary;
+
+Function VLCLibrary  : TVLCLibrary;
+
+begin
+  If LVLC=Nil then
+    LVLC:=VLCLibraryClass.Create(Nil);
+  Result:=LVLC;
+end;
+
+Procedure DoneVLC;
+
+begin
+  If Assigned(LVLC) then
+    FreeAndNil(LVLC);
+end;
+
+Function VLCTimeToDateTime (T : libvlc_time_t) : TDateTime;
+
+  Function MD(Var MS : libvlc_time_t; D : Integer) : Word;  inline;
+
+  begin
+    Result:=MS Mod D;
+    MS:=MS div D;
+  end;
+
+var
+  d,h,m,s,ms: word;
+
+begin
+  ms:=MD(T,1000);
+  s:=MD(T,60);
+  m:=MD(T,60);
+  h:=MD(T,24);
+  d:=T;
+  Result:=D+EncodeTime(h,m,s,ms);
+end;
+
+procedure PlayerEventHelper(event: Plibvlc_event_t; data: Pointer); cdecl;
+
+begin
+  if Not Assigned(data) then
+    exit;
+  TCustomVLCMediaPlayer(data).HandleVLCEvent(event);
+end;
+
+{ TCustomVLCMediaListPlayer }
+
+function TCustomVLCMediaListPlayer.GetPlaying: Boolean;
+begin
+  Result:=libvlc_media_list_player_is_playing(Instance)<>0;
+end;
+
+function TCustomVLCMediaListPlayer.GetInstance: plibvlc_media_list_player_t;
+begin
+  if (FInstance=Nil) then
+    begin
+    Finstance:=libvlc_media_list_player_new(VLC.Instance);
+    if Assigned(MediaItems) then
+      begin
+      libvlc_media_list_player_set_media_list(FInstance,MediaItems.Instance);
+      end;
+    If Assigned(FPlayer) then
+      begin
+      libvlc_media_list_player_set_media_player(FInstance, FPlayer.Instance);
+      end;
+    end;
+  Result:=FInstance;
+end;
+
+function TCustomVLCMediaListPlayer.GetState: libvlc_state_t;
+begin
+  Result:=libvlc_media_list_player_get_state(Instance)
+end;
+
+function TCustomVLCMediaListPlayer.GetVLC: TVLCLibrary;
+begin
+  Result:=FVLC;
+  If Result=Nil then
+    Result:=VLCLibrary;
+end;
+
+procedure TCustomVLCMediaListPlayer.Play(Item: TVLCMediaItem);
+begin
+  libvlc_media_list_player_play_item(Instance, item.Instance);
+end;
+
+procedure TCustomVLCMediaListPlayer.SetMediaItems(AValue: TVLCMediaItems);
+begin
+  if FMediaItems=AValue then Exit;
+  FMediaItems.Assign(AValue);
+end;
+
+procedure TCustomVLCMediaListPlayer.SetPlayer(AValue: TCustomVLCMediaPlayer);
+begin
+  if FPlayer=AValue then Exit;
+  FPlayer:=AValue;
+  If Assigned(FInstance) then
+    begin
+    libvlc_media_list_player_set_media_player(FInstance, FPlayer.Instance);
+    end;
+end;
+
+procedure TCustomVLCMediaListPlayer.SetPlayMode(AValue: TVLCPlayMode);
+Const
+  M : Array  [TVLCPlayMode] of libvlc_playback_mode_t
+    = (libvlc_playback_mode_default,
+       libvlc_playback_mode_loop,
+       libvlc_playback_mode_repeat);
+
+begin
+  if FPlayMode=AValue then Exit;
+  FPlayMode:=AValue;
+  libvlc_media_list_player_set_playback_mode(FInstance, M[AValue]);
+end;
+
+function TCustomVLCMediaListPlayer.CreateMediaItems: TVLCMediaItems;
+begin
+  Result:=TVLCMediaItems.Create(TVLCMediaItem);
+end;
+
+constructor TCustomVLCMediaListPlayer.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FMediaItems:=CreateMediaItems;
+end;
+
+destructor TCustomVLCMediaListPlayer.Destroy;
+begin
+  If Assigned(Finstance) then
+    libvlc_media_list_player_release(FInstance);
+  FreeAndNil(FMediaItems);
+  inherited Destroy;
+end;
+
+procedure TCustomVLCMediaListPlayer.Play;
+begin
+  libvlc_media_list_player_play(Instance);
+end;
+
+procedure TCustomVLCMediaListPlayer.Pause;
+begin
+  libvlc_media_list_player_pause(Instance);
+end;
+
+procedure TCustomVLCMediaListPlayer.Stop;
+begin
+  libvlc_media_list_player_stop(Instance);
+end;
+
+procedure TCustomVLCMediaListPlayer.Next;
+begin
+  libvlc_media_list_player_next(Instance);
+end;
+
+procedure TCustomVLCMediaListPlayer.Prev;
+begin
+  libvlc_media_list_player_previous(Instance);
+end;
+
+
+{ TCustomVLCMediaPlayer }
+
+function TCustomVLCMediaPlayer.GetVLC: TVLCLibrary;
+begin
+  Result:=FVLC;
+  if Result=Nil then
+    Result:=VLCLibrary;
+end;
+
+procedure TCustomVLCMediaPlayer.SetAspectRatio(AValue: String);
+
+begin
+  libvlc_video_set_aspect_ratio(Instance,Pcchar(PChar(AValue)));
+end;
+
+function TCustomVLCMediaPlayer.GetAudioMuted: Boolean;
+begin
+  if Assigned(Finstance) then
+    Result:=libvlc_audio_get_mute(instance)<>0
+  else
+    Result:=False;
+end;
+
+function TCustomVLCMediaPlayer.GetAspectRatio: String;
+
+Var
+  P : Pcchar;
+
+begin
+  P:=libvlc_video_get_aspect_ratio(Instance);
+  if (P<>Nil) then
+    Result:=StrPas(PChar(P))
+  else
+    Result:='';
+end;
+
+function TCustomVLCMediaPlayer.GetAudioTrack: Integer;
+begin
+  if Assigned(FInstance) then
+    Result := libvlc_audio_get_track(FINstance)
+  else
+    Result:=-1;
+end;
+
+function TCustomVLCMediaPlayer.GetState: libvlc_state_t;
+begin
+  If Assigned(FInstance) then
+    Result:=libvlc_media_player_get_state(FInstance)
+  else
+    Result:=libvlc_NothingSpecial;
+end;
+
+function TCustomVLCMediaPlayer.GetVideoDuration: TDateTime;
+begin
+  Result:=VLCTimeToDateTime(GetVideoLength);
+end;
+
+function TCustomVLCMediaPlayer.GetVideoFPS: Double;
+begin
+  Result:=libvlc_media_player_get_fps(FInstance);
+end;
+
+function TCustomVLCMediaPlayer.GetVideoFractional: Double;
+begin
+  Result:=libvlc_media_player_get_Position(FInstance);
+end;
+
+function TCustomVLCMediaPlayer.GetVideoHeight: Cardinal;
+begin
+  Result:=libvlc_video_get_height(FInstance);
+end;
+
+function TCustomVLCMediaPlayer.GetVideoLength: Int64;
+begin
+  Result:=libvlc_media_player_get_length(Finstance);
+end;
+
+function TCustomVLCMediaPlayer.GetVideoPos: Int64;
+begin
+  Result:=libvlc_media_player_get_time(FInstance);
+end;
+
+function TCustomVLCMediaPlayer.GetVideoScale: Double;
+begin
+  Result:=libvlc_video_get_scale(Finstance);
+end;
+
+function TCustomVLCMediaPlayer.GetVideoWidth: Cardinal;
+begin
+  Result:=libvlc_video_get_width(FInstance);
+end;
+
+
+procedure TCustomVLCMediaPlayer.SetAudioMuted(AValue: Boolean);
+begin
+  libvlc_audio_set_mute(instance, ord(AValue));
+end;
+
+procedure TCustomVLCMediaPlayer.SetFitWindow(AValue: Boolean);
+
+Var
+  W,H : Cardinal;
+
+begin
+  if FFitWindow=AValue then Exit;
+  FFitWindow:=AValue;
+  If FFitWindow and Playing then
+    begin
+    if GetVideoSize(W,H) then
+      SetParentWindowSize(W,H);
+    end;
+end;
+
+procedure TCustomVLCMediaPlayer.SetUseEVents(AValue: Boolean);
+begin
+  if FUseEvents=AValue then Exit;
+  FUseEvents:=AValue;
+  If Assigned(Finstance) then
+    If AValue then
+      HookupEvents
+    else
+      UnhookEvents;
+end;
+
+function TCustomVLCMediaPlayer.GetAudioTrackCount: Integer;
+begin
+  if Assigned(FInstance) then
+    Result := libvlc_audio_get_track_count(FINstance)
+  else
+    Result:=-1;
+end;
+
+
+procedure TCustomVLCMediaPlayer.SetAudioTrack(AValue: Integer);
+begin
+  if Assigned(FInstance) then
+    begin
+    if (AValue<0) then
+      AValue:=0;
+    libvlc_audio_set_track(FInstance,AValue);
+    end;
+end;
+
+function TCustomVLCMediaPlayer.GetAudioTrackDescriptions(AIndex: Integer): String;
+
+var
+  t : plibvlc_track_description_t;
+
+begin
+  Result := '';
+  If (AIndex>=0) And Assigned(FInstance) then
+    begin
+    T:=libvlc_audio_get_track_description(Finstance);
+    while (AIndex>0) and Assigned(t) do
+      begin
+      Dec(Aindex);
+      t:=t^.p_next;
+      end;
+    If Assigned(t) and Assigned(t^.psz_name) then
+      Result:=StrPas(PChar(t^.psz_name));
+    end;
+end;
+
+function TCustomVLCMediaPlayer.GetChannel: Integer;
+begin
+  If Assigned(Finstance) then
+    Result:=libvlc_audio_get_channel(FInstance)
+ else
+   Result:=-1;
+end;
+
+procedure TCustomVLCMediaPlayer.SetChannel(AValue: Integer);
+begin
+  If Assigned(Finstance) then
+    libvlc_audio_set_channel(Finstance,AValue)
+end;
+
+function TCustomVLCMediaPlayer.GetAudioDelay: Int64;
+begin
+  if Assigned(FInstance) then
+    Result:=libvlc_audio_get_delay(FInstance)
+  else
+    Result:=-1;
+end;
+
+procedure TCustomVLCMediaPlayer.SetAudioDelay(AValue: Int64);
+begin
+  if Assigned(FInstance) then
+    libvlc_audio_set_delay(FInstance,AValue)
+end;
+
+function TCustomVLCMediaPlayer.GetPlaying: Boolean;
+begin
+  Result:=(State=libvlc_Playing);
+end;
+
+function TCustomVLCMediaPlayer.GetChapter: Integer;
+begin
+  if Assigned(FInstance) then
+    Result:=libvlc_media_player_get_chapter(FInstance)
+  else
+    Result:=-1;
+end;
+
+procedure TCustomVLCMediaPlayer.SetChapter(AValue: Integer);
+begin
+  if Assigned(FInstance) then
+    libvlc_media_player_set_chapter(FInstance,AValue);
+end;
+
+function TCustomVLCMediaPlayer.GetChapterCount: Integer;
+begin
+  if Assigned(FInstance) then
+    Result:=libvlc_media_player_get_chapter_count(FInstance)
+  else
+    Result:=-1;
+end;
+
+function TCustomVLCMediaPlayer.GetPlayable: Boolean;
+begin
+  if Assigned(FInstance) then
+    Result:=(libvlc_media_player_will_play(FInstance)<>0)
+  else
+    Result:=False
+end;
+
+function TCustomVLCMediaPlayer.GetPausable: Boolean;
+begin
+  if Assigned(FInstance) then
+    Result:=(libvlc_media_player_can_pause(FInstance)<>0)
+  else
+    Result:=False
+end;
+
+function TCustomVLCMediaPlayer.GetSeekable: Boolean;
+begin
+  if Assigned(FInstance) then
+    Result:=(libvlc_media_player_is_seekable(FInstance)<>0)
+  else
+    Result:=False
+end;
+
+function TCustomVLCMediaPlayer.GetAudioVolume: Integer;
+begin
+  if Assigned(FInstance) then
+    Result:=libvlc_audio_get_volume(FInstance)
+  else
+    Result:=-1
+end;
+
+procedure TCustomVLCMediaPlayer.SetAudioVolume(AValue: Integer);
+begin
+  if Assigned(FInstance) then
+    begin
+    if (AValue<0) then
+      AValue:=0
+    else if (AValue>200) then
+      AValue:=200;
+    libvlc_audio_set_volume(Finstance,AValue);
+    end;
+end;
+
+procedure TCustomVLCMediaPlayer.SetPlayRate(Avalue : Integer);
+begin
+  if Assigned(FInstance) then
+    begin
+    if (Avalue< 1) then
+       AValue:=1
+    else if (AValue>1000) then
+      AValue:=1000;
+    libvlc_media_player_set_rate(FInstance,AValue/100);
+    end;
+end;
+
+function TCustomVLCMediaPlayer.GetPlayRate: Integer;
+begin
+  if Assigned(FInstance) then
+    Result:=Round(libvlc_media_player_get_rate(FInstance)*100)
+  else
+    Result:=-1;
+end;
+
+procedure TCustomVLCMediaPlayer.SetFullScreenMode(AValue: Boolean);
+begin
+  if Assigned(FInstance) then
+    libvlc_set_fullscreen(Finstance,Ord(AValue));
+end;
+
+function TCustomVLCMediaPlayer.GetFullScreenMode: Boolean;
+begin
+  If Assigned(FInstance) then
+    Result:=libvlc_get_fullscreen(Finstance)<>0
+  else
+    Result:=False;
+end;
+
+procedure TCustomVLCMediaPlayer.SetVideoFractional(AValue: Double);
+begin
+  libvlc_media_player_set_position(FInstance,AValue);
+end;
+
+procedure TCustomVLCMediaPlayer.SetVideoPos(AValue: Int64);
+begin
+  libvlc_media_player_set_time(FInstance,AVAlue);
+end;
+
+procedure TCustomVLCMediaPlayer.SetVideoScale(AValue: Double);
+begin
+  libvlc_video_set_scale(Finstance,AVAlue);
+end;
+
+function TCustomVLCMediaPlayer.GetInstance: Plibvlc_media_player_t;
+begin
+  Result:=FInstance;
+  if (FInstance=Nil) then
+    begin
+    FInstance:=libvlc_media_player_new(VLC.Instance);
+    libvlc_video_set_mouse_input(FInstance,1);
+    libvlc_video_set_key_input(FInstance,1);
+    if FUseEvents then
+      HookupEvents;
+    end;
+  Result:=FInstance;
+end;
+
+procedure TCustomVLCMediaPlayer.SetParentWindow;
+begin
+  // Do nothing
+end;
+
+procedure TCustomVLCMediaPlayer.SetParentWindowSize(AWidth, AHeight: Cardinal);
+begin
+  // Do nothing
+end;
+
+Procedure TCustomVLCMediaPlayer.UnHookEvents;
+
+
+  Procedure ClearEvent(M : plibvlc_event_manager_t;t : libvlc_event_e);
+
+  begin
+    libvlc_event_detach(M,ord(t),@PlayerEventHelper,Self);
+  end;
+
+Var
+  M : plibvlc_event_manager_t;
+
+begin
+  M:=libvlc_media_player_event_manager(Instance);
+  if (M<>Nil) then
+    begin
+    ClearEvent(M,libvlc_MediaPlayerMediaChanged);
+    ClearEvent(M,libvlc_MediaPlayerNothingSpecial);
+    ClearEvent(M,libvlc_MediaPlayerOpening);
+    ClearEvent(M,libvlc_MediaPlayerBuffering);
+    ClearEvent(M,libvlc_MediaPlayerPlaying);
+    ClearEvent(M,libvlc_MediaPlayerPaused);
+    ClearEvent(M,libvlc_MediaPlayerStopped);
+    ClearEvent(M,libvlc_MediaPlayerForward);
+    ClearEvent(M,libvlc_MediaPlayerBackward);
+    ClearEvent(M,libvlc_MediaPlayerEndReached);
+    ClearEvent(M,libvlc_MediaPlayerEncounteredError);
+    ClearEvent(M,libvlc_MediaPlayerTimeChanged);
+    ClearEvent(M,libvlc_MediaPlayerPositionChanged);
+    ClearEvent(M,libvlc_MediaPlayerSeekableChanged);
+    ClearEvent(M,libvlc_MediaPlayerPausableChanged);
+    ClearEvent(M,libvlc_MediaPlayerTitleChanged);
+    ClearEvent(M,libvlc_MediaPlayerSnapshotTaken);
+    ClearEvent(M,libvlc_MediaPlayerLengthChanged);
+    FreeAndNil(FECS);
+    end;
+end;
+
+Procedure TCustomVLCMediaPlayer.HookupEvents;
+
+  Procedure AttachEvent( M : plibvlc_event_manager_t;t : libvlc_event_e);
+
+  begin
+    libvlc_event_attach(M,ord(t),@PlayerEventHelper,Self);
+  end;
+
+Var
+  M : plibvlc_event_manager_t;
+
+begin
+  M:=libvlc_media_player_event_manager(Instance);
+  if (M<>Nil) then
+    begin
+    FECS:=TCriticalSection.Create;
+    AttachEvent(M,libvlc_MediaPlayerMediaChanged);
+    AttachEvent(M,libvlc_MediaPlayerNothingSpecial);
+    AttachEvent(M,libvlc_MediaPlayerOpening);
+    AttachEvent(M,libvlc_MediaPlayerBuffering);
+    AttachEvent(M,libvlc_MediaPlayerPlaying);
+    AttachEvent(M,libvlc_MediaPlayerPaused);
+    AttachEvent(M,libvlc_MediaPlayerStopped);
+    AttachEvent(M,libvlc_MediaPlayerForward);
+    AttachEvent(M,libvlc_MediaPlayerBackward);
+    AttachEvent(M,libvlc_MediaPlayerEndReached);
+    AttachEvent(M,libvlc_MediaPlayerEncounteredError);
+    AttachEvent(M,libvlc_MediaPlayerTimeChanged);
+    AttachEvent(M,libvlc_MediaPlayerPositionChanged);
+    AttachEvent(M,libvlc_MediaPlayerSeekableChanged);
+    AttachEvent(M,libvlc_MediaPlayerPausableChanged);
+    AttachEvent(M,libvlc_MediaPlayerTitleChanged);
+    AttachEvent(M,libvlc_MediaPlayerSnapshotTaken);
+    AttachEvent(M,libvlc_MediaPlayerLengthChanged);
+    end;
+end;
+
+procedure TCustomVLCMediaPlayer.DoMediaChanged;
+
+begin
+  If Assigned(FOnMediaChanged) then
+    FOnMediaChanged(Self);
+end;
+
+procedure TCustomVLCMediaPlayer.DoNothingSpecial;
+
+begin
+  If Assigned(FOnNothingSpecial) then
+    FOnNothingSpecial(Self);
+end;
+
+procedure TCustomVLCMediaPlayer.DoOnOpening;
+
+begin
+  If Assigned(FOnOpening) then
+    FOnOpening(Self);
+end;
+
+procedure TCustomVLCMediaPlayer.DoOnPlaying;
+
+begin
+  If Assigned(FOnPlaying) then
+    FOnPlaying(Self);
+end;
+
+procedure TCustomVLCMediaPlayer.DoOnPause;
+
+begin
+  If Assigned(FOnPause) then
+    FOnPause(Self);
+end;
+
+
+procedure TCustomVLCMediaPlayer.DoOnStop;
+
+begin
+  If Assigned(FOnStop) then
+    FOnStop(Self);
+end;
+
+
+procedure TCustomVLCMediaPlayer.DoOnForward;
+
+begin
+  If Assigned(FOnForward) then
+    FOnForward(Self);
+end;
+
+
+procedure TCustomVLCMediaPlayer.DoOnBackward;
+
+begin
+  If Assigned(FOnBackward) then
+    FOnBackward(Self);
+end;
+
+procedure TCustomVLCMediaPlayer.DoOnEOF;
+
+begin
+  If Assigned(FOnEOF) then
+    FOnEOF(Self);
+end;
+
+procedure TCustomVLCMediaPlayer.DoOnBuffering;
+
+begin
+  If Assigned(FOnBuffering) then
+    FOnBuffering(Self);
+end;
+
+procedure TCustomVLCMediaPlayer.DoOnError;
+
+Var
+  P : pcchar;
+  E : String;
+begin
+  p:=libvlc_errmsg();
+  if p<>Nil then
+    E:=StrPas(PChar(P))
+  else
+    E:='';
+  If Assigned(FOnError) then
+    FOnError(Self,E);
+end;
+
+procedure TCustomVLCMediaPlayer.DoOnTimeChanged(Const ATime: libvlc_time_t);
+
+begin
+  If Assigned(FOnTimeChanged) then
+    FOnTimeChanged(Self,VLCTimeToDateTime(ATime));
+end;
+
+procedure TCustomVLCMediaPlayer.DoOnPositionChanged(Const Aposition: Double);
+
+begin
+  If Assigned(FOnPositionChanged) then
+    FOnPositionChanged(Self,APosition);
+end;
+
+
+procedure TCustomVLCMediaPlayer.DoOnSeekableChanged(Const ASeekable : Boolean);
+
+begin
+  If Assigned(FOnSeekableChanged) then
+    FOnSeekableChanged(Self,ASeekable);
+end;
+
+procedure TCustomVLCMediaPlayer.DoOnPausableChanged(Const APausable : Boolean);
+
+begin
+  If Assigned(FOnPausableChanged) then
+    FOnPausableChanged(Self,APausable);
+end;
+
+procedure TCustomVLCMediaPlayer.DoOnTitleChanged(Const ATitle: cint);
+
+begin
+  If Assigned(FOnTitleChanged) then
+    FOnTitleChanged(Self,ATitle);
+end;
+
+procedure TCustomVLCMediaPlayer.DoOnSnapshot(Const AFileName : PCChar);
+
+Var
+  S :String;
+
+begin
+  If Assigned(FOnSnapshot) then
+    begin
+    if Assigned(AFileName) then
+      S:=StrPas(PChar(AFileName))
+    else
+      S:='';
+    FOnSnapShot(Self,S);
+    end;
+end;
+
+procedure TCustomVLCMediaPlayer.DoOnLengthChanged(Const ATime: libvlc_time_t);
+
+begin
+  If Assigned(FOnLengtHChanged) then
+    FOnLengtHChanged(Self,VLCTimeToDateTime(ATime));
+end;
+
+
+
+procedure TCustomVLCMediaPlayer.HandleVLCEvent(e: Plibvlc_event_t);
+
+begin
+  Writeln('Enter : ',Ord(e^._type));
+  FECS.Enter;
+  try
+    case libvlc_event_e(e^._type) of
+      libvlc_MediaPlayerMediaChanged     : DoMediaChanged;
+      libvlc_MediaPlayerNothingSpecial   : DoNothingSpecial;
+      libvlc_MediaPlayerOpening          : DoOnOpening;
+      libvlc_MediaPlayerBuffering        : DoOnBuffering;
+      libvlc_MediaPlayerPlaying          : DoOnPlaying;
+      libvlc_MediaPlayerPaused           : DoOnPause;
+      libvlc_MediaPlayerStopped          : DoOnStop;
+      libvlc_MediaPlayerForward          : DoOnForward;
+      libvlc_MediaPlayerBackward         : DoOnBackward;
+      libvlc_MediaPlayerEndReached       : DoOnEOF;
+      libvlc_MediaPlayerEncounteredError : DoOnError;
+      libvlc_MediaPlayerTimeChanged      : begin
+                                           Writeln('A');
+                                           DoOnTimeChanged(e^.media_player_time_changed.new_time);
+                                           end;
+      libvlc_MediaPlayerPositionChanged  : begin
+                                           Writeln('AA');
+                                           DoOnPositionChanged(e^.media_player_position_changed.new_position);
+      end;
+      libvlc_MediaPlayerSeekableChanged  : begin
+                                           Writeln('AAA');
+                                           DoOnSeekableChanged(e^.media_player_seekable_changed.new_seekable<>0);
+      end;
+      libvlc_MediaPlayerPausableChanged  : begin
+                                           Writeln('AAAA');
+                                           DoOnPausableChanged(e^.media_player_pausable_changed.new_pausable<>0) ;
+      end;
+      libvlc_MediaPlayerTitleChanged     : begin
+                                           Writeln('AAAAA');
+                                           DoOnTitleChanged(e^.media_player_title_changed.new_title);
+      end;
+      libvlc_MediaPlayerSnapshotTaken    : begin
+                                           Writeln('AAAAAA');
+                                           DoOnSnapShot(e^.media_player_snapshot_taken.psz_filename);
+      end;
+      libvlc_MediaPlayerLengthChanged    : begin
+                                           Writeln('AAAAAAA');
+                                           DoOnLengthChanged(e^.media_player_length_changed.new_length);
+      end;
+    else
+      Writeln('Unknown event type ',e^._type);
+    end;
+  finally
+    FECS.Leave;
+  end;
+  Writeln('Leave');
+end;
+
+destructor TCustomVLCMediaPlayer.Destroy;
+begin
+  If Assigned(FInstance) then
+    begin
+    libvlc_media_player_release(FInstance);
+    FInstance:=Nil;
+    end;
+  FreeAndNil(FECS);
+  inherited Destroy;
+end;
+
+procedure TCustomVLCMediaPlayer.SetMedia(M: TVLCMediaItem);
+
+begin
+  libvlc_media_player_set_media(Instance,M.Instance);
+end;
+
+procedure TCustomVLCMediaPlayer.Play;
+
+Var
+  W,H : Cardinal;
+
+begin
+  SetParentWindow;
+  libvlc_media_player_play(Instance);
+  If FitWindow then
+    begin
+    VideoScale:=1.0;
+    if GetVideoSize(W,H) then
+      SetParentWindowSize(W,H);
+    end;
+end;
+
+procedure TCustomVLCMediaPlayer.Play(M: TVLCMediaItem);
+
+begin
+  if Playing then
+    begin
+    Stop;
+    While Playing do
+      Sleep(100);
+    end;
+  SetMedia(M);
+  Play;
+end;
+
+procedure TCustomVLCMediaPlayer.PlayFile(const AFileName: String);
+
+Var
+  M : TVLCMediaItem;
+begin
+  M:=TVLCMediaItem.Create(Nil);
+  try
+    M.Path:=AFileName;
+    Play(M);
+  finally
+    M.Free;
+  end;
+end;
+
+procedure TCustomVLCMediaPlayer.Stop;
+begin
+  if Assigned(FInstance) then
+    libvlc_media_player_stop(FInstance);
+end;
+
+procedure TCustomVLCMediaPlayer.Pause;
+begin
+  if Assigned(FInstance) then
+    libvlc_media_player_pause(FInstance);
+end;
+
+procedure TCustomVLCMediaPlayer.Resume;
+begin
+  if (GetState()=libvlc_Paused)  then
+   if Assigned(FInstance) then
+     libvlc_media_player_play(FInstance);
+end;
+
+procedure TCustomVLCMediaPlayer.NextFrame;
+begin
+  if Assigned(FInstance) then
+   libvlc_media_player_next_frame(Finstance);
+end;
+
+function TCustomVLCMediaPlayer.Snapshot(const AFileName: String): Boolean;
+
+var
+  w,h : Cardinal;
+begin
+  Result:=Assigned(FInstance);
+  if Result then
+    begin
+    w:=0;
+    h:=0;
+    Result:=libvlc_video_get_size(FInstance,0,@W,@H)=0;
+    if Result then
+      Result:=SnapShot(AFileName,W,H);
+    end;
+end;
+
+function TCustomVLCMediaPlayer.Snapshot(const AFileName: String; AWidth,
+  AHeight: Cardinal): Boolean;
+begin
+  Result:=Assigned(FInstance);
+  If Result then
+    Result:=libvlc_video_take_snapshot(FInstance,0,PCChar(PChar(AFileName)),AWidth,AHeight)=0;
+end;
+
+function TCustomVLCMediaPlayer.GetVideoSize(var AWidth, AHeight: Cardinal
+  ): Boolean;
+begin
+  Result:=libvlc_video_get_size(FInstance,0,@AWidth,@AHeight)=0;
+end;
+
+{ TVLCMediaItems }
+
+constructor TVLCMediaItems.Create(ALibrary: TVLCLibrary;AItemClass: TVLCMediaItemClass = Nil);
+begin
+  Inherited Create(AItemClass);
+  FVLC:=ALibrary;
+end;
+
+constructor TVLCMediaItems.Create(AInstance: Plibvlc_media_list_t;
+  AItemClass: TVLCMediaItemClass);
+
+
+Var
+  I : Integer;
+  P : plibvlc_media_t;
+
+begin
+  Inherited Create(AItemClass);
+  FInstance:=AInstance;
+  For I:=0 to libvlc_media_list_count(FInstance)-1 do
+    begin
+    P:=libvlc_media_list_item_at_index(FInstance,I);
+    (Add as TVLCMediaItem).SetInstance(P);
+    end;
+end;
+
+procedure TVLCMediaItems.Lock;
+begin
+  libvlc_media_list_lock(FInstance);
+end;
+
+procedure TVLCMediaItems.Unlock;
+begin
+  libvlc_media_list_lock(FInstance);
+end;
+
+function TVLCMediaItems.GetInstance: Plibvlc_media_list_t;
+Var
+  I :integer;
+begin
+  if FInstance=Nil then
+    begin
+    FInstance:=libvlc_media_list_new(VLC.Instance);
+    For I:=0 to Count-1 do
+      GetI(I).RegisterInstance;
+    end;
+  Result:=Finstance;
+end;
+
+function TVLCMediaItems.GetIsReadOnly: Boolean;
+begin
+  Result:=libvlc_media_list_is_readonly(FInstance)<>0;
+end;
+
+function TVLCMediaItems.GetI(AIndex : Integer): TVLCMediaItem;
+begin
+  Result:=Items[AIndex] as TVLCMediaItem;
+end;
+
+procedure TVLCMediaItems.SetI(AIndex : Integer; AValue: TVLCMediaItem);
+begin
+  Items[AIndex]:=AValue;
+end;
+
+
+function TVLCMediaItems.GetVLC: TVLCLibrary;
+begin
+  Result:=VLCLibrary;
+end;
+
+{ TVLCMediaItem }
+
+function TVLCMediaItem.GetInstance: plibvlc_media_t;
+begin
+  Result:=Finstance;
+  If (Result=Nil) then
+    Raise EVLC.Create('No instance available at this time. Set MRL, Path or FileDescriptor first');
+end;
+
+function TVLCMediaItem.GetM(AIndex: Integer): Boolean;
+begin
+  Result:=FOpts[AIndex];
+end;
+
+function TVLCMediaItem.GetMD(AMeta : libvlc_meta_t): String;
+
+Var
+  P : PCChar;
+
+begin
+  P:=libvlc_media_get_meta(Instance,AMeta);
+  if (P<>Nil) then
+    Result:=StrPas(PChar(p))
+  else
+    Result:='';
+end;
+
+function TVLCMediaItem.GetMRL: String;
+Var
+  P : PCChar;
+
+begin
+  P:=libvlc_media_get_mrl(Instance);
+  if (P<>Nil) then
+    Result:=StrPas(PChar(p))
+  else
+    Result:='';
+end;
+
+function TVLCMediaItem.GetParsed: Boolean;
+begin
+  Result:=libvlc_media_is_parsed(Instance)<>0;
+end;
+
+function TVLCMediaItem.GetUD: Pointer;
+begin
+  Result:=libvlc_media_get_user_data(Instance);
+end;
+
+procedure TVLCMediaItem.SetDIM(AValue: TDeinterlaceMode);
+
+Const
+  DMS : Array[TDeinterlaceMode] of string
+      = ('blend', 'discard', 'bob', 'linear', 'mean', 'x', 'yadif', 'yadif2x');
+begin
+  if (FDIM=AValue) then Exit;
+  FDIM:=AValue;
+  libvlc_media_add_option(Instance, PCChar(PChar('deinterlace-mode='+DMS[AValue])));
+end;
+
+procedure TVLCMediaItem.SetFD(AValue: Integer);
+begin
+  FFD:=AValue;
+  Finstance:=libvlc_media_new_fd(GetVLC.Instance,AValue);
+  If (FInstance=Nil) then
+    Raise EVLC.CreateFmt('Failed to create media item from file descriptor "%d"',[AValue]);
+  RegisterInstance;
+end;
+
+procedure TVLCMediaItem.SetFSS(AValue: TSNapshotFormat);
+
+Const
+  ssfs : Array[TSnapShotFormat] of string = ('png','jpg');
+
+begin
+  if FSS=AValue then Exit;
+  FSS:=AValue;
+  libvlc_media_add_option(Instance, PCChar(PChar('no-snapshot-preview')));
+  libvlc_media_add_option(instance, PCChar(PChar('snapshot-format=' + SSFS[aValue])));
+end;
+
+procedure TVLCMediaItem.SetM(AIndex: Integer; AValue: Boolean);
+
+begin
+  FOpts[AIndex]:=AValue;
+  libvlc_media_add_option(FInstance,PcChar(PChar(GetBoolOpt(AIndex,AValue))));
+end;
+
+function TVLCMediaItem.GetBoolOpt(AIndex: Integer; AValue: Boolean): String;
+begin
+  Case AINdex of
+    0 : Result:='video-title-show';
+    1 : Result:='video-on-top';
+    2 : Result:='overlay';
+    3 : Result:='fullscreen';
+    4 : Result:='deinterlace='+IntToStr(Ord(AValue));
+  end;
+  if (AIndex < 4) and Not AValue then
+    Result:='no-'+Result;
+end;
+
+procedure TVLCMediaItem.SetMD(AMeta : libvlc_meta_t; AValue: String);
+begin
+  libvlc_media_set_meta(Instance,AMeta,Pcchar(PChar(AValue)));
+end;
+
+procedure TVLCMediaItem.SetMRL(AValue: String);
+begin
+  Finstance:=libvlc_media_new_location(GetVLC.Instance,PCChar(AValue));
+  If (FInstance=Nil) then
+    Raise EVLC.CreateFmt('Failed to create media item from MRL : "%s"',[AValue]);
+  RegisterInstance;
+end;
+
+procedure TVLCMediaItem.SetPath(AValue: String);
+begin
+  if FPath=AValue then Exit;
+  FPath:=AValue;
+  FInstance:=libvlc_media_new_path(GetVLC.Instance,PCChar(AValue));
+  if (FInstance=Nil) then
+    Raise EVLC.CreateFmt('Failed to create media item from path : "%s"',[AValue]);
+  RegisterInstance;
+end;
+
+procedure TVLCMediaItem.SetUD(AValue: Pointer);
+begin
+  libvlc_media_set_user_data(Instance,AValue);
+end;
+
+function TVLCMediaItem.GetState: libvlc_state_t;
+begin
+  Result:=libvlc_media_get_state(instance);
+end;
+
+function TVLCMediaItem.GetDuration: TDateTime;
+
+Var
+  d :  libvlc_time_t;
+
+begin
+  d:=libvlc_media_get_duration(Instance);
+  Result:=D
+end;
+
+procedure TVLCMediaItem.RegisterInstance;
+
+Var
+  L : Plibvlc_media_list_t;
+
+begin
+  If Assigned(Collection) and (Collection is TVLCMediaItems) then
+    begin
+    L:=TVLCMediaItems(Collection).FInstance;
+    if (L<>Nil) then
+      begin
+      libvlc_media_list_lock(L);
+      libvlc_media_list_add_media(L, FInstance);
+      libvlc_media_list_unlock(L);
+      end;
+    end;
+end;
+
+procedure TVLCMediaItem.UnRegisterInstance;
+Var
+  L : Plibvlc_media_list_t;
+  i : integer;
+
+begin
+  If Assigned(Collection) and (Collection is TVLCMediaItems) then
+    begin
+    L:=TVLCMediaItems(Collection).FInstance;
+    if L<>Nil then
+      begin
+      libvlc_media_list_lock(L);
+      I:=libvlc_media_list_index_of_item(L,Finstance);
+      if (i>=0) then
+        libvlc_media_list_remove_index(L,i);
+      libvlc_media_list_unlock(L);
+      end;
+    end;
+end;
+
+function TVLCMediaItem.GetVLC: TVLCLibrary;
+begin
+  If Assigned(Collection) and (Collection is TVLCMediaItems) then
+    Result:=TVLCMediaItems(Collection).GetVLC
+  else
+    Result:=VLCLibrary;
+  if not Result.Initialized then
+    Result.Initialize;
+end;
+
+function TVLCMediaItem.GetEventManager: plibvlc_event_manager_t;
+begin
+  Result:=libvlc_media_event_manager(Instance);
+end;
+
+procedure TVLCMediaItem.SetInstance(Avalue: plibvlc_media_t);
+begin
+  FInstance:=AValue;
+end;
+
+destructor TVLCMediaItem.Destroy;
+begin
+  inherited Destroy;
+  if Assigned(FInstance) then
+    begin
+    UnregisterInstance;
+    libvlc_media_release(FInstance);
+    FInstance:=Nil;
+    end;
+end;
+
+procedure TVLCMediaItem.AddOption(const AValue: String);
+begin
+  libvlc_media_add_option(Instance,PCChar(PChar(AValue)));
+end;
+
+procedure TVLCMediaItem.Parse;
+begin
+  libvlc_media_parse(Instance);
+end;
+
+procedure TVLCMediaItem.ParseAsync;
+begin
+  libvlc_media_parse_async(Instance);
+end;
+
+procedure TVLCMediaItem.SaveMetaData;
+begin
+  libvlc_media_save_meta(Instance);
+end;
+
+function TVLCMediaItem.GetStats(var AStats: libvlc_media_stats_t): Boolean;
+begin
+  Result:=libvlc_media_get_stats(Instance,@AStats)<>0;
+end;
+
+function TVLCMediaItem.Duplicate: TVLCMediaItem;
+begin
+  If Assigned(Collection) and (Collection is TVLCMediaItems) then
+    Result:=TVLCMediaItems(Collection).Add as TVLCMediaItem
+  else
+    Result:=TVLCMediaItem.Create(Nil);
+  Result.SetInstance(libvlc_media_duplicate(Instance));
+end;
+
+
+function TVLCLibrary.GetLastError: String;
+
+Var
+  P : PCChar;
+
+begin
+  P:=libvlc_errmsg();
+  if Assigned(P) then
+    Result := StrPas(PChar(P))
+  else
+    Result:='';
+end;
+
+function TVLCLibrary.GetI: Boolean;
+begin
+  Result:=FInstance<>Nil;
+end;
+
+function TVLCLibrary.GetVersion: String;
+Var
+  P : PCChar;
+
+begin
+  P:=libvlc_get_version();
+  if Assigned(P) then
+    Result := StrPas(PChar(P))
+  else
+    Result:='';
+end;
+
+function TVLCLibrary.GetCompiler: String;
+Var
+  P : PCChar;
+
+begin
+  P:=libvlc_get_compiler();
+  if Assigned(P) then
+    Result := StrPas(PChar(P))
+  else
+    Result:='';
+end;
+
+function TVLCLibrary.GetChangeSet: String;
+
+Var
+  P : PCChar;
+
+begin
+  P:=libvlc_get_changeset();
+  if Assigned(P) then
+    Result := StrPas(PChar(P))
+  else
+    Result:='';
+end;
+
+procedure TVLCLibrary.SetLibraryPath(const AValue: String);
+begin
+  If AValue=FLibraryPath then exit;
+  If Assigned(FInstance) then
+    Raise EVLC.Create('VLC already initialized, cannot set librarypath');
+  FLibraryPath:=AVAlue;
+end;
+
+function TVLCLibrary.GetInstance: plibvlc_instance_t;
+
+var
+  args: Array of AnsiString;
+  cargs : array of PAnsiChar;
+  argc,
+  I : integer;
+
+begin
+  If (FInstance=Nil) then
+    begin
+    LibraryArgs.add('--no-video-title-show');
+    SetLength(cArgs,LibraryArgs.Count+2);
+    SetLength(Args,LibraryArgs.Count+1);
+    cargs[0] := PChar(FLibraryPath);
+    For I:=0 to LibraryArgs.Count-1 do
+      begin
+      Args[i]:=LibraryArgs[i];
+      CArgs[i+1]:=PChar(Args[i]);
+      end;
+    argc:=Length(CArgs);
+    cargs[argc-1] := NIL;
+    FInstance := libvlc_new(argc-1, PPcchar(cargs));
+    if (FInstance=Nil) then
+      Raise EVLC.Create('Could not create instance of libvlc');
+    end;
+  Result:=FInstance;
+end;
+
+constructor TVLCLibrary.Create(AOwner: TComponent);
+begin
+  Inherited;
+  FInstance:=Nil;
+  FLibraryPath:=LibName;
+  FLibraryArgs:=TStringList.Create;
+end;
+
+destructor TVLCLibrary.Destroy;
+begin
+  FreeAndNil(FLibraryArgs);
+  Release;
+  inherited Destroy;
+end;
+
+procedure TVLCLibrary.Initialize;
+begin
+  LoadLibVLC(LibraryPath,False);
+  GetInstance;
+end;
+
+procedure TVLCLibrary.Release;
+begin
+  If (FInstance<>Nil) then
+    begin
+    libvlc_release(FInstance);
+    FreeLibVLC;
+    end;
+  FInstance:=Nil;
+end;
+
+Initialization
+
+Finalization
+  DoneVLC;
+end.
+