[Tremor] RFC: Tremor API changes

Timothy B. Terriberry tterribe at xiph.org
Mon Aug 30 10:34:18 PDT 2010


I'd like to propose a couple of Tremor API changes, and wanted to 
solicit feedback from the list. The context of all of this is the recent 
work to integrate Tremor into fennec, Mozilla's mobile browser: 
https://bugzilla.mozilla.org/show_bug.cgi?id=511348

1) Remove the extra (third) argument from vorbis_synthesis() and replace 
it with a separate function (e.g., vorbis_synthesis_nodecode()).

This change makes the API more like that of libvorbis, and reduces the 
number of #ifdef's required for programs that want to switch between 
both depending on the platform. It shouldn't affect anyone who uses the 
libvorbisfile API, only those who use the libvorbis-equivalent API 
directly. This would be applied to all branches.

2) Remove the internal libogg2 implementation and use libogg on trunk.

This has the same goal as 1) (easier switching between Tremor and 
libvorbis), but I expect it to be more controversial. While the internal 
libogg2 implementation is fine when Tremor is used by itself, it plays 
less nicely when one wants to use other codecs (e.g., Theora), and 
conflicts with libogg in both API and ABI. Once upon a time, we planned 
to release an actual libogg2 with a separate namespace for the new 
constructs and that also implemented the original libogg API (via 
wrappers). However, this never actually happened, and there was never 
much demand for it. I think the easier path now is to make this change 
on trunk, and let the lowmem-branch (and lowmem-no-byte branch) continue 
to use its internal libogg2 implementation, as those are likely the 
users who would actually care about the reduced memory usage the 
zero-copy API of libogg2 provides.


More information about the Tremor mailing list