[cvs-annodex] commit (/annodex): libfishsound/branches/1.0-stable/src/libfishsound/vorbis.c

conrad nobody at lists.annodex.net
Tue Aug 16 16:50:42 EST 2005


Update of /annodex (new revision 1431)

Modified files:
   libfishsound/branches/1.0-stable/src/libfishsound/vorbis.c

Log Message:
libfishsound-stable: cleanup typesafety of vorbis decode / decode_ilv


Modified: libfishsound/branches/1.0-stable/src/libfishsound/vorbis.c
===================================================================
--- libfishsound/branches/1.0-stable/src/libfishsound/vorbis.c	2005-08-16 04:46:35 UTC (rev 1430)
+++ libfishsound/branches/1.0-stable/src/libfishsound/vorbis.c	2005-08-16 06:50:39 UTC (rev 1431)
@@ -111,7 +111,7 @@
 {
   FishSoundVorbisInfo * fsv = (FishSoundVorbisInfo *)fsound->codec_data;
   ogg_packet op;
-  float ** pcm, **retpcm;
+  float ** pcm;
   long samples;
   int ret;
 
@@ -146,12 +146,18 @@
       vorbis_block_init (&fsv->vd, &fsv->vb);
     }
   } else {
+    FishSoundDecoded_FloatIlv df;
+    FishSoundDecoded_Float dfi;
+
     if (vorbis_synthesis (&fsv->vb, &op) == 0)
       vorbis_synthesis_blockin (&fsv->vd, &fsv->vb);
 
     while ((samples = vorbis_synthesis_pcmout (&fsv->vd, &pcm)) > 0) {
       vorbis_synthesis_read (&fsv->vd, samples);
 
+      if (fsound->frameno != -1)
+	fsound->frameno += samples;
+
       if (fsound->interleave) {
 	if (samples > fsv->max_pcm) {
 	  fsv->ipcm = realloc (fsv->ipcm, sizeof(float) * samples *
@@ -160,19 +166,13 @@
 	}
 	_fs_interleave (pcm, (float **)fsv->ipcm, samples,
 			fsound->info.channels, 1.0);
-	retpcm = (float **)fsv->ipcm;
+
+	dfi = (FishSoundDecoded_FloatIlv)fsound->callback.decoded_float_ilv;
+	dfi (fsound, (float **)fsv->ipcm, samples, fsound->user_data);
       } else {
-	retpcm = pcm;
+	df = (FishSoundDecoded_Float)fsound->callback.decoded_float;
+	df (fsound, pcm, samples, fsound->user_data);
       }
-
-      if (fsound->frameno != -1)
-	fsound->frameno += samples;
-
-      if (fsound->callback.decoded_float) {
-	((FishSoundDecoded_Float)fsound->callback.decoded_float) (fsound,
-								  retpcm, samples,
-								  fsound->user_data);
-      }
     }
   }
 


-- 
conrad



More information about the cvs-annodex mailing list