public void ParseError(out GLib.GException error, out string debug) { if (Type != MessageType.Error) { throw new ArgumentException(); } IntPtr err; IntPtr dbg; gst_message_parse_error(Handle, out err, out dbg); if (dbg != IntPtr.Zero) { debug = GLib.Marshaller.Utf8PtrToString(dbg); } else { debug = null; } if (err == IntPtr.Zero) { throw new Exception(); } error = new GLib.GException(err); }
private void HandleError(GLib.GException ex) { TrackInfo failed_track = CurrentTrack; Close(true); var error_message = String.IsNullOrEmpty(ex.Message) ? Catalog.GetString("Unknown Error") : ex.Message; if (ex.Domain == Gst.Global.ResourceErrorQuark()) { ResourceError domain_code = (ResourceError)ex.Code; if (failed_track != null) { switch (domain_code) { case ResourceError.NotFound: failed_track.SavePlaybackError(StreamPlaybackError.ResourceNotFound); break; default: break; } } Log.Error(String.Format("GStreamer resource error: {0}", domain_code), false); } else if (ex.Domain == Gst.Global.StreamErrorQuark()) { StreamError domain_code = (StreamError)ex.Code; if (failed_track != null) { switch (domain_code) { case StreamError.CodecNotFound: failed_track.SavePlaybackError(StreamPlaybackError.CodecNotFound); break; default: break; } } Log.Error(String.Format("GStreamer stream error: {0}", domain_code), false); } else if (ex.Domain == Gst.Global.CoreErrorQuark()) { CoreError domain_code = (CoreError)ex.Code; if (failed_track != null) { switch (domain_code) { case CoreError.MissingPlugin: failed_track.SavePlaybackError(StreamPlaybackError.CodecNotFound); break; default: break; } } if (domain_code != CoreError.MissingPlugin) { Log.Error(String.Format("GStreamer core error: {0}", domain_code), false); } } else if (ex.Domain == Gst.Global.LibraryErrorQuark()) { Log.Error(String.Format("GStreamer library error: {0}", ex.Code), false); } OnEventChanged(new PlayerEventErrorArgs(error_message)); }
/// <summary> /// This function is called every time the discoverer has information regarding one of the URIs we provided. /// </summary> static void OnDiscoveredCb(object o, DiscoveredArgs args) { var discoverer = o as Discoverer; var info = args.Info; var uri = info.Uri; var result = info.Result; switch (result) { case DiscovererResult.UriInvalid: $"Invalid uri {uri}".PrintErr(); break; case DiscovererResult.Error: var err = new GLib.GException(args.Error); $"Discoverer error {err.Message}".PrintErr(); break; case DiscovererResult.Timeout: Console.WriteLine("Timeout"); break; case DiscovererResult.Busy: Console.WriteLine("Busy"); break; case DiscovererResult.MissingPlugins: var s = info.Misc; if (s != null) { Console.WriteLine($"Missing plugins {s}"); } break; case DiscovererResult.Ok: Console.WriteLine($"Discovered {uri}"); break; } if (result != DiscovererResult.Ok) { "This URI cannot be played".PrintErr(); return; } // If we got no error, show the retrieved information var duration = new TimeSpan((long)info.Duration); Console.WriteLine($"Duration {duration}"); var tags = info.Tags; if (tags != null) { Console.WriteLine("Tags: "); tags.Foreach(PrintTagForeach); } Console.WriteLine("Seekable: {0}", info.Seekable ? "yes" : "no"); DiscovererStreamInfo sinfo = info.StreamInfo; if (sinfo == null) { return; } Console.WriteLine("Stream information: "); PrintTopology(sinfo, 1); Console.WriteLine(); }
//This function is called every time the discoverer has information regarding one of the URIs we provided. static void HandleDiscovered(object disc, DiscoveredArgs args) { var info = args.Info; var uri = info.Uri; var result = info.Result; var discoverer = (Discoverer)disc; switch (result) { case DiscovererResult.UriInvalid: Console.WriteLine("Invalid URI '{0}'", uri); break; case DiscovererResult.Error: var err = new GLib.GException(args.Error); Console.WriteLine("Discoverer error: {0}", err.Message); break; case DiscovererResult.Timeout: Console.WriteLine("Timeout"); break; case DiscovererResult.Busy: Console.WriteLine("Busy"); break; case DiscovererResult.MissingPlugins: { var s = info.Misc; if (s != null) { Console.WriteLine("Missing plugins: {0}", s); } break; } case DiscovererResult.Ok: Console.WriteLine("Discovered '{0}'", uri); break; } if (result != DiscovererResult.Ok) { Console.WriteLine("This URI cannot be played"); return; } // If we got no error, show the retrieved information Console.WriteLine("\nDuration: {0}", new TimeSpan((long)info.Duration)); var tags = info.Tags; if (tags != null) { Console.WriteLine("Tags:"); tags.Foreach((TagForeachFunc) delegate(TagList list, string tag) { PrintTagForeach(list, tag, 1); }); } Console.WriteLine("Seekable: {0}", (info.Seekable ? "yes" : "no")); Console.WriteLine(); var sinfo = info.StreamInfo; if (sinfo == null) { return; } Console.WriteLine("Stream information:"); PrintTopology(sinfo, 1); Console.WriteLine(); }
private static void OnError(GstVideoStream sender, GLib.GException error, string debug) { Console.WriteLine($"{Environment.NewLine}ERROR: {error.Message} ({debug})"); }