亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gtkanal.c

?? JPEG-MPEG編解碼技術(shù)書集的代碼
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
#ifdef HAVEGTK
#include <math.h>
#include <gtk/gtk.h>
#include "gpkplotting.h"
#include "util.h"
#include "gtkanal.h"
#include "version.h"
#include "lame.h"
#include "tables.h"
#include "quantize-pvt.h"
#include <assert.h>

int gtkflag;

extern int makeframe(void);

/* global variables for the state of the system */
static gint idle_keepgoing;        /* processing of frames is ON */
static gint idle_count_max;   /* number of frames to process before plotting */
static gint idle_count;       /* pause & plot when idle_count=idel_count_max */
static gint idle_end=0;      /* process all frames, stop at last frame  */
static gint idle_back = 0;     /* set when we are displaying the old data */
static int mp3done = 0;         /* last frame has been read */
static GtkWidget *frameprogress; /* progress bar */ 
static GtkWidget *framecounter;  /* progress counter */ 

static int subblock_draw[3] = { 1, 1, 1 };

/* main window */
GtkWidget *window;
/* Backing pixmap for drawing areas */
GtkWidget *pcmbox;       /* PCM data plotted here */
GtkWidget *winbox;       /* mpg123 synthesis data plotted here */
GtkWidget *enerbox[2];   /* spectrum, gr=0,1 plotted here */
GtkWidget *mdctbox[2];   /* mdct coefficients gr=0,1 plotted here */
GtkWidget *sfbbox[2];    /* scalefactors gr=0,1 plotted here */
GtkWidget *headerbox;    /* mpg123 header info shown here */

plotting_data *pinfo,*pplot;
plotting_data Pinfo[NUMPINFO];

struct gtkinfostruct {
  int filetype;           /* input file type 0=WAV, 1=MP3 */
  int msflag;             /* toggle between L&R vs M&S PCM data display */
  int chflag;             /* toggle between L & R channels */
  int kbflag;             /* toggle between wave # and barks */
  int flag123;            /* show mpg123 frame info, OR ISO encoder frame info */
  double avebits;         /* running average bits per frame */
  int approxbits;         /* (approx) bits per frame */
  int maxbits;            /* max bits per frame used so far*/
  int totemph;            /* total of frames with de-emphasis */
  int totms;              /* total frames with ms_stereo */
  int totis;              /* total frames with i_stereo */
  int totshort;           /* total granules with short blocks */
  int totmix;             /* total granules with mixed blocks */
  int pupdate;            /* plot while processing, or only when needed */
  int sfblines;           /* plot scalefactor bands in MDCT plot */
  int totalframes;
} gtkinfo;


static lame_global_flags *gfp;

/**********************************************************************
 * read one frame and encode it 
 **********************************************************************/
