From: Ed W. <li...@wi...> - 2004-12-29 22:39:56
|
Hi folks, congrats on getting v1.0 out! I have written what I hope is the code for a jack output driver. Can someone please help me out with a quickstart guide on using automake, etc so that I can have a bash at compiling the darn thing... (It's obviously called "audio_jack_out.c" and it's sitting in src/audio_out, so what do I do next...?) Thanks Ed W |
From: Brian J. T. <bj...@co...> - 2004-12-30 01:00:49
|
Ed Wildgoose wrote: > Hi folks, congrats on getting v1.0 out! > > I have written what I hope is the code for a jack output driver. Can > someone please help me out with a quickstart guide on using automake, > etc so that I can have a bash at compiling the darn thing... > > (It's obviously called "audio_jack_out.c" and it's sitting in > src/audio_out, so what do I do next...?) hi ed, here's what you need to get it integrated properly: 1) a check in configure.ac to test for the presence of jack on the system. on my system, jack uses pkg-config, so using the PKG_CHECK_MODULES() macro, along with an AM_CONDITIONAL(), should be enough: PKG_CHECK_MODULES(JACK, jack, have_jack="yes", have_jack="no") AM_CONDITIONAL(HAVE_JACK, [test "x$have_jack" = "xyes"]) you might want to do some extra processing to add --enable-jack and/or --disable-jack option to configure. i'm sure there are existing examples in configure.ac. 2) rules in src/audio_out/Makefile.am to conditionally compile the jack plugin if configure found that jack is present on the system. something like this should work: first, add $(JACK_CFLAGS) to the "AM_CFLAGS =" line at the top. then add a block to set $(jack_module) if it's available: if HAVE_JACK jack_module = xineplug_ao_out_jack.la endif then to the "lib_LTLIBRARIES =" section, add $(jack_module) to the list. if you add it to the bottom, be sure to add a "\" to the end of the previous line so it's all treated as one line. then add the rules to make the shared lib: xineplug_ao_out_jack_la_SOURCES = audio_jack_out.c xineplug_ao_out_jack_la_LIBADD = $(JACK_LIBS) $(XINE_LIB) xineplug_ao_out_jack_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@ then re-run autogen.sh and configure, and carefully watch the output to see if jack is found on the system. if not, perhaps i left something out. otherwise, run make and be sure it builds your plugin and links it to the jack libraries properly. that should do it, though i may have left something out. and now i'll stop procrastinating and clean my apartment ^_~. -brian |
From: Michael R. <mr...@us...> - 2004-12-30 14:13:13
|
Hi Ed, > Hi folks, congrats on getting v1.0 out! > > I have written what I hope is the code for a jack output driver. Can > someone please help me out with a quickstart guide on using automake, > etc so that I can have a bash at compiling the darn thing... > > (It's obviously called "audio_jack_out.c" and it's sitting in > src/audio_out, so what do I do next...?) Nice work! Please send us patches as soon as you consider it more or less working. We can help you with any remaining build system issues. Michael -- /* Fuck. The f-word is here so you can grep for it :-) */ 2.4.3 linux/include/asm-mips/mmu_context.h |
From: Ed W. <li...@wi...> - 2005-01-01 17:48:21
Attachments:
xine.diff
|
>Nice work! Please send us patches as soon as you consider it more or less >working. We can help you with any remaining build system issues. > > Please find attached a patch to add a jack output driver to xine. Many thanks to Brian Tarricone for his extremely useful help figuring out the relevant parts of Automake to alter (much appreciated!) The meat of the driver is all in the file bio2jack.c - this is unusual style compared with the other audio drivers. Clearly the two files could be merged, but the bio2jack file is maintained seperately and keeping the two parts seperate would make it easier to update if the source library updates. Clearly I could instead require the user to make a bio2jack library and link to this seperately, but I would prefer not to since this adds extra external dependencies for the sake of one small C file that can easily be included in the xine distribution. Bio2jack is unlikely to change materially, and if it did it would likely be a material interface change, so there seem few advantages in not including the working source code in the xine distribution. The bio2jack layer basically provides a generic blocking interface to jack by buffering a small amount of data locally and feeding it to the jack device on demand. This adds a very slight latency to the audio, but nothing that would affect anything other than a really serious real time app, and with it's default settings it will likely provide lower actually latency than most other audio drivers anyway... Can someone with Jack (and some people without) please test this and report back. Advice on whether the current code structure is acceptable would be useful also. My own setup uses Jack to pipe the audio into brutefir which then applies a whole bunch of DSP filters which lets me turn a 5.1 audio track into a kind of 4.2 setup that involves some very large subwoofers, lots of amplifiers and digital room correction (basically you hold a microphone where you would sit, record a test sweep, work out what went "wrong" with the sound between speakers and listening position and build a filter to "fix" the audio...) This gives you the potential to have extremely high quality hifi setup that would previously only be possible with some extremely expensive gear from the likes of Tact. I have also added Jack support to cvs Mythtv and mplayer. Happy New Year everyone! Ed W |
From: Ed W. <li...@wi...> - 2005-01-01 18:42:24
|
>Nice work! Please send us patches as soon as you consider it more or less >working. We can help you with any remaining build system issues. > > Please find below a patch to add a jack output driver to xine. Many thanks to Brian Tarricone for his extremely useful help figuring out the relevant parts of Automake to alter (much appreciated!) http://www.wildgooses.com/downloads/xine.diff The meat of the driver is all in the file bio2jack.c - this is unusual style compared with the other audio drivers. Clearly the two files could be merged, but the bio2jack file is maintained seperately and keeping the two parts seperate would make it easier to update if the source library updates. Clearly I could instead require the user to make a bio2jack library and link to this seperately, but I would prefer not to since this adds extra external dependencies for the sake of one small C file that can easily be included in the xine distribution. Bio2jack is unlikely to change materially, and if it did it would likely be a material interface change, so there seem few advantages in not including the working source code in the xine distribution. The bio2jack layer basically provides a generic blocking interface to jack by buffering a small amount of data locally and feeding it to the jack device on demand. This adds a very slight latency to the audio, but nothing that would affect anything other than a really serious real time app, and with it's default settings it will likely provide lower actually latency than most other audio drivers anyway... Can someone with Jack (and some people without) please test this and report back. Advice on whether the current code structure is acceptable would be useful also. My own setup uses Jack to pipe the audio into brutefir which then applies a whole bunch of DSP filters which lets me turn a 5.1 audio track into a kind of 4.2 setup that involves some very large subwoofers, lots of amplifiers and digital room correction (basically you hold a microphone where you would sit, record a test sweep, work out what went "wrong" with the sound between speakers and listening position and build a filter to "fix" the audio...) This gives you the potential to have extremely high quality hifi setup that would previously only be possible with some extremely expensive gear from the likes of Tact. I have also added Jack support to cvs Mythtv and mplayer. Happy New Year everyone! Ed W |
From: Ed W. <li...@wi...> - 2005-01-01 19:52:52
|
Pah. Typical. I already noticed a couple of minor gremlins. I have update the patch at the same link as before: http://www.wildgooses.com/downloads/xine.diff Ed W |
From: Laurent G. <nek...@gm...> - 2005-01-09 20:45:55
|
> I have written what I hope is the code for a jack output driver. Can > someone please help me out with a quickstart guide on using automake, > etc so that I can have a bash at compiling the darn thing... > > (It's obviously called "audio_jack_out.c" and it's sitting in > src/audio_out, so what do I do next...?) Good job ! And I get to read this just the day I restarted working on my version :) I see in your patch that you have been using biojack, so since I had chosen not to use it I might consider continuing my work and see where it leads. In all cases, it'd be at least an interesting coding exercise :) Laurent |