tag:blogger.com,1999:blog-41934072777112014812024-03-13T15:46:05.095-07:00Source Code of LibVlc.csArun Sukumarhttp://www.blogger.com/profile/02810817292909357671noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-4193407277711201481.post-39894536694540654252008-11-04T08:38:00.000-08:002009-04-28T08:47:07.351-07:00Source Code<div id="vizu" class="vizuClass" style="width:200px;text-align:center;"><a href="http://answers.vizu.com/" target="_blank" style="font-size: 10px;font-family: Arial, Helvetica, San-serif; color: #666;">Your Market Research Here</a><br /><div style="line-height:0px;"><script language="JavaScript" src="http://wp.vizu.com/zones/5249/exportPoll_5794.js" type="text/javascript"></script></div></div><br />Just Copy the below code and using this code you create a class named LibVlc.cs in your c#.net application.<br /><br /><br />using System;<br />using System.Windows.Forms;<br />using System.Drawing;<br />using System.Runtime.InteropServices;<br />using Microsoft.Win32;<br /><br />namespace LibVlc<br />{<br />/// Class LibVlc<br />/// </summary><br />public class LibVlc : IDisposable<br />{<br />#region public enums<br />public enum Error<br />{<br />Success = -0,<br />NoMem = -1,<br />Thread = -2,<br />Timeout = -3,<br />NoMod = -10,<br />NoObj = -20,<br />BadObj = -21,<br />NoVar = -30,<br />BadVar = -31,<br />Exit = -255,<br />Generic = -666,<br />Execption = -998,<br />NoInit = -999<br />};<br />enum Mode<br />{<br />Insert = 0x01,<br />Replace = 0x02,<br />Append = 0x04,<br />Go = 0x08,<br />CheckInsert = 0x10<br />};<br />enum Pos<br />{<br />End = -666<br />};<br />#endregion<br />#region public structs<br />[StructLayout(LayoutKind.Explicit)]<br />public struct vlc_value_t<br />{<br />[FieldOffset(0)]<br />public Int32 i_int;<br />[FieldOffset(0)]<br />public Int32 b_bool;<br />[FieldOffset(0)]<br />public float f_float;<br />[FieldOffset(0)]<br />public IntPtr psz_string;<br />[FieldOffset(0)]<br />public IntPtr p_address;<br />[FieldOffset(0)]<br />public IntPtr p_object;<br />[FieldOffset(0)]<br />public IntPtr p_list;<br />[FieldOffset(0)]<br />public Int64 i_time;<br />[FieldOffset(0)]<br />public IntPtr psz_name;<br />[FieldOffset(4)]<br />public Int32 i_object_id;<br />}<br />#endregion<br />#region libvlc api<br />[DllImport("libvlc")]<br />static extern int VLC_Create();<br />[DllImport("libvlc")]<br />static extern Error VLC_Init(int iVLC, int Argc, string[] Argv);<br />[DllImport("libvlc")]<br />static extern Error VLC_AddIntf(int iVLC, string Name, bool Block, bool Play);<br />[DllImport("libvlc")]<br />static extern Error VLC_Die(int iVLC);<br />[DllImport("libvlc")]<br />static extern string VLC_Error();<br />[DllImport("libvlc")]<br />static extern string VLC_Version();<br />[DllImport("libvlc")]<br />static extern Error VLC_CleanUp(int iVLC);<br />[DllImport("libvlc")]<br />static extern Error VLC_Destroy(int iVLC);<br />[DllImport("libvlc")]<br />static extern Error VLC_AddTarget(int iVLC, string Target, string[] Options, int OptionsCount, int Mode, int Pos);<br />[DllImport("libvlc")]<br />static extern Error VLC_Play(int iVLC);<br />[DllImport("libvlc")]<br />static extern Error VLC_Pause(int iVLC);<br />[DllImport("libvlc")]<br />static extern Error VLC_Stop(int iVLC);<br />[DllImport("libvlc")]<br />static extern bool VLC_IsPlaying(int iVLC);<br />[DllImport("libvlc")]<br />static extern float VLC_PositionGet(int iVLC);<br />[DllImport("libvlc")]<br />static extern float VLC_PositionSet(int iVLC, float Pos);<br />[DllImport("libvlc")]<br />static extern int VLC_TimeGet(int iVLC);<br />[DllImport("libvlc")]<br />static extern Error VLC_TimeSet(int iVLC, int Seconds, bool Relative);<br />[DllImport("libvlc")]<br />static extern int VLC_LengthGet(int iVLC);<br />[DllImport("libvlc")]<br />static extern float VLC_SpeedFaster(int iVLC);<br />[DllImport("libvlc")]<br />static extern float VLC_SpeedSlower(int iVLC);<br />[DllImport("libvlc")]<br />static extern int VLC_PlaylistIndex(int iVLC);<br />[DllImport("libvlc")]<br />static extern int VLC_PlaylistNumberOfItems(int iVLC);<br />[DllImport("libvlc")]<br />static extern Error VLC_PlaylistNext(int iVLC);<br />[DllImport("libvlc")]<br />static extern Error VLC_PlaylistPrev(int iVLC);<br />[DllImport("libvlc")]<br />static extern Error VLC_PlaylistClear(int iVLC);<br />[DllImport("libvlc")]<br />static extern int VLC_VolumeSet(int iVLC, int Volume);<br />[DllImport("libvlc")]<br />static extern int VLC_VolumeGet(int iVLC);<br />[DllImport("libvlc")]<br />static extern Error VLC_VolumeMute(int iVLC);<br />[DllImport("libvlc")]<br />static extern Error VLC_FullScreen(int iVLC);<br />[DllImport("libvlc")]<br />static extern Error VLC_VariableType(int iVLC, string Name, ref int iType);<br />[DllImport("libvlc")]<br />static extern Error VLC_VariableSet(int iVLC, string Name, vlc_value_t value);<br />[DllImport("libvlc")]<br />static extern Error VLC_VariableGet(int iVLC, string Name, ref vlc_value_t value);<br />[DllImport("libvlc")]<br />static extern string VLC_Error(int i_err);<br />#endregion<br />#region local members<br />private int m_iVlcHandle = -1;<br />private Control m_wndOutput = null;<br />private string m_strVlcInstallDir = "";<br />private string m_strLastError = "";<br />#endregion<br />public LibVlc()<br />{<br />m_strVlcInstallDir = QueryVlcInstallPath();<br />}<br />#region IDisposable Members<br />public void Dispose()<br />{<br />if (m_iVlcHandle != -1)<br />{<br />try<br />{<br />VLC_CleanUp(m_iVlcHandle);<br />VLC_Destroy(m_iVlcHandle);<br />VideoOutput = null;<br />}<br />catch { }<br />}<br />m_iVlcHandle = -1;<br />}<br />#endregion<br />#region PUBLIC PROPERTIES<br />public string VlcInstallDir<br />{<br />get { return m_strVlcInstallDir; }<br />set { m_strVlcInstallDir = value; }<br />}<br />public bool IsInitialized<br />{<br />get { return (m_iVlcHandle != -1); }<br />}<br />public Control VideoOutput<br />{<br />get { return m_wndOutput; }<br />set<br />{<br />// clear old window<br />if (m_wndOutput != null)<br />{<br />m_wndOutput.Resize -= new EventHandler(wndOutput_Resize);<br />m_wndOutput = null;<br />if (m_iVlcHandle != -1)<br />SetVariable("drawable", 0);<br />}<br />// set new<br />m_wndOutput = value;<br />if (m_wndOutput != null)<br />{<br />if (m_iVlcHandle != -1)<br />SetVariable("drawable", m_wndOutput.Handle.ToInt32());<br />m_wndOutput.Resize += new EventHandler(wndOutput_Resize);<br />wndOutput_Resize(null, null);<br />}<br />}<br />}<br />public string LastError<br />{<br />get { return m_strLastError; }<br />}<br />public bool IsPlaying<br />{<br />get<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return false;<br />}<br />try<br />{<br />return VLC_IsPlaying(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return false;<br />}<br />}<br />}<br />public int LengthGet<br />{<br />get<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return -1;<br />}<br />try<br />{<br />return VLC_LengthGet(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return -1;<br />}<br />}<br />}<br />public int TimeGet<br />{<br />get<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return -1;<br />}<br />try<br />{<br />return VLC_TimeGet(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return -1;<br />}<br />}<br />}<br />public float PositionGet<br />{<br />get<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return -1;<br />}<br />try<br />{<br />return VLC_PositionGet(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return -1;<br />}<br />}<br />}<br />public int VolumeGet<br />{<br />get<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return -1;<br />}<br />try<br />{<br />return VLC_VolumeGet(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return -1;<br />}<br />}<br />}<br />public bool Fullscreen<br />{<br />get<br />{<br />int iIsFullScreen = 0;<br />if (GetVariable("fullscreen", ref iIsFullScreen) == Error.Success)<br />if (iIsFullScreen != 0)<br />return true;<br />return false;<br />}<br />set<br />{<br />int iFullScreen = value ? 1 : 0; ;<br />SetVariable("fullscreen", iFullScreen);<br />}<br />}<br />#endregion<br /><br /><br />#region PUBLIC METHODS<br /><br />public bool Initialize()<br />{<br />// check if already initializes<br />if (m_iVlcHandle != -1)<br />return true;<br />// try init<br />try<br />{<br />// create instance<br />m_iVlcHandle = VLC_Create();<br />if (m_iVlcHandle < m_strlasterror = "Failed to create VLC instance" strinitoptions =" {"> 0)<br />strInitOptions[0] = m_strVlcInstallDir + @"\vlc";<br />// init libvlc<br />Error errVlcLib = VLC_Init(m_iVlcHandle, strInitOptions.Length, strInitOptions);<br />if (errVlcLib != Error.Success)<br />{<br />VLC_Destroy(m_iVlcHandle);<br />m_strLastError = "Failed to initialise VLC";<br />m_iVlcHandle = -1;<br />return false;<br />}<br />}<br />catch<br />{<br />m_strLastError = "Could not find libvlc";<br />return false;<br />}<br />// check output window<br />if (m_wndOutput != null)<br />{<br />SetVariable("drawable", m_wndOutput.Handle.ToInt32());<br />wndOutput_Resize(null, null);<br />}<br />// OK<br />return true;<br />}<br />public Error AddTarget(string Target)<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />enmErr = VLC_AddTarget(m_iVlcHandle,<br />Target,<br />null,<br />0,<br />(int)Mode.Append,<br />(int)Pos.End);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br />public Error AddTarget(string Target, string[] Options)<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />// check options<br />int iOptionsCount = 0;<br />if (Options != null)<br />iOptionsCount = Options.Length;<br />// add<br />Error enmErr = Error.Success;<br />try<br />{<br />enmErr = VLC_AddTarget(m_iVlcHandle,<br />Target,<br />Options,<br />iOptionsCount,<br />(int)Mode.Append,<br />(int)Pos.End);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br />public Error Play()<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />enmErr = VLC_Play(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br />public Error Pause()<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />enmErr = VLC_Pause(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br />public Error Stop()<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />enmErr = VLC_Stop(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br />public float SpeedFaster()<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return -1;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />return VLC_SpeedFaster(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return -1;<br />}<br />}<br />public float SpeedSlower()<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return -1;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />return VLC_SpeedSlower(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return -1;<br />}<br />}<br />public Error PlaylistNext()<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />enmErr = VLC_PlaylistNext(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br /><br />}<br />public Error PlaylistPrevious()<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />enmErr = VLC_PlaylistPrev(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br /><br />public Error PlaylistClear()<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />enmErr = VLC_PlaylistClear(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br />public Error TimeSet(int newPosition, bool bRelative)<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />enmErr = VLC_TimeSet(m_iVlcHandle, newPosition, bRelative);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br />public float PositionSet(float newPosition)<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return -1;<br />}<br />try<br />{<br />return VLC_PositionSet(m_iVlcHandle, newPosition);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return -1;<br />}<br />}<br />public int VolumeSet(int newVolume)<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return -1;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />return VLC_VolumeSet(m_iVlcHandle, newVolume);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return -1;<br />}<br />}<br />public Error VolumeMute()<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />enmErr = VLC_VolumeMute(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br />public Error SetVariable(string strName, Int32 Value)<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />// create vlc value<br />vlc_value_t val = new vlc_value_t();<br />val.i_int = Value;<br />// set variable<br />enmErr = VLC_VariableSet(m_iVlcHandle, strName, val);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br />public Error GetVariable(string strName, ref int Value)<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br /><br /><br />Error enmErr = Error.Success;<br />try<br />{<br />// create vlc value<br />vlc_value_t val = new vlc_value_t();<br />// set variable<br />enmErr = VLC_VariableGet(m_iVlcHandle, strName, ref val);<br />Value = val.i_int;<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br /><br />public Error ToggleFullscreen()<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />enmErr = VLC_FullScreen(m_iVlcHandle);<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br />public Error PressKey(string strKey)<br />{<br />if (m_iVlcHandle == -1)<br />{<br />m_strLastError = "LibVlc is not initialzed";<br />return Error.NoInit;<br />}<br />Error enmErr = Error.Success;<br />try<br />{<br />// create vlc value<br />vlc_value_t valKey = new vlc_value_t();<br />// get variable<br />enmErr = VLC_VariableGet(m_iVlcHandle, strKey, ref valKey);<br />if (enmErr == Error.Success)<br />{// set pressed<br />enmErr = VLC_VariableSet(m_iVlcHandle, "key-pressed", valKey);<br />}<br />}<br />catch (Exception ex)<br />{<br />m_strLastError = ex.Message;<br />return Error.Execption;<br />}<br />if ((int)enmErr < 0)<br />{<br />m_strLastError = VLC_Error((int)enmErr);<br />return enmErr;<br />}<br />// OK<br />return Error.Success;<br />}<br />#endregion<br /><br /><br />#region PRIVATE METHODS<br /><br />private string QueryVlcInstallPath()<br />{<br />// open registry<br />RegistryKey regkeyVlcInstallPathKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\VideoLAN\VLC");<br />if (regkeyVlcInstallPathKey == null)<br />return "";<br />return (string)regkeyVlcInstallPathKey.GetValue("InstallDir", "");<br />}<br />#endregion<br />#region EVENT METHODS<br /><br />void wndOutput_Resize(object sender, EventArgs e)<br />{<br />if (m_iVlcHandle != -1)<br />{<br />SetVariable("conf::width", m_wndOutput.ClientRectangle.Width);<br />SetVariable("conf::height", m_wndOutput.ClientRectangle.Height);<br />}<br />}<br /><br />#endregion<br /><br /><br /><br />}<br />}Arun Sukumarhttp://www.blogger.com/profile/02810817292909357671noreply@blogger.com7