From fec4fde41014892402d3ce3fa9139f5d58a15d63 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Mon, 23 Feb 2009 21:12:22 +0200 Subject: [PATCH] Media meta data support This seems to trigger a pseudo-random native failure. Most likely a critical bug in the VLC meta support. --- 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 4cf488e13a..bacaf78137 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 1edf093fb2..a18a936b88 100644 --- a/bindings/cil/src/media.cs +++ b/bindings/cil/src/media.cs @@ -225,6 +225,25 @@ namespace VideoLAN.LibVLC return Location; } + /** + * @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. */ diff --git a/bindings/cil/tests/testvlc.cs b/bindings/cil/tests/testvlc.cs index 1d4786c8d2..9ea8a3188a 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 { -- 2.39.5