gstreamer/samples/PlayBinPlayer.cs
2009-09-20 10:22:16 +02:00

61 lines
1.4 KiB
C#

using System;
using GLib;
using Gst;
using Gst.BasePlugins;
public class PlayBinPlayer {
private static MainLoop loop;
private static string[] songs;
private static int song_idx = 0;
private static PlayBin play;
public static void Main (string[] args) {
if (args.Length < 1) {
Console.WriteLine ("usage: mono playbin-player.exe audio_file_uri");
return;
}
songs = args;
Gst.Application.Init ();
loop = new MainLoop ();
play = ElementFactory.Make ("playbin", "play") as PlayBin;
if (play == null) {
Console.WriteLine ("error creating a playbin gstreamer object");
return;
}
play.Uri = songs[song_idx++];
play.Bus.AddWatch (new BusFunc (BusCb));
play.SetState (State.Playing);
loop.Run ();
}
private static bool BusCb (Bus bus, Message message) {
switch (message.Type) {
case MessageType.Error:
Enum err;
string msg;
message.ParseError (out err, out msg);
Console.WriteLine ("Gstreamer error: {0}", msg);
loop.Quit ();
break;
case MessageType.Eos:
if (song_idx >= songs.Length) {
Console.WriteLine ("Thank you, come again");
loop.Quit ();
} else {
play.SetState (State.Null);
play.Uri = songs[song_idx++];
play.SetState (State.Playing);
}
break;
}
return true;
}
}