LinuxMCE Forums

Archive => Archive => DCE Router Developers => Topic started by: archived on August 14, 2006, 03:23:18 pm

Title: implement new audio plugin
Post by: archived on August 14, 2006, 03:23:18 pm
Hi,

  What would be the difficulty in implementing a plugin for a commandline audio player ie: aplayer or mplayer?  Could it be done with the gsd or would it need to be written in C++ with the dce framework?  Or would it be something that could be done by modifing the slimserver plugin?  I ask as I'm wanting to use my pluto cores' internal soundcard as an audio source for whole house zoned audio (wired in ceiling speakers running to central amps and in wall volume controls)
Any help or pointers would be great.  I'm good with perl and have looked at ruby and they seem not too different.  My C++ skills on the otherhand aren't too good

Thanks,
Jason
Title: implement new audio plugin
Post by: archived on August 14, 2006, 04:52:07 pm
If you just want a DCE Device that can respond to the 'play media' command, that's trivial.  You could do it in GSD (ie Ruby).

However, if you want it to be integrated so follow-me works, floorplans, and it shares the same catalog of media, then you need to create a plugin which implements the 'MediaHandler' class and registers with Media_Plugin.  The plugin must be in C++ since it's loaded into the router's memory space.  It's not complicated for a C++ guy; DCEGen does 90% of the work automatically and builds the class and everything on it's own.

The actual media player itself could still be in Ruby, but without that media plugin you won't have the advanced features.
Title: implement new audio plugin
Post by: archived on August 22, 2006, 09:44:42 pm
Thanks,  Looks like I'm wanting to write a plugin.  Can you point me to any docs, tutorials or examples?  I'm not sure I fully understand the architecture.  I see in the source that a lot of the devices have both a plugin and a device.  Does the plugin comunicate with the device which in turn controls whatever hardware or software?  I'm going to write the plugin to support mplayer as it supports Jack natively which will allow for zone sync and mixing and matching of audio throughout the house.  This also means I'll have to come up with some way of controlling Jack (anouther plugin I'm sure :) ) Once I add a second zone to the house.  I think I can get something usefull running in short order given enough docs.

Thanks again,
Jason
Title: implement new audio plugin
Post by: archived on August 24, 2006, 12:26:39 pm
Hi to all,

back from vacation (at last)...  

I've worked a bit on this idea of having multiple soundcards (or using multichannel card as separate stereo channels) and I decided that IMHO best way is to have xine audio only device (since xine player is supported under pluto, this could happen with only few additional parameters).

I've done some initial test and it worked ok - I got into trouble when such player would be integrated with xine plugin (cause it didn't now how to treat it) - so it could become audio player for certain audio zone or room and be visible and controlable from Orbiters....

I've described my changes and initial code in :

http://plutohome.com/support/mantis/view.php?id=1515

After that, Pluto guy informed me that Xine player will be ceveloped in this way, so xine player will be able to be used as audio only device so one could run multiple instances... Since then I've waited for new release and right now I'd be happy if Pluto guys could give some more info on this development. As I said, xine player code is easy to modifiy, the problem lies in media plugin and proper handling of 3rd party audio players....

I'm also interested in your ideas reagarding mplayer&Jack. My idea for quite some time is that decent whole house audio mixing/routing could be implemented in linux software... Can you post more info ?

HTH,

regards,

Rob.
Title: implement new audio plugin
Post by: archived on August 24, 2006, 03:12:38 pm
Hi,

  No prob with more info.  I'd love to get something moving on this.  I recently installed my first audio zone (speakers, volume and wiring) so I've begun to start implementing the software.  I've read your previous posts about this but couldn't do any testing at the time.  Anyway what I'm looking at is:  mplayer has native jack support, so no prob there.  It's just a matter of writing a plugin for mplayer with support for connectiong to whatever jack connections have been setup for each zone or adding an additional connection to an existing mplayer instance to have synced music in multiple zones.  Currently I'm using an sb live so I'll max out at 2 zones (4 mono channels, 2 stereo).  Eventually I'm looking at maudio hardware to handle all 8 planned zones.  Mplayer and Jack are already capable of this, so all thats needed would be a plugin for mplayer, and an admin gui to configure jack.  I'm not too good with C++, but with some books, google and some decent dce device howto/tutorial/documentation I'm more than willing to give this a try.  I think that about sums it up.  If you have any more questions or ideas/suggestions let me know.

