[Vorbis-dev] libogg, libogg2, Tremor compatability

Conrad Parker conrad
Fri Jun 4 17:57:33 PDT 2004


Hi,

I've started working on libogg2 support in liboggz and Tremor support
in libfishsound.

I'm running into some problems with namespace clashes. Specifically,
each of libogg, libogg2 and libvorbisidec (Tremor) define conflicting
ogg_* symbols and declare incompatible ogg_* types in their headers.

While I understand that a dedicated Ogg Vorbis decoder would only
need to use one of these libraries, that can't always be guaranteed
in general media frameworks. Consider two situations:

* a media framework that separates demux and decode. A conflict
occurs when using a generic ogg library (libogg or libogg2) in
the demux, and libvorbisidec in the decode.

* an application that would like to use both libogg+speex and
Tremor runs into similar conflicts between libogg and Tremor.

I'm sure I'm not the only person here who would like to use integer-only
libspeex-1.1 and libvorbisidec in the same application.

This is a general namespace conflict affecting existing applications that
use ogg_* interfaces.

Two possible solutions:

1. use different namespaces for each of these three libraries

This has the disadvantage of requiring changes to application code that
uses libogg2 or libvorbisidec, but these situations could mostly be handled
by compatibility headers.

2. remove ogg_*() handling from libvorbisidec (ie. have it use
the existing libogg2 instead), and make libogg2 backwards
compatible with libogg.

While the use of non-reference-counted buffers is obviously undesirable,
breaking shit is worse, and the existence of a migration path would
encourage use of the reference-counted interfaces.

Please consider :)

Conrad.


More information about the Vorbis-dev mailing list