Game Development Community

Updated Ogg Vorbis code

by Kurtis Seebaldt · in Torque Game Engine · 07/31/2002 (9:00 pm) · 13 replies

I've updated the Ogg Vorbis code to use Release_1_1_2 as a baseline and to use Ogg Vorbis 1.0 final libraries.

Have Fun!

www.flamultimedia.com/audioStreaming112.zip

Could someone try to build it on Linux or Mac and tell me how it works?

#1
08/23/2002 (10:16 am)
Anybody tried ogg vorbis with Torque >= 1.1.2 ?
I tried HEAD and Release1.1.2 and it won't play...
it compiles fine and doesnt give any errors, not even on the console... but there is no music...!?
it even stops all other sounds from playing, e.g. footsteps...
I've also tried the "old" ogg vorbis code, but it doesn't seem to work either any more...
I got the "old" vorbis code working with a Torque version prior to Release_1_1_2... but there seems to be a problem with the latest TGE versions...
Any ideas? Thanks a lot!
#2
08/23/2002 (11:27 am)
Forgive the newbie questions, but is Ogg Vorbis a total replacement for playing sounds AND music in Torque? Or is it only for playing music? What are the main benefits of using OV?

Thanks
#3
08/23/2002 (11:39 am)
the main benefits of using OV is that the filesize and quality is about the same as MP3. MP3 cannot be used, so Ogg Vorbis is the next best thing (if not even better, becuase its open source).
You can use it to play small sound files too, but as mp3, it uses more CPU then the regular wav file.


So.. Ogg Vorbis is now working in Torque without any problems/bugs? I would like to know, becuase I "heard" it doesn't completly work without any issues yet.
#4
08/26/2002 (8:56 am)
I used 1.1.2 as a baseline. It works on my personal machine with a Soundblaster Live!. I tried it at work and had the same problem you describe, but that is using some crappy on-board sound. What kind of sound card do you have?
#5
08/26/2002 (9:11 am)
Kurtis, really seems to be an issue with my machine at the moment... I'm having strange sound problems at the moment... although the new Ogg Vorbis code works now (besides these weird problems, but there are general problems with WAV files, also...)
I just downloaded the lib and dll stuff again, used another ogg file and it worked...! :)
Thanks a lot for taking your time!

On a sidenode... could the code now be used to play "single sounds" like gunshots or the like? Or is it only designed for streaming, like background music, etc.?
#6
08/26/2002 (6:41 pm)
It only does streaming audio at the moment. It shouldn't be too hard to use it for samples. All it would require is decoding the ogg stream to an audio buffer. I just haven't had a lot of time to get into it yet. I'll see what I can do.
#7
09/12/2002 (8:16 pm)
I just bought a SB Audigy and it seems there is a bug in my streaming code that causes a crash with the Audigy OpenAL driver. The software driver doesn't break. Its something I did wrong anyway, so I've fixed it and updated my code.

Anyone whose had problems with it crashing, please try the new code and see if it works.

I've updated the zip, but only 2 files have changed. vorbisStreamSource.cc and wavStreamSource.cc

www.flamultimedia.com/audioStreaming112.zip
#8
09/12/2002 (11:12 pm)
Is there any way as yet to tell when one ogg file has finished playing so that, instead of looping the file, a differnet file can be played?

ie. one song after another
#9
09/23/2002 (9:56 pm)
I think you could call alxIsPlaying() to check to see if its still playing as long as its not looped. I'll have to look into some way to trigger an event when the song ends.
#10
10/02/2002 (8:37 am)
I am getting an error when trying to build the code on linux...
I've added the include dir, and plonked the lib's on the lib path...