int gtkmakeframe(void)
{
  int iread = 0;
  static int init=0;
  static int mpglag;
  static short int Buffer[2][1152];
  int ch,j;
  int mp3count = 0;
  int mp3out = 0;
  short mpg123pcm[2][1152];
  char mp3buffer[LAME_MAXMP3BUFFER];
  

#ifndef HAVEMPGLIB
  fprintf(stderr,"Error: GTK frame analyzer requires MPGLIB\n");
  exit(1);
#else
  /* even if iread=0, get_audio hit EOF and returned Buffer=all 0's.  encode
   * and decode to flush any previous buffers from the decoder */

  pinfo->frameNum = gfp->frameNum;
  pinfo->sampfreq=gfp->out_samplerate;
  pinfo->framesize=576*gfp->mode_gr;
  pinfo->stereo = gfp->stereo;

  if (gfp->input_format == sf_mp3) {
    iread=lame_readframe(gfp,Buffer);
    gfp->frameNum++;
  }else {
    while (gfp->frameNum == pinfo->frameNum) {
      if (gfp->frameNum==0 && !init) {
	mpglag=1;
	lame_decode_init();
      }
      if (gfp->frameNum==1) init=0; /* reset for next time frameNum==0 */
      iread=lame_readframe(gfp,Buffer);
      
      
      mp3count=lame_encode(gfp,Buffer,mp3buffer,sizeof(mp3buffer)); /* encode frame */
      assert( !(mp3count > 0 && gfp->frameNum == pinfo->frameNum));
      /* not possible to produce mp3 data without encoding at least 
       * one frame of data which would increment gfp->frameNum */
    }
    mp3out=lame_decode(mp3buffer,mp3count,mpg123pcm[0],mpg123pcm[1]); /* re-synthesis to pcm */
    /* mp3out = 0:  need more data to decode */
    /* mp3out = -1:  error.  Lets assume 0 pcm output */
    /* mp3out = number of samples output */
    if (mp3out>0) assert(mp3out==pinfo->framesize);
    if (mp3out!=0) {
      /* decoded output is for frame pinfo->frameNum123 
       * add a delay of framesize-DECDELAY, which will make the total delay
       * exactly one frame */
      pinfo->frameNum123=pinfo->frameNum-mpglag;
      for ( ch = 0; ch < pinfo->stereo; ch++ ) {
	for ( j = 0; j < pinfo->framesize-DECDELAY; j++ )
	  pinfo->pcmdata2[ch][j] = pinfo->pcmdata2[ch][j+pinfo->framesize];
	for ( j = 0; j < pinfo->framesize; j++ ) {
	  pinfo->pcmdata2[ch][j+pinfo->framesize-DECDELAY] = 
	    (mp3out==-1) ? 0 : mpg123pcm[ch][j];
	}
      }
    }else{
      if (mpglag == MAXMPGLAG) {
	fprintf(stderr,"READ_AHEAD set too low - not enough frame buffering.\n");
	fprintf(stderr,"MP3x display of input and output PCM data out of sync.\n");
      }
      else mpglag++; 
      pinfo->frameNum123=-1;  /* no frame output */
    }
  }
#endif
  return iread;
}