Thanks,
Jason
Title: implement new audio plugin
Post by: archived on August 25, 2006, 04:34:57 pm
Quote from: "tinia"
Since then I've waited for new release and right now I'd be happy if Pluto guys could give some more info on this development.


:( I am sorry to say this, but this functionality is still under development and 2.0.40 release doesn't include audio-only capable Xine_Player.
Title: implement new audio plugin
Post by: archived on September 27, 2006, 10:18:07 pm
Hello all,
  It's been over a month and no helpfull responses to my plight :(  Perhapse something a little easier then...  A plugin for JACK.  All I need it to do is start jackd with some commandline options.  I'll even be ok with hardcoded options for the first iteration.  Just need to start and make sure it's always running, and I'll worry about configureing later.  Would like to write this in C++ as a plugin, but if there is an easier/better/more appropriate way to do it then let me know.  Otherwise writing a plugin in C++ documentation would be really helpfull.  Even more helpfull would be a sort of hello world plugin tutorial.  A step by step document that walks a new plugin developer through writing a simple plugin that prints 'hello world' somewhere and logs it to the log file.  Just an idea

Thanks,
Jason
Title: implement new audio plugin
Post by: archived on September 28, 2006, 08:32:51 am
Hi,

I'm sorry for your feeelings. This is something we're all going through...

I've done changes to Xine player to become audio player twice. I also thought of doing it with Alsaplayer, which also wouldn't be too hard (only downside is that alsaplayer is close to being dead project). My Xine_Audio_Player even worked ok in a proof of concept stage (I remember that slight changes in volume control were on to do list).

The problem lies somewhere else. Even if you write 3rd party audio player, the problem is that currently Pluto doesn't support 3rd party players and it won't appear on Orbiters, so you cannot control it. Dirty workaround I did was to create dummy new MD and then use it's Xine Player ID to run my player. But since MDs are now detected for being in on/off state I'm not sure if this still works... Other way would be to somehow create dummy squeezebox player (they are automatically detected and get new audio room immediately)....

This is what I know about this situation. If you decide to write plugin, I'd be thrilled to read docs about it...

Regards,

Rob.
Title: implement new audio plugin
Post by: archived on September 29, 2006, 06:45:19 pm
OK, so I'm trying to create a device template for Jack.  Can anyone help out?  I've read through the docs but still don't really have any idea.  I want to run this:
  /usr/bin/jackd -R -dalsa -djack40 -r48000 -p1024 -n2 -P -o4
with '-djack40' being configurable in the device settings.  So far I've created a template under 'Sound Cards < Peripherals' and added '#74 Alsa Output Device(string)' under data with jack40 as the default value.  How do I link the two together?  Is this something that can only be done with GSD or C++?  Or can I do it in the command line option with a variable?  If someone could point me in a direction that would be helpfull.

Thanks,
Jason
Title: implement new audio plugin
Post by: archived on September 29, 2006, 10:56:35 pm
Quote from: "jspeckman"
OK, so I'm trying to create a device template for Jack.  Can anyone help out?  I've read through the docs but still don't really have any idea.  I want to run this:
  /usr/bin/jackd -R -dalsa -djack40 -r48000 -p1024 -n2 -P -o4
with '-djack40' being configurable in the device settings.  So far I've created a template under 'Sound Cards < Peripherals' and added '#74 Alsa Output Device(string)' under data with jack40 as the default value.  How do I link the two together?  Is this something that can only be done with GSD or C++?  Or can I do it in the command line option with a variable?  If someone could point me in a direction that would be helpfull.

Thanks,
Jason

If you just need to run some binary - there is command line entry where binary is specified. But Pluto adds several parameters to that (like ID and dcerouter) - see Xine_Player template for example...

Also it will run it under screen... But there is nothing preventing you from writing script, that will read those data from database and run jackd. You could also do this in c++ (motion wrapper is example of DCE device that first reads parameters from database and then runs another binary 'motion') . Maybe it is close to what you need...

If you need to act dinamically upon events then you have to connect to DCERouter as proper device and communicate with it....

I'm interested in your work with jackd. I'm still thinking about whole house audio switching/mixing app only in software, but I'm not sure if jack is the right app for that... Although Pluto has many features in this direction...

HTH,

regards,

Rob.
Title: implement new audio plugin
Post by: archived on September 30, 2006, 04:12:04 am
tinia,
  Thanks for the pointer to the motion_wrapper.  I think that's close to what I've been looking for.  I post more when I either have something running or run into more problems :).