However, when linking, these errors pop up!
Quote:
--> Linking out.GCC2.DEBUG/torqueDemo_DEBUG.exe
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::_get_data(void)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:62: undefined reference to 'ogg_sync_buffer'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:65: undefined reference to 'ogg_sync_wrote'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::_seek_helper(long)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:77: undefined reference to 'ogg_sync_reset'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::_get_next_page(ogg_page *, int)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:103: undefined reference to 'ogg_sync_pageseek'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::_bisect_forward_serialno(long, long, long, long, long)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:194: undefined reference to 'ogg_page_serialno'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:212: undefined reference to 'ogg_page_serialno'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::_fetch_headers(vorbis_info *, vorbis_comment *, long *, ogg_page *)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:235: undefined reference to 'ogg_page_serialno'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:236: undefined reference to 'ogg_page_serialno'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:236: undefined reference to 'ogg_stream_init'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:242: undefined reference to 'vorbis_info_init'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:243: undefined reference to 'vorbis_comment_init'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:247: undefined reference to 'ogg_stream_pagein'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:249: undefined reference to 'ogg_stream_packetout'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:255: undefined reference to 'vorbis_synthesis_headerin'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:269: undefined reference to 'vorbis_info_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:270: undefined reference to 'vorbis_comment_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:271: undefined reference to 'ogg_stream_clear'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::_prefetch_all_headers(long)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:309: undefined reference to 'ogg_stream_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:323: undefined reference to 'vorbis_info_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:324: undefined reference to 'vorbis_comment_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:327: undefined reference to 'ogg_page_granulepos'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:328: undefined reference to 'ogg_page_serialno'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:329: undefined reference to 'ogg_page_granulepos'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::_make_decode_ready(void)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:341: undefined reference to 'vorbis_synthesis_init'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:343: undefined reference to 'vorbis_synthesis_init'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:345: undefined reference to 'vorbis_block_init'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::_open_seekable2(void)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:370: undefined reference to 'ogg_page_serialno'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::_decode_clear(void)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:396: undefined reference to 'ogg_stream_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:397: undefined reference to 'vorbis_dsp_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:398: undefined reference to 'vorbis_block_clear'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::_process_packet(int)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:428: undefined reference to 'ogg_stream_packetout'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:435: undefined reference to 'vorbis_synthesis'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:445: undefined reference to 'vorbis_synthesis_pcmout'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:446: undefined reference to 'vorbis_synthesis_blockin'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:447: undefined reference to 'vorbis_synthesis_pcmout'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:469: undefined reference to 'vorbis_synthesis_pcmout'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:494: undefined reference to 'ogg_page_serialno'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:498: undefined reference to 'vorbis_info_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:499: undefined reference to 'vorbis_comment_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:522: undefined reference to 'ogg_page_serialno'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:536: undefined reference to 'ogg_stream_init'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:537: undefined reference to 'ogg_stream_reset'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:553: undefined reference to 'ogg_stream_pagein'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::_ov_open1(Stream *, char *, long)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:584: undefined reference to 'ogg_sync_init'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:591: undefined reference to 'ogg_sync_buffer'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:593: undefined reference to 'ogg_sync_wrote'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::ov_clear(void)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:641: undefined reference to 'vorbis_block_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:642: undefined reference to 'vorbis_dsp_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:643: undefined reference to 'ogg_stream_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:648: undefined reference to 'vorbis_info_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:649: undefined reference to 'vorbis_comment_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:658: undefined reference to 'ogg_sync_clear'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::ov_raw_seek(long)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:891: undefined reference to 'ogg_stream_packetout'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:896: undefined reference to 'vorbis_packet_blocksize'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:898: undefined reference to 'ogg_stream_packetout'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:929: undefined reference to 'ogg_page_serialno'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:931: undefined reference to 'ogg_stream_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:937: undefined reference to 'ogg_page_serialno'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:945: undefined reference to 'ogg_stream_init'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:946: undefined reference to 'ogg_stream_reset'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:947: undefined reference to 'ogg_stream_init'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:948: undefined reference to 'ogg_stream_reset'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:953: undefined reference to 'ogg_stream_pagein'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:954: undefined reference to 'ogg_stream_pagein'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:955: undefined reference to 'ogg_page_eos'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:959: undefined reference to 'ogg_stream_clear'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:965: undefined reference to 'ogg_stream_clear'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::ov_pcm_seek_page(long long)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1034: undefined reference to 'ogg_page_granulepos'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1073: undefined reference to 'ogg_page_serialno'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1076: undefined reference to 'ogg_stream_init'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1077: undefined reference to 'ogg_stream_reset'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1079: undefined reference to 'ogg_stream_pagein'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1083: undefined reference to 'ogg_stream_packetpeek'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1093: undefined reference to 'ogg_page_granulepos'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1093: undefined reference to 'ogg_page_continued'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1104: undefined reference to 'ogg_stream_packetout'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::ov_pcm_seek(long long)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1138: undefined reference to 'ogg_stream_packetpeek'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1140: undefined reference to 'vorbis_packet_blocksize'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1144: undefined reference to 'vorbis_info_blocksize'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1146: undefined reference to 'ogg_stream_packetout'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1167: undefined reference to 'ogg_page_serialno'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1172: undefined reference to 'ogg_page_serialno'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1178: undefined reference to 'ogg_stream_init'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1179: undefined reference to 'ogg_stream_reset'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1183: undefined reference to 'ogg_stream_pagein'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1193: undefined reference to 'vorbis_synthesis_pcmout'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1196: undefined reference to 'vorbis_synthesis_read'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::ov_read_float(float ***, int *)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1385: undefined reference to 'vorbis_synthesis_pcmout'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1388: undefined reference to 'vorbis_synthesis_read'
out.GCC2.DEBUG/audio/vorbisStream.obj: In function 'OggVorbisFile::ov_read(char *, int, int, int *)':
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1421: undefined reference to 'vorbis_synthesis_pcmout'
/home/namognam/projects/torque/engine/audio/vorbisStream.cc:1496: undefined reference to 'vorbis_synthesis_read'
/usr/i486-suse-linux/bin/ld: BFD 2.11.92.0.10 20011021 (SuSE) assertion fail ../../bfd/stabs.c:574
collect2: ld returned 1 exit status
make[1]: *** [out.GCC2.DEBUG/torqueDemo_DEBUG.exe] Error 1
make[1]: Leaving directory '/home/namognam/projects/torque/engine'
make: *** [default] Error 2

Anyone any ideas? @_@
#11
10/02/2002 (9:05 am)
Did you add the appropriate libs to the makefile (LINK.LIBS.CLIENT.DYNAMIC in conf.UNIX.mk?)
#12
10/02/2002 (9:14 am)
i added it to the STATIC one,
Changed it to the DYNAMIC one, and it works =)

Thanks.
#13
10/02/2002 (3:23 pm)
I need to clean that crap up.