On Fri, 2013-11-01 at 12:24 +0200, Janos Kovacs wrote: > Sorry, I hit a wrong key and my gmail sent out my unfinished mail. > Here is the last comment > again: > > > > So if needed we could start with only nodes + some extra hooks in the core. > > > However, node implementations should be added to ALSA, BT and other modules > > > IMO. > > > > Please avoid touching the backend modules as much as you can. Ideally, > > I'd like the ALSA and BT modules to just add properties (or similar > > information) to indicate to the core and the routing system what it > > needs to know. > > > > Otherwise we'll just end up copy-pasting code between different backends. > > To implement certain node related operations and store node specific data I see > two basic ways: > > 1.) a kind'a object oriented approach, ie, the node related backend > specific stuff is implemented in the backend itself with some supporting > common functions in the core to avoid code duplicates. That is what we > choose for the PoC Tanu works on. > > 2.) The node stuff is done in a layer top on the existing > infrastructure. This extra > layer can be implemented in the routing module. That's how the TIZEN-IVI > implemented currently. > > However, the current PA core infrastructure lacks certain > features what makes > the implementation of such layer cumbersome. > > We would need extra hooks as with the current hooks you get a > lot of 'noise' > that needed to be filtered out. For instance hooking-in to > stream and device creation > would produce callbacks at loading loopacks or combine thinks > which should be > ignored. This led to a really complex state machine in the > routing module what > could be dramatically simplified by adding extra hooks to the core. > > The extra layer need to maintain backend specific private data > somewhere. We > would need to add support for this in the core. It could be > 'node' specific mechanism, > or if we want to do this a more elegant way we could add some > mechanism that > would allow a module to attach arbitrary data to the various PA > objects. Xorg have > this for ages, eg. modules can add their extension data to > windows structures > for instance.