[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11753] branches/soc-2007-hcube/source/ blender/src/drawsound.c: Implemeneted wave drawing in audio window

Csaba Hruska csaba.hruska at gmail.com
Mon Aug 20 21:28:47 CEST 2007


Revision: 11753
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11753
Author:   hcube
Date:     2007-08-20 21:28:46 +0200 (Mon, 20 Aug 2007)

Log Message:
-----------
Implemeneted wave drawing in audio window

Modified Paths:
--------------
    branches/soc-2007-hcube/source/blender/src/drawsound.c

Modified: branches/soc-2007-hcube/source/blender/src/drawsound.c
===================================================================
--- branches/soc-2007-hcube/source/blender/src/drawsound.c	2007-08-20 19:27:56 UTC (rev 11752)
+++ branches/soc-2007-hcube/source/blender/src/drawsound.c	2007-08-20 19:28:46 UTC (rev 11753)
@@ -62,11 +62,11 @@
 void drawsoundspace(ScrArea *sa, void *spacedata);
 
 /*implementation */
-static void draw_wave(int startsamp, int endsamp, short sampdx, short offset, short *sp, float sampfac, float y)
+static void draw_wave(int startsamp, int endsamp, short sampdx, short offset, char *sp, float sampfac, float y)
 {
 	float min, max, v1[2], v2[3];
 	int i, j, deltasp, value; /*deltasp, value: were both shorts but for music files 5min, zooming out cased a crash */
-	return;
+
 	sp+= offset*startsamp;
 
 	deltasp= offset*sampdx;
@@ -77,12 +77,13 @@
 		/* filter */
 		min= max= 0.0;
 		for(j=0; j<sampdx; j++) {
-			value= sp[offset*j];
+			value= (signed char)sp[offset*j];
 			if(value < min) min= value;
 			else if(value > max) max= value;
 		}
-		v1[1]= y + 0.002*min;
-		v2[1]= y + 0.002*max;
+
+		v1[1]= y + 0.512*min;
+		v2[1]= y + 0.512*max;
 		
 		v1[0]=v2[0]= sampfac*i;
 
@@ -96,17 +97,16 @@
 {
 	float sampxlen, sampfac;
 	int samples, startsamp, endsamp;
-	short *sp, sampdx;
+	char *sp, sampdx;
 	
-	/*
-		Sample PCM data for visualization: 4000KHz, 4 bit
-	*/
+	// PCM data for visualization: 4000KHz, 8 bit
 	
 	/* one sample is where in v2d space? (v2d space in frames!) */
 	sampfac= ((float)G.scene->r.frs_sec)/(4000.0);
 
-	/* how many samples? */
-	samples= sample->len;// /(sample->channels*(sample->bits/8));
+	// how many frames
+	samples = ((float)sample->len) / ((float)sample->rate) * 4000.0;
+
 	/* total len in v2d space */
 	sampxlen= sampfac*samples;
 
@@ -129,19 +129,19 @@
 	if(sample->channels==2) {
 		
 		cpack(0x905050);
-		// by hcube, edit here for wave drawing
-		sp= (short *)(sample->data);
-		//sp = audio_sound_getvisualpcmdata(samplestruct bSound *sound, short **data, int startFrame, int endFrame);
+
+		sp= audio_sample_getvisualpcmdata(sample);
 		draw_wave(startsamp, endsamp, sampdx, 2, sp, sampfac, 85.0);
 
 		cpack(0x506890);
-		sp++;
+
+		++sp;
 		draw_wave(startsamp, endsamp, sampdx, 2, sp, sampfac, 190.0);
 	}
 	else {
 		cpack(0x905050);
-		sp= (short *)(sample->data);
 
+		sp= audio_sample_getvisualpcmdata(sample);
 		draw_wave(startsamp, endsamp, sampdx, 1, sp, sampfac, 128.0);		
 	}
 }





More information about the Bf-blender-cvs mailing list