Jason
Title: implement new audio plugin
Post by: archived on October 12, 2006, 06:01:32 am
Ok, run into a problem.  Here's what I get when I try to build the code that DCEGen creates without any modifications just to test:

dcerouter_3516:/usr/src/Pluto/trunk/src/Jack_Wrapper$ make
Computing dependencies for ../Gen_Devices/Jack_WrapperBase.cpp done
Computing dependencies for Jack_Wrapper.cpp done
Computing dependencies for Main.cpp done
type 'make bin', 'make so' or 'make all'
dcerouter_3516:/usr/src/Pluto/trunk/src/Jack_Wrapper$ make all
g++ -c -I.. -I../DCE -I/usr/include/mysql -D_DEVEL_DEFINES  -Wall -fPIC -ggdb3  Main.cpp -o Main.o
In file included from Jack_Wrapper.h:7,
                 from Main.cpp:2:
../Gen_Devices/Jack_WrapperBase.h: In constructor `
   DCE::Jack_Wrapper_Event::Jack_Wrapper_Event(int, std::basic_string<char,
   std::char_traits<char>, std::allocator<char> >, bool)':
../Gen_Devices/Jack_WrapperBase.h:35: error: `DEVICETEMPLATE_Jack_Wrapper_CONST
   ' undeclared (first use this function)
../Gen_Devices/Jack_WrapperBase.h:35: error: (Each undeclared identifier is
   reported only once for each function it appears in.)
../Gen_Devices/Jack_WrapperBase.h: In member function `bool
   DCE::Jack_Wrapper_Data::Get_Realtime_Priority()':
../Gen_Devices/Jack_WrapperBase.h:94: error: `
   DEVICEDATA_Realtime_Priority_CONST' undeclared (first use this function)
../Gen_Devices/Jack_WrapperBase.h: In member function `int
   DCE::Jack_Wrapper_Data::Get_Output_Channels()':
../Gen_Devices/Jack_WrapperBase.h:102: error: `DEVICEDATA_Output_Channels_CONST
   ' undeclared (first use this function)
make: *** [Main.o] Error 1


What am I missing or doing wrong?

Thanks,
Jason
Title: implement new audio plugin
Post by: archived on October 12, 2006, 07:55:20 am
Hi,

I did those things long time ago, so I'm writting from my memory. I think I had similar problems. I think the problem is that your added template is not yet in regular Pluto tree from which code is generated.  So also coresponding entries in other files are missing (like CONST_....)

I don't exactly remember how this was fixed, but anyway, maybe there is now better solution to this. One I can remember is that you check in your template into regular Pluto distro and then svn check in and you'll have new proper files - but will also need to recompile dependencies before compiling your work....

I'd contact support and please post your procedure on Wiki, so others will benefit...

HTH,

Rob.
Title: implement new audio plugin
Post by: archived on October 19, 2006, 04:39:48 pm
Just an update, I sent off a message to support last week, but have not heard anything yet.

