//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(); }
/// <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(); }