void plot_frame(void)
{
  int i,j,n,ch,gr;
  gdouble *xcord,*ycord;
  gdouble xmx,xmn,ymx,ymn;
  double *data,*data2,*data3;
  char title2[80];
  char label[80],label2[80];
  char *title;
  plotting_data *pplot1;
  plotting_data *pplot2 = NULL;

  double en,samp;
  int sampindex,version=0;
  static int firstcall=1;
  static GdkColor *barcolor,*color,*grcolor[2];
  static GdkColor yellow,gray,cyan,magenta,orange,pink,red,green,blue,black,oncolor,offcolor;
  int blocktype[2][2];
  int headbits;
  int mode_gr = 2;

  /* find the frame where mpg123 produced output coming from input frame
   * pinfo.  i.e.:   out_frame + out_frame_lag = input_frame  */
  for (i=1; i<=MAXMPGLAG; i++ ) {
    if ((pplot-i)->frameNum123 == pplot->frameNum ) {
      pplot2 = pplot-i;
      break;
    }
  }
  if (i > MAXMPGLAG) {
    fprintf(stderr,"input/output pcm syncing problem.  should not happen!\n");
    pplot2=pplot-1;
  }


  /* however, the PCM data is delayed by 528 samples in the encoder filterbanks.
   * We added another 1152-528 delay to this so the PCM data is *exactly* one 
   * frame behind the header & MDCT information */
  pplot1 =pplot2 +1;                   /* back one frame for header info, MDCT */

  /* allocate these GC's only once */
  if (firstcall) {
    firstcall=0;
    /*    grcolor[0] = &magenta; */
    grcolor[0] = &blue;
    grcolor[1] = &green;
    barcolor = &gray;

    setcolor(headerbox,&oncolor,255,0,0);
    setcolor(headerbox,&offcolor,175,175,175);
    setcolor(pcmbox,&red,255,0,0);
    setcolor(pcmbox,&pink,255,0,255);
    setcolor(pcmbox,&magenta,255,0,100);
    setcolor(pcmbox,&orange,255,127,0);
    setcolor(pcmbox,&cyan,0,255,255);
    setcolor(pcmbox,&green,0,255,0);
    setcolor(pcmbox,&blue,0,0,255);
    setcolor(pcmbox,&black,0,0,0);
    setcolor(pcmbox,&gray,100,100,100);
    setcolor(pcmbox,&yellow,255,255,0);

  }

  /*******************************************************************
   * frame header info
   *******************************************************************/
  if (pplot1->sampfreq)
    samp=pplot1->sampfreq;
  else samp=1;
  sampindex = SmpFrqIndex((long)samp, &version);

  ch = gtkinfo.chflag;
  
  headbits = 32 + ((pplot1->stereo==2) ? 256 : 136);
  gtkinfo.approxbits = (pplot1->bitrate*1000*1152.0/samp) - headbits;
  /*font = gdk_font_load ("-misc-fixed-medium-r-*-*-*-100-*-*-*-*-*-*");*/
  sprintf(title2,"%3.1fkHz %ikbs ",samp/1000,pplot1->bitrate);
  gtk_text_freeze (GTK_TEXT(headerbox));
  gtk_text_backward_delete(GTK_TEXT(headerbox),
			    gtk_text_get_length(GTK_TEXT(headerbox)));
  gtk_text_set_point(GTK_TEXT(headerbox),0);
  gtk_text_insert(GTK_TEXT(headerbox),NULL,&oncolor,NULL,title2, -1);
  title = " mono ";
  if (2==pplot1->stereo) title = pplot1->js ? " js " : " s ";
  gtk_text_insert (GTK_TEXT(headerbox), NULL, &oncolor, NULL,title, -1);
  color = pplot1->ms_stereo ? &oncolor : &offcolor ; 
  gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"ms ", -1);
  color = pplot1->i_stereo ? &oncolor : &offcolor ; 
  gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"is ", -1);

  color = pplot1->crc ? &oncolor : &offcolor ; 
  gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"crc ", -1);
  color = pplot1->padding ? &oncolor : &offcolor ; 
  gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"pad ", -1);

  color = pplot1->emph ? &oncolor : &offcolor ; 
  gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"em ", -1);

  sprintf(title2,"c1=%i,%i ",pplot1->big_values[0][ch],pplot1->big_values[1][ch]);
  gtk_text_insert (GTK_TEXT(headerbox), NULL, &black, NULL,title2, -1);

  color = pplot1->scfsi[ch] ? &oncolor : &offcolor ; 
  sprintf(title2,"scfsi=%i            ",pplot1->scfsi[ch]);
  gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,title2, -1);
  if (gtkinfo.filetype) 
    sprintf(title2," mdb=%i %i/NA",pplot1->maindata,pplot1->totbits);
  else
    sprintf(title2," mdb=%i   %i/%i",
	  pplot1->maindata,pplot1->totbits,pplot->resvsize);
  gtk_text_insert (GTK_TEXT(headerbox), NULL, &oncolor, NULL,title2, -1);
  gtk_text_thaw (GTK_TEXT(headerbox));



  /*******************************************************************
   * block type
   *******************************************************************/
  for (gr = 0 ; gr < mode_gr ; gr ++) 
    if (gtkinfo.flag123) 
      blocktype[gr][ch]=pplot1->mpg123blocktype[gr][ch];
    else blocktype[gr][ch]=pplot->blocktype[gr][ch]; 

  
  /*******************************************************************
   * draw the PCM data *
   *******************************************************************/
  n = 1600;  /* PCM frame + FFT window:   224 + 1152 + 224  */
  xcord = g_malloc(n*sizeof(gdouble));
  ycord = g_malloc(n*sizeof(gdouble));


  if (gtkinfo.msflag) 
    title=ch ? "Side Channel" :  "Mid Channel";
  else 
    title=ch ? "Right Channel" : "Left Channel";

  sprintf(title2,"%s  mask_ratio=%3.2f  %3.2f  ener_ratio=%3.2f  %3.2f",
	  title,
	  pplot->ms_ratio[0],pplot->ms_ratio[1],
	  pplot->ms_ener_ratio[0],pplot->ms_ener_ratio[1]);


  ymn = -32767 ; 
  ymx =  32767;
  xmn = 0;
  xmx = 1600-1;

  /*  0  ... 224      draw in black, connecting to 224 pixel
   * 1375 .. 1599     draw in black  connecting to 1375 pixel
   * 224 ... 1375     MP3 frame.  draw in blue
   */

  /* draw the title */
  gpk_graph_draw(pcmbox,0,xcord,ycord,xmn,ymn,xmx,ymx,1,title2,
		 &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(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) {
    n = 224;    /* number of points on end of blue part */
    /* data left of frame */
    gpk_graph_draw(pcmbox,n+1,xcord,ycord,xmn,ymn,xmx,ymx,0,title2,&black);
    /* data right of frame */
    gpk_graph_draw(pcmbox,n+1,&xcord[1152+n-1],&ycord[1152+n-1],
		   xmn,ymn,xmx,ymx,0,title2,&black);
    /* the actual frame */
    gpk_graph_draw(pcmbox,1152,&xcord[n],&ycord[n],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]);
  */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频观看免费| 日韩高清在线不卡| 91福利在线看| 开心九九激情九九欧美日韩精美视频电影 | 精品国产成人在线影院 | 7878成人国产在线观看| 国产成人综合网| 日韩高清不卡一区| 亚洲欧美一区二区久久| 精品国一区二区三区| 欧美午夜免费电影| www.亚洲国产| 国产尤物一区二区| 日韩精品五月天| 亚洲激情男女视频| 国产欧美日韩亚州综合| 91精品国产日韩91久久久久久| 99精品久久久久久| 韩国欧美国产1区| 蜜桃传媒麻豆第一区在线观看| 亚洲激情图片小说视频| 17c精品麻豆一区二区免费| 精品国产99国产精品| 欧美日本高清视频在线观看| 99re热视频这里只精品| 国产成+人+日韩+欧美+亚洲| 久久91精品国产91久久小草 | 三级欧美在线一区| 亚洲人午夜精品天堂一二香蕉| 国产午夜精品一区二区| 精品国产91乱码一区二区三区| 欧美精品在欧美一区二区少妇| 91黄色在线观看| 色就色 综合激情| 99久久婷婷国产综合精品 | 国产成人av一区二区三区在线 | 国产乱妇无码大片在线观看| 精品一区二区三区免费观看| 日本成人在线不卡视频| 五月激情综合婷婷| 五月天激情综合| 男女男精品视频网| 青草国产精品久久久久久| 午夜视频在线观看一区二区| 亚洲地区一二三色| 亚洲成a人片综合在线| 午夜私人影院久久久久| 日韩vs国产vs欧美| 全国精品久久少妇| 久久成人免费网| 国产呦精品一区二区三区网站| 国产最新精品免费| 国产91对白在线观看九色| 成人性生交大片免费| www.亚洲在线| 色国产综合视频| 欧美日韩国产首页| 欧美成人aa大片| 国产午夜精品福利| 亚洲视频免费在线观看| 亚洲专区一二三| 午夜精品一区二区三区电影天堂 | 无码av免费一区二区三区试看 | 色综合天天性综合| 欧洲激情一区二区| 91精品婷婷国产综合久久竹菊| 日韩精品综合一本久道在线视频| 欧美成人猛片aaaaaaa| 国产视频在线观看一区二区三区| 国产精品成人午夜| 亚洲成人动漫在线观看| 韩国在线一区二区| aaa国产一区| 欧美精品一二三| 久久久噜噜噜久噜久久综合| 日韩美女视频19| 麻豆精品一区二区综合av| 成人一区二区三区| 欧美撒尿777hd撒尿| 久久综合成人精品亚洲另类欧美| 国产精品久久久久久久久搜平片| 亚洲sss视频在线视频| 国产精品影音先锋| 欧美艳星brazzers| 久久婷婷色综合| 亚洲麻豆国产自偷在线| 久久av资源站| 色综合 综合色| 精品国产91久久久久久久妲己| 亚洲欧美在线aaa| 理论片日本一区| 日本二三区不卡| 国产亚洲精品bt天堂精选| 亚洲最大成人网4388xx| 精品亚洲国内自在自线福利| 色婷婷精品大在线视频| 久久精品综合网| 日韩avvvv在线播放| aaa亚洲精品一二三区| 欧美成人精精品一区二区频| 亚洲综合一区二区三区| 国产成人一区在线| 日韩精品一区在线| 亚洲最快最全在线视频| 粉嫩欧美一区二区三区高清影视| 欧美日本国产视频| 一区二区三区在线视频免费| 国产成+人+日韩+欧美+亚洲| 日韩一区二区电影在线| 亚洲一区二区三区视频在线播放 | 精品国产麻豆免费人成网站| 亚洲精品免费电影| 懂色av噜噜一区二区三区av| 日韩一区二区三区视频| 亚洲国产精品久久人人爱| www.色综合.com| 日本一二三不卡| 黄色成人免费在线| 欧美一区二区福利视频| 亚洲图片欧美一区| 在线观看91视频| 1区2区3区国产精品| 成人一区二区三区在线观看| 久久久蜜臀国产一区二区| 久久99久久精品欧美| 欧美一卡二卡三卡四卡| 午夜免费久久看| 911国产精品| 调教+趴+乳夹+国产+精品| 欧美综合久久久| 亚洲综合在线五月| 日本道色综合久久| 伊人色综合久久天天| 91久久精品国产91性色tv| 日韩伦理av电影| 色女孩综合影院| 亚洲精品免费一二三区| 91国偷自产一区二区使用方法| 亚洲日本韩国一区| 在线视频欧美精品| 亚洲一区二区在线观看视频| 欧美影院一区二区三区| 亚洲一区二区在线免费看| 欧美午夜理伦三级在线观看| 亚洲国产中文字幕在线视频综合 | 成人av免费在线| 欧美国产在线观看| av激情成人网| 一区二区在线看| 欧美伊人久久久久久久久影院 | 琪琪久久久久日韩精品| 欧美一区二区三区免费大片| 蜜乳av一区二区| 亚洲精品一线二线三线无人区| 精品亚洲成av人在线观看| 久久精品亚洲国产奇米99| 国产69精品久久777的优势| 亚洲欧美激情插| 欧美日韩国产一二三| 久久99国产精品免费网站| 国产日韩欧美综合在线| a级高清视频欧美日韩| 一区二区三区四区不卡视频| 欧美疯狂做受xxxx富婆| 久久国产综合精品| 欧美国产乱子伦| 欧美性猛交xxxxxxxx| 美女任你摸久久| 欧美韩国日本一区| 欧美日韩中文国产| 激情久久五月天| 亚洲视频一区二区免费在线观看| 欧美日韩一级片网站| 精品一区二区综合| 综合欧美一区二区三区| 欧美一区二区精品| 国产mv日韩mv欧美| 香港成人在线视频| 久久久国产午夜精品| 91久久奴性调教| 久久国产精品99精品国产| 亚洲欧美日韩国产综合| 日韩一级二级三级| 99麻豆久久久国产精品免费优播| 丝袜a∨在线一区二区三区不卡| 久久久欧美精品sm网站| 欧美日韩免费高清一区色橹橹| 国产麻豆成人精品| 一区二区三区鲁丝不卡| 精品国产91乱码一区二区三区| 91搞黄在线观看| 丁香婷婷综合色啪| 日本一区中文字幕| 自拍偷拍欧美激情| 欧美刺激脚交jootjob| 在线视频欧美精品| 成人黄页在线观看| 精品一区二区三区久久| 亚洲综合图片区| 国产精品高潮呻吟|