Jason
Title: implement new audio plugin
Post by: archived on October 25, 2006, 03:07:02 am
Jason,
Sorry for the delayed reply. The reason of build failure is the following: you have created new Template, but didn't regenerated the headers that define constants for other parts of system. Please do the following:

1) build the program Pluto/trunk/src/sql2cpp _or_ install the package pluto-sql2cpp

2) cd Pluto/trunk/src

3) backup current contents of the generated headers:
cp -r pluto_main pluto_main.backup

4) cd sql2cpp  (note that it must contain the sources of sql2cpp from SVN - it will require template files for operation)

5) run ./sql2cpp _or_ /usr/pluto/bin/sql2cpp -- depending on way in step-1
this will regenerate required headers with constants using current contents of `pluto_main` database (which I assume contain also your changes)

6) try again to build your Jack_Wrapper application

if you are interested in changes in generated headers, you may compare pluto_main and pluto_main.backup folders contents

Kirill
Title: implement new audio plugin
Post by: archived on October 25, 2006, 03:16:04 am
Important: please note that described procedure is suitable only for the local building of packages: these new Templates won't become the part of official Pluto templates set. Additionally you may start experiencing problems after some time when the IDs of templates in official Pluto set start clashing with IDs of your 'locally added' templates.

I would recommend, after doing test builds, checkin new added Templates into the Pluto repository using sqlCVS - then during nightly maintenance, the corresponding headers will be regenerated and after you will 'svn up pluto_main' - your copy of headers will contain the required constants with proper IDs.

Kirill
Title: implement new audio plugin
Post by: archived on October 25, 2006, 04:06:59 am
OK, sounds good so the next question is how do I use sqlCVS to check in the new templates?

Thanks,
Jason
Title: implement new audio plugin
Post by: archived on October 26, 2006, 11:23:06 pm
Open the Pluto Admin Website. At the right under the "Advanced" menu there will be item "sqlCVS", with various subitems. I recommend you to do the "diff" first to inspect changes, and then do the "checkin".

Note-1: since you are editing/adding device templates, you should select only tables under "dce" category

Note-2: without providing login/password the changes will be commited as 'anonymous' and will not go into mainstream w/o admins approval. As far as I know, you can use your plutohome.com site login/password for doing into sqlCVS. I am not 100% sure, so please post here if you will experience any problems.

Regards, Kirill
Title: implement new audio plugin
Post by: archived on November 01, 2006, 02:50:03 am
Kirill,

  I followed the procedure you posted, and recieved a sucsess for both opperations.  So I'm guessing it worked.  I went ahead and used my plutohome username and password for both the diff and checkin.  Looks like it worked from my end.  Let me know when the template is available so I can start coding.

Thanks for your help,
Jason
Title: implement new audio plugin
Post by: archived on November 02, 2006, 01:42:54 am
Jason,

I am not sure that these are the items you've submitted (can't identify it at the moment), here are the new additions during last ~24 hours:

DeviceTemplate.Description:
"15-2116"
"15-2116RadioShack"
"Hauppauge A415-HPG"

If these are correct items, then the following defines can be used (update from SVN to fetch the updated sources):
pluto_main/Define_DeviceTemplate.h

#define DEVICETEMPLATE_152116_CONST 1842
#define DEVICETEMPLATE_152116RadioShack_CONST 1843
#define DEVICETEMPLATE_Hauppauge_A415HPG_CONST 1844

Before doing any coding, please also update the "DCE" set of tables using the sqlCVS (similarly to diff and commit - via corresponding items of web admin)

Please post here if you will have any problems.
Title: implement new audio plugin
Post by: archived on November 02, 2006, 08:27:41 pm
Hi again,
  None of those templates are mine, so I guess the checkin did not work.  I'll give it a try again.  Is it normal for the process to take awhile before the browser window prints out a sucsess line?

