swf_SetSoundStreamBlock now takes four parameters.
[swftools.git] / lib / example / sound.c
index 8ddf34f..2c0d892 100644 (file)
@@ -7,8 +7,19 @@
 
    Copyright (c) 2002 Matthias Kramm <kramm@quiss.org>
  
-   This file is distributed under the GPL, see file COPYING for details 
-*/
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
 
 #include <stdio.h>
 #include <fcntl.h>
@@ -19,11 +30,10 @@ int main (int argc,char ** argv)
 { SWF swf;
   RGBA rgb;
   SRECT r;
+  int blocksize = 2304;
   S32 width=300,height = 300;
-  U16 block[1152*2];
+  U16 block[blocksize];
   TAG * tag;
-  FILE* fi = fopen("test.mp3","wb");
-  FILE* fi2 = fopen("test2.wav","wb");
   
   int f,i,ls1,fs1;
   int count;
@@ -32,7 +42,7 @@ int main (int argc,char ** argv)
   memset(&swf,0x00,sizeof(SWF));        // set global movie parameters
 
   swf.fileVersion    = 4;               // make flash 4 compatible swf
-  swf.frameRate      = 19*256;          // about 19 frames per second
+  swf.frameRate      = 18*256;          // about 18 frames per second
   
   swf.movieSize.xmax = 20*width;        // flash units: 1 pixel = 20 units ("twips")
   swf.movieSize.ymax = 20*height;
@@ -45,22 +55,20 @@ int main (int argc,char ** argv)
   swf_SetRGB(tag,&rgb);
   
   tag = swf_InsertTag(tag, ST_SOUNDSTREAMHEAD2);
-  swf_SetSoundStreamHead(tag, 1152);
+  swf_SetSoundStreamHead(tag, 11025/18);
 
-  for(t=0;t<64;t++) {
+  for(t=256;t>=0;t--) {
       int s;
       tag = swf_InsertTag(tag, ST_SOUNDSTREAMBLOCK);
-      for(s=0;s<1152*2;s++) {
-         block[s] = (int)(32767*sin((s*16*3.14159)/1152));
+      for(s=0;s<blocksize;s++) {
+         block[s] = (int)(32767*sin(s*8*3.14159/blocksize));
+         if(t==0) block[s] = 0;
       }
-      swf_SetSoundStreamBlock(tag, block, 1152,1);
-      swf_SetSoundStreamBlock(tag, &block[1152], 1152,0);
-      fwrite(&tag->data[4], tag->len-4, 1, fi);
-      fwrite(block, 1152*2*2, 1, fi2);
+      swf_SetSoundStreamBlock(tag, block, 1, 0);
       tag = swf_InsertTag(tag, ST_SHOWFRAME);
   }
-  fclose(fi);
-  fclose(fi2);
+  
+  tag = swf_InsertTag(tag, ST_END);
 
   f = open("sound.swf",O_WRONLY|O_CREAT|O_TRUNC, 0644);
   if FAILED(swf_WriteSWF(f,&swf)) fprintf(stderr,"WriteSWF() failed.\n");