public VlcMediaInstance CreateNewMediaFromStream(Stream stream)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            if (VlcVersionNumber.Major < 3)
            {
                throw new InvalidOperationException("You need VLC version 3.0 or higher to be able to use CreateNewMediaFromStream");
            }

            IntPtr opaque = AddStream(stream);

            if (opaque == IntPtr.Zero)
            {
                return(null);
            }

            var result = VlcMediaInstance.New(this, GetInteropDelegate <CreateNewMediaFromCallbacks>().Invoke(
                                                  myVlcInstance,
                                                  CallbackOpenMediaDelegate,
                                                  CallbackReadMediaDelegate,
                                                  CallbackSeekMediaDelegate,
                                                  CallbackCloseMediaDelegate,
                                                  opaque
                                                  ));

            return(result);
        }
        public MediaTrackInfosStructure[] GetMediaTracksInformations(VlcMediaInstance mediaInstance)
        {
            if (mediaInstance == IntPtr.Zero)
            {
                throw new ArgumentException("Media instance is not initialized.");
            }
            IntPtr fullBuffer;
            var    cpt = GetInteropDelegate <GetMediaTracksInformations>().Invoke(mediaInstance, out fullBuffer);

            if (cpt <= 0)
            {
                return(new MediaTrackInfosStructure[0]);
            }
            var result = new MediaTrackInfosStructure[cpt];
            var buffer = fullBuffer;

            for (int index = 0; index < cpt; index++)
            {
#if NET20 || NET35 || NET40 || NET45
                result[index] = (MediaTrackInfosStructure)Marshal.PtrToStructure(buffer, typeof(MediaTrackInfosStructure));
                buffer        = IntPtr.Size == 4
                    ? new IntPtr(buffer.ToInt32() + Marshal.SizeOf(typeof(MediaTrackInfosStructure)))
                    : new IntPtr(buffer.ToInt64() + Marshal.SizeOf(typeof(MediaTrackInfosStructure)));
#else
                result[index] = Marshal.PtrToStructure <MediaTrackInfosStructure>(buffer);
                buffer        = IntPtr.Size == 4
                    ? new IntPtr(buffer.ToInt32() + Marshal.SizeOf <MediaTrackInfosStructure>())
                    : new IntPtr(buffer.ToInt64() + Marshal.SizeOf <MediaTrackInfosStructure>());
#endif
            }
            Free(fullBuffer);
            return(result);
        }
 public VlcMediaInstance GetMediaFromMediaPlayer(VlcMediaPlayerInstance mediaPlayerInstance)
 {
     if (mediaPlayerInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media player instance is not initialized.");
     }
     return(VlcMediaInstance.New(this, GetInteropDelegate <GetMediaFromMediaPlayer>().Invoke(mediaPlayerInstance)));
 }
Пример #4
0
 public VlcMediaInstance CloneMedia(VlcMediaInstance mediaInstance)
 {
     if (mediaInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media instance is not initialized.");
     }
     return(VlcMediaInstance.New(this, GetInteropDelegate <CloneMedia>().Invoke(mediaInstance)));
 }
Пример #5
0
 public bool IsParsedMedia(VlcMediaInstance mediaInstance)
 {
     if (mediaInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media instance is not initialized.");
     }
     return(GetInteropDelegate <IsParsedMedia>().Invoke(mediaInstance) == 1);
 }
Пример #6
0
 public void ReleaseMedia(VlcMediaInstance mediaInstance)
 {
     if (mediaInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media instance is not initialized.");
     }
     GetInteropDelegate <ReleaseMedia>().Invoke(mediaInstance);
 }
Пример #7
0
 public bool SaveMediaMetadatas(VlcMediaInstance mediaInstance)
 {
     if (mediaInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media instance is not initialized.");
     }
     return(GetInteropDelegate <SaveMediaMetadatas>().Invoke(mediaInstance) == 1);
 }
 public VlcMediaPlayerInstance CreateMediaPlayerFromMedia(VlcMediaInstance mediaInstance)
 {
     if (mediaInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media instance is not initialized.");
     }
     return(new VlcMediaPlayerInstance(this, GetInteropDelegate <CreateMediaPlayerFromMedia>().Invoke(mediaInstance)));
 }
Пример #9
0
 public VlcMediaEventManagerInstance GetMediaEventManager(VlcMediaInstance mediaInstance)
 {
     if (mediaInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media instance is not initialized.");
     }
     return(new VlcMediaEventManagerInstance(this, GetInteropDelegate <GetMediaEventManager>().Invoke(mediaInstance)));
 }
