public PlayerEngine ()
{
Log.InformationFormat ("GStreamer# {0} Initializing; {1}.{2}",
typeof (Gst.Version).Assembly.GetName ().Version, Gst.Version.Description, Gst.Version.Nano);
// Setup the gst plugins/registry paths if running Windows
if (PlatformDetection.IsWindows) {
var gst_paths = new string [] { Hyena.Paths.Combine (Hyena.Paths.InstalledApplicationPrefix, "gst-plugins") };
Environment.SetEnvironmentVariable ("GST_PLUGIN_PATH", String.Join (";", gst_paths));
Environment.SetEnvironmentVariable ("GST_PLUGIN_SYSTEM_PATH", "");
Environment.SetEnvironmentVariable ("GST_DEBUG", "1");
string registry = Hyena.Paths.Combine (Hyena.Paths.ApplicationData, "registry.bin");
if (!System.IO.File.Exists (registry)) {
System.IO.File.Create (registry).Close ();
}
Environment.SetEnvironmentVariable ("GST_REGISTRY", registry);
//System.Environment.SetEnvironmentVariable ("GST_REGISTRY_FORK", "no");
Log.DebugFormat ("GST_PLUGIN_PATH = {0}", Environment.GetEnvironmentVariable ("GST_PLUGIN_PATH"));
}
Gst.Application.Init ();
pipeline = new Pipeline ();
playbin = new PlayBin2 ();
pipeline.Add (playbin);
// Remember the volume from last time
Volume = (ushort)PlayerEngineService.VolumeSchema.Get ();
playbin.AddNotification ("volume", OnVolumeChanged);
pipeline.Bus.AddWatch (OnBusMessage);
OnStateChanged (PlayerState.Ready);
}