[xiph-commits] r17366 - trunk/postfish
xiphmont at svn.xiph.org
xiphmont at svn.xiph.org
Fri Aug 20 22:09:50 PDT 2010
Author: xiphmont
Date: 2010-08-20 22:09:50 -0700 (Fri, 20 Aug 2010)
New Revision: 17366
Modified:
trunk/postfish/Makefile
trunk/postfish/follower.c
trunk/postfish/follower.h
trunk/postfish/multicompand.c
trunk/postfish/singlecomp.c
trunk/postfish/version.h
Log:
Behavioral change in master panels: Glue the applied
compression/expansion together for all channels.
Modified: trunk/postfish/Makefile
===================================================================
--- trunk/postfish/Makefile 2010-08-17 14:56:52 UTC (rev 17365)
+++ trunk/postfish/Makefile 2010-08-21 05:09:50 UTC (rev 17366)
@@ -37,7 +37,7 @@
limit.o limitpanel.o mute.o mixpanel.o mix.o freeverb.o reverbpanel.o \
outpanel.o config.o window.o follower.o linkage.o
-GCF = -DETCDIR=\\\"$(ETCDIR)\\\" `pkg-config --cflags gtk+-2.0` -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED
+GCF = -DETCDIR=\\\"$(ETCDIR)\\\" `pkg-config --cflags gtk+-2.0`
all:
$(MAKE) target CFLAGS="-O2 -ffast-math -fomit-frame-pointer $(GCF) $(ADD_DEF)"
@@ -76,7 +76,7 @@
target: $(OBJ) postfish-wisdomrc
./touch-version
- $(LD) $(OBJ) $(CFLAGS) -o postfish $(LIBS) `pkg-config --libs gtk+-2.0` -lpthread -lfftw3f -lm #/home/xiphmont/electric-fence-2.1.4/libefence.a
+ $(LD) $(OBJ) $(CFLAGS) -o postfish $(LIBS) `pkg-config --libs gtk+-2.0` -lpthread -lfftw3f -lm
install: target
$(INSTALL) -d -m 0755 $(BINDIR)
Modified: trunk/postfish/follower.c
===================================================================
--- trunk/postfish/follower.c 2010-08-17 14:56:52 UTC (rev 17365)
+++ trunk/postfish/follower.c 2010-08-21 05:09:50 UTC (rev 17366)
@@ -91,9 +91,9 @@
ps->val=val;
}
-static void fill_work(float *A, float *B, float *work,
+static void fill_work(float **A, float **B, int ch, float *work,
int ahead, int hold, int mode, peak_state *ps){
- int k;
+ int i,j,k;
if(mode){
/* peak mode */
@@ -102,36 +102,85 @@
if(B){
float bigcache[input_size*2];
- memcpy(bigcache,A,sizeof(*work)*input_size);
- memcpy(bigcache+input_size,B,sizeof(*work)*input_size);
-
+ memcpy(bigcache,A[0],sizeof(*bigcache)*input_size);
+ memcpy(bigcache+input_size,B[0],sizeof(*bigcache)*input_size);
+ for(j=1;j<ch;j++){
+ float *AA = A[j];
+ float *BB = B[j];
+ float *bb = bigcache+input_size;
+ for(i=0;i<input_size;i++)
+ if(bigcache[i]*bigcache[i]<AA[i]*AA[i])
+ bigcache[i]=AA[i];
+ for(i=0;i<input_size;i++)
+ if(bb[i]*bb[i]<BB[i]*BB[i])
+ bb[i]=BB[i];
+ }
prepare_peak(work, bigcache, input_size, ahead, hold, ps);
}else{
- prepare_peak(work, A, input_size, ahead, hold, ps);
+ if(ch>1){
+ float bigcache[input_size];
+ memcpy(bigcache,A[0],sizeof(*bigcache)*input_size);
+ for(j=1;j<ch;j++){
+ float *AA = A[j];
+ for(i=0;i<input_size;i++)
+ if(bigcache[i]*bigcache[i]<AA[i]*AA[i])
+ bigcache[i]=AA[i];
+ }
+ prepare_peak(work, bigcache, input_size, ahead, hold, ps);
+ }else{
+ prepare_peak(work, A[0], input_size, ahead, hold, ps);
+ }
}
}else{
/* rms mode */
- float *cachea=A+ahead;
+ float *cachea=A[0]+ahead;
if(B){
+ float *cacheb=B[0];
float *worka=work+input_size-ahead;
for(k=0;k<input_size-ahead;k++)
work[k]=cachea[k]*cachea[k];
-
for(k=0;k<ahead;k++)
- worka[k]=B[k]*B[k];
+ worka[k]=cacheb[k]*cacheb[k];
+
+ for(j=1;j<ch;j++){
+ cachea = A[j]+ahead;
+ cacheb = B[j];
+ for(k=0;k<input_size-ahead;k++)
+ work[k]+=cachea[k]*cachea[k];
+ for(k=0;k<ahead;k++)
+ worka[k]+=cacheb[k]*cacheb[k];
+ }
+ if(ch>0){
+ float inv = 1./ch;
+ for(k=0;k<input_size;k++)
+ work[k]*=inv;
+ }
+
}else{
for(k=0;k<input_size;k++)
work[k]=cachea[k]*cachea[k];
+ for(j=1;j<ch;j++){
+ cachea = A[j];
+ for(k=0;k<input_size;k++)
+ work[k]+=cachea[k]*cachea[k];
+ }
+ if(ch>0){
+ float inv = 1./ch;
+ for(k=0;k<input_size;k++)
+ work[k]*=inv;
+ }
}
}
}
-void bi_compand(float *A,float *B,float *adj,
+void bi_compand(float **A,float **B,
+ int ch,
+ float *adj,
float corner,
float multiplier,
float currmultiplier,
@@ -150,7 +199,7 @@
hold=ahead*(1.-lookahead);
ahead*=lookahead;
- fill_work(A,B,work,ahead,hold,mode,ps);
+ fill_work(A,B,ch,work,ahead,hold,mode,ps);
multiplier*=.5;
currmultiplier*=.5;
@@ -197,7 +246,7 @@
}
-void full_compand(float *A,float *B,float *adj,
+void full_compand(float **A,float **B,int ch,float *adj,
float multiplier,float currmultiplier,
int mode,
iir_filter *attack, iir_filter *decay,
@@ -208,7 +257,7 @@
float work[input_size];
int ahead=(mode?step_ahead(attack->alpha):impulse_ahead2(attack->alpha));
- fill_work(A,B,work,ahead,0,mode,ps);
+ fill_work(A,B,ch,work,ahead,0,mode,ps);
multiplier*=.5;
currmultiplier*=.5;
Modified: trunk/postfish/follower.h
===================================================================
--- trunk/postfish/follower.h 2010-08-17 14:56:52 UTC (rev 17365)
+++ trunk/postfish/follower.h 2010-08-21 05:09:50 UTC (rev 17366)
@@ -28,7 +28,7 @@
float val;
} peak_state;
-extern void bi_compand(float *A,float *B,float *adj,
+extern void bi_compand(float **A,float **B,int ch,float *adj,
float corner,
float multiplier,
float currmultiplier,
@@ -39,7 +39,7 @@
int active,
int over);
-extern void full_compand(float *A,float *B,float *adj,
+extern void full_compand(float **A,float **B,int ch,float *adj,
float multiplier,float currmultiplier,
int mode,
iir_filter *attack, iir_filter *decay,
Modified: trunk/postfish/multicompand.c
===================================================================
--- trunk/postfish/multicompand.c 2010-08-17 14:56:52 UTC (rev 17365)
+++ trunk/postfish/multicompand.c 2010-08-21 05:09:50 UTC (rev 17366)
@@ -356,7 +356,7 @@
memset(adj,0,sizeof(*adj)*input_size);
if(u_active)
- bi_compand(x,0,(i>=w->freq_bands?0:adj),
+ bi_compand(&x,0,1,(i>=w->freq_bands?0:adj),
//prevset->static_u[i],
currset->static_u[i],
1.f-1000.f/prevset->under_ratio,
@@ -373,7 +373,7 @@
0);
if(o_active)
- bi_compand(x,0,(i>=w->freq_bands?0:adj),
+ bi_compand(&x,0,1,(i>=w->freq_bands?0:adj),
//prevset->static_o[i],
currset->static_o[i],
1.f-1000.f/prevset->over_ratio,
@@ -417,7 +417,7 @@
}
if(b_active)
- full_compand(x,0,(i>=w->freq_bands?0:adj),
+ full_compand(&x,0,1,(i>=w->freq_bands?0:adj),
1.f-1000.f/prevset->base_ratio,
1.f-1000.f/currset->base_ratio,
c->base_mode,
@@ -447,6 +447,199 @@
return(feedback_p);
}
+static int multicompand_work_allchannels(multicompand_state *ms,
+ float **peakfeed,
+ float **rmsfeed,
+ int maxbands,
+ atten_cache *prevset,
+ atten_cache *currset,
+ multicompand_settings *c){
+ subband_state *ss=&ms->ss;
+ int active=(ss->effect_active1[0] ||
+ ss->effect_active0[0] ||
+ ss->effect_activeC[0]);
+
+ int feedback_p=0;
+ int i,k,ch,bank;
+ subband_window *w=ss->w1[0];
+ subband_window *wP=ss->wP[0];
+ float adj[input_size];
+
+ int o_active=0,u_active=0,b_active=0;
+
+ if(w==&sw[0]){
+ bank=0;
+ }else if(w==&sw[1]){
+ bank=1;
+ }else bank=2;
+
+ if(active){
+ for(i=0;i<multicomp_freqs_max;i++){
+ currset->static_u[i]=c->bc[bank].static_u[i];
+ currset->static_o[i]=c->bc[bank].static_o[i];
+ }
+
+ currset->under_ratio=c->under_ratio;
+ currset->over_ratio=c->over_ratio;
+ currset->base_ratio=c->base_ratio;
+
+ /* don't slew from an unknown value */
+ if(!ss->effect_activeP[0] || !ms->initstate)
+ memcpy(prevset,currset,sizeof(*currset));
+
+ /* don't run filters that will be applied at unity */
+ if(prevset->under_ratio==1000 && currset->under_ratio==1000){
+ ms->under_delay[0]=2;
+ for(i=0;i<multicomp_freqs_max;i++){
+ memset(&ms->under_peak[i][0],0,sizeof(peak_state));
+ memset(&ms->under_iir[i][0],0,sizeof(iir_state));
+ }
+ }else{
+ if(ms->under_delay[0]-->0)currset->under_ratio=1000;
+ if(ms->under_delay[0]<0)ms->under_delay[0]=0;
+ u_active=1;
+ }
+
+ if(prevset->over_ratio==1000 && currset->over_ratio==1000){
+ ms->over_delay[0]=2;
+ for(i=0;i<multicomp_freqs_max;i++){
+ memset(&ms->over_peak[i][0],0,sizeof(peak_state));
+ memset(&ms->over_iir[i][0],0,sizeof(iir_state));
+ }
+ }else{
+ if(ms->over_delay[0]-->0)currset->over_ratio=1000;
+ if(ms->over_delay[0]<0)ms->over_delay[0]=0;
+ o_active=1;
+ }
+
+ if(prevset->base_ratio==1000 && currset->base_ratio==1000){
+ ms->base_delay[0]=2;
+ for(i=0;i<multicomp_freqs_max;i++){
+ memset(&ms->base_peak[i][0],0,sizeof(peak_state));
+ memset(&ms->base_iir[i][0],0,sizeof(iir_state));
+ }
+ }else{
+ if(ms->base_delay[0]-->0)currset->base_ratio=1000;
+ if(ms->base_delay[0]<0)ms->base_delay[0]=0;
+ b_active=1;
+ }
+
+ } else if (ss->effect_activeP[0]){
+ /* this lapping channel just became inactive */
+ reset_filters_onech(ms,0);
+ }
+
+ /* one thing is worth a note here; 'maxbands' can be
+ 'overrange' for the current bank. This is intentional; we
+ may need to run the additional (allocated and valid)
+ filters before or after their bands are active. The only
+ garbage data here is the xxxx_u, xxxx_o and xxxx_b
+ settings. There are allocated, but unset; if overrange,
+ they're ignored in the compand worker */
+
+ for(i=0;i<maxbands;i++){
+ float **x=ss->lap[i];
+
+ if(u_active || o_active || b_active)
+ memset(adj,0,sizeof(*adj)*input_size);
+
+ if(u_active)
+ bi_compand(x,0,ms->ch,(i>=w->freq_bands?0:adj),
+ //prevset->static_u[i],
+ currset->static_u[i],
+ 1.f-1000.f/prevset->under_ratio,
+ 1.f-1000.f/currset->under_ratio,
+ c->under_lookahead/1000.f,
+ c->under_mode,
+ c->under_softknee,
+ &ms->under_attack[0],
+ &ms->under_decay[0],
+ &ms->under_iir[i][0],
+ &ms->under_peak[i][0],
+ ss->effect_active1[0] &&
+ (i<w->freq_bands),
+ 0);
+
+ if(o_active)
+ bi_compand(x,0,ms->ch,(i>=w->freq_bands?0:adj),
+ //prevset->static_o[i],
+ currset->static_o[i],
+ 1.f-1000.f/prevset->over_ratio,
+ 1.f-1000.f/currset->over_ratio,
+ c->over_lookahead/1000.f,
+ c->over_mode,
+ c->over_softknee,
+ &ms->over_attack[0],
+ &ms->over_decay[0],
+ &ms->over_iir[i][0],
+ &ms->over_peak[i][0],
+ ss->effect_active1[0] &&
+ (i<w->freq_bands),
+ 1);
+
+ for(ch=0;ch<ms->ch;ch++){
+ if(ss->visible1[ch]){
+ feedback_p=1;
+
+ if(!mute_channel_muted(ss->mutemask1,ch)){
+ /* determine rms and peak for feedback */
+ float max=-1.;
+ int maxpos=-1;
+ float rms=0.;
+
+ for(k=0;k<input_size;k++){
+ float val=x[ch][k]*x[ch][k];
+ if(val>max){
+ max=val;
+ maxpos=k;
+ }
+ rms+=val;
+ }
+ if(u_active || o_active || b_active){
+ peakfeed[i][ch]=todB(max)*.5+adj[maxpos];
+ rmsfeed[i][ch]=todB(rms/input_size)*.5+adj[maxpos];
+ }else{
+ peakfeed[i][ch]=todB(max)*.5;
+ rmsfeed[i][ch]=todB(rms/input_size)*.5;
+ }
+ }
+ }
+ }
+
+ if(b_active)
+ full_compand(x,0,ms->ch,(i>=w->freq_bands?0:adj),
+ 1.f-1000.f/prevset->base_ratio,
+ 1.f-1000.f/currset->base_ratio,
+ c->base_mode,
+ &ms->base_attack[0],
+ &ms->base_decay[0],
+ &ms->base_iir[i][0],
+ &ms->base_peak[i][0],
+ ss->effect_active1[0] &&
+ i<w->freq_bands);
+
+ if(u_active || o_active || b_active){
+ if(ss->effect_active1[0]){
+ for(k=0;k<input_size;k++){
+ float a = fromdB_a(adj[k]);
+ for(ch=0;ch<ms->ch;ch++)
+ x[ch][k]*=a;
+ }
+ }
+ }
+ }
+
+ for(;i<wP->freq_bands;i++){
+ memset(&ms->over_peak[i][0],0,sizeof(peak_state));
+ memset(&ms->under_peak[i][0],0,sizeof(peak_state));
+ memset(&ms->base_peak[i][0],0,sizeof(peak_state));
+ memset(&ms->over_iir[i][0],0,sizeof(iir_state));
+ memset(&ms->under_iir[i][0],0,sizeof(iir_state));
+ memset(&ms->base_iir[i][0],0,sizeof(iir_state));
+ }
+ return(feedback_p);
+}
+
static void push_feedback(multicompand_state *ms,int bypass,int maxmaxbands){
int i;
Modified: trunk/postfish/singlecomp.c
===================================================================
--- trunk/postfish/singlecomp.c 2010-08-17 14:56:52 UTC (rev 17365)
+++ trunk/postfish/singlecomp.c 2010-08-21 05:09:50 UTC (rev 17366)
@@ -224,19 +224,22 @@
singlecomp_settings **scset,
time_linkage *in,
time_linkage *out,
- int *active){
- int i;
+ int *active,
+ int link){
+ int i,j;
int have_feedback=0;
u_int32_t mutemaskC=in->active;
u_int32_t mutemask0=scs->mutemask0;
u_int32_t mutemaskP=scs->mutemaskP;
+ int iterations = (link?1:scs->ch);
+ int chper = (link?scs->ch:1);
float peakfeed[scs->ch];
float rmsfeed[scs->ch];
memset(peakfeed,0,sizeof(peakfeed));
memset(rmsfeed,0,sizeof(rmsfeed));
- for(i=0;i<scs->ch;i++){
+ for(i=0;i<iterations;i++){
int o_active=0,u_active=0,b_active=0;
@@ -267,34 +270,36 @@
if(activeP) reset_onech_filter(scs,i); /* just became inactive;
reset all filters for
this channel */
-
/* feedback */
if(scset[i]->panel_visible){
- int k;
- float rms=0.;
- float peak=0.;
- float *x=scs->cache[i];
- have_feedback=1;
+ for(j=i;j<i+chper;j++){
+ int k;
+ float rms=0.;
+ float peak=0.;
+ float *x=scs->cache[j];
+ have_feedback=1;
- if(!muted0){
- for(k=0;k<input_size;k++){
- float val=x[k]*x[k];
- rms+= val;
- if(peak<val)peak=val;
- }
- }
- peakfeed[i]=todB_a(peak)*.5;
- rms/=input_size;
- rmsfeed[i]=todB_a(rms)*.5;
+ if(!muted0){
+ for(k=0;k<input_size;k++){
+ float val=x[k]*x[k];
+ rms+= val;
+ if(peak<val)peak=val;
+ }
+ }
+ peakfeed[j]=todB_a(peak)*.5;
+ rms/=input_size;
+ rmsfeed[j]=todB_a(rms)*.5;
+ }
}
/* rotate data vectors */
if(out){
- float *temp=out->data[i];
- out->data[i]=scs->cache[i];
- scs->cache[i]=temp;
- }
-
+ for(j=i;j<i+chper;j++){
+ float *temp=out->data[j];
+ out->data[j]=scs->cache[j];
+ scs->cache[j]=temp;
+ }
+ }
}else if(active0 || activeC){
float adj[input_size]; // under will set it
@@ -346,7 +351,7 @@
memset(adj,0,sizeof(*adj)*input_size);
if(u_active)
- bi_compand(scs->cache[i],in->data[i],adj,
+ bi_compand(scs->cache+i,in->data+i,chper,adj,
//scs->prevset[i].u_thresh,
scs->currset[i].u_thresh,
1.f-1000./scs->prevset[i].u_ratio,
@@ -359,7 +364,7 @@
active0,0);
if(o_active)
- bi_compand(scs->cache[i],in->data[i],adj,
+ bi_compand(scs->cache+i,in->data+i,chper,adj,
//scs->prevset[i].o_thresh,
scs->currset[i].o_thresh,
1.f-1000.f/scs->prevset[i].o_ratio,
@@ -374,30 +379,32 @@
/* feedback before base */
if(scset[i]->panel_visible){
- int k;
- float rms=0.;
- float peak=0.;
- float *x=scs->cache[i];
- have_feedback=1;
+ for(j=i;j<i+chper;j++){
+ int k;
+ float rms=0.;
+ float peak=0.;
+ float *x=scs->cache[j];
+ have_feedback=1;
- if(!muted0){
- for(k=0;k<input_size;k++){
- float mul=fromdB_a(adj[k]);
- float val=x[k]*mul;
+ if(!muted0){
+ for(k=0;k<input_size;k++){
+ float mul=fromdB_a(adj[k]);
+ float val=x[k]*mul;
- val*=val;
- rms+= val;
- if(peak<val)peak=val;
-
- }
- }
- peakfeed[i]=todB_a(peak)*.5;
- rms/=input_size;
- rmsfeed[i]=todB_a(rms)*.5;
+ val*=val;
+ rms+= val;
+ if(peak<val)peak=val;
+
+ }
+ }
+ peakfeed[j]=todB_a(peak)*.5;
+ rms/=input_size;
+ rmsfeed[j]=todB_a(rms)*.5;
+ }
}
-
+
if(b_active)
- full_compand(scs->cache[i],in->data[i],adj,
+ full_compand(scs->cache+i,in->data+i,chper,adj,
1.-1000./scs->prevset[i].b_ratio,
1.-1000./scs->currset[i].b_ratio,
scset[i]->b_mode,
@@ -406,49 +413,53 @@
active0);
if(active0 && out){
- /* current frame should be manipulated; render into out,
- handle transitioning after */
- int k;
- float *ix=scs->cache[i];
- float *ox=out->data[i];
+ for(j=i;j<i+chper;j++){
+ /* current frame should be manipulated; render into out,
+ handle transitioning after */
+ int k;
+ float *ix=scs->cache[j];
+ float *ox=out->data[j];
- for(k=0;k<input_size;k++)
- ox[k]=ix[k]*fromdB_a(adj[k]);
+ for(k=0;k<input_size;k++)
+ ox[k]=ix[k]*fromdB_a(adj[k]);
- /* is this frame preceeded/followed by an 'inactive' frame?
- If so, smooth the transition */
- if(!activeP){
- if(!mutedP){
- for(k=0;k<input_size/2;k++){
- float w=window[k];
- ox[k]= ox[k]*w + ix[k]*(1.-w);
- }
- }
- }
- if(!activeC){
- if(!mutedC){
- float *cox=ox+input_size/2;
- float *cix=ix+input_size/2;
- for(k=0;k<input_size/2;k++){
- float w=window[k];
- cox[k]= cox[k]*(1.-w) + cix[k]*w;
- }
- }
- }
+ /* is this frame preceeded/followed by an 'inactive' frame?
+ If so, smooth the transition */
+ if(!activeP){
+ if(!mutedP){
+ for(k=0;k<input_size/2;k++){
+ float w=window[k];
+ ox[k]= ox[k]*w + ix[k]*(1.-w);
+ }
+ }
+ }
+ if(!activeC){
+ if(!mutedC){
+ float *cox=ox+input_size/2;
+ float *cix=ix+input_size/2;
+ for(k=0;k<input_size/2;k++){
+ float w=window[k];
+ cox[k]= cox[k]*(1.-w) + cix[k]*w;
+ }
+ }
+ }
+ }
}else if(out){
- float *temp=out->data[i];
- out->data[i]=scs->cache[i];
- scs->cache[i]=temp;
+ for(j=i;j<i+chper;j++){
+ float *temp=out->data[j];
+ out->data[j]=scs->cache[j];
+ scs->cache[j]=temp;
+ }
}
}
- {
- float *temp=scs->cache[i];
- scs->cache[i]=in->data[i];
- in->data[i]=temp;
+
+ for(j=i;j<i+chper;j++){
+ float *temp=scs->cache[j];
+ scs->cache[j]=in->data[j];
+ in->data[j]=temp;
+ scs->activeP[j]=active0;
+ scs->active0[j]=activeC;
}
- scs->activeP[i]=active0;
- scs->active0[i]=activeC;
-
}
if(out){
@@ -485,7 +496,8 @@
time_linkage *singlecomp_read_helper(time_linkage *in,
singlecomp_state *scs,
singlecomp_settings **scset,
- int *active){
+ int *active,
+ int link){
int i;
switch(scs->fillstate){
@@ -507,7 +519,7 @@
}
scs->mutemaskP=scs->mutemask0=in->active;
- work_and_lapping(scs,scset,in,0,active);
+ work_and_lapping(scs,scset,in,0,active,link);
scs->fillstate=1;
scs->out.samples=0;
@@ -519,7 +531,7 @@
/* fall through */
case 1: /* nominal processing */
- work_and_lapping(scs,scset,in,&scs->out,active);
+ work_and_lapping(scs,scset,in,&scs->out,active,link);
if(scs->out.samples<input_size)scs->fillstate=2;
break;
@@ -545,7 +557,7 @@
for(i=0;i<master_state.ch;i++)
active[i]=singlecomp_master_set.panel_active;
- return singlecomp_read_helper(in, &master_state, master_set_bundle,active);
+ return singlecomp_read_helper(in, &master_state, master_set_bundle,active,1);
}
time_linkage *singlecomp_read_channel(time_linkage *in){
@@ -555,5 +567,5 @@
for(i=0;i<channel_state.ch;i++)
active[i]=singlecomp_channel_set[i].panel_active;
- return singlecomp_read_helper(in, &channel_state, channel_set_bundle,active);
+ return singlecomp_read_helper(in, &channel_state, channel_set_bundle,active,0);
}
Modified: trunk/postfish/version.h
===================================================================
--- trunk/postfish/version.h 2010-08-17 14:56:52 UTC (rev 17365)
+++ trunk/postfish/version.h 2010-08-21 05:09:50 UTC (rev 17366)
@@ -1,2 +1,2 @@
#define VERSION "$Id$ "
-/* DO NOT EDIT: Automated versioning hack [Sun Nov 20 21:43:22 EST 2005] */
+/* DO NOT EDIT: Automated versioning hack [Sat Aug 21 01:08:29 EDT 2010] */
More information about the commits
mailing list