From: robs <aq...@ya...> - 2009-02-06 15:44:57
|
--- On Fri, 6/2/09, Chris Bagwell <ch...@cn...> wrote: > I think we should pursue it. I've mentioned in the > past that I like the dlopen() logic but I've always > preferred to support more then 1 handler per module. There > seems to be no value in having field replaceable modules for > our internal routines that require no external libraries > (raw support being the some important of these). And > current approach is difficult on packagers. So I'd like > to make the sox_*_format_fn() now be sox_*_formats_fn() and > return multiple handlers. > > If we change to that then we could have a base module that > contains all internal handlers that require no external > libraries and then break out the optional ones into their > own modules. That would get us down from todays 60-ish > modules to closer to 10. Its a hope that this will get us > closer to the speed increase of using --without-libltdl (10% > faster?). I'm thinking that speed increase is purely > from not having to do so much fstat()'s and file load > operations. > > Then as a next step, we can modify SoX so that it supports > libltdl and static mode at the same time. I'm think it > should be relatively easy to modify libsox to look for a > global symbol within libsox itself; called > sox_libsox_formats_fn(); to populate static list. We can > make sure the base set of internal handlers gets statically > linked in this way and offload the rest to modules. Do we need to do the first step? I may be missing something, but having multiple handlers in a single module seems a little messy to me. We could easily arrange it so that the list of base formats is static (as per the list of effects) and just add the optional ones via dlopen. In fact, the .sox format has always been statically linked so maybe we're already there... -Rob |