[Banshee-List] Vlc MediaEngine 0.0.1



While working on a different plugin for Banshee I became frustrated with the GStreamer backend (the problem is in libmms in particular but I was tired of fussing with it), and my inability to debug it, I was also fed up with trying to make the Xine backend bend to my will; So, in true OSS fashion I decided to reinvent the wheel (somewhat). Therefore I present to you banshee-engine-vlc ( http://tophat.atxconsulting.com/~tjfontaine/banshee-engine-vlc-0.0.1.tar.bz2) This MediaEngine plugin uses the newer libvlc api available since 0.8.5 (i.e. not the same api jlj used for the sharpmusique stuff), the engine was put together in about 3 days, so caveat emptor. I've tested with 0.11.3 on Feisty, and SVN trunk things seem to run smoothly, it *should* be able to be a cdda backend but I don't listen to cds so I haven't really tried to work with that. Below you'll find the README.

I'd appreciate any feedback/flames. Thanks

tjfontaine

--

Vlc Banshee MediaEngine Plugin

-----------------------------------------

This plugin requires the libvlc api which was made available starting with
version 0.8.5, I tested with 0.8.6. The filenaming scheme is such that I could
build my test.cs file without including the Banshee stuff, so the Vlc*.cs files
are largely standalone and could be used elsewhere in applications that want to
make use of Vlc in managed code.

Caveats:
Different flavors distribute libvlc in different forms, and my autofoo is not
such that I felt like detecting such things at build time, so if you experience
a segfault on startup it's likely you need to futz with the dllmap'ing and make
sure you actually have libvlc installed.

At the time of this writing (2007-01-10) the engine worked without issue with
other backends in version 0.11.3, however SVN Trunk of banshee and B.ME.Vlc had
a slight runtime conflict with the builtin GStreamer backend and can be solved
with the following diff:

Index: src/Engines/Banshee.MediaEngine.GStreamer/GstPlayerEngine.cs
===================================================================
--- src/Engines/Banshee.MediaEngine.GStreamer/GstPlayerEngine.cs        (revision 1966)
+++ src/Engines/Banshee.MediaEngine.GStreamer/GstPlayerEngine.cs        (working copy)
@@ -223,7 +223,8 @@
                 GstResourceError domain_code = (GstResourceError)code;
                 switch(domain_code) {
                     case GstResourceError.NotFound:
-                        CurrentTrack.PlaybackError = TrackPlaybackError.ResourceNotFound;
+                        if(CurrentTrack != null)
+                            CurrentTrack.PlaybackError = TrackPlaybackError.ResourceNotFound;
                         break;
                     default:
                         break;
@@ -234,7 +235,8 @@
                 GstStreamError domain_code = (GstStreamError)code;
                 switch(domain_code) {
                     case GstStreamError.CodecNotFound:
-                        CurrentTrack.PlaybackError = TrackPlaybackError.CodecNotFound;
+                        if(CurrentTrack != null)
+                            CurrentTrack.PlaybackError = TrackPlaybackError.CodecNotFound;
                         break;
                     default:
                         break;
@@ -245,7 +247,8 @@
                 GstCoreError domain_code = (GstCoreError)code;
                 switch(domain_code) {
                     case GstCoreError.MissingPlugin:
-                        CurrentTrack.PlaybackError = TrackPlaybackError.CodecNotFound;
+                        if(CurrentTrack != null)
+                            CurrentTrack.PlaybackError = TrackPlaybackError.CodecNotFound;
                         break;
                     default:



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]