Basic tests for the media player, fix time units
authorRémi Denis-Courmont <rdenis@simphalempin.com>
Sat, 21 Feb 2009 16:45:47 +0000 (18:45 +0200)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Sat, 21 Feb 2009 16:45:47 +0000 (18:45 +0200)
bindings/cil/src/player.cs
bindings/cil/tests/testvlc.cs

index fb17b1e..2e3d54b 100644 (file)
@@ -193,7 +193,7 @@ namespace VideoLAN.LibVLC
         }
 
         /**
-         * Total length in microseconds of the playback (if known).
+         * Total length in milliseconds of the playback (if known).
          */
         public long Length
         {
@@ -206,7 +206,7 @@ namespace VideoLAN.LibVLC
         }
 
         /**
-         * Playback position in microseconds from the start (if applicable).
+         * Playback position in milliseconds from the start (if applicable).
          * Setting this value might not work depending on the underlying
          * media capability and file format.
          *
@@ -229,6 +229,7 @@ namespace VideoLAN.LibVLC
 
         /**
          * Playback position as a fraction of the total (if applicable).
+         * At start, this is 0; at the end, this is 1.
          * Setting this value might not work depending on the underlying
          * media capability and file format.
          *
index 1e0c9c2..3868cad 100644 (file)
@@ -35,6 +35,21 @@ namespace VideoLAN.LibVLC.Test
             Console.WriteLine (" preparsed: {0}", m.IsPreparsed);
         }
 
+        private static void DumpPlayer (Player p)
+        {
+            if (!p.IsPlaying)
+                return;
+
+            int percent = (int)(p.Position * 100);
+            Console.Write ("{0} of {1} ms ({2}%)\r", p.Time, p.Length,
+                           percent);
+        }
+
+        private static void Sleep (int msec)
+        {
+            System.Threading.Thread.Sleep (msec);
+        }
+
         public static int Main (string[] args)
         {
             string[] argv = new string[]{
@@ -46,13 +61,27 @@ namespace VideoLAN.LibVLC.Test
             Console.WriteLine (" (compiled with {0})", VLC.Compiler);
 
             VLC vlc = new VLC (argv);
-            Media m = new Media (vlc, "/dev/null");
-            DumpMedia (m);
+            foreach (string mrl in args)
+            {
+                Media media = new Media (vlc, mrl);
+                Player player = new Player (media);
+
+                DumpMedia (media);
+                DumpMedia ((Media)media.Clone ());
 
-            DumpMedia ((Media)m.Clone ());
+                player.Play ();
+                do
+                {
+                    DumpPlayer (player);
+                    Sleep (500);
+                }
+                while (player.IsPlaying);
+                player.Stop ();
+                media.Dispose ();
+                player.Dispose ();
+            }
 
             vlc.Dispose ();
-            m.Dispose ();
             return 0;
         }
     };