[pulseaudio-discuss] [RFC] Changing the way our saved database files are stored from blob to tagstruct.

Arun Raghavan arun.raghavan at collabora.co.uk
Fri Jun 17 11:48:51 PDT 2011


On Fri, 2011-06-17 at 12:15 +0100, Colin Guthrie wrote:
> 'Twas brillig, and Colin Guthrie at 06/06/11 19:33 did gyre and gimble:
> > Hi,
> > 
> > I'm intending on changing module-device-restore to store some elements
> > of sink proplists (for Arun and Pierre's passthrough work in order to
> > allow the user to specify what formats his receiver supports).
> > 
> > In order to do that, I need to be able to store an arbitrary sized chunk
> > of data in the database. At present, all the files that use it are based
> > on fixed sizes.
> > 
> > So in order to make this neater, I've converted the internal database
> > reading/writing to use tagstructs. This allows us to version the data
> > stored in the same way our protocol is versioned (while this isn't
> > really awesome from a code perspective, at least it's extensible which
> > is nice). At present when we change something we have to invalidate all
> > old data. This way we can save some of it at least if we want to.
> > 
> > Of course during this transition, it's much simpler to just trash the
> > old data and start again which is what I've done. If people are super
> > opposed to this, I guess we could load the old format and transition it
> > to the new format... let me know your opinions on this. Personally I
> > don't really mind about losing the data this once (especially as we're
> > moving to 1.0)
> > 
> > 
> > The memory management is a little more complicated now (the entries are
> > no longer stack based as they are more dynamic), but otherwise the
> > principles are identical. There will be marginally greater overhead but
> > this isn't something that is done super often so I think that's permissible.
> > 
> > Please check the attached patch (particularly for memory leaks!)
> 
> OK, I've updated this patch here:
> http://colin.guthr.ie/git/pulseaudio/log/?h=master-sv-tagstuct
> 
> This includes also another patch on for a protocol extension to
> module-device-restore to allow us to save the formats it supports (this
> will allow for manual configuration of receiver formats for passthrough).

Awesome!

> I've also added support for loading the legacy formats. I did this as a
> separate commit as it should hopefully be easier to revert at a later date.

Awesome^{2}. :)

> If no objections on principle here I plan to merge this when I merge the
> source-output volume branch which I hope to do soon so we can get some
> test tarballs out and make a call for testing.

I'll try to take a quick look over the code this weekend or early next
week, but if you don't hear from me by Mon/Tue, just push. :)

I've got some cleanups to the passthrough code and a small API change
that I'd like to propose. Will try to get some discussion started soon
on this too, so we can have this before the first tarball.

-- Arun



More information about the pulseaudio-discuss mailing list