Thanks,
Jason
Title: implement new audio plugin
Post by: archived on November 02, 2006, 08:41:10 pm
Yes, it can take some time. You can speed up it by selecting for commit only tables that contain modifications/changes.
Title: implement new audio plugin
Post by: archived on November 03, 2006, 12:13:25 am
Just tried again.  did update, diff and checkin.  All stated sucsessfull.  Let me know what things look like on your side.

Thanks,
Jason
Title: implement new audio plugin
Post by: archived on November 03, 2006, 03:14:20 am
Yes, it seems everything is OK, the following definitions were added to the corresponding header:

#define DEVICETEMPLATE_DS9490R_CONST 1845
#define DEVICETEMPLATE_Jack_Wrapper_CONST 1846
Title: implement new audio plugin
Post by: archived on November 03, 2006, 03:58:34 pm
Great.  Thanks.
No my next question :)  Do I just do an svn update on trunk to get the new header, or is this in the release version?  I've been doing development out of trunk.

Thanks again,
Jason
Title: implement new audio plugin
Post by: archived on November 03, 2006, 04:05:16 pm
Jason,

This is the trunk so you should just do svn up and it will fetch it. Here you can see it is already updated (svn trunk via web):
http://svn.plutohome.com/pluto/trunk/src/pluto_main/Define_DeviceTemplate.h

Regards, Kirill
Title: implement new audio plugin
Post by: archived on November 06, 2006, 04:11:56 am
I updated my svn and tried to build, but now I have a new problem.  I get this message with anything I try to build:

Computing dependencies for SerializeClass.cpp/bin/sh: line 1: -mkr_t_compile_defines-: No such file or directory
/bin/sh: line 1: SerializeClass.d.9702: No such file or directory
 done
g++ -c -I./ -I../../ -I../ -I../DCE/ -I../../DCE -I../VIPShared/ -I../../VIPShared -I/usr/include/mysql -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE <-mkr_t_compile_defines-> -DUSE_LZO_DATAGRID -Wall -g -ggdb3 -D_GNU_SOURCE SerializeClass.cpp -o SerializeClass.o
/bin/sh: line 1: -mkr_t_compile_defines-: No such file or directory
make: *** [SerializeClass.o] Error 1

At the top of all the Makefile's is this line: SNR_CPPFLAGS ?= <-mkr_t_compile_defines->

Is there a new step needed to build, or is something broke?

Thanks,
Jason
Title: implement new audio plugin
Post by: archived on November 06, 2006, 07:50:39 am
Quote from: "jspeckman"
I updated my svn and tried to build, but now I have a new problem.  I get this message with anything I try to build:

Computing dependencies for SerializeClass.cpp/bin/sh: line 1: -mkr_t_compile_defines-: No such file or directory
/bin/sh: line 1: SerializeClass.d.9702: No such file or directory
 done
g++ -c -I./ -I../../ -I../ -I../DCE/ -I../../DCE -I../VIPShared/ -I../../VIPShared -I/usr/include/mysql -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE <-mkr_t_compile_defines-> -DUSE_LZO_DATAGRID -Wall -g -ggdb3 -D_GNU_SOURCE SerializeClass.cpp -o SerializeClass.o
/bin/sh: line 1: -mkr_t_compile_defines-: No such file or directory
make: *** [SerializeClass.o] Error 1

At the top of all the Makefile's is this line: SNR_CPPFLAGS ?= <-mkr_t_compile_defines->

Is there a new step needed to build, or is something broke?

Thanks,
Jason


Hi,

see note on the bottom of page :

http://plutohome.com/wiki/index.php/How_to_compile_Motion_Wrapper

HTH,

regards,

Rob.
Title: implement new audio plugin
Post by: archived on November 16, 2006, 04:47:06 pm
Just thought I'd leave a status update.  So far I have a plugin that compiles clean but seg faults on startup.  Strace was less than helpfull at revieling the cause of the problem, so it may be a while before I have a working plugin.

Jason
Title: implement new audio plugin
Post by: archived on November 16, 2006, 04:58:20 pm
Jason,

