[vlc-devel] commit: Media meta data support ( Rémi Denis-Courmont )

git version control git at videolan.org
Mon Feb 23 20:13:40 CET 2009


vlc | branch: master | Rémi Denis-Courmont <rdenis at simphalempin.com> | Mon Feb 23 21:12:22 2009 +0200| [fec4fde41014892402d3ce3fa9139f5d58a15d63] | committer: Rémi Denis-Courmont 

Media meta data support

This seems to trigger a pseudo-random native failure. Most likely a
critical bug in the VLC meta support.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fec4fde41014892402d3ce3fa9139f5d58a15d63
---

 bindings/cil/src/libvlc.cs    |    6 +++---
 bindings/cil/src/media.cs     |   19 +++++++++++++++++++
 bindings/cil/tests/testvlc.cs |    7 +++++++
 3 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/bindings/cil/src/libvlc.cs b/bindings/cil/src/libvlc.cs
index 4cf488e..bacaf78 100644
--- a/bindings/cil/src/libvlc.cs
+++ b/bindings/cil/src/libvlc.cs
@@ -118,10 +118,10 @@ namespace VideoLAN.LibVLC
         public static extern
         MediaHandle MediaDuplicate (MediaHandle media);
 
-        /*[DllImport (lib, EntryPoint="libvlc_media_read_meta")]
+        [DllImport (lib, EntryPoint="libvlc_media_get_meta")]
         public static extern
-        MediaHandle MediaDuplicate (MediaHandle media, int type,
-                                    NativeException ex);*/
+        StringHandle MediaGetMeta (MediaHandle media, MetaType type,
+                                   NativeException ex);
 
         [DllImport (lib, EntryPoint="libvlc_media_get_state")]
         public static extern
diff --git a/bindings/cil/src/media.cs b/bindings/cil/src/media.cs
index 1edf093..a18a936 100644
--- a/bindings/cil/src/media.cs
+++ b/bindings/cil/src/media.cs
@@ -226,6 +226,25 @@ namespace VideoLAN.LibVLC
         }
 
         /**
+         * @param type meta data type
+         * @return the meta data value, or @a null if unknown
+         */
+        public string GetMeta (MetaType type)
+        {
+            StringHandle str = LibVLC.MediaGetMeta (Handle, type, ex);
+            Raise ();
+            return str.Transform ();
+        }
+
+        public delegate void MetaChange (Media media, MetaType type);
+        public event MetaChange MetaChanged;
+        private void MetaCallback (MediaMetaEvent ev, IntPtr data)
+        {
+            if (MetaChanged != null)
+                MetaChanged (this, ev.metaType);
+        }
+
+        /**
          * Current state of the media.
          */
         public State State
diff --git a/bindings/cil/tests/testvlc.cs b/bindings/cil/tests/testvlc.cs
index 1d4786c..9ea8a31 100644
--- a/bindings/cil/tests/testvlc.cs
+++ b/bindings/cil/tests/testvlc.cs
@@ -75,6 +75,13 @@ namespace VideoLAN.LibVLC.Test
                 DumpMedia ((Media)media.Clone ());
                 media.StateChanged += WriteMediaState;
 
+                /*foreach (MetaType type in Enum.GetValues (typeof (MetaType)))
+                {
+                    string meta = media.GetMeta (type);
+                    if (meta != null)
+                        Console.WriteLine (" {0}: {1}", type, meta);
+                }*/
+
                 player.Play ();
                 do
                 {




More information about the vlc-devel mailing list