Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
 internal static extern ulong LibVLCMediaDiscovererListGet(IntPtr libVLC, MediaDiscoverer.Category category, ref IntPtr pppServices);