[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