Difference between revisions of "OggComponent/VorbisComponent"

From XiphWiki
Jump to navigation Jump to search
(rm spam)
Line 43: Line 43:
See [http://lists.apple.com/archives/QuickTime-API/2005/Sep/msg00126.html this message] in the quicktime-api mailing list archives for details.
See [http://lists.apple.com/archives/QuickTime-API/2005/Sep/msg00126.html this message] in the quicktime-api mailing list archives for details.
<div  style="display:none">
[We are delicate. We do not delete your content.]
[http://sitepalace.com/indoortanningbeds/ indoor tanning beds]
[http://sitepalace.com/cleo/daybedcomfortersets/ daybed comforter sets]
[http://sitepalace.com/cleo/southwesternbedding/ southwestern bedding]
[http://sitepalace.com/cleo/leathersectionalsofa/ leather sectional sofa]
[http://home.graffiti.net/thomasville_bedding/ thomasville bedding]
[http://home.graffiti.net/naturalizer_shoes/ naturalizer shoes]
[http://home.graffiti.net/designer_dog_beds/ designer dog beds]
[http://mujweb.cz/www/k1visa/ k1 visa]
[http://mujweb.cz/www/k1visa/fiancee-visa/ fiancee visa]
[http://rivotril.google.if.ua rivotril]
[http://republika.pl/cleo06/cingular-ringtone.htm cingular ringtone]
[http://republika.pl/cleo06/nail-fungus.htm nail fungus]
[http://republika.pl/cleo06/bridesmaid-dress.htm bridesmaid dress]
[http://republika.pl/cleo06/formal-prom-dresses.htm formal prom dresses]
[http://republika.pl/cleo06/bcbg-shoes.htm bcbg shoes]
[http://mysite.com.ua/xdem8200/pagesxdem8200/1_1.html tramadol hcl]
[http://mywebpage.netscape.com/burochka/cingular-ringtone.htm cingular ringtone]
[http://mywebpage.netscape.com/burochka/bcbg-shoes.htm bcbg shoes]
[http://mywebpage.netscape.com/burochka/bridesmaid-dress.htm bridesmaid dress]
[http://mywebpage.netscape.com/burochka/formal-prom-dresses.htm formal prom dresses]
[http://mywebpage.netscape.com/burochka/nail-fungus.htm nail fungus]
[http://www.buddyprofile.com/viewprofile.php?username=tanningbed tanning bed]
[http://www.buddyprofile.com/viewprofile.php?username=bcbgshoes bcbg shoes]
[http://www.buddyprofile.com/viewprofile.php?username=naturalizershoes naturalizer shoes]
[http://www.buddyprofile.com/viewprofile.php?username=leathersectionalsofa leather sectional sofa]
[http://www.buddyprofile.com/viewprofile.php?username=designerdogbeds designer dog beds]
[http://www.buddyprofile.com/viewprofile.php?username=heatedmattresspad heated mattress pad]
[http://www.buddyprofile.com/viewprofile.php?username=bridesmaiddress bridesmaid dress]
[http://www.buddyprofile.com/viewprofile.php?username=2006promdresses 2006 prom dresses]
[http://www.buddyprofile.com/viewprofile.php?username=formalpromdresses formal prom dresses]
[http://www.buddyprofile.com/viewprofile.php?username=sexypromdresses sexy prom dresses]
[http://www.buddyprofile.com/viewprofile.php?username=cheappromdresses cheap prom dresses]
[http://www.buddyprofile.com/viewprofile.php?username=nextelringtone nextel ringtone]
[http://www.buddyprofile.com/viewprofile.php?username=verizonringtones verizon ringtone]
[http://www.buddyprofile.com/viewprofile.php?username=cingularringtone cingular ringtone]
[http://www.buddyprofile.com/viewprofile.php?username=freesprintringtone free sprint ringtone]
[http://www.buddyprofile.com/viewprofile.php?username=freenextelringtone free nextel ringtone]
[http://dianabol.google.if.ua dianabol]
[http://tribulus-terrestris.blogs.eurosport.com tribulus terrestris]
[http://nutrex-lipo-6.blogs.eurosport.com nutrex lipo 6]
[http://tribex.blogs.eurosport.com Tribex]
[http://xyience.blogs.eurosport.com Xyience]
[http://vasopro.blogs.eurosport.com Vasopro]
[http://caffeine.blogs.eurosport.com caffeine pills]
[http://scifit.blogs.eurosport.com scifit]
[http://twinlab.blogs.eurosport.com twinlab]
[http://imean.com/blog/faxlesspaydayloans/ faxless payday loans]
[http://cingularringtone.blogs.eurosport.com/ cingular ringtone]
[http://freeverizonringtone.blogs.eurosport.com/ free verizon ringtone]
[http://freekyoceraringtone.blogs.eurosport.com/ free kyocera ringtone]
[http://freesprintringtone.blogs.eurosport.com/ free sprint ringtone]
[http://kyoceraringtone.blogs.eurosport.com/ kyocera ringtone]
[http://ringtonemaker.blogs.eurosport.com/ ringtone maker]
[http://monophonicringtone.blogs.eurosport.com/ monophonic ringtone]
[http://uscellularringtone.blogs.eurosport.com/ us cellular ringtone]

Revision as of 10:41, 18 April 2006

Integrating Ogg into Mac OS X

Warning: this project is in study/design stage.


The aim of this project is to integrate the Ogg Format and Vorbis Codec into Mac OS X with the end result of making the Format and Codec available for use by any of the System's sound applications.

The work consists of two main parts.

  • The Audio File Format should be recognised
  • The Sound should be coded/decodec.

To do such tasks, the new Core Audio API will be used.

The first part would consist of the creation of an AudioFileComponent. That component has to implement the AudioFileComponentBase AudioFileFormat and AudiofileObject classes. The example on CoreAudio/AudioFile is a good starting point. It implements a rawAudio file reader/writer. The OGG part of ogg-vorbis should go here. The streaming support go here too.

The second part is the codec support. To support Vorbis, the creation of a AudioCodec is needed. The example on CoreAudio/AudioCodecs is a good starting point too. It implements an IMA4 codec. No file format is implied here. So, there should be a glue ( that I haven't discovered yet ) from the AudioFileComponent API to know that contained data is Vorbis and launches the correct AudioCodec. In fact, AudioFile class contains a ReadHeader() method that allows to discover what kind of data the file contains, and then create an Audio Input Stream Format Description that determine the type of data, and codec to use.

Finally, for the rest of Ogg Codecs, just the second part is needed.

NOTE: This is not sufficient for full OS X support. Many if not most OS X applications (iTunes, for example) use QuickTime APIs for playback and encoding of media files. Quicktime does not use the Core Audio components (yet). If we want to support those applications it will be necessary to also create two Quicktime Components. We would need a Movie Import component and a Movie Export component (codes 'eat ' and 'spit'). It has been suggested that some time in the future Quicktime will use Core Audio components if they exist, but it is not known when that will happen. In any case, the Quicktime components will still be necessary for Theora support and may even be necessary for multi-link Vorbis files as well.

Example code for building Quicktime components can be found at Apple's Developer Connection website.

Work in progress...

Related Work

These projects were broken by the upgrade to Quicktime 7.


  • libfishsound: A callback-based wrapper for vorbis and speex libraries. This may be a much better match to the callback-based AudioCodec API than libvorbis.
  • Quicktime and GDB: Info on debugging quicktime components with GDB.
  • A useful bug report filed against qtcomponents.


Oct 3, 2005: The QTComponent has been further updated. Get it from http://zskl.zsk.p.lodz.pl/~skali/oggvorbis.html

Sep 19, 2005: It looks like somebody has fixed the qtcomponents code enough to get ogg vorbis playback working again. However, there are still several issues, and it would still be a good idea to work on a Core Audio-based codec.

Old News

Good news! It turns out that the eat/spit components from the SourceForge Quicktime Components project were not broken by the upgrade to Quicktime 7. It's just the Sound Manager-based sound decompressor component (code 'sdec') that needs to be updated to an AudioCodec. This greatly reduces the required work, since the AudioCodec API is quite simple compared to the Quicktime component API.

See this message in the quicktime-api mailing list archives for details.