public void Play() { VerifyObjectIsNotDisposed(); // int res = LibVlcInterop.libvlc_media_player_play(descriptor); if (res != 0) { throw new VlcInternalException(LibVlcInterop.libvlc_errmsg()); } }
public VlcMediaPlayerInternal CreateVlcMediaPlayerInternal() { IntPtr mediaplayerDescriptor = LibVlcInterop.libvlc_media_player_new(vlclibDescriptor); if (mediaplayerDescriptor == IntPtr.Zero) { throw new VlcInternalException(LibVlcInterop.libvlc_errmsg()); } // return(new VlcMediaPlayerInternal(mediaplayerDescriptor)); }
public VlcLog CreateVlcLog(ILog log, ILogVerbosityManager logVerbosityManager) { if (log == null) { throw new ArgumentNullException("log"); } // IntPtr libvlc_log_t = LibVlcInterop.libvlc_log_open(vlclibDescriptor); if (libvlc_log_t == IntPtr.Zero) { throw new VlcInternalException(LibVlcInterop.libvlc_errmsg()); } // return(new VlcLog(libvlc_log_t, logVerbosityManager, log)); }
public VlcMediaInternal CreateVlcMediaInternal(MediaInput mediaInput) { if (mediaInput == null) { throw new ArgumentNullException("mediaInput"); } // IntPtr mediaDescriptor = LibVlcInterop.libvlc_media_new_path(vlclibDescriptor, mediaInput.Source); if (mediaDescriptor == IntPtr.Zero) { throw new VlcInternalException(LibVlcInterop.libvlc_errmsg()); } // return(new VlcMediaInternal(mediaDescriptor)); }
private static IntPtr createInstance(string[] parameters) { if (parameters == null) { throw new ArgumentNullException("parameters"); } // IntPtr res = LibVlcInterop.libvlc_new(parameters); if (IntPtr.Zero == res) { throw new VlcInternalException(LibVlcInterop.libvlc_errmsg()); } // return(res); }
public void TakeSnapshot(string filePath, int width, int height) { VerifyObjectIsNotDisposed(); // IntPtr filePathPtr = Marshal.StringToHGlobalAnsi(filePath); // uint uwidth = Convert.ToUInt32(width); uint uheight = Convert.ToUInt32(height); // try { int res = LibVlcInterop.libvlc_video_take_snapshot(descriptor, 0, filePathPtr, uwidth, uheight); if (-1 == res) { throw new VlcInternalException(LibVlcInterop.libvlc_errmsg()); } } finally { Marshal.FreeHGlobal(filePathPtr); } }
public void Parse() { VerifyObjectIsNotDisposed(); // lock (staticLock) { if (!IsParsed()) { LibVlcInterop.libvlc_media_parse(this.descriptor); } // if (tracksInfo == null) { parseState = new ParseState(); parseState.waitHandle = new EventWaitHandle(false, EventResetMode.AutoReset); try { IntPtr player = LibVlcInterop.libvlc_media_player_new_from_media(this.descriptor); if (player == IntPtr.Zero) { throw new VlcInternalException(String.Format("Can't create an instance of player when parsing. LibVlc tells: {0}", LibVlcInterop.libvlc_errmsg())); } IntPtr playerEvents = LibVlcInterop.libvlc_media_player_event_manager(player); if (playerEvents == IntPtr.Zero) { throw new VlcInternalException(String.Format("Can't get event manager of player when parsing. LibVlc tells: {0}", LibVlcInterop.libvlc_errmsg())); } // try { parseState.eventHandler = new LibVlcInterop.VlcEventHandlerDelegate(onTrackInfoEndReached); IntPtr function = Marshal.GetFunctionPointerForDelegate(parseState.eventHandler); // int res = LibVlcInterop.libvlc_event_attach(playerEvents, libvlc_event_type_e.libvlc_MediaPlayerEndReached, function, IntPtr.Zero); if (res != 0) { throw new VlcInternalException(String.Format("Unable to attach event {0}", libvlc_event_type_e.libvlc_MediaPlayerEndReached.ToString())); } // LibVlcInterop.libvlc_media_add_option(descriptor, "sout=#description"); LibVlcInterop.libvlc_media_player_play(player); // if (parseState.waitHandle.WaitOne(parseTimeout)) { // LibVlcInterop.libvlc_media_player_release(player); player = IntPtr.Zero; // tracksInfo = LibVlcInterop.libvlc_media_get_tracks_info(descriptor); // if (logger.IsInfoEnabled) { StringBuilder builder = new StringBuilder(); builder.Append("Parsed tracks info: "); // foreach (libvlc_media_track_info_t track in tracksInfo) { builder.AppendLine(""); if (track.i_type == libvlc_track_t.libvlc_track_audio) { builder.AppendLine("Type: audio"); builder.AppendLine("Channels: " + track.i_channels); builder.AppendLine("Rate: " + track.i_rate); } else if (track.i_type == libvlc_track_t.libvlc_track_text) { builder.AppendLine("Type: text"); } else if (track.i_type == libvlc_track_t.libvlc_track_video) { builder.AppendLine("Type: video"); } else { builder.AppendLine("Type: unknown"); } builder.AppendLine("Description: " + LibVlcInterop.vlc_fourcc_GetDescription(0, track.i_codec)); } // builder.AppendLine("Total tracks: " + tracksInfo.Length); logger.Info(builder.ToString()); } } else { throw new VlcTimeoutException("Can't get tracks information."); } } finally { if (player != IntPtr.Zero) { LibVlcInterop.libvlc_media_player_release(player); } } } catch (Exception exc) { if (logger.IsErrorEnabled) { logger.Error("An error occured during parse.", exc); } throw; } finally { parseState.waitHandle.Close(); parseState = null; } } } }
public void UpdateMessages() { VerifyObjectIsNotDisposed(); // IntPtr iterator = LibVlcInterop.libvlc_log_get_iterator(descriptor); if (IntPtr.Zero == iterator) { throw new VlcInternalException(LibVlcInterop.libvlc_errmsg()); } // try { while (0 != LibVlcInterop.libvlc_log_iterator_has_next(iterator)) { // libvlc_log_message_t messageBuffer = new libvlc_log_message_t(); messageBuffer.sizeof_msg = Convert.ToUInt32(Marshal.SizeOf(typeof(libvlc_log_message_t))); IntPtr ptrStructRes = LibVlcInterop.libvlc_log_iterator_next(iterator, ref messageBuffer); if (IntPtr.Zero == ptrStructRes) { throw new VlcInternalException(LibVlcInterop.libvlc_errmsg()); } // libvlc_log_message_t msgRes = (libvlc_log_message_t)Marshal.PtrToStructure(ptrStructRes, typeof(libvlc_log_message_t)); string text = String.Format("{0} {1} {2} : {3}", msgRes.Type, msgRes.Name, msgRes.Header, msgRes.Message); // switch (msgRes.Severity) { case libvlc_log_message_t_severity.INFO: { // INFO logger.Info(text); break; } case libvlc_log_message_t_severity.ERR: { // ERR logger.Error(text); break; } case libvlc_log_message_t_severity.WARN: { // WARN logger.Warn(text); break; } case libvlc_log_message_t_severity.DBG: { // DBG logger.Debug(text); break; } default: { logger.Trace("Unknown severity : " + text); break; } } } } finally { LibVlcInterop.libvlc_log_iterator_free(iterator); } }
/// <summary> /// Default constructor. This constructor automaticly calls /// <see cref="LibVlcInterop.libvlc_errmsg"/> method. /// </summary> public VlcInternalException() : base(LibVlcInterop.libvlc_errmsg()) { }