⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtkanal.c

📁 MP3编码程序和资料
💻 C
📖 第 1 页 / 共 4 页
字号:
    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;	fac=3;	scalefac = gfc->scalefac_band.s;      }else{	nsfb=SBMAX_l;	fac=1;	scalefac = gfc->scalefac_band.l;      }      for (i=nsfb-7 ; 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));       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 n=%i/%3.1f/%3.1f/%3.1f",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]);      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;      xcord[0] = 1;      xcord[1] = n+1;      gpk_rectangle_draw(sfbbox[gr],xcord,ycord,xmn,ymn,xmx,ymx,&yellow);          }}static void update_progress(void){      char label[80];  int tf=gfp->totalframes;  if (gtkinfo.totalframes>0) tf=gtkinfo.totalframes;  sprintf(label,"Frame:%4i/%4i  %6.2fs",	 pplot->frameNum,(int)tf-1, pplot->frametime);  gtk_progress_set_value (GTK_PROGRESS (frameprogress), (gdouble) pplot->frameNum);  gtk_label_set_text(GTK_LABEL(framecounter),label);}static void analyze(void)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -