[Scummvm-cvs-logs] CVS: scummvm sound.cpp,1.75,1.76
James Brown
ender at users.sourceforge.net
Sat May 4 19:29:02 CEST 2002
Update of /cvsroot/scummvm/scummvm
In directory usw-pr-cvs1:/tmp/cvs-serv4208
Modified Files:
sound.cpp
Log Message:
Make the bundle parser code a little cleaner :)
Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound.cpp,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -d -r1.75 -r1.76
--- sound.cpp 5 May 2002 01:54:06 -0000 1.75
+++ sound.cpp 5 May 2002 02:28:35 -0000 1.76
@@ -768,11 +768,27 @@
free(CompFinal);
return;
}
- size = READ_BE_UINT32(ptr); ptr+=4;
- tag = READ_BE_UINT32(ptr); ptr+=4;
- size = READ_BE_UINT32(ptr); ptr+=size+4;
- tag = READ_BE_UINT32(ptr); ptr+=4;
- size = READ_BE_UINT32(ptr); ptr+=4;
+
+ ptr+=12; /* Skip header */
+ while(tag != 'DATA') {
+ tag = READ_BE_UINT32(ptr); ptr+=4;
+ switch(tag) {
+ case 'FRMT':
+ case 'TEXT':
+ case 'REGN':
+ case 'STOP':
+ size = READ_BE_UINT32(ptr); ptr+=size+4;
+ break;
+
+ case 'DATA':
+ size = READ_BE_UINT32(ptr); ptr+=4;
+ break;
+
+ default:
+ error("Unknown bundle header %c%c%c%c", tag>>24, tag>>16, tag>>8, tag);
+ }
+ }
+
Final = (unsigned char *)malloc(size);
memcpy(&Final[0], &ptr[0], size);
_mixer->play_raw(NULL, Final, size, 22050, SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE);
More information about the Scummvm-git-logs
mailing list