Пример #1
0
        public async Task <bool> InitDiscoverer()
        {
            if (Locator.VLCService.Instance == null)
            {
                await Locator.VLCService.Initialize();
            }
            await Locator.VLCService.PlayerInstanceReady.Task;

            if (Locator.VLCService.Instance == null)
            {
                return(false);
            }

            await MediaItemDiscovererSemaphoreSlim.WaitAsync();

            var tcs = new TaskCompletionSource <bool>();
            await Task.Run(() =>
            {
                lock (discovererLock)
                {
                    if (discoverers == null)
                    {
                        discoverers         = new Dictionary <string, MediaDiscoverer>();
                        var discoverersDesc = Locator.VLCService.Instance.mediaDiscoverers(MediaDiscovererCategory.Lan);
                        foreach (var discDesc in discoverersDesc)
                        {
                            var discoverer = new MediaDiscoverer(Locator.VLCService.Instance, discDesc.name());

                            var mediaList = discoverer.mediaList();
                            if (mediaList == null)
                            {
                                tcs.TrySetResult(false);
                            }

                            var eventManager            = mediaList.eventManager();
                            eventManager.onItemAdded   += MediaListItemAdded;
                            eventManager.onItemDeleted += MediaListItemDeleted;

                            discoverers.Add(discDesc.name(), discoverer);
                        }
                    }

                    foreach (var discoverer in discoverers)
                    {
                        if (!discoverer.Value.isRunning())
                        {
                            discoverer.Value.start();
                        }
                    }
                    tcs.TrySetResult(true);
                }
            });

            await tcs.Task;

            MediaItemDiscovererSemaphoreSlim.Release();
            return(tcs.Task.Result);
        }
 private void InitializeMediaDiscoverers()
 {
     foreach (var md in _libVLC.MediaDiscoverers(MediaDiscovererCategory.Lan))
     {
         var discoverer = new MediaDiscoverer(_libVLC, md.Name);
         discoverer.MediaList.ItemAdded   += MediaList_ItemAdded;
         discoverer.MediaList.ItemDeleted += MediaList_ItemDeleted;
         _mediaDiscoverers.Add(discoverer);
     }
 }
        public void CreateStartAndStopDiscoverer()
        {
            var mds = _libVLC.MediaDiscoverers(MediaDiscovererCategory.Lan);
            var md  = new MediaDiscoverer(_libVLC, mds.First().Name);

            Assert.True(md.Start());
            Assert.True(md.IsRunning);
            md.Stop();
            Assert.False(md.IsRunning);
        }
        public void CreateStartAndStopDiscoverer()
        {
            var instance = new Instance();
            var mds      = instance.MediaDiscoverers(MediaDiscoverer.Category.Lan);
            var md       = new MediaDiscoverer(instance, mds.First().Name);

            Assert.True(md.Start());
            Assert.True(md.IsRunning);
            md.Stop();
            Assert.False(md.IsRunning);
        }
Пример #5
0
        public void DisposeMediaDiscoverer()
        {
            var mds = _libVLC.MediaDiscoverers(MediaDiscovererCategory.Lan);
            var md  = new MediaDiscoverer(_libVLC, mds.First().Name);

            Assert.True(md.Start());
            Assert.True(md.IsRunning);
            Assert.NotNull(md.MediaList);
            md.Dispose();
            Assert.IsNull(md.MediaList);
            Assert.False(md.IsRunning);
            Assert.AreEqual(IntPtr.Zero, md.NativeReference);
        }
        public async Task DisposeMediaDiscoverer()
        {
            var mds = _libVLC.MediaDiscoverers(MediaDiscovererCategory.Lan);
            var md  = new MediaDiscoverer(_libVLC, mds.First().Name);

            Assert.True(md.Start());
            Assert.True(md.IsRunning);
            Assert.NotNull(md.MediaList);
            await Task.Delay(1000);

            foreach (var media in md.MediaList)
            {
                Debug.WriteLine(media.Mrl);
            }
            md.Dispose();
            Assert.IsNull(md.MediaList);
            Assert.False(md.IsRunning);
            Assert.AreEqual(IntPtr.Zero, md.NativeReference);
        }