If you are mixing 'current SVN' and some stable version files than chances are you will get crashes. Can you please post here the strace or better run the application under gdb and put a backtrace. Maybe I will be able to make a quick fix suggestion.

Regards, Kirill
Title: implement new audio plugin
Post by: archived on November 17, 2006, 05:03:02 am
Thanks,
  Seems it was my own fault, as I was mixing current source with a running release.  I pulled down the release source tree and rebuilt.  Seems to be running fine.  The next step is to actually run my added function and see what happens.

Thanks again for the help,
Jason
Title: implement new audio plugin
Post by: archived on November 18, 2006, 04:24:06 pm
Good news, my plugin is working.  I sucsessfully tries to spawn off the jack server.  Now for the bad news,  jack does not work.  Jack needs a library in the libasound2-plugins package.  This would not be a big deal except that libasound2 is at a higher rev than libasound2-plugins can use.  libasound2-plugins is at version 1.0.8-3  and libasound2 is at version 1.0.12-1pluto1  I would be more than comfortable building a new libasound2-plugins package, but I am unable to find a source package for this version of libasound2 in the pluto repositories.  I am also unable to find this version in the regular debian repositories.  Could someone from plutohome either point me to the place to look for a source package or just update the libasound2-plugins package?

Thanks,
Jason
Title: implement new audio plugin
Post by: archived on November 21, 2006, 02:58:44 pm
I may have solved my own problem.  I'll let everyone know once I've done a little more testing.

Jason
Title: implement new audio plugin
Post by: archived on November 22, 2006, 12:46:10 am
Jason,

Well done, by the sounds of it!

What is going to be the parent device for your jackd device? Will it be the MD or Core or an Orbiter like Xine_player etc? Or do you need both?

Your original plan was to have distributed audio from a single source, is that right?

Once you get your device (plugin) working how will you use it exactly?

