[banshee/managed-gst] Initial work to port libbanshee to C#
- From: Aaron Bockover <abock src gnome org>
- To: svn-commits-list gnome org
- Subject: [banshee/managed-gst] Initial work to port libbanshee to C#
- Date: Sun, 3 May 2009 01:45:12 -0400 (EDT)
commit e9bef1bb137d6fe8de9a5b4f4ddf5f7f14f9d381
Author: Aaron Bockover <abockover novell com>
Date: Sun May 3 01:45:03 2009 -0400
Initial work to port libbanshee to C#
This first pass adds a light-weight manual binding to the parts
of GStreamer that we actually use. It is not my intention to do
a full binding here, so don't ask.
The ultimate goal is two-fold:
a) Remove native code dependency on Windows
b) Make our pipeline extensible through Mono.Addins
---
.../Banshee.GStreamer.Player/AudioSink.cs | 81 ++++++++
.../Banshee.GStreamer.Player/Equalizer.cs | 71 +++++++
.../Banshee.GStreamer.Player/PlayerEngine.cs | 60 ++++++
.../Banshee.GStreamer/Banshee.GStreamer.csproj | 16 ++
src/Backends/Banshee.GStreamer/GStreamer/Bin.cs | 137 +++++++++++++
.../Banshee.GStreamer/GStreamer/Element.cs | 161 +++++++++++++++
.../GStreamer/ElementException.cs | 37 ++++
.../Banshee.GStreamer/GStreamer/ElementFactory.cs | 204 ++++++++++++++++++++
.../GStreamer/ElementNotFoundException.cs | 51 +++++
.../Banshee.GStreamer/GStreamer/Framework.cs | 130 +++++++++++++
.../GStreamer/FrameworkVersion.cs | 60 ++++++
src/Backends/Banshee.GStreamer/GStreamer/Object.cs | 66 +++++++
.../Banshee.GStreamer/GStreamer/PluginFeature.cs | 50 +++++
src/Backends/Banshee.GStreamer/Makefile.am | 15 ++-
14 files changed, 1138 insertions(+), 1 deletions(-)
diff --git a/src/Backends/Banshee.GStreamer/Banshee.GStreamer.Player/AudioSink.cs b/src/Backends/Banshee.GStreamer/Banshee.GStreamer.Player/AudioSink.cs
new file mode 100644
index 0000000..f9dd833
--- /dev/null
+++ b/src/Backends/Banshee.GStreamer/Banshee.GStreamer.Player/AudioSink.cs
@@ -0,0 +1,81 @@
+//
+// AudioSink.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Aaron Bockover
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+using GStreamer;
+
+namespace Banshee.GStreamer.Player
+{
+ public class AudioSink : Bin
+ {
+ private Element tee;
+ private Element queue;
+ private Equalizer equalizer;
+ private Element primary_sink;
+
+ public AudioSink () : base ("banshee-audio-sink-bin")
+ {
+ BuildPipeline ();
+ }
+
+ protected virtual Element BuildPrimarySink ()
+ {
+ // Try to find an audio sink, prefer gconf, which typically is set to auto these days,
+ // fall back on auto, which should work on windows, and as a last ditch, try alsa
+ var primary_sink = ElementFactory.MakeFirstOf ("audiosink",
+ "gconfaudiosink",
+ "autoaudiosink",
+ "alsasink");
+
+ // Set the profile to "music and movies" (gst-plugins-good 0.10.3)
+ primary_sink.SetProperty ("profile", 1);
+
+ return primary_sink;
+ }
+
+ private void BuildPipeline ()
+ {
+ Add (
+ primary_sink = BuildPrimarySink (),
+ tee = ElementFactory.Make ("tee", "tee"),
+ queue = ElementFactory.Make ("queue", "queue")
+ );
+
+ equalizer = new Equalizer ();
+ if (equalizer.IsValid) {
+ Add (equalizer);
+ }
+
+ Element.Link (tee, queue);
+ if (equalizer.IsValid) {
+ Element.Link (queue, equalizer, primary_sink);
+ } else {
+ Element.Link (queue, equalizer, primary_sink);
+ }
+ }
+ }
+}
diff --git a/src/Backends/Banshee.GStreamer/Banshee.GStreamer.Player/Equalizer.cs b/src/Backends/Banshee.GStreamer/Banshee.GStreamer.Player/Equalizer.cs
new file mode 100644
index 0000000..d68c3bd
--- /dev/null
+++ b/src/Backends/Banshee.GStreamer/Banshee.GStreamer.Player/Equalizer.cs
@@ -0,0 +1,71 @@
+//
+// Equalizer.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Aaron Bockover
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+using GStreamer;
+
+namespace Banshee.GStreamer.Player
+{
+ public class Equalizer : Bin
+ {
+ private Element audioconvert_1;
+ private Element audioconvert_2;
+ private Element preamp;
+ private Element equalizer;
+
+ public Equalizer () : base ("banshee-equalizer-bin")
+ {
+ BuildPipeline ();
+ }
+
+ protected virtual Element BuildEqualizer ()
+ {
+ return null;
+ }
+
+ private void BuildPipeline ()
+ {
+ equalizer = BuildEqualizer ();
+ if (equalizer == null) {
+ return;
+ }
+
+ Add (
+ audioconvert_1 = ElementFactory.Make ("audioconvert", "audioconvert-1"),
+ audioconvert_2 = ElementFactory.Make ("audioconvert", "audioconvert-2"),
+ preamp = ElementFactory.Make ("volume", "preamp"),
+ equalizer
+ );
+
+ Element.Link (audioconvert_1, preamp, equalizer, audioconvert_2);
+ }
+
+ public bool IsValid {
+ get { return equalizer != null; }
+ }
+ }
+}
diff --git a/src/Backends/Banshee.GStreamer/Banshee.GStreamer.Player/PlayerEngine.cs b/src/Backends/Banshee.GStreamer/Banshee.GStreamer.Player/PlayerEngine.cs
new file mode 100644
index 0000000..032242e
--- /dev/null
+++ b/src/Backends/Banshee.GStreamer/Banshee.GStreamer.Player/PlayerEngine.cs
@@ -0,0 +1,60 @@
+//
+// PlayerEngine.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Aaron Bockover
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+using GStreamer;
+
+namespace Banshee.GStreamer.Player
+{
+ public class PlayerEngine
+ {
+ public static void Main (string [] args)
+ {
+ Framework.Init ();
+ new PlayerEngine ();
+ }
+
+ private Element playbin;
+ //private AudioSink audiosink_bin;
+
+ // private object mutex = new object ();
+
+ public PlayerEngine ()
+ {
+ ConstructPipeline ();
+ }
+
+ private void ConstructPipeline ()
+ {
+ playbin = ElementFactory.Make ("playbin", "playbin");
+
+ new AudioSink ();
+
+ playbin.SetProperty ("audio-sink", ElementFactory.Make ("alsasink", "bah"));
+ }
+ }
+}
diff --git a/src/Backends/Banshee.GStreamer/Banshee.GStreamer.csproj b/src/Backends/Banshee.GStreamer/Banshee.GStreamer.csproj
index 5dc9b83..a728ef4 100644
--- a/src/Backends/Banshee.GStreamer/Banshee.GStreamer.csproj
+++ b/src/Backends/Banshee.GStreamer/Banshee.GStreamer.csproj
@@ -57,6 +57,18 @@
<Compile Include="Banshee.GStreamer\TagList.cs" />
<Compile Include="Banshee.GStreamer\Transcoder.cs" />
<Compile Include="Banshee.GStreamer\BpmDetector.cs" />
+ <Compile Include="GStreamer\Element.cs" />
+ <Compile Include="GStreamer\Object.cs" />
+ <Compile Include="Banshee.GStreamer.Player\PlayerEngine.cs" />
+ <Compile Include="GStreamer\ElementFactory.cs" />
+ <Compile Include="GStreamer\PluginFeature.cs" />
+ <Compile Include="GStreamer\ElementNotFoundException.cs" />
+ <Compile Include="GStreamer\Framework.cs" />
+ <Compile Include="GStreamer\FrameworkVersion.cs" />
+ <Compile Include="GStreamer\Bin.cs" />
+ <Compile Include="Banshee.GStreamer.Player\AudioSink.cs" />
+ <Compile Include="Banshee.GStreamer.Player\Equalizer.cs" />
+ <Compile Include="GStreamer\ElementException.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Banshee.GStreamer.addin.xml" />
@@ -77,4 +89,8 @@
</Properties>
</MonoDevelop>
</ProjectExtensions>
+ <ItemGroup>
+ <Folder Include="GStreamer\" />
+ <Folder Include="Banshee.GStreamer.Player\" />
+ </ItemGroup>
</Project>
\ No newline at end of file
diff --git a/src/Backends/Banshee.GStreamer/GStreamer/Bin.cs b/src/Backends/Banshee.GStreamer/GStreamer/Bin.cs
new file mode 100644
index 0000000..24698ee
--- /dev/null
+++ b/src/Backends/Banshee.GStreamer/GStreamer/Bin.cs
@@ -0,0 +1,137 @@
+//
+// Bin.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Aaron Bockover
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace GStreamer
+{
+ public class Bin : Element
+ {
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_bin_get_type ();
+ public static new GLib.GType GType {
+ get { return new GLib.GType (gst_bin_get_type ()); }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_bin_new (IntPtr name);
+
+ public Bin (IntPtr raw) : base (raw)
+ {
+ }
+
+ public Bin (string name) : base (IntPtr.Zero)
+ {
+ IntPtr name_ptr = IntPtr.Zero;
+ try {
+ Raw = gst_bin_new (name_ptr = GLib.Marshaller.StringToPtrGStrdup (name));
+ } finally {
+ GLib.Marshaller.Free (name_ptr);
+ }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_bin_add (IntPtr bin, IntPtr element);
+
+ public void Add (Element element)
+ {
+ if (element == null) {
+ throw new ArgumentNullException ("element");
+ }
+
+ gst_bin_add (Handle, element.Handle);
+ }
+
+ public void Add (params Element [] elements)
+ {
+ if (elements == null || elements.Length == 0) {
+ throw new ArgumentNullException ("elements");
+ }
+
+ foreach (var elem in elements) {
+ Add (elem);
+ }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_bin_remove (IntPtr bin, IntPtr element);
+
+ public void Remove (Element element)
+ {
+ if (element == null) {
+ throw new ArgumentNullException ("element");
+ }
+
+ gst_bin_remove (Handle, element.Handle);
+ }
+
+ public void Remove (params Element [] elements)
+ {
+ if (elements == null || elements.Length == 0) {
+ throw new ArgumentNullException ("elements");
+ }
+
+ foreach (var elem in elements) {
+ Remove (elem);
+ }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_bin_get_by_name (IntPtr bin, IntPtr name);
+
+ public Element GetByName (string name)
+ {
+ IntPtr name_ptr = GLib.Marshaller.StringToPtrGStrdup (name);
+ try {
+ return (Element)gst_bin_get_by_name (Handle, name_ptr);
+ } finally {
+ GLib.Marshaller.Free (name_ptr);
+ }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_bin_get_by_name_recurse_up (IntPtr bin, IntPtr name);
+
+ public Element GetByNameRecurseUp (string name)
+ {
+ IntPtr name_ptr = GLib.Marshaller.StringToPtrGStrdup (name);
+ try {
+ return (Element)gst_bin_get_by_name_recurse_up (Handle, name_ptr);
+ } finally {
+ GLib.Marshaller.Free (name_ptr);
+ }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_bin_get_by_interface (IntPtr bin, IntPtr iface);
+
+ public Element GetByInterface (GLib.GType iface)
+ {
+ return (Element)gst_bin_get_by_interface (Handle, iface.Val);
+ }
+ }
+}
diff --git a/src/Backends/Banshee.GStreamer/GStreamer/Element.cs b/src/Backends/Banshee.GStreamer/GStreamer/Element.cs
new file mode 100644
index 0000000..6ccebba
--- /dev/null
+++ b/src/Backends/Banshee.GStreamer/GStreamer/Element.cs
@@ -0,0 +1,161 @@
+//
+// Element.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Aaron Bockover
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace GStreamer
+{
+ public class Element : Object
+ {
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_element_get_type ();
+ public static new GLib.GType GType {
+ get { return new GLib.GType (gst_element_get_type ()); }
+ }
+
+ public Element (IntPtr raw) : base (raw)
+ {
+ }
+
+ protected Element () : base (IntPtr.Zero)
+ {
+ CreateNativeObject ();
+ }
+
+#region Element Linking
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern bool gst_element_link (IntPtr src, IntPtr dest);
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern void gst_element_unlink (IntPtr src, IntPtr dest);
+
+ public static bool TryLink (Element src, Element dest)
+ {
+ if (src == null) {
+ throw new ArgumentNullException ("src");
+ } else if (dest == null) {
+ throw new ArgumentNullException ("dest");
+ }
+
+ return gst_element_link (src.Handle, dest.Handle);
+ }
+
+ public static void Link (Element src, Element dest)
+ {
+ if (!TryLink (src, dest)) {
+ throw new ElementException (String.Format ("Could not link element '{0}' with '{1}'", src, dest));
+ }
+ }
+
+ public static void Unlink (Element src, Element dest)
+ {
+ if (src == null) {
+ throw new ArgumentNullException ("src");
+ } else if (dest == null) {
+ throw new ArgumentNullException ("dest");
+ }
+
+ gst_element_unlink (src.Handle, dest.Handle);
+ }
+
+ private static bool LinkUnlink (bool link, bool tryit, Element element1, params Element [] elements)
+ {
+ if (element1 == null || elements == null || elements.Length == 0) {
+ throw new ArgumentException ("two or more elements are required", "elements");
+ }
+
+ var e1 = element1;
+ var e2 = elements[0];
+
+ for (int i = 1; true; i++) {
+ if (link) {
+ if (tryit && !TryLink (e1, e2)) {
+ return false;
+ }
+
+ Link (e1, e2);
+ } else {
+ Unlink (e1, e2);
+ }
+
+ if (i == elements.Length) {
+ return true;
+ }
+
+ e1 = e2;
+ e2 = elements[i];
+ }
+ }
+
+ public static bool Link (Element element1, params Element [] elements)
+ {
+ return LinkUnlink (true, false, element1, elements);
+ }
+
+ public static void Unlink (Element element1, params Element [] elements)
+ {
+ LinkUnlink (false, true, element1, elements);
+ }
+
+ public static bool TryLink (Element element1, params Element [] elements)
+ {
+ return LinkUnlink (true, true, element1, elements);
+ }
+
+#endregion
+
+#region GObject Property Helpers
+
+ public new void SetProperty<T> (string name, T value)
+ {
+ base.SetProperty (name, new GLib.Value (value));
+ }
+
+ public new void SetProperty (string name, GLib.Value value)
+ {
+ base.SetProperty (name, value);
+ }
+
+ public new GLib.Value GetProperty (string name)
+ {
+ return base.GetProperty (name);
+ }
+
+#endregion
+
+ public static implicit operator IntPtr (Element element)
+ {
+ return element == null ? IntPtr.Zero : element.Handle;
+ }
+
+ public static implicit operator Element (IntPtr elementRaw)
+ {
+ return elementRaw == IntPtr.Zero ? null : new Element (elementRaw);
+ }
+ }
+}
diff --git a/src/Backends/Banshee.GStreamer/GStreamer/ElementException.cs b/src/Backends/Banshee.GStreamer/GStreamer/ElementException.cs
new file mode 100644
index 0000000..490f112
--- /dev/null
+++ b/src/Backends/Banshee.GStreamer/GStreamer/ElementException.cs
@@ -0,0 +1,37 @@
+//
+// ElementException.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Aaron Bockover
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+namespace GStreamer
+{
+ public class ElementException : Exception
+ {
+ public ElementException (string message) : base (message)
+ {
+ }
+ }
+}
diff --git a/src/Backends/Banshee.GStreamer/GStreamer/ElementFactory.cs b/src/Backends/Banshee.GStreamer/GStreamer/ElementFactory.cs
new file mode 100644
index 0000000..c64e733
--- /dev/null
+++ b/src/Backends/Banshee.GStreamer/GStreamer/ElementFactory.cs
@@ -0,0 +1,204 @@
+//
+// ElementFactory.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Aaron Bockover
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace GStreamer
+{
+ public class ElementFactory : PluginFeature
+ {
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_element_factory_get_type ();
+ public static new GLib.GType GType {
+ get { return new GLib.GType (gst_element_factory_get_type ()); }
+ }
+
+ public ElementFactory (IntPtr raw) : base (raw)
+ {
+ }
+
+ public ElementFactory () : base (IntPtr.Zero)
+ {
+ CreateNativeObject ();
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_element_factory_get_element_type (IntPtr factory);
+ public GLib.GType ElementGType {
+ get { return new GLib.GType (gst_element_factory_get_element_type (Handle)); }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_element_factory_get_longname (IntPtr factory);
+ public string LongName {
+ get { return GLib.Marshaller.Utf8PtrToString (gst_element_factory_get_longname (Handle)); }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_element_factory_get_klass (IntPtr factory);
+ public string Klass {
+ get { return GLib.Marshaller.Utf8PtrToString (gst_element_factory_get_klass (Handle)); }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_element_factory_get_description (IntPtr factory);
+ public string Description {
+ get { return GLib.Marshaller.Utf8PtrToString (gst_element_factory_get_description (Handle)); }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_element_factory_get_author (IntPtr factory);
+ public string Author {
+ get { return GLib.Marshaller.Utf8PtrToString (gst_element_factory_get_author (Handle)); }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern uint gst_element_factory_get_num_pad_templates (IntPtr factory);
+ public uint NumPadTemplates {
+ get { return gst_element_factory_get_num_pad_templates (Handle); }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern int gst_element_factory_get_uri_type (IntPtr factory);
+ public int UriType {
+ get { return gst_element_factory_get_uri_type (Handle); }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_element_factory_get_uri_protocols (IntPtr factory);
+ public string [] UriProtocols {
+ get { return GLib.Marshaller.PtrToStringArrayGFree (gst_element_factory_get_uri_protocols (Handle)); }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern bool gst_element_factory_has_interface (IntPtr factory, IntPtr interfacename);
+
+ public bool HasInterface (string interfaceName)
+ {
+ IntPtr name_ptr = IntPtr.Zero;
+ try {
+ return gst_element_factory_has_interface (Handle,
+ name_ptr = GLib.Marshaller.StringToPtrGStrdup (interfaceName));
+ } finally {
+ GLib.Marshaller.Free (name_ptr);
+ }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_element_factory_create (IntPtr factory, IntPtr name);
+
+ public Element Make (string name)
+ {
+ IntPtr name_ptr = IntPtr.Zero;
+ try {
+ IntPtr element = gst_element_factory_create (Handle,
+ name_ptr = GLib.Marshaller.StringToPtrGStrdup (name));
+ return element == IntPtr.Zero ? null : new Element (element);
+ } finally {
+ GLib.Marshaller.Free (name_ptr);
+ }
+ }
+#if false
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern bool gst_element_factory_can_sink_caps (IntPtr factory, IntPtr caps /*const GstCaps *caps*/);
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern bool gst_element_factory_can_src_caps (IntPtr factory, IntPtr caps /*const GstCaps *caps*/);
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr /*const GList**/ gst_element_factory_get_static_pad_templates (IntPtr factory);
+#endif
+
+#region Static Methods
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_element_factory_find (IntPtr name);
+
+ public static ElementFactory Find (string name)
+ {
+ IntPtr name_ptr = IntPtr.Zero;
+ try {
+ IntPtr factory = gst_element_factory_find (name_ptr = GLib.Marshaller.StringToPtrGStrdup (name));
+ return factory == IntPtr.Zero ? null : new ElementFactory (factory);
+ } finally {
+ GLib.Marshaller.Free (name_ptr);
+ }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_element_factory_make (IntPtr factoryname, IntPtr name);
+
+ public static Element TryMake (string factoryName, string name)
+ {
+ IntPtr factory_ptr = IntPtr.Zero;
+ IntPtr name_ptr = IntPtr.Zero;
+
+ try {
+ IntPtr element = gst_element_factory_make (
+ factory_ptr = GLib.Marshaller.StringToPtrGStrdup (factoryName),
+ name_ptr = GLib.Marshaller.StringToPtrGStrdup (name));
+ return element == IntPtr.Zero ? null : new Element (element);
+ } finally {
+ GLib.Marshaller.Free (factory_ptr);
+ GLib.Marshaller.Free (name_ptr);
+ }
+ }
+
+ public static Element Make (string factoryName, string name)
+ {
+ var elem = TryMake (factoryName, name);
+ if (elem == null) {
+ throw new ElementNotFoundException (factoryName);
+ }
+ return elem;
+ }
+
+ public static Element TryMakeFirstOf (string name, params string [] factoryNames)
+ {
+ foreach (string factoryName in factoryNames) {
+ var elem = Make (factoryName, name);
+ if (elem != null) {
+ return elem;
+ }
+ }
+
+ return null;
+ }
+
+ public static Element MakeFirstOf (string name, params string [] factoryNames)
+ {
+ var elem = TryMakeFirstOf (name, factoryNames);
+ if (elem == null) {
+ throw new ElementNotFoundException (factoryNames);
+ }
+ return elem;
+ }
+
+#endregion
+
+ }
+}
diff --git a/src/Backends/Banshee.GStreamer/GStreamer/ElementNotFoundException.cs b/src/Backends/Banshee.GStreamer/GStreamer/ElementNotFoundException.cs
new file mode 100644
index 0000000..995a708
--- /dev/null
+++ b/src/Backends/Banshee.GStreamer/GStreamer/ElementNotFoundException.cs
@@ -0,0 +1,51 @@
+//
+// ElementNotFoundException.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Aaron Bockover
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+namespace GStreamer
+{
+ public class ElementNotFoundException : Exception
+ {
+ private string [] element_names;
+
+ public ElementNotFoundException (string elementName)
+ : base ("GStreamer element could not be found: " + elementName)
+ {
+ element_names = new string [] { elementName };
+ }
+
+ public ElementNotFoundException (string [] elementNames)
+ : base ("GStreamer elements could not be found: " + String.Join (", ", elementNames))
+ {
+ element_names = elementNames;
+ }
+
+ public string [] ElementNames {
+ get { return element_names; }
+ }
+ }
+}
diff --git a/src/Backends/Banshee.GStreamer/GStreamer/Framework.cs b/src/Backends/Banshee.GStreamer/GStreamer/Framework.cs
new file mode 100644
index 0000000..5c3738e
--- /dev/null
+++ b/src/Backends/Banshee.GStreamer/GStreamer/Framework.cs
@@ -0,0 +1,130 @@
+//
+// Framework.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Aaron Bockover
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace GStreamer
+{
+ public static class Framework
+ {
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern void gst_init (ref int argc, ref IntPtr argv);
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern bool gst_init_check (ref int argc, ref IntPtr argv, IntPtr error);
+
+ public static void Init ()
+ {
+ IntPtr argv = IntPtr.Zero;
+ int argc = 0;
+ gst_init (ref argc, ref argv);
+ }
+
+ private static bool Init (string progname, ref string [] args, bool check)
+ {
+ bool res = false;
+ string[] progargs = new string[args.Length + 1];
+
+ progargs[0] = progname;
+ args.CopyTo (progargs, 1);
+
+ GLib.Argv argv = new GLib.Argv (progargs);
+ IntPtr buf = argv.Handle;
+ int argc = progargs.Length;
+
+ if (check) {
+ res = gst_init_check (ref argc, ref buf, IntPtr.Zero);
+ } else {
+ gst_init (ref argc, ref buf);
+ }
+
+ if (buf != argv.Handle) {
+ throw new Exception ("init returned new argv handle");
+ }
+
+ if (argc <= 1) {
+ args = new string[0];
+ } else {
+ progargs = argv.GetArgs (argc);
+ args = new string[argc - 1];
+ Array.Copy (progargs, 1, args, 0, argc - 1);
+ }
+
+ return res;
+ }
+
+ public static void Init (string progname, ref string [] args)
+ {
+ Init (progname, ref args, false);
+ }
+
+ public static bool InitCheck (string progname, ref string [] args)
+ {
+ return Init (progname, ref args, true);
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern void gst_deinit ();
+
+ public static void Shutdown ()
+ {
+ gst_deinit ();
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern bool gst_update_registry ();
+
+ public static bool UpdateRegistry ()
+ {
+ return gst_update_registry ();
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern void gst_version (out uint major, out uint minor, out uint micro, out uint nano);
+ public static FrameworkVersion Version {
+ get {
+ FrameworkVersion version = new FrameworkVersion ();
+ gst_version (out version.major, out version.minor, out version.micro, out version.nano);
+ return version;
+ }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")] private static extern bool gst_segtrap_is_enabled ();
+ [DllImport ("gstreamer-0.10.dll")] private static extern void gst_segtrap_set_enabled (bool enabled);
+ public static bool SegTrapEnabled {
+ get { return gst_segtrap_is_enabled (); }
+ set { gst_segtrap_set_enabled (value); }
+ }
+
+ [DllImport ("gstreamer-0.10.dll")] private static extern bool gst_registry_fork_is_enabled ();
+ [DllImport ("gstreamer-0.10.dll")] private static extern void gst_registry_fork_set_enabled (bool enabled);
+ public static bool RegistryForkEnabled {
+ get { return gst_registry_fork_is_enabled (); }
+ set { gst_registry_fork_set_enabled (value); }
+ }
+ }
+}
diff --git a/src/Backends/Banshee.GStreamer/GStreamer/FrameworkVersion.cs b/src/Backends/Banshee.GStreamer/GStreamer/FrameworkVersion.cs
new file mode 100644
index 0000000..0aafc88
--- /dev/null
+++ b/src/Backends/Banshee.GStreamer/GStreamer/FrameworkVersion.cs
@@ -0,0 +1,60 @@
+//
+// FrameworkVersion.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Aaron Bockover
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+namespace GStreamer
+{
+ public struct FrameworkVersion
+ {
+ public override string ToString ()
+ {
+ return nano > 0
+ ? String.Format ("GStreamer {0}.{1}.{2}.{3}", major, minor, micro, nano)
+ : String.Format ("GStreamer {0}.{1}.{2}", major, minor, micro);
+ }
+
+ internal uint major;
+ public uint Major {
+ get { return major; }
+ }
+
+ internal uint minor;
+ public uint Minor {
+ get { return minor; }
+ }
+
+ internal uint micro;
+ public uint Micro {
+ get { return micro; }
+ }
+
+ internal uint nano;
+ public uint Nano {
+ get { return nano; }
+ }
+ }
+}
diff --git a/src/Backends/Banshee.GStreamer/GStreamer/Object.cs b/src/Backends/Banshee.GStreamer/GStreamer/Object.cs
new file mode 100644
index 0000000..4e5bcd9
--- /dev/null
+++ b/src/Backends/Banshee.GStreamer/GStreamer/Object.cs
@@ -0,0 +1,66 @@
+//
+// Object.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Aaron Bockover
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace GStreamer
+{
+ public class Object : GLib.Object
+ {
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_object_get_type ();
+
+ public static new GLib.GType GType {
+ get { return new GLib.GType (gst_object_get_type ()); }
+ }
+
+ public Object (IntPtr raw) : base (raw)
+ {
+ }
+
+ public Object () : base (IntPtr.Zero)
+ {
+ CreateNativeObject ();
+ }
+
+ protected void CreateNativeObject ()
+ {
+ CreateNativeObject (new string[0], new GLib.Value[0]);
+ }
+
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_object_get_name (IntPtr obj);
+ public string Name {
+ get { return GLib.Marshaller.Utf8PtrToString (gst_object_get_name (Handle)); }
+ }
+
+ public override string ToString ()
+ {
+ return Name;
+ }
+ }
+}
diff --git a/src/Backends/Banshee.GStreamer/GStreamer/PluginFeature.cs b/src/Backends/Banshee.GStreamer/GStreamer/PluginFeature.cs
new file mode 100644
index 0000000..6325a06
--- /dev/null
+++ b/src/Backends/Banshee.GStreamer/GStreamer/PluginFeature.cs
@@ -0,0 +1,50 @@
+//
+// PluginFeature.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Aaron Bockover
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace GStreamer
+{
+ public class PluginFeature : Object
+ {
+ [DllImport ("gstreamer-0.10.dll")]
+ private static extern IntPtr gst_plugin_feature_get_type ();
+
+ public static new GLib.GType GType {
+ get { return new GLib.GType (gst_plugin_feature_get_type ()); }
+ }
+
+ public PluginFeature (IntPtr raw) : base (raw)
+ {
+ }
+
+ public PluginFeature () : base (IntPtr.Zero)
+ {
+ CreateNativeObject ();
+ }
+ }
+}
diff --git a/src/Backends/Banshee.GStreamer/Makefile.am b/src/Backends/Banshee.GStreamer/Makefile.am
index 238aa4d..59f35b6 100644
--- a/src/Backends/Banshee.GStreamer/Makefile.am
+++ b/src/Backends/Banshee.GStreamer/Makefile.am
@@ -2,15 +2,28 @@ ASSEMBLY = Banshee.GStreamer
TARGET = library
LINK = $(REF_BACKEND_GSTREAMER)
SOURCES = \
+ Banshee.GStreamer.Player/AudioSink.cs \
+ Banshee.GStreamer.Player/Equalizer.cs \
+ Banshee.GStreamer.Player/PlayerEngine.cs \
Banshee.GStreamer/AudioCdRipper.cs \
Banshee.GStreamer/BpmDetector.cs \
Banshee.GStreamer/GstErrors.cs \
Banshee.GStreamer/PlayerEngine.cs \
Banshee.GStreamer/Service.cs \
Banshee.GStreamer/TagList.cs \
- Banshee.GStreamer/Transcoder.cs
+ Banshee.GStreamer/Transcoder.cs \
+ GStreamer/Bin.cs \
+ GStreamer/Element.cs \
+ GStreamer/ElementException.cs \
+ GStreamer/ElementFactory.cs \
+ GStreamer/ElementNotFoundException.cs \
+ GStreamer/Framework.cs \
+ GStreamer/FrameworkVersion.cs \
+ GStreamer/Object.cs \
+ GStreamer/PluginFeature.cs
RESOURCES = Banshee.GStreamer.addin.xml
INSTALL_DIR = $(BACKENDS_INSTALL_DIR)
include $(top_srcdir)/build/build.mk
+module_SCRIPTS += Banshee.GStreamer.dll.config
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]