📄 gtkanal.c
字号:
gpk_rectangle_draw(pcmbox,xcord,ycord,xmn,ymn,xmx,ymx,&yellow); } for (gr = 0 ; gr < mode_gr ; gr++) { if (blocktype[gr][ch]==2) for (i=1 ; i<=2; i++) { xcord[0] = 223.5+gr*576 + i*192; xcord[1] = 223.5+gr*576 + i*192; gpk_rectangle_draw(pcmbox,xcord,ycord,xmn,ymn,xmx,ymx,&yellow); } } /* bars representing FFT windows */ xcord[0] = 0; ycord[0] = ymn+3000; xcord[1] = 1024-1; ycord[1] = ymn+1000; gpk_rectangle_draw(pcmbox,xcord,ycord,xmn,ymn,xmx,ymx,grcolor[0]); xcord[0] = 576; ycord[0] = ymn+2000; xcord[1] = 576+1024-1; ycord[1] = ymn; gpk_rectangle_draw(pcmbox,xcord,ycord,xmn,ymn,xmx,ymx,grcolor[1]); /* plot PCM data */ for (i=0; i<n; i++) { xcord[i] = i; if (gtkinfo.msflag) ycord[i] = ch ? .5*(pplot->pcmdata[0][i]-pplot->pcmdata[1][i]) : .5*(pplot->pcmdata[0][i]+pplot->pcmdata[1][i]); else ycord[i]=pplot->pcmdata[ch][i]; } /* skip plot if we are doing an mp3 file */ if (!gtkinfo.filetype) { gpk_graph_draw(pcmbox,n,xcord,ycord,xmn,ymn,xmx,ymx,0,title2,&black); } /*******************************************************************/ /* draw the PCM re-synthesis data */ /*******************************************************************/ n = 1152; /* sprintf(title2,"Re-synthesis mask_ratio=%3.2f %3.2f ener_ratio=%3.2f %3.2f", pplot->ms_ratio[0],pplot->ms_ratio[1], pplot->ms_ener_ratio[0],pplot->ms_ener_ratio[1]); */ title="Re-synthesis"; if (gtkinfo.difference) title="Re-synthesis difference (amplified 20db)"; ymn = -32767 ; ymx = 32767; xmn = 0; xmx = 1600-1; gpk_graph_draw(winbox,0,xcord,ycord, xmn,ymn,xmx,ymx,1,title,&black); /* draw some hash marks dividing the frames */ ycord[0] = ymx*.8; ycord[1] = ymn*.8; for (gr=0 ; gr<=2; gr++) { xcord[0] = 223.5 + gr*576; xcord[1] = 223.5 +gr*576; gpk_rectangle_draw(winbox,xcord,ycord,xmn,ymn,xmx,ymx,&yellow); } for (gr = 0 ; gr < 2 ; gr++) { if (blocktype[gr][ch]==2) for (i=1 ; i<=2; i++) { xcord[0] = 223.5+gr*576 + i*192; xcord[1] = 223.5+gr*576 + i*192; gpk_rectangle_draw(winbox,xcord,ycord,xmn,ymn,xmx,ymx,&yellow); } } /* this piece of PCM data from previous frame */ n = 224; for (j=1152-n,i=0; i<n; i++,j++) { xcord[i] = i; if (gtkinfo.msflag) ycord[i] = ch ? .5*(pplot1->pcmdata2[0][j]- pplot1->pcmdata2[1][j]) : .5*(pplot1->pcmdata2[0][j]+pplot1->pcmdata2[1][j]); else ycord[i]=pplot1->pcmdata2[ch][j]; } /* this piece of PCM data from current frame */ n = 1152; for (i=0; i<n; i++) { xcord[i+224] = i+224; if (gtkinfo.msflag) ycord[i+224] = ch ? .5*(pplot2->pcmdata2[0][i]-pplot2->pcmdata2[1][i]) : .5*(pplot2->pcmdata2[0][i]+pplot2->pcmdata2[1][i]); else ycord[i+224]=pplot2->pcmdata2[ch][i]; } n=1152+224; if (gtkinfo.difference) { for (i=0; i<n; i++) { if (gtkinfo.msflag) ycord[i] -= ch ? .5*(pplot->pcmdata[0][i]-pplot->pcmdata[1][i]) : .5*(pplot->pcmdata[0][i]+pplot->pcmdata[1][i]); else ycord[i] -= pplot->pcmdata[ch][i]; } ycord[i] *= 100; } gpk_graph_draw(winbox,n,xcord,ycord, xmn,ymn,xmx,ymx,0,title,&black); /*******************************************************************/ /* draw the MDCT energy spectrum */ /*******************************************************************/ for (gr = 0 ; gr < mode_gr ; gr ++) { int bits,bits2; char *blockname=""; switch (blocktype[gr][ch]) { case 0: blockname = "normal"; break; case 1: blockname = "start"; break; case 2: blockname = "short"; break; case 3: blockname = "end"; break; } strcpy(label,blockname); if (pplot1->mixed[gr][ch]) strcat(label,"(mixed)"); n = 576; if (gtkinfo.flag123) { data = pplot1->mpg123xr[gr][0]; data2 = pplot1->mpg123xr[gr][1]; }else{ data = pplot->xr[gr][0]; data2 = pplot->xr[gr][1]; } xmn = 0; xmx = n-1; ymn=0; ymx=11; /* draw title, erase old plot */ if (gtkinfo.flag123) { bits=pplot1->mainbits[gr][ch]; bits2=pplot1->sfbits[gr][ch]; }else{ bits=pplot->LAMEmainbits[gr][ch]; bits2=pplot->LAMEsfbits[gr][ch]; } sprintf(title2,"MDCT%1i(%s) bits=%i/%i ",gr,label,bits,bits2); gpk_bargraph_draw(mdctbox[gr],0,xcord,ycord, xmn,ymn,xmx,ymx,1,title2,0,barcolor); /* draw some hash marks showing scalefactor bands */ if (gtkinfo.sfblines) { int fac,nsfb, *scalefac; if (blocktype[gr][ch]==SHORT_TYPE) { nsfb=SBMAX_s; i = nsfb-7; fac=3; scalefac = gfc->scalefac_band.s; }else{ nsfb=SBMAX_l; i = nsfb-10; fac=1; scalefac = gfc->scalefac_band.l; } for ( ; i<nsfb; i++) { ycord[0] = .8*ymx; ycord[1] = ymn; xcord[0] = fac*scalefac[i]; xcord[1] = xcord[0]; gpk_rectangle_draw(mdctbox[gr],xcord,ycord,xmn,ymn,xmx,ymx,&yellow); } } ymn=9e20; ymx=-9e20; for (i=0; i<n; i++) { double coeff; xcord[i] = i; if (gtkinfo.msflag){ coeff = ch ? .5*(data[i]-data2[i]) : .5*(data[i]+data2[i]) ; }else{ coeff = ch ? data2[i] : data[i]; } if (blocktype[gr][ch]==SHORT_TYPE && !subblock_draw[i % 3]) coeff = 0; ycord[i]=coeff*coeff*1e10; ycord[i] = log10( MAX( ycord[i],(double) 1)); #if 0 if (ch==0) if (i==26) if (data[i]!=0) printf("%i %i i=%i mdct: (db) %f %f \n",pplot->frameNum,gr,i,10*log10(data[i]*data[i]),10*log10(.33*(data[i-1]*data[i-1] + data[i]*data[i] + data[i+1]*data[i+1])) );#endif ymx=(ycord[i] > ymx) ? ycord[i] : ymx; ymn=(ycord[i] < ymn) ? ycord[i] : ymn; } /* print the min/max sprintf(title2,"MDCT%1i %5.2f %5.2f bits=%i",gr,ymn,ymx, pplot1->mainbits[gr][ch]); */ if (gtkinfo.flag123) bits=pplot1->mainbits[gr][ch]; else bits=pplot->LAMEmainbits[gr][ch]; sprintf(title2,"MDCT%1i(%s) bits=%i ",gr,label,bits); xmn = 0; xmx = n-1; ymn=0; ymx=11; gpk_bargraph_draw(mdctbox[gr],n,xcord,ycord, xmn,ymn,xmx,ymx,0,title2,0,barcolor); } /******************************************************************* * draw the psy model energy spectrum (k space) * l3psy.c computes pe, en, thm for THIS granule. *******************************************************************/ if (gtkinfo.kbflag){ for (gr = 0 ; gr < mode_gr ; gr ++) { n = HBLKSIZE; /* only show half the spectrum */ data = &pplot->energy[gr][ch][0]; ymn=9e20; ymx=-9e20; for (i=0; i<n; i++) { xcord[i] = i+1; if (blocktype[gr][ch]==SHORT_TYPE && !subblock_draw[i % 3]) ycord[i] = 0; else ycord[i] = log10( MAX( data[i],(double) 1)); ymx=(ycord[i] > ymx) ? ycord[i] : ymx; ymn=(ycord[i] < ymn) ? ycord[i] : ymn; } for (en=0 , j=0; j<BLKSIZE ; j++) en += pplot->energy[gr][ch][j]; sprintf(title2,"FFT%1i pe=%5.2fK en=%5.2e ",gr, pplot->pe[gr][ch]/1000,en); ymn = 3; ymx = 15; xmn = 1; xmx = n; gpk_bargraph_draw(enerbox[gr],n,xcord,ycord, xmn,ymn,xmx,ymx,1,title2,0,barcolor); } }else{ /******************************************************************* * draw the psy model energy spectrum (scalefactor bands) *******************************************************************/ for (gr = 0 ; gr < mode_gr ; gr ++) { if (blocktype[gr][ch]==2) { n = 3*SBMAX_s; data = &pplot->en_s[gr][ch][0]; data2 = &pplot->thr_s[gr][ch][0]; data3 = &pplot->xfsf_s[gr][ch][0]; } else { n = SBMAX_l; data = &pplot->en[gr][ch][0]; data2 = &pplot->thr[gr][ch][0]; data3 = &pplot->xfsf[gr][ch][0]; } ymn=9e20; ymx=-9e20; for (i=0; i<n; i++) { xcord[i] = i+1; if (blocktype[gr][ch]==SHORT_TYPE && !subblock_draw[i % 3]) ycord[i] = 0; else ycord[i] = log10( MAX( data[i],(double) 1)); /* ymx=(ycord[i] > ymx) ? ycord[i] : ymx; ymn=(ycord[i] < ymn) ? ycord[i] : ymn; */ } /* en = max energy difference amoung the 3 short FFTs for this granule */ en = pplot->ers[gr][ch]; if (en>999) en=999; sprintf(title2,"FFT%1i pe=%5.2fK/%3.1f \nnoise ovr_b:%i/max:%3.1f/ovr:%3.1f/tot:%3.1f/ssd:%i",gr, pplot->pe[gr][ch]/1000,en,pplot->over[gr][ch], pplot->max_noise[gr][ch], pplot->over_noise[gr][ch], pplot->tot_noise[gr][ch], pplot->over_SSD[gr][ch]); barthick=3; if (blocktype[gr][ch]==SHORT_TYPE) barthick=2; if (!(subblock_draw[0] && subblock_draw[1] && subblock_draw[2])) barthick=3; ymn = 3; ymx = 15; xmn = 1; xmx = n+1; /* a little extra because of the bar thickness */ gpk_bargraph_draw(enerbox[gr],n,xcord,ycord, xmn,ymn,xmx,ymx,1,title2,barthick,barcolor); for (i=0; i<n; i++) { xcord[i] = i+1 + .20; if (blocktype[gr][ch]==SHORT_TYPE && !subblock_draw[i % 3]) ycord[i] = 0; else ycord[i] = log10( MAX( data2[i], (double) 1)); } gpk_bargraph_draw(enerbox[gr],n,xcord,ycord, xmn,ymn,xmx,ymx,0,title2,barthick,grcolor[gr]); for (i=0; i<n; i++) { xcord[i] = i+1 + .40; if (blocktype[gr][ch]==SHORT_TYPE && !subblock_draw[i % 3]) ycord[i] = 0; else ycord[i] = log10( MAX( data3[i], (double) 1)); } gpk_bargraph_draw(enerbox[gr],n,xcord,ycord, xmn,ymn,xmx,ymx,0,title2,barthick,&red); } } /******************************************************************* * draw scalefactors *******************************************************************/ for (gr = 0 ; gr < mode_gr ; gr ++) { int ggain; if (blocktype[gr][ch]==2) { n = 3*SBMAX_s; if (gtkinfo.flag123) data = pplot1->sfb_s[gr][ch]; else data = pplot->LAMEsfb_s[gr][ch]; } else { n = SBMAX_l; if (gtkinfo.flag123) data = pplot1->sfb[gr][ch]; else data = pplot->LAMEsfb[gr][ch]; } ymn=-1; ymx=10; for (i=0; i<n; i++) { xcord[i] = i+1; if (blocktype[gr][ch]==SHORT_TYPE && !subblock_draw[i % 3]) ycord[i] = 0; else ycord[i] = -data[i]; ymx=(ycord[i] > ymx-2) ? ycord[i]+2 : ymx; ymn=(ycord[i] < ymn) ? ycord[i]-1 : ymn; } if (blocktype[gr][ch]==2) { sprintf(label2, "SFB scale=%i preflag=%i %i%i%i", pplot1->scalefac_scale[gr][ch], pplot1->preflag[gr][ch], pplot1->sub_gain[gr][ch][0], pplot1->sub_gain[gr][ch][1], pplot1->sub_gain[gr][ch][2]); }else{ sprintf(label2,"SFB scale=%i preflag=%i",pplot1->scalefac_scale[gr][ch], pplot1->preflag[gr][ch]); } if (gtkinfo.flag123) ggain = (pplot1->qss[gr][ch]); else ggain = (pplot->LAMEqss[gr][ch]); sprintf(title2," ggain=%i",ggain); strcat(label2,title2); xmn = 1; xmx = n+1; gpk_bargraph_draw(sfbbox[gr],n,xcord,ycord, xmn,ymn,xmx,ymx,1,label2,0,grcolor[gr]); ycord[0] = ycord[1] = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -