/// <summary>Get media discoverer services by category</summary> /// <param name="category">category of services to fetch</param> /// <returns>the number of media discoverer services (0 on error)</returns> /// <remarks>LibVLC 3.0.0 and later.</remarks> public MediaDiscoverer.Description[] MediaDiscoverers(MediaDiscoverer.Category category) { var arrayResultPtr = IntPtr.Zero; var count = Native.LibVLCMediaDiscovererListGet(NativeReference, category, ref arrayResultPtr); #if NETSTANDARD1_1 || NET40 if (count == 0) { return(new MediaDiscoverer.Description[0]); } #else if (count == 0) { return(Array.Empty <MediaDiscoverer.Description>()); } #endif var mediaDiscovererDescription = new MediaDiscoverer.Description[(int)count]; for (var i = 0; i < (int)count; i++) { var ptr = Marshal.ReadIntPtr(arrayResultPtr, i * IntPtr.Size); var managedStruct = (MediaDiscoverer.Description)Marshal.PtrToStructure(ptr, typeof(MediaDiscoverer.Description)); mediaDiscovererDescription[i] = managedStruct; } Native.LibVLCMediaDiscovererListRelease(arrayResultPtr, count); return(mediaDiscovererDescription); }
internal static extern ulong LibVLCMediaDiscovererListGet(IntPtr libVLC, MediaDiscoverer.Category category, ref IntPtr pppServices);