<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Steve+Bz</id>
	<title>VideoLAN Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Steve+Bz"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Steve_Bz/"/>
	<updated>2026-11-04T15:57:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=WxVLCBackend&amp;diff=14292</id>
		<title>WxVLCBackend</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=WxVLCBackend&amp;diff=14292"/>
		<updated>2009-05-31T13:44:54Z</updated>

		<summary type="html">&lt;p&gt;Steve Bz: /* wxVLCBacend */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase}}&lt;br /&gt;
== Intro ==  &lt;br /&gt;
Although vlc is moving [[Qt_and_GTK|away]] from wxwidgets this is an attemp to move wxwidgets towards vlc (libvlc to be more precise)..&lt;br /&gt;
The libvlc API is fairly new and VERY promissing.. It exports ALL the functionality of vlc into a nice c API .&lt;br /&gt;
On the other hand wxWidgets is a very rich [http://www.wxwidgets.org/docs/hierarchy_stable_image.htm] ( and also community based ) growing X platform library. It covers the 3 basic platforms (MSW, LINUX, MAC) and more[http://wiki.wxwidgets.org/Supported_Platforms]..&lt;br /&gt;
&lt;br /&gt;
== wxVLCBackend ==&lt;br /&gt;
wxVLCBackend v2 is a wxMediaCtrl backend. The latter is a stub media player in wxWidgets and provides an interface for various kinds of backends (gssteamer, wmp,...). &lt;br /&gt;
wxVLCBackend maybe integrated in the official wxwidgets code..&lt;br /&gt;
The backend code provides a guide to integrade libvlc in other c/c++ gui frameworks as well. In fact the only TRICKY part was to get a low-level hadle for the drawable surface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Right now&#039;&#039;&#039; (29/10/08) The code is not mature enough for publication. There are some stability issues. To correct them i&#039;ve created a mini (Poc) wxWidgets based app to isolate these issues, wxvlc_test.&lt;br /&gt;
&lt;br /&gt;
==wxvlc_test==&lt;br /&gt;
wxvlc_test is a simple wxWidgets based app. It has a textbox where you give a media filename and a play, stop button to control playback. In my tests wxvlc_test &#039;&#039;&#039;crashes&#039;&#039;&#039; when starting playing ( somewhere inside libavcodec library with no other dubuging symbols ) *some* avis.. On the other hand vlc plays these same files smoothly.&lt;br /&gt;
&lt;br /&gt;
***Tests were done on vlc-0.9.5&lt;br /&gt;
&lt;br /&gt;
My intentions for this publication are :&lt;br /&gt;
a) to test the glue code on other systems ( my tests are on &#039;&#039;&#039;linux ONLY&#039;&#039;&#039; so dont ask me, but windows could be tested too )&lt;br /&gt;
b) to check the glue code correctness by a vlc internalls well-knower (maybe i miss something,&lt;br /&gt;
cause i cant explain that libavcodec crashes)&lt;br /&gt;
&lt;br /&gt;
Information for wxvlc_test is provided in the README as well&lt;br /&gt;
&lt;br /&gt;
=== wxvlc_test v0.1 source ===&lt;br /&gt;
&lt;br /&gt;
The program is provided under patch format here. Copy and paste the following to a new patch file ( say wxvlc.patch) and &amp;quot;apply&amp;quot; it with  &lt;br /&gt;
patch -Np0 &amp;lt; ../wxvlc.patch&lt;br /&gt;
this will create a new dir with all the needed files inside&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -Nur wxvlc_test-0.1/Makefile wxvlc_test/Makefile&lt;br /&gt;
--- wxvlc_test-0.1/Makefile	1970-01-01 02:00:00.000000000 +0200&lt;br /&gt;
+++ wxvlc_test/Makefile	2008-10-28 12:09:10.000000000 +0200&lt;br /&gt;
@@ -0,0 +1,44 @@&lt;br /&gt;
+&lt;br /&gt;
+CC = g++&lt;br /&gt;
+CFLAGS += -O2 -g -Wall&lt;br /&gt;
+# vlc incs should be on the system (at least for GTK )&lt;br /&gt;
+INCS = `wx-config --cflags`&lt;br /&gt;
+# &amp;lt;------------ MOD HERE&lt;br /&gt;
+# xtra incs for the gtk build.... Don&#039;t know know how to contitionaly compile.. Comment out on non gtk platforms&lt;br /&gt;
+INCS +=	-I/usr/include/gtk-2.0 \&lt;br /&gt;
+		-I/usr/include/pango-1.0 \&lt;br /&gt;
+		-I/usr/include/cairo \&lt;br /&gt;
+		-I/usr/include/glib-2.0 \&lt;br /&gt;
+		-I/usr/lib/glib-2.0/include \&lt;br /&gt;
+		-I/usr/lib/gtk-2.0/include \&lt;br /&gt;
+		-I/usr/include/atk-1.0&lt;br /&gt;
+&lt;br /&gt;
+LIBS = `wx-config --libs` -lvlc&lt;br /&gt;
+OBJS = test2App.o test2Main.o vlc_bind.o&lt;br /&gt;
+DEFS = &lt;br /&gt;
+&lt;br /&gt;
+###########################################################################&lt;br /&gt;
+&lt;br /&gt;
+# it is first and executed by default&lt;br /&gt;
+default: wxvlc_test&lt;br /&gt;
+&lt;br /&gt;
+all: wxvlc_test&lt;br /&gt;
+&lt;br /&gt;
+##### libraries&lt;br /&gt;
+&lt;br /&gt;
+wxvlc_test: $(OBJS) &lt;br /&gt;
+	$(CC) $(CFLAGS) $(DEFS) $(INCS) $(OBJS) $(LIBS) -o wxvlc_test&lt;br /&gt;
+&lt;br /&gt;
+# Make the o&#039;s out of c&#039;s&lt;br /&gt;
+# $&amp;lt; she who initiated the implicit actions&lt;br /&gt;
+# $* prefix shared by taget and deps&lt;br /&gt;
+# c.o  c &amp;lt;= depends on &amp;lt;= o&lt;br /&gt;
+.cpp.o: $*.h&lt;br /&gt;
+	$(CC) $(CFLAGS) $(DEFS) $(INCS) -c $&amp;lt; -o $@&lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
+# Clean target&lt;br /&gt;
+clean:&lt;br /&gt;
+	rm -f *.[o] &lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
diff -Nur wxvlc_test-0.1/README wxvlc_test/README&lt;br /&gt;
--- wxvlc_test-0.1/README	1970-01-01 02:00:00.000000000 +0200&lt;br /&gt;
+++ wxvlc_test/README	2008-10-28 12:38:54.000000000 +0200&lt;br /&gt;
@@ -0,0 +1,29 @@&lt;br /&gt;
+-- INTRO&lt;br /&gt;
+wxvlc_test v0.1&lt;br /&gt;
+&lt;br /&gt;
+This is a mini library for libvlc integration into wxWidgets apps . Its a poC&lt;br /&gt;
+ and is intented to test it for stability. It is part of the wxVLCMediaBackend v2&lt;br /&gt;
+ for integration into wxMediaCtrl as a Bakend...[It is not published yet (10.08)] &lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
+--USAGE&lt;br /&gt;
+-Make sure you have wxWIdgets 2.8 installed (don&#039;t know for later versions, &lt;br /&gt;
+but i think 2.6 should work). &lt;br /&gt;
+-Make sure you have vlc installed.. Ok we test on linux, so it means libvlc is&lt;br /&gt;
+ in path as well as the plugins. &lt;br /&gt;
+ You need to comment some lines at Makefile ( Noted) for windows and make &lt;br /&gt;
+ sure the linker can &amp;quot;see&amp;quot;  libvlc.dll. It is not tested so don&#039;t ask me .&lt;br /&gt;
+&lt;br /&gt;
+$make&lt;br /&gt;
+$./wxvlc_test&lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
+--ISSUES&lt;br /&gt;
+It crashes with some AVI files. Dont know what it is ...&lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
+-- LIC&lt;br /&gt;
+-this code is left to the &amp;quot;public&amp;quot; as is without ANY waranty, the authors CANNOT be&lt;br /&gt;
+	held responsible if it blows your house or something...	 &lt;br /&gt;
+&lt;br /&gt;
+	basos    2008    &amp;lt; noxelia 4t gmail c0m &amp;gt;&lt;br /&gt;
diff -Nur wxvlc_test-0.1/test2App.cpp wxvlc_test/test2App.cpp&lt;br /&gt;
--- wxvlc_test-0.1/test2App.cpp	1970-01-01 02:00:00.000000000 +0200&lt;br /&gt;
+++ wxvlc_test/test2App.cpp	2008-11-08 20:06:37.000000000 +0200&lt;br /&gt;
@@ -0,0 +1,64 @@&lt;br /&gt;
+/***************************************************************&lt;br /&gt;
&lt;br /&gt;
+ * Name:      test2App.cpp&lt;br /&gt;
&lt;br /&gt;
+ * Purpose:   Code for Application Class&lt;br /&gt;
&lt;br /&gt;
+ * Author:    basOS&lt;br /&gt;
&lt;br /&gt;
+ * Created:   2008-07-05&lt;br /&gt;
&lt;br /&gt;
+ * Copyright: basOS ()&lt;br /&gt;
&lt;br /&gt;
+ * License:&lt;br /&gt;
&lt;br /&gt;
+ **************************************************************/&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#ifdef WX_PRECOMP&lt;br /&gt;
&lt;br /&gt;
+#include &amp;quot;wx_pch.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
+#endif&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#ifdef __BORLANDC__&lt;br /&gt;
&lt;br /&gt;
+#pragma hdrstop&lt;br /&gt;
&lt;br /&gt;
+#endif //__BORLANDC__&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#include &amp;quot;test2App.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
+#include &amp;quot;test2Main.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
+#include &amp;quot;wx/cmdline.h&amp;quot;     //for wxCmdLineParser (optional)&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+IMPLEMENT_APP(appVlctest)&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+bool appVlctest::OnInit()&lt;br /&gt;
&lt;br /&gt;
+{&lt;br /&gt;
+	wxString filename ;&lt;br /&gt;
&lt;br /&gt;
+#if wxUSE_CMDLINE_PARSER&lt;br /&gt;
+    //&lt;br /&gt;
+    //  What this does is get all the command line arguments&lt;br /&gt;
+    //  and treat each one as a file to put to the initial playlist&lt;br /&gt;
+    //&lt;br /&gt;
+    wxCmdLineEntryDesc cmdLineDesc[2];&lt;br /&gt;
+    cmdLineDesc[0].kind = wxCMD_LINE_PARAM;&lt;br /&gt;
+    cmdLineDesc[0].shortName = NULL;&lt;br /&gt;
+    cmdLineDesc[0].longName = NULL;&lt;br /&gt;
+    cmdLineDesc[0].description = wxT(&amp;quot;input files&amp;quot;);&lt;br /&gt;
+    cmdLineDesc[0].type = wxCMD_LINE_VAL_STRING;&lt;br /&gt;
+    cmdLineDesc[0].flags = wxCMD_LINE_PARAM_OPTIONAL | wxCMD_LINE_PARAM_MULTIPLE;&lt;br /&gt;
+&lt;br /&gt;
+    cmdLineDesc[1].kind = wxCMD_LINE_NONE;&lt;br /&gt;
+&lt;br /&gt;
+    //gets the passed media files from cmd line&lt;br /&gt;
+    wxCmdLineParser parser (cmdLineDesc, argc, argv);&lt;br /&gt;
+&lt;br /&gt;
+    // get filenames from the commandline&lt;br /&gt;
+    if (parser.Parse() == 0)&lt;br /&gt;
+    {&lt;br /&gt;
+        for (size_t paramNr=0; paramNr &amp;lt; parser.GetParamCount(); ++paramNr)&lt;br /&gt;
+        {&lt;br /&gt;
+            filename = parser.GetParam (paramNr) ;&lt;br /&gt;
+			break ;&lt;br /&gt;
+        }&lt;br /&gt;
+    }&lt;br /&gt;
+#endif &lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    f_main *frame  = new f_main( _T(&amp;quot;Vlc test app&amp;quot;), wxPoint(50,150),wxSize(450,390));&lt;br /&gt;
+	frame-&amp;gt;filename = filename ;&lt;br /&gt;
+    frame-&amp;gt;Show(TRUE);&lt;br /&gt;
&lt;br /&gt;
+    SetTopWindow(frame);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    return TRUE;&lt;br /&gt;
&lt;br /&gt;
+}&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
diff -Nur wxvlc_test-0.1/test2App.h wxvlc_test/test2App.h&lt;br /&gt;
--- wxvlc_test-0.1/test2App.h	1970-01-01 02:00:00.000000000 +0200&lt;br /&gt;
+++ wxvlc_test/test2App.h	2008-11-08 20:06:36.000000000 +0200&lt;br /&gt;
@@ -0,0 +1,26 @@&lt;br /&gt;
+/***************************************************************&lt;br /&gt;
&lt;br /&gt;
+ * Name:      test2App.h&lt;br /&gt;
&lt;br /&gt;
+ * Purpose:   Defines Application Class&lt;br /&gt;
&lt;br /&gt;
+ * Author:    basOS &lt;br /&gt;
&lt;br /&gt;
+ * Created:   2008-07-05&lt;br /&gt;
&lt;br /&gt;
+ * Copyright: basOS ()&lt;br /&gt;
&lt;br /&gt;
+ * License:&lt;br /&gt;
&lt;br /&gt;
+ **************************************************************/&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#ifndef TEST2APP_H&lt;br /&gt;
&lt;br /&gt;
+#define TEST2APP_H&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#include &amp;lt;wx/app.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+class appVlctest : public wxApp&lt;br /&gt;
&lt;br /&gt;
+{&lt;br /&gt;
&lt;br /&gt;
+    wxIcon* ic_app;&lt;br /&gt;
&lt;br /&gt;
+    virtual bool OnInit();&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    protected:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
+};&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#endif // TEST2APP_H&lt;br /&gt;
diff -Nur wxvlc_test-0.1/test2Main.cpp wxvlc_test/test2Main.cpp&lt;br /&gt;
--- wxvlc_test-0.1/test2Main.cpp	1970-01-01 02:00:00.000000000 +0200&lt;br /&gt;
+++ wxvlc_test/test2Main.cpp	2008-11-08 20:06:35.000000000 +0200&lt;br /&gt;
@@ -0,0 +1,225 @@&lt;br /&gt;
+/***************************************************************&lt;br /&gt;
&lt;br /&gt;
+ * Name:      test2Main.cpp&lt;br /&gt;
&lt;br /&gt;
+ * Purpose:   Code for Application Frame&lt;br /&gt;
&lt;br /&gt;
+ * Author:    basOS&lt;br /&gt;
&lt;br /&gt;
+ * Created:   2008-07-05&lt;br /&gt;
&lt;br /&gt;
+ * Copyright: basOS ()&lt;br /&gt;
&lt;br /&gt;
+ * License:&lt;br /&gt;
&lt;br /&gt;
+ **************************************************************/&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#ifdef WX_PRECOMP&lt;br /&gt;
&lt;br /&gt;
+#include &amp;quot;wx_pch.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
+#endif&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#ifdef __BORLANDC__&lt;br /&gt;
&lt;br /&gt;
+#pragma hdrstop&lt;br /&gt;
&lt;br /&gt;
+#endif //__BORLANDC__&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#include &amp;quot;test2Main.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#include &amp;lt;wx/dir.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
+#include &amp;lt;wx/filename.h&amp;gt;&lt;br /&gt;
+#include &amp;lt;wx/debug.h&amp;gt;&lt;br /&gt;
+&lt;br /&gt;
+//#include &amp;lt;wx/filename.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+//helper functions&lt;br /&gt;
&lt;br /&gt;
+enum wxbuildinfoformat {&lt;br /&gt;
&lt;br /&gt;
+    short_f, long_f&lt;br /&gt;
&lt;br /&gt;
+};&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+wxString wxbuildinfo(wxbuildinfoformat format)&lt;br /&gt;
&lt;br /&gt;
+{&lt;br /&gt;
&lt;br /&gt;
+    wxString wxbuild(wxVERSION_STRING);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    if (format == long_f )&lt;br /&gt;
&lt;br /&gt;
+    {&lt;br /&gt;
&lt;br /&gt;
+#if defined(__WXMSW__)&lt;br /&gt;
&lt;br /&gt;
+        wxbuild &amp;lt;&amp;lt; _T(&amp;quot;-Windows&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
+#elif defined(__WXMAC__)&lt;br /&gt;
&lt;br /&gt;
+        wxbuild &amp;lt;&amp;lt; _T(&amp;quot;-Mac&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
+#elif defined(__UNIX__)&lt;br /&gt;
&lt;br /&gt;
+        wxbuild &amp;lt;&amp;lt; _T(&amp;quot;-Linux&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
+#endif&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#if wxUSE_UNICODE&lt;br /&gt;
&lt;br /&gt;
+        wxbuild &amp;lt;&amp;lt; _T(&amp;quot;-Unicode build&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
+#else&lt;br /&gt;
&lt;br /&gt;
+        wxbuild &amp;lt;&amp;lt; _T(&amp;quot;-ANSI build&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
+#endif // wxUSE_UNICODE&lt;br /&gt;
&lt;br /&gt;
+    }&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    return wxbuild;&lt;br /&gt;
&lt;br /&gt;
+}&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+   f_main::f_main(const wxString&amp;amp; title, const wxPoint&amp;amp; pos, const wxSize&amp;amp; size)&lt;br /&gt;
&lt;br /&gt;
+    : wxFrame(0L, -1, title)&lt;br /&gt;
&lt;br /&gt;
+    {&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        /*  add menu  */&lt;br /&gt;
&lt;br /&gt;
+        wxMenu *mnu = new wxMenu;&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        mnu-&amp;gt;Append(ID_ABOUT, _(&amp;quot;&amp;amp;About me&amp;quot;),_(&amp;quot;Useless information&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
+        mnu-&amp;gt;Append(ID_QUIT, _(&amp;quot;Qui&amp;amp;t da app&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        wxMenuBar *mnuB = new wxMenuBar;&lt;br /&gt;
&lt;br /&gt;
+        mnuB-&amp;gt;Append (mnu, _(&amp;quot;&amp;amp;Gen&amp;quot;) ) ;&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        // Connect (wxEVT_PAINT,wxPaintEventHandler(f_main::OnPaint));&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        SetMenuBar (mnuB);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        /* add status bar */&lt;br /&gt;
&lt;br /&gt;
+#if wxUSE_STATUSBAR&lt;br /&gt;
&lt;br /&gt;
+        CreateStatusBar(2);&lt;br /&gt;
&lt;br /&gt;
+        SetStatusText(wxbuildinfo(long_f), 1);&lt;br /&gt;
&lt;br /&gt;
+        SetStatusText ( _(&amp;quot;Welcome to a wxwidgeted and vlc proof of concept&amp;quot;),0);&lt;br /&gt;
&lt;br /&gt;
+#endif&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        //initialize&lt;br /&gt;
&lt;br /&gt;
+        bt_capture_label[ON] = _(&amp;quot;Stop&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
+        bt_capture_label[OFF] = _(&amp;quot;Play&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        //design form&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
+		wxBoxSizer* bxv1 = new wxBoxSizer( wxVERTICAL );&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        //create widgets&lt;br /&gt;
&lt;br /&gt;
+        pn_image = new wxPanel(this,-1,wxPoint(-1,-1),wxSize(250,250));&lt;br /&gt;
+        pn_image-&amp;gt;SetBackgroundColour( *wxBLACK ) ;&lt;br /&gt;
+		bxv1-&amp;gt;Add( pn_image, 1 ,wxALIGN_CENTER | wxSHAPED | wxALL, 5 );&lt;br /&gt;
+&lt;br /&gt;
+		wxBoxSizer* bxh12 = new wxBoxSizer( wxHORIZONTAL ) ;&lt;br /&gt;
&lt;br /&gt;
+        bt_cap = new wxButton(this,ID_PLAY,bt_capture_label[OFF]);&lt;br /&gt;
&lt;br /&gt;
+		bxh12-&amp;gt;Add( bt_cap, 0, wxRIGHT, 5 ) ;&lt;br /&gt;
+		wxButton* bt_stop = new wxButton(this, ID_STOP, _T(&amp;quot;Stop&amp;quot;) ) ;&lt;br /&gt;
+		bxh12-&amp;gt;Add( bt_stop, 0 , wxRIGHT, 5 );&lt;br /&gt;
+		&lt;br /&gt;
+		tx_fname = new wxTextCtrl( this, wxID_ANY, filename ) ;&lt;br /&gt;
+		bxh12-&amp;gt;Add( tx_fname,1, wxRIGHT, 5 ) ;&lt;br /&gt;
+	&lt;br /&gt;
+		bxv1-&amp;gt;Add( bxh12, 0, wxEXPAND | wxALIGN_CENTER | wxALL, 5 );&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        this-&amp;gt;SetSizer(bxv1);&lt;br /&gt;
&lt;br /&gt;
+        bxv1-&amp;gt;SetSizeHints(this);&lt;br /&gt;
+        bxv1-&amp;gt;Fit(this) ;&lt;br /&gt;
+&lt;br /&gt;
+		// Backend&lt;br /&gt;
+		//This takes the std out from vlc &lt;br /&gt;
+		//wxLogDebug(_T(&amp;quot;starting up vlc engine...&amp;quot;)) ;&lt;br /&gt;
+		if ( vlc_bind( pn_image ) )&lt;br /&gt;
+			wxLogDebug( _T(&amp;quot;vlc library initialized ok&amp;quot;));&lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
+        //event handlers&lt;br /&gt;
&lt;br /&gt;
+        Connect (ID_ABOUT, wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(f_main::OnAbout));&lt;br /&gt;
&lt;br /&gt;
+        Connect (ID_QUIT, wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(f_main::OnQuit));&lt;br /&gt;
&lt;br /&gt;
+        Connect (wxEVT_CLOSE_WINDOW ,wxCloseEventHandler(f_main::OnClose));&lt;br /&gt;
&lt;br /&gt;
+        Connect (ID_PLAY,wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler(f_main::OnPlay));&lt;br /&gt;
+        Connect (ID_STOP,wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler(f_main::OnStop));&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    }&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    //Event Handlers&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    void f_main::OnQuit(wxCommandEvent&amp;amp; WXUNUSED(event))&lt;br /&gt;
&lt;br /&gt;
+    {&lt;br /&gt;
&lt;br /&gt;
+       // Close(TRUE);&lt;br /&gt;
&lt;br /&gt;
+        wxMessageBox (_T(&amp;quot;Bye....&amp;quot;),_T(&amp;quot;exit&amp;quot;), wxOK | wxICON_HAND, this);&lt;br /&gt;
+		Close() ;&lt;br /&gt;
&lt;br /&gt;
+    }&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    void f_main::OnAbout(wxCommandEvent&amp;amp; WXUNUSED(event))&lt;br /&gt;
&lt;br /&gt;
+    {&lt;br /&gt;
+	#if 0&lt;br /&gt;
&lt;br /&gt;
+        wxDialog* mss = new wxDialog ((wxWindow*)this,(wxWindowID)-1,_(&amp;quot;About Hello W&amp;quot;),wxPoint(-1,-1));&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        // Create a box sizer&lt;br /&gt;
&lt;br /&gt;
+        wxBoxSizer* bxv = new wxBoxSizer(wxVERTICAL);&lt;br /&gt;
&lt;br /&gt;
+        wxBoxSizer* bxh1 = new wxBoxSizer(wxHORIZONTAL);&lt;br /&gt;
&lt;br /&gt;
+        wxSizer* bxh2 = mss-&amp;gt;CreateButtonSizer(wxOK);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        // add an icon to theleft and leave 10pxs border to the righ&lt;br /&gt;
&lt;br /&gt;
+        //wxIcon* icc = new wxIcon(this-&amp;gt;GetIcon());&lt;br /&gt;
&lt;br /&gt;
+        //mss-&amp;gt;SetIcon(*icc);&lt;br /&gt;
&lt;br /&gt;
+        //wxPanel* pic = new wxPanel(mss,-1,wxPoint(-1,-1),wxSize(icc-&amp;gt;GetWidth(),icc-&amp;gt;GetHeight()));&lt;br /&gt;
&lt;br /&gt;
+        //pic-&amp;gt;Show();&lt;br /&gt;
&lt;br /&gt;
+        //wxClientDC* dc = new wxClientDC(pic);&lt;br /&gt;
&lt;br /&gt;
+        //dc-&amp;gt;DrawBitmap(*icc,0,0,false);&lt;br /&gt;
&lt;br /&gt;
+        //bxh1-&amp;gt;Add(pic, 0, wxEXPAND |wxALIGN_LEFT| wxRIGHT,10);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        //Add a text label and leave 10 pxs from right&lt;br /&gt;
&lt;br /&gt;
+        wxStaticText* txx = new wxStaticText(mss,-1,_(&amp;quot;This is a useless but proof of concept first program on wxWidgets programming\n style.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
+        &amp;quot; More on the edge of coding&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
+        bxh1-&amp;gt;Add(txx,1, wxRIGHT,10);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        //add two horizontal sizers to the main vertical one&lt;br /&gt;
&lt;br /&gt;
+        bxv-&amp;gt;Add(bxh1,1,wxBOTTOM | wxEXPAND,10); // add 10px border bottom&lt;br /&gt;
&lt;br /&gt;
+        bxv-&amp;gt;Add(bxh2,1);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        //Set the sizer to the dialog box&lt;br /&gt;
&lt;br /&gt;
+        mss-&amp;gt;SetSizer(bxv);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        //show da dialogi&lt;br /&gt;
&lt;br /&gt;
+        mss-&amp;gt;ShowModal();&lt;br /&gt;
&lt;br /&gt;
+	#endif&lt;br /&gt;
&lt;br /&gt;
+        wxMessageDialog msg(this,_T(&amp;quot;This is a useless but proof of concept first program on wxWidgets programming\n style.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
+        &amp;quot; More on the edge of coding&amp;quot;),_T(&amp;quot;About Hello W&amp;quot;), wxOK);&lt;br /&gt;
&lt;br /&gt;
+        //wxIcon c_app_icon(wxICON(damage_smile));&lt;br /&gt;
&lt;br /&gt;
+        //msg.SetIcon(c_app_icon);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        msg.ShowModal();&lt;br /&gt;
&lt;br /&gt;
+        &lt;br /&gt;
&lt;br /&gt;
+        //delete ics;&lt;br /&gt;
&lt;br /&gt;
+    }&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+     void f_main::OnPlay(wxCommandEvent&amp;amp; WXUNUSED(event))&lt;br /&gt;
&lt;br /&gt;
+    {&lt;br /&gt;
+&lt;br /&gt;
+		wxString filename;&lt;br /&gt;
+		filename = tx_fname-&amp;gt;GetValue() ;&lt;br /&gt;
+		if ( filename == _T(&amp;quot;&amp;quot;)) {&lt;br /&gt;
+			wxLogError( _T(&amp;quot;Empty text file&amp;quot;) );&lt;br /&gt;
+			return ;&lt;br /&gt;
+		}&lt;br /&gt;
+		if (!wxFileName::FileExists( filename) ) {&lt;br /&gt;
+			wxLogError( _T(&amp;quot;File %s does not exist&amp;quot;), filename.c_str() );&lt;br /&gt;
+			return ;&lt;br /&gt;
+		}&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        vlc_load( filename);&lt;br /&gt;
+		wxMilliSleep( 1000* 1.5 );&lt;br /&gt;
+		vlc_play() ;&lt;br /&gt;
&lt;br /&gt;
+    }&lt;br /&gt;
+&lt;br /&gt;
+     void f_main::OnStop(wxCommandEvent&amp;amp; WXUNUSED(event))&lt;br /&gt;
&lt;br /&gt;
+    {&lt;br /&gt;
+		vlc_stop() ;&lt;br /&gt;
+	}&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+ &lt;br /&gt;
&lt;br /&gt;
+    void f_main::OnClose(wxCloseEvent&amp;amp; event)&lt;br /&gt;
&lt;br /&gt;
+    {&lt;br /&gt;
&lt;br /&gt;
+        if (event.CanVeto()) {&lt;br /&gt;
&lt;br /&gt;
+            //could ask user here&lt;br /&gt;
&lt;br /&gt;
+            //could avoid destr and call event.Veto();&lt;br /&gt;
&lt;br /&gt;
+            // and return&lt;br /&gt;
&lt;br /&gt;
+        }&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    /*    list_object_t::iterator iter;&lt;br /&gt;
&lt;br /&gt;
+        wxObject * tobj;&lt;br /&gt;
&lt;br /&gt;
+        for (iter = garbage_col.begin(); iter != garbage_col.end(); ++iter) {&lt;br /&gt;
&lt;br /&gt;
+            //make clean TM&lt;br /&gt;
&lt;br /&gt;
+            //List of type wxObjects. It stores pointer to objects so iter is a pointer to object&lt;br /&gt;
&lt;br /&gt;
+            tobj = *iter;&lt;br /&gt;
&lt;br /&gt;
+            delete(tobj);&lt;br /&gt;
&lt;br /&gt;
+        }&lt;br /&gt;
+    */&lt;br /&gt;
+		vlc_shut() ;&lt;br /&gt;
&lt;br /&gt;
+        this-&amp;gt;Destroy();&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    }&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
diff -Nur wxvlc_test-0.1/test2Main.h wxvlc_test/test2Main.h&lt;br /&gt;
--- wxvlc_test-0.1/test2Main.h	1970-01-01 02:00:00.000000000 +0200&lt;br /&gt;
+++ wxvlc_test/test2Main.h	2008-11-08 20:06:35.000000000 +0200&lt;br /&gt;
@@ -0,0 +1,63 @@&lt;br /&gt;
+/***************************************************************&lt;br /&gt;
&lt;br /&gt;
+ * Name:      test2Main.h&lt;br /&gt;
&lt;br /&gt;
+ * Purpose:   Defines Application Frame&lt;br /&gt;
&lt;br /&gt;
+ * Author:    basOS &lt;br /&gt;
&lt;br /&gt;
+ * Created:   2008-07-05&lt;br /&gt;
&lt;br /&gt;
+ * Copyright: basOS ()&lt;br /&gt;
&lt;br /&gt;
+ * License:&lt;br /&gt;
&lt;br /&gt;
+ **************************************************************/&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#ifndef TEST2MAIN_H&lt;br /&gt;
&lt;br /&gt;
+#define TEST2MAIN_H&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#ifndef WX_PRECOMP&lt;br /&gt;
&lt;br /&gt;
+    #include &amp;lt;wx/wx.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
+#endif&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#include &amp;quot;test2App.h&amp;quot;&lt;br /&gt;
+#include &amp;quot;vlc_bind.h&amp;quot;&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+class f_main : public wxFrame&lt;br /&gt;
&lt;br /&gt;
+{&lt;br /&gt;
&lt;br /&gt;
+    public:&lt;br /&gt;
&lt;br /&gt;
+	wxString filename ;&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    f_main(const wxString&amp;amp; title, const wxPoint&amp;amp; pos, const wxSize&amp;amp; size);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    private:&lt;br /&gt;
&lt;br /&gt;
+    enum {&lt;br /&gt;
&lt;br /&gt;
+        ID_QUIT ,&lt;br /&gt;
&lt;br /&gt;
+        ID_ABOUT,&lt;br /&gt;
&lt;br /&gt;
+        ID_PLAY,&lt;br /&gt;
+		ID_STOP,&lt;br /&gt;
&lt;br /&gt;
+    };&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    //Event Handlers&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    void OnQuit(wxCommandEvent&amp;amp; WXUNUSED(event));&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    void OnAbout(wxCommandEvent&amp;amp; WXUNUSED(event));&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    void OnPlay(wxCommandEvent&amp;amp; event);&lt;br /&gt;
+&lt;br /&gt;
+    void OnStop(wxCommandEvent&amp;amp; event);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    void OnClose(wxCloseEvent&amp;amp; event);&lt;br /&gt;
&lt;br /&gt;
+    //other&lt;br /&gt;
&lt;br /&gt;
+    wxString bt_capture_label[2];&lt;br /&gt;
&lt;br /&gt;
+    enum cap_state {&lt;br /&gt;
&lt;br /&gt;
+        ON = 0,&lt;br /&gt;
&lt;br /&gt;
+        OFF&lt;br /&gt;
&lt;br /&gt;
+    };&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    wxPanel* pn_image ;&lt;br /&gt;
&lt;br /&gt;
+    wxButton* bt_cap;&lt;br /&gt;
+	wxTextCtrl* tx_fname ;&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    // garbage collector list&lt;br /&gt;
&lt;br /&gt;
+    //list_object_t garbage_col;&lt;br /&gt;
&lt;br /&gt;
+};&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#endif // TEST2MAIN_H&lt;br /&gt;
diff -Nur wxvlc_test-0.1/vlc_bind.cpp wxvlc_test/vlc_bind.cpp&lt;br /&gt;
--- wxvlc_test-0.1/vlc_bind.cpp	1970-01-01 02:00:00.000000000 +0200&lt;br /&gt;
+++ wxvlc_test/vlc_bind.cpp	2008-10-28 12:01:52.000000000 +0200&lt;br /&gt;
@@ -0,0 +1,271 @@&lt;br /&gt;
+#if 1&lt;br /&gt;
+/* mini library for libvlc integration into wxWidgets apps &lt;br /&gt;
+	part of the wxVLCMediaBackend v2...  &lt;br /&gt;
+    this code is left to the &amp;quot;public&amp;quot;	 &lt;br /&gt;
+	basos    2008    &amp;lt; noxelia 4t gmail c0m &amp;gt;&lt;br /&gt;
+*/&lt;br /&gt;
+&lt;br /&gt;
+//#include &amp;lt;wx/dynlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
+//#include &amp;quot;test2Main.h&amp;quot;&lt;br /&gt;
+#include &amp;lt;wx/string.h&amp;gt;&lt;br /&gt;
+#include &amp;lt;wx/window.h&amp;gt;&lt;br /&gt;
+#include &amp;lt;wx/log.h&amp;gt;&lt;br /&gt;
+#include &amp;lt;wx/app.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
+#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
+#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+#include &amp;lt;vlc/vlc.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
+/* ** HACKS FOR WINDOW HANDLE **/&lt;br /&gt;
+#ifdef __WXGTK__ &lt;br /&gt;
+ #    include &amp;lt;gdk/gdkx.h&amp;gt; // GDK_WINDOW_XWINDOW is found here in wxWidgets 2.8.0&lt;br /&gt;
+ #    include &amp;quot;gdk/gdkprivate.h&amp;quot;&lt;br /&gt;
+ #if wxCHECK_VERSION(2, 8, 0)&lt;br /&gt;
+  #ifdef __WXGTK20__&lt;br /&gt;
+   #include &amp;lt;wx/gtk/win_gtk.h&amp;gt;&lt;br /&gt;
+  #else&lt;br /&gt;
+   #include &amp;lt;wx/gtk1/win_gtk.h&amp;gt;&lt;br /&gt;
+  #endif&lt;br /&gt;
+ #else&lt;br /&gt;
+  #include &amp;lt;wx/gtk/win_gtk.h&amp;gt;&lt;br /&gt;
+ #endif&lt;br /&gt;
+ #define GetXWindow(wxwin) (wxwin)-&amp;gt;m_wxwindow ? \&lt;br /&gt;
+                          GDK_WINDOW_XWINDOW(GTK_PIZZA((wxwin)-&amp;gt;m_wxwindow)-&amp;gt;bin_window) : \&lt;br /&gt;
+                          GDK_WINDOW_XWINDOW((wxwin)-&amp;gt;m_widget-&amp;gt;window)&lt;br /&gt;
+#endif&lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
+// GLOBALS&lt;br /&gt;
+static libvlc_instance_t * inst = NULL;&lt;br /&gt;
&lt;br /&gt;
+static libvlc_media_player_t *mp = NULL;&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+static void raisee (libvlc_exception_t * ex, wxString desc = _T(&amp;quot;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
+{&lt;br /&gt;
&lt;br /&gt;
+    //if ((*pfnlibvlc_exception_raised) (ex))&lt;br /&gt;
&lt;br /&gt;
+    if (libvlc_exception_raised (ex))&lt;br /&gt;
&lt;br /&gt;
+    {&lt;br /&gt;
&lt;br /&gt;
+        wxString ss;&lt;br /&gt;
&lt;br /&gt;
+        const char * resp;&lt;br /&gt;
&lt;br /&gt;
+        wxCSConv mag(_T(&amp;quot;ISO-8859-1&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
+        resp = libvlc_exception_get_message(ex);&lt;br /&gt;
&lt;br /&gt;
+        //resp = (*pfnlibvlc_exception_get_message)(ex);&lt;br /&gt;
&lt;br /&gt;
+        wxString sex(resp, mag);&lt;br /&gt;
&lt;br /&gt;
+        ss.Printf(_T(&amp;quot;Exeption error: %s : %s\n&amp;quot;),sex.c_str(), desc.c_str());&lt;br /&gt;
&lt;br /&gt;
+        //ss.Printf(_T(&amp;quot;Exeption error: %s\n&amp;quot;),resp);&lt;br /&gt;
&lt;br /&gt;
+        wxLogError (ss);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+        wxExit ();&lt;br /&gt;
&lt;br /&gt;
+    }&lt;br /&gt;
&lt;br /&gt;
+}&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
+//Given the Low Level id (yes XID cuases the mess ) hook et up&lt;br /&gt;
+void HookVideoWindow( libvlc_media_player_t* libvlc_mp, libvlc_drawable_t hwin)&lt;br /&gt;
+{&lt;br /&gt;
+    &lt;br /&gt;
+    libvlc_exception_t ex ;&lt;br /&gt;
+    libvlc_exception_init (&amp;amp;ex);&lt;br /&gt;
+&lt;br /&gt;
+	libvlc_media_player_set_drawable ( libvlc_mp, hwin, &amp;amp;ex );&lt;br /&gt;
+	&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
+#ifdef __WXGTK__ //be it versions 1 or 2 ...&lt;br /&gt;
+void GtkWindowRealized(GtkWidget* wid, libvlc_media_player_t* mp)&lt;br /&gt;
+{&lt;br /&gt;
+    libvlc_drawable_t xid = GDK_WINDOW_XWINDOW( GTK_PIZZA(wid)-&amp;gt;bin_window );&lt;br /&gt;
+    wxLogDebug(_T(&amp;quot;wxVLCBackend::GtkRealization Callback wid=%x, **pizza=%x, XDrawable=%x&amp;quot;),&lt;br /&gt;
+            wid,&lt;br /&gt;
+            GTK_PIZZA( wid)-&amp;gt;bin_window,&lt;br /&gt;
+            xid );&lt;br /&gt;
+    wxASSERT( xid );&lt;br /&gt;
+    HookVideoWindow(mp, xid );&lt;br /&gt;
+}&lt;br /&gt;
+#endif&lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
+bool vlc_load( wxString media )&lt;br /&gt;
+{&lt;br /&gt;
+	wxASSERT( mp );&lt;br /&gt;
+    libvlc_exception_t ex ;&lt;br /&gt;
+    libvlc_exception_init (&amp;amp;ex);&lt;br /&gt;
+	&lt;br /&gt;
+	const char * filename;&lt;br /&gt;
+	wxCSConv convertor = wxConvLocal ;&lt;br /&gt;
+    int i_tsiz = (media.Length() + 1) ;&lt;br /&gt;
+    char* psz_tbuf = (char*) malloc( i_tsiz * sizeof(char) );&lt;br /&gt;
+    wxCHECK( psz_tbuf, false ) ; //on error return false&lt;br /&gt;
+    strncpy( psz_tbuf, media.mb_str( convertor ), i_tsiz );&lt;br /&gt;
+	filename = psz_tbuf ;&lt;br /&gt;
+	&lt;br /&gt;
+    libvlc_media_t *m;&lt;br /&gt;
+    /* Create a new item */&lt;br /&gt;
&lt;br /&gt;
+    //m = (*pfnlibvlc_media_new) (inst, filename, &amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+    m = libvlc_media_new (inst, filename, &amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+    raisee (&amp;amp;ex, _T(&amp;quot;media new&amp;quot;));&lt;br /&gt;
+&lt;br /&gt;
+	//internally retain&lt;br /&gt;
+	libvlc_media_player_set_media( mp, m, &amp;amp;ex );&lt;br /&gt;
+	raisee( &amp;amp;ex, _T(&amp;quot;media player set media&amp;quot;)) ;&lt;br /&gt;
+&lt;br /&gt;
+    /* No need to keep the media now */&lt;br /&gt;
&lt;br /&gt;
+    //(*pfnlibvlc_media_release) (m);&lt;br /&gt;
&lt;br /&gt;
+    libvlc_media_release (m);&lt;br /&gt;
+&lt;br /&gt;
+    /* play the media_player */&lt;br /&gt;
&lt;br /&gt;
+   //(*pfnlibvlc_media_player_play) ( mp, &amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+	return true ;&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
+void vlc_shut()&lt;br /&gt;
+{&lt;br /&gt;
+	if (mp)&lt;br /&gt;
+		libvlc_media_player_release( mp );&lt;br /&gt;
+	mp = NULL ;&lt;br /&gt;
+	if ( inst )&lt;br /&gt;
+		libvlc_release( inst ); &lt;br /&gt;
+	inst = NULL ;&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
+bool vlc_stop()&lt;br /&gt;
+{&lt;br /&gt;
+	wxASSERT( mp );&lt;br /&gt;
+    libvlc_exception_t ex ;&lt;br /&gt;
+&lt;br /&gt;
+    libvlc_exception_init (&amp;amp;ex);&lt;br /&gt;
+    libvlc_media_player_stop ( mp, &amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+    raisee ( &amp;amp;ex, _T(&amp;quot;media player stop&amp;quot;));&lt;br /&gt;
+&lt;br /&gt;
+	return true ;&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
+	&lt;br /&gt;
+bool vlc_play()&lt;br /&gt;
+{&lt;br /&gt;
+	wxASSERT( mp );&lt;br /&gt;
+    libvlc_exception_t ex ;&lt;br /&gt;
+    libvlc_exception_init (&amp;amp;ex);&lt;br /&gt;
+   libvlc_media_player_play ( mp, &amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+   raisee ( &amp;amp;ex, _T(&amp;quot;media player play&amp;quot;));&lt;br /&gt;
+&lt;br /&gt;
+	return true ;&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+bool vlc_bind( wxWindow* output )&lt;br /&gt;
&lt;br /&gt;
+{&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+   /* if (!libvlc.IsLoaded()) {&lt;br /&gt;
&lt;br /&gt;
+        wxLogError( _T(&amp;quot;error: link lib&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
+        return false;&lt;br /&gt;
&lt;br /&gt;
+    }*/&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+     const char * const vlc_args[] = {&lt;br /&gt;
&lt;br /&gt;
+              &amp;quot;-I&amp;quot;, &amp;quot;dummy&amp;quot;, // Don&#039;t use any interface&lt;br /&gt;
&lt;br /&gt;
+              //&amp;quot;--no-dummy-quiet&amp;quot;, // do not use a dos box&lt;br /&gt;
&lt;br /&gt;
+              //&amp;quot;--module-path=/set/your/path/to/libvlc/module/if/you/are/on/windows/or/macosx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
+              };&lt;br /&gt;
&lt;br /&gt;
+    libvlc_exception_t ex ;&lt;br /&gt;
+    //libvlc_instance_t * inst;&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
+    //libvlc_media_player_t *mp;&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    libvlc_exception_init (&amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+    //(*pfnlibvlc_exception_init) (&amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+    /* init vlc modules, should be done only once */&lt;br /&gt;
&lt;br /&gt;
+    //inst = (*pfnlibvlc_new) (sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args, &amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+    inst = libvlc_new (sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args, &amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+    raisee (&amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    /* Create a media player playing environement */&lt;br /&gt;
&lt;br /&gt;
+    //mp = (*pfnlibvlc_media_player_new_from_media) (m, &amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+    mp = libvlc_media_player_new (inst, &amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+    raisee (&amp;amp;ex,_T(&amp;quot;media player new&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    /** TRICKY ** DIRTY ** NASTY ** HACK&lt;br /&gt;
+      * Get a window&#039;s drawable surface. Low level handle::&lt;br /&gt;
+      * MSW::HWND / GTK::XID / MAC::&lt;br /&gt;
+      * Taken from wxVTK AND **GSTREAMER** Implemtation for wxWidgets&lt;br /&gt;
+      */&lt;br /&gt;
&lt;br /&gt;
+	#if defined(__WXGTK__)&lt;br /&gt;
+		if(!GTK_WIDGET_REALIZED(output-&amp;gt;m_wxwindow)) {&lt;br /&gt;
+		    /** MOST TRICKY**&lt;br /&gt;
+		      * If the GtkWidget is not drawn on the screen yet it is not assigned an XID&lt;br /&gt;
+		      */&lt;br /&gt;
+		    //Not realized yet - set to connect at realization time&lt;br /&gt;
+		    g_signal_connect (output-&amp;gt;m_wxwindow,&lt;br /&gt;
+		                          &amp;quot;realize&amp;quot;,&lt;br /&gt;
+		                          G_CALLBACK (GtkWindowRealized),&lt;br /&gt;
+		                          mp);&lt;br /&gt;
+		    wxLogDebug(_T(&amp;quot;VLCBackend::Init GTK window Pizza for Gtkwidget %x not yet alive. Hooking a callback&amp;quot;), output-&amp;gt;m_wxwindow );&lt;br /&gt;
+			/*&lt;br /&gt;
+			wxLogError ( _T(&amp;quot; ERROR: GTK windows Pizza for Gtkwidget not yet alive... Not hooking a Callback. Make sure the window is shown on the screen... Exiting...&amp;quot;));&lt;br /&gt;
+			return false ;&lt;br /&gt;
+			*/&lt;br /&gt;
+		}&lt;br /&gt;
+		else&lt;br /&gt;
+	#endif&lt;br /&gt;
+	#if defined (__WXGTK__) || defined (__WXX11__)&lt;br /&gt;
+		    HookVideoWindow( mp, GetXWindow(output) ) ;&lt;br /&gt;
+	#else&lt;br /&gt;
+		HookVideoWindow( mp, output-&amp;gt;GetHandle() ) ;&lt;br /&gt;
+	#endif&lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    //Sleep (10); /* Let it play a bit */&lt;br /&gt;
&lt;br /&gt;
+    //wxMilliSleep ( 20*1000);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    /* Stop playing */&lt;br /&gt;
&lt;br /&gt;
+    //(*pfnlibvlc_media_player_stop) (mp, &amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    /* Free the media_player */&lt;br /&gt;
&lt;br /&gt;
+    //(*pfnlibvlc_media_player_release) (mp);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    //(*pfnlibvlc_destroy) (inst);&lt;br /&gt;
&lt;br /&gt;
+    //raisee (&amp;amp;ex);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    return true;&lt;br /&gt;
&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
+/*&lt;br /&gt;
&lt;br /&gt;
+wxDynamicLibrary libvlc(_T(&amp;quot;libvlc&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
+wxDynamicLibrary libvlccore(_T(&amp;quot;libvlccore&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    typedef int (*ex_raised_t)(libvlc_exception_t *);&lt;br /&gt;
&lt;br /&gt;
+    wxDYNLIB_FUNCTION ( ex_raised_t, libvlc_exception_raised, libvlc );&lt;br /&gt;
&lt;br /&gt;
+    typedef char* (*ex_message_t)(libvlc_exception_t *);&lt;br /&gt;
&lt;br /&gt;
+    wxDYNLIB_FUNCTION ( ex_message_t , libvlc_exception_get_message , libvlc);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    typedef void (*ex_init_t)(libvlc_exception_t*);&lt;br /&gt;
&lt;br /&gt;
+    wxDYNLIB_FUNCTION ( ex_init_t, libvlc_exception_init, libvlc );&lt;br /&gt;
&lt;br /&gt;
+    typedef  libvlc_instance_t * (*lib_new_t)(int,char* const *,libvlc_exception_t*);&lt;br /&gt;
&lt;br /&gt;
+    wxDYNLIB_FUNCTION ( lib_new_t, libvlc_new, libvlc );&lt;br /&gt;
&lt;br /&gt;
+    //typedef int (*play_add_t)( libvlc_instance_t *, const char *, const char *, libvlc_exception_t * );&lt;br /&gt;
&lt;br /&gt;
+    //wxDYNLIB_FUNCTION ( play_add_t, libvlc_playlist_add ,libvlc);&lt;br /&gt;
&lt;br /&gt;
+    //typedef void (*play_play_t)( libvlc_instance_t*, int, int, char **,libvlc_exception_t * );&lt;br /&gt;
&lt;br /&gt;
+    //wxDYNLIB_FUNCTION ( play_play_t, libvlc_playlist_play, libvlc);&lt;br /&gt;
&lt;br /&gt;
+    //typedef void (*vid_set_t)( libvlc_instance_t *, libvlc_drawable_t, libvlc_exception_t * );&lt;br /&gt;
&lt;br /&gt;
+    //wxDYNLIB_FUNCTION ( vid_set_t, libvlc_video_set_parent, libvlc);&lt;br /&gt;
&lt;br /&gt;
+    typedef int (*drawable_t)  ( libvlc_media_player_t *, libvlc_drawable_t, libvlc_exception_t * );&lt;br /&gt;
&lt;br /&gt;
+    wxDYNLIB_FUNCTION (drawable_t, libvlc_media_player_set_drawable, libvlc);&lt;br /&gt;
&lt;br /&gt;
+    typedef int (*lib_dest_t)(libvlc_instance_t*);&lt;br /&gt;
&lt;br /&gt;
+    wxDYNLIB_FUNCTION ( lib_dest_t, libvlc_destroy ,libvlc);&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
+    typedef libvlc_media_t* (*media_new_t)(libvlc_instance_t*, const char* , libvlc_exception_t*);&lt;br /&gt;
&lt;br /&gt;
+    wxDYNLIB_FUNCTION ( media_new_t, libvlc_media_new, libvlc);&lt;br /&gt;
&lt;br /&gt;
+    typedef void (*media_release_t)(libvlc_media_t*);&lt;br /&gt;
&lt;br /&gt;
+    wxDYNLIB_FUNCTION (media_release_t, libvlc_media_release, libvlc);&lt;br /&gt;
&lt;br /&gt;
+    typedef void (*mplay_play_t)(libvlc_media_player_t*, libvlc_exception_t*);&lt;br /&gt;
&lt;br /&gt;
+    wxDYNLIB_FUNCTION (mplay_play_t, libvlc_media_player_play, libvlc);&lt;br /&gt;
&lt;br /&gt;
+    typedef libvlc_media_player_t* (*mplayer_med_t)(libvlc_media_t*, libvlc_exception_t*);&lt;br /&gt;
&lt;br /&gt;
+    wxDYNLIB_FUNCTION (mplayer_med_t, libvlc_media_player_new_from_media, libvlc);&lt;br /&gt;
&lt;br /&gt;
+    typedef void (*mplayer_stop_t)(libvlc_media_player_t*, libvlc_exception_t*);&lt;br /&gt;
&lt;br /&gt;
+    wxDYNLIB_FUNCTION (mplayer_stop_t, libvlc_media_player_stop, libvlc);&lt;br /&gt;
&lt;br /&gt;
+*/&lt;br /&gt;
+&lt;br /&gt;
+#endif&lt;br /&gt;
&lt;br /&gt;
diff -Nur wxvlc_test-0.1/vlc_bind.h wxvlc_test/vlc_bind.h&lt;br /&gt;
--- wxvlc_test-0.1/vlc_bind.h	1970-01-01 02:00:00.000000000 +0200&lt;br /&gt;
+++ wxvlc_test/vlc_bind.h	2008-10-28 11:53:02.000000000 +0200&lt;br /&gt;
@@ -0,0 +1,18 @@&lt;br /&gt;
+/* mini library for libvlc integration into wxWidgets apps &lt;br /&gt;
+	part of the wxVLCMediaBackend v2...  &lt;br /&gt;
+    this code is left to the &amp;quot;public&amp;quot;	 &lt;br /&gt;
+	basos    2008    &amp;lt; noxelia 4t gmail c0m &amp;gt;&lt;br /&gt;
+*/&lt;br /&gt;
+&lt;br /&gt;
+#include &amp;lt;wx/string.h&amp;gt;&lt;br /&gt;
+#include &amp;lt;wx/window.h&amp;gt;&lt;br /&gt;
+&lt;br /&gt;
+//prototype for vlc test func &lt;br /&gt;
&lt;br /&gt;
+bool vlc_load(wxString media );&lt;br /&gt;
+bool vlc_play() ;&lt;br /&gt;
+bool vlc_bind(wxWindow*) ;&lt;br /&gt;
+void vlc_shut() ;&lt;br /&gt;
+bool vlc_stop() ;&lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Steve Bz</name></author>
	</entry>
</feed>