Regards
Darren
Title: implement new audio plugin
Post by: archived on November 22, 2006, 04:55:19 pm
Thanks,

  The parent device will be the core/dcerouter.  This piece of the puzzles' only job is to start jackd.  Yes, my plan is to distribute audio from the core to multiple zones throughout the house.  Jackd is the audio router that allows for this to happen with synced audio in multiple zones.  When the plugin is done, there will be options for number of audio channels, what alsa device to use and whether to run with realtime priority (depending on kernel support).  If anyone wants more jack options added, let me know.  The next step in the plan is to either write a plugin for mplayer or write a new audio plugin that uses the mplayer library.  The mplayer plugin should be controllable from an orbiter just like any other media player.  Currently the jack plugin is working ie spawning off a jackd process (no variable settings yet), but jackd itself is having difficulty running in multichannel mode on my core.  I now believe this is a config issue and not a missing library issue.  I've fixed the problem on another machine (rhel4) and hopefully I can get my core working in a similar way.  I'm developing this with an SBLive 5.1 card which presents some obstacles for jackd to use more than two channels.  It is my understanding that an RME or M-Audio card would not have a problem.  When I have a working solution I'll try to incorporate it into the plugin (if it's config related)  But the first iteration may require some file editing and/or software install.

Thanks again.
Jason
Title: implement new audio plugin
Post by: archived on January 11, 2007, 04:18:24 am
Finally an update.
  After a good while of not looking at the code, I now have a working plugin for jack.  Jack is correctly spawned and tested to be working with the six channels on my audio card.  The plugin currently only has three parameters setable from the plutohome admin interface.  I can add more later, but first I'd like some kind folks who know c++ better than me (which is just about anyone)  to give the code a look over and maybe do some clean up or rearranging.  I borrowed the thread portion from the motion wrapper and added all the parameter setting functions myself.  The only compiler complaints I get are about unused variables.  Just let me know where I can send it.  Maybe next week I can start working on a media player plugin to use the jack server.
Title: implement new audio plugin
Post by: archived on January 11, 2007, 11:50:23 pm
Quote from: "jspeckman"
Finally an update.
  After a good while of not looking at the code, I now have a working plugin for jack.  Jack is correctly spawned and tested to be working with the six channels on my audio card.  The plugin currently only has three parameters setable from the plutohome admin interface.  I can add more later, but first I'd like some kind folks who know c++ better than me (which is just about anyone)  to give the code a look over and maybe do some clean up or rearranging.  I borrowed the thread portion from the motion wrapper and added all the parameter setting functions myself.  The only compiler complaints I get are about unused variables.  Just let me know where I can send it.  Maybe next week I can start working on a media player plugin to use the jack server.

Hi,

I'm really interested in your work and would kindly ask if you can open page on Wiki, where we can follow you. I was doing something similar with Xine - Audio only player that outputs only to certain channel on multichannel card (like whole house audio source with 4 stereo channels on Core) - but got stuck with Pluto not supporting any 3rd party players other than squeezeboxes and built in Xine players, so I'm afraid that similar problem waits for you also...

How do you plan to add support for your player under Pluto (so Pluto will be able to recognize it, assign room to it, etc..)?  At the time I did this I used simple workaround - created dummy MD, so all media scenarios are created and then steal Xine player ID to run my Audio-only xine. Maybe this still works....

HTH,

regards,

Rob.
Title: implement new audio plugin
Post by: archived on January 12, 2007, 12:51:21 am
tiana,
  Thanks for your interest.  Let me know where the best place to start putting pages would be and I'll get started.  I plan on either writing a wrapper for mplayer, or if that is not feasible I'll write something from scratch using the mplayer library and the jack library.  I envision having a device instance for each zone much like adding squeezeboxes.  I think this is doable unless I'm missing something in my understanding of how things work in pluto.  If I'm correct, my device will work with pluto's media infrastructure and just happen to run on the core rather than on a remote device (though in theory jacks architecture allows for that sort of thing).  Setting up zones is simply a matter of assigning jack output channels to an arbitrary zone number/room.   The back end would then connect the output of the mplayer plugin to whatever jack channels are assigned to where you want to here music, including being able to connect all channels to have the same thing playing throughout the house in sync.  That's the plan.

Any help, ideas and or testing would be greatly appreciated.

Thanks,
Jason
Title: implement new audio plugin
Post by: archived on January 12, 2007, 11:01:34 am
Quote from: "jspeckman"
tiana,
  Thanks for your interest.  Let me know where the best place to start putting pages would be and I'll get started.  I plan on either writing a wrapper for mplayer, or if that is not feasible I'll write something from scratch using the mplayer library and the jack library.  I envision having a device instance for each zone much like adding squeezeboxes.  I think this is doable unless I'm missing something in my understanding of how things work in pluto.  If I'm correct, my device will work with pluto's media infrastructure and just happen to run on the core rather than on a remote device (though in theory jacks architecture allows for that sort of thing).  Setting up zones is simply a matter of assigning jack output channels to an arbitrary zone number/room.   The back end would then connect the output of the mplayer plugin to whatever jack channels are assigned to where you want to here music, including being able to connect all channels to have the same thing playing throughout the house in sync.  That's the plan.

Any help, ideas and or testing would be greatly appreciated.

Thanks,
Jason


Hi,

I see that you're doing something similar that I also tried to. Also you're dealing with problems of distributing audio to several zones. That's exactly what my idea is also.

But I more think in a way to add Audio only functionality ot existing Xine player (since a lot of efforts will be put into its development).

AFAIK, Pluto guys (specially Kiril) are working on one to many sync and streaming feature of Xine Pluto wrapper, so I guess this is similar thing, except you do it with Jack (unfortunately I don't know it well - but have always thought about having one audio switcher/mixer for whole house audio implemented in SW and I think your work is pretty close to that).

I hope that I'll be able to work further with Kiril on this feature after 0.43 release.

But for both (me and you), problem of support for 3rd party media players is major pain - it's currently non existant and on lower priority on task lists. So maybe we can join our forces and try to do something useful....

Regards,

Rob.