Пример #10
0
 public void ParseMediaAsync(VlcMediaInstance mediaPlayerInstance)
 {
     if (mediaPlayerInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media player instance is not initialized.");
     }
     GetInteropDelegate <ParseMediaAsync>().Invoke(mediaPlayerInstance);
 }
Пример #11
0
 public long GetMediaDuration(VlcMediaInstance mediaInstance)
 {
     if (mediaInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media instance is not initialized.");
     }
     return(GetInteropDelegate <GetMediaDuration>().Invoke(mediaInstance));
 }
Пример #12
0
        public VlcMediaInstance CreateNewMediaFromLocation(string mrl)
        {
            EnsureVlcInstance();

            using (var handle = Utf8InteropStringConverter.ToUtf8StringHandle(mrl))
            {
                return(VlcMediaInstance.New(this, GetInteropDelegate <CreateNewMediaFromLocation>().Invoke(myVlcInstance, handle)));
            }
        }
Пример #13
0
        public string GetMediaMeta(VlcMediaInstance mediaInstance, MediaMetadatas metadata)
        {
            if (mediaInstance == IntPtr.Zero)
            {
                throw new ArgumentException("Media instance is not initialized.");
            }
            var ptr = GetInteropDelegate <GetMediaMetadata>().Invoke(mediaInstance, metadata);

            return(Utf8InteropStringConverter.Utf8InteropToString(ptr));
        }
Пример #14
0
 public void SetMediaMeta(VlcMediaInstance mediaInstance, MediaMetadatas metadata, string value)
 {
     if (mediaInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media instance is not initialized.");
     }
     using (var handle = Utf8InteropStringConverter.ToUtf8StringHandle(value))
     {
         GetInteropDelegate <SetMediaMetadata>().Invoke(mediaInstance, metadata, handle);
     }
 }
Пример #15
0
        public MediaStatsStructure GetMediaStats(VlcMediaInstance mediaInstance)
        {
            if (mediaInstance == IntPtr.Zero)
            {
                throw new ArgumentException("Media instance is not initialized.");
            }
            MediaStatsStructure result;

            GetInteropDelegate <GetMediaStats>().Invoke(mediaInstance, out result);
            return(result);
        }
Пример #16
0
        public void AddOptionFlagToMedia(VlcMediaInstance mediaInstance, string option, uint flag)
        {
            if (mediaInstance == IntPtr.Zero)
            {
                throw new ArgumentException("Media instance is not initialized.");
            }

            using (var handle = Utf8InteropStringConverter.ToUtf8StringHandle(option))
            {
                GetInteropDelegate <AddOptionFlagToMedia>().Invoke(mediaInstance, handle, flag);
            }
        }
Пример #17
0
 public void AddOptionToMedia(VlcMediaInstance mediaInstance, string[] options)
 {
     if (mediaInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media instance is not initialized.");
     }
     options = options ?? new string[0];
     foreach (var option in options)
     {
         AddOptionToMedia(mediaInstance, option);
     }
 }
Пример #18
0
        public static VlcMediaInstance New(VlcManager manager, IntPtr pointer)
        {
            var instance = allInstances.Find(delegate(VlcMediaInstance i)
            {
                return(i == pointer);
            });

            if (null == instance)
            {
                instance = new VlcMediaInstance(manager, pointer);
                allInstances.Add(instance);
            }
            return(instance);
        }
Пример #19
0
        public void AddOptionToMedia(VlcMediaInstance mediaInstance, string option)
        {
            if (mediaInstance == IntPtr.Zero)
            {
                throw new ArgumentException("Media instance is not initialized.");
            }
            if (string.IsNullOrEmpty(option))
            {
                return;
            }

            using (var handle = Utf8InteropStringConverter.ToUtf8StringHandle(option))
            {
                GetInteropDelegate <AddOptionToMedia>().Invoke(mediaInstance, handle);
            }
        }
        public VlcMediaInstance CreateNewMediaFromFileDescriptor(int fileDescriptor)
        {
            EnsureVlcInstance();

            return(VlcMediaInstance.New(this, GetInteropDelegate <CreateNewMediaFromFileDescriptor>().Invoke(myVlcInstance, fileDescriptor)));
        }
Пример #21
0
 public void SetMediaToMediaPlayer(VlcMediaPlayerInstance mediaPlayerInstance, VlcMediaInstance mediaInstance)
 {
     if (mediaPlayerInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media player instance is not initialized.");
     }
     if (mediaInstance == IntPtr.Zero)
     {
         throw new ArgumentException("Media instance is not initialized.");
     }
     GetInteropDelegate <SetMediaToMediaPlayer>().Invoke(mediaPlayerInstance, mediaInstance);
 }