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

📄 brhist.c

📁 MP3编码程序和资料
💻 C
字号:
#include <string.h>#include "brhist.h"#include "util.h"#if (defined(BRHIST) && !defined(NOTERMCAP))#include <termcap.h>#endif#define BRHIST_BARMAX 50long brhist_count[15];int brhist_vbrmin;int brhist_vbrmax;long brhist_max;char brhist_bps[15][5];char brhist_backcur[200];char brhist_bar[BRHIST_BARMAX+10];char brhist_spc[BRHIST_BARMAX+1];char stderr_buff[BUFSIZ];#ifdef _WIN32  COORD Pos;HANDLE CH;CONSOLE_SCREEN_BUFFER_INFO CSBI;#endif#ifdef NOTERMCAP/* tgetstr */char *tgetstr(char id[2], char **area){      char *result;      result = NULL;      if (strncmp(id, "up", 2) == 0) {              result = "\033[A";      }      *area = result;      return result;}#endif /* NOTERMCAP */void brhist_init(lame_global_flags *gfp,int br_min, int br_max){  int i;  char term_buff[1024];  char *termname;  char *tp;  char tc[10];  for(i = 0; i < 15; i++)    {      sprintf(brhist_bps[i], "%3d", bitrate_table[gfp->version][i]);      brhist_count[i] = 0;    }  brhist_vbrmin = br_min;  brhist_vbrmax = br_max;  brhist_max = 0;#ifdef BRHIST  memset(&brhist_bar[0], '*', BRHIST_BARMAX);  brhist_bar[BRHIST_BARMAX] = '\0';  memset(&brhist_spc[0], ' ', BRHIST_BARMAX);  brhist_spc[BRHIST_BARMAX] = '\0';  brhist_backcur[0] = '\0';#ifndef NOTERMCAP  if ((termname = getenv("TERM")) == NULL)    {      ERRORF("can't get TERM environment string.\n");      gfp->brhist_disp = 0;      return;    }  if (tgetent(term_buff, termname) != 1)    {      ERRORF("can't find termcap entry: %s\n", termname);      gfp->brhist_disp = 0;      return;    }#endif /* !NOTERMCAP */  tc[0] = '\0';  tp = &tc[0];  tp=tgetstr("up", &tp);  brhist_backcur[0] = '\0';#ifdef _WIN32    CH= GetStdHandle(STD_ERROR_HANDLE);#else  for(i = br_min-1; i <= br_max; i++)    strcat(brhist_backcur, tp);  setbuf(stderr, stderr_buff);#endif#endif}void brhist_add_count(int i){  ++brhist_count[i];  if (brhist_count[i] > brhist_max)    brhist_max = brhist_count[i];}void brhist_disp(long totalframes){  int i;  long full;  int barlen;  char brpercent[10];#ifdef BRHIST  full = (brhist_max < BRHIST_BARMAX) ? BRHIST_BARMAX : brhist_max;  fputc('\n', stderr);  for(i = brhist_vbrmin; i <= brhist_vbrmax; i++)    {      barlen = (brhist_count[i]*BRHIST_BARMAX+full-1) / full;      fputs(brhist_bps[i], stderr);      sprintf(brpercent,"[%3i%%]",(int)(100*brhist_count[i]/totalframes));      fputs(brpercent, stderr);      fputs(&brhist_bar[BRHIST_BARMAX - barlen], stderr);      fputs(&brhist_spc[barlen], stderr);      fputc('\n', stderr);    }#ifdef _WIN32    //fflush is not needed  if(GetFileType(CH)!= FILE_TYPE_PIPE)  {    GetConsoleScreenBufferInfo(CH, &CSBI);    Pos.Y= CSBI.dwCursorPosition.Y-(brhist_vbrmax- brhist_vbrmin)- 2;    Pos.X= 0;    SetConsoleCursorPosition(CH, Pos);  }#else  fputs(brhist_backcur, stderr);  fflush(stderr);#endif  #endif}void brhist_disp_total(lame_global_flags *gfp){  int i;  FLOAT ave;  /*  lame_internal_flags *gfc=gfp->internal_flags;*/#ifdef BRHIST  for(i = brhist_vbrmin; i <= brhist_vbrmax; i++)    fputc('\n', stderr);#else  fprintf(stderr, "\n----- bitrate statistics -----\n");  fprintf(stderr, " [kbps]      frames\n");  for(i = brhist_vbrmin; i <= brhist_vbrmax; i++)    {      fprintf(stderr, "   %3d  %8ld (%.1f%%)\n",	      bitrate_table[gfp->version][i],	      brhist_count[i],	      (FLOAT)brhist_count[i] / gfp->totalframes * 100.0);    }#endif  ave=0;  for(i = brhist_vbrmin; i <= brhist_vbrmax; i++)    ave += bitrate_table[gfp->version][i]*      (FLOAT)brhist_count[i] / gfp->totalframes;  fprintf(stderr, "\naverage: %2.0f kbs\n",ave);  fflush(stderr);}

⌨️ 快捷键说明

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