brhist.c
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. #ifdef BRHIST
  2. #include <string.h>
  3. #include "brhist.h"
  4. #include "util.h"
  5. #include <termcap.h>
  6. #define BRHIST_BARMAX 50
  7. int disp_brhist = 1;
  8. long brhist_count[15];
  9. long brhist_temp[15];
  10. int brhist_vbrmin;
  11. int brhist_vbrmax;
  12. long brhist_max;
  13. char brhist_bps[15][5];
  14. char brhist_backcur[200];
  15. char brhist_bar[BRHIST_BARMAX+10];
  16. char brhist_spc[BRHIST_BARMAX+1];
  17. char stderr_buff[BUFSIZ];
  18. void brhist_init(lame_global_flags *gfp,int br_min, int br_max)
  19. {
  20.   int i;
  21.   char term_buff[1024];
  22.   char *termname;
  23.   char *tp;
  24.   char tc[10];
  25.   for(i = 0; i < 15; i++)
  26.     {
  27.       sprintf(brhist_bps[i], "%3d:", bitrate_table[gfp->version][i]);
  28.       brhist_count[i] = 0;
  29.       brhist_temp[i] = 0;
  30.     }
  31.   brhist_vbrmin = br_min;
  32.   brhist_vbrmax = br_max;
  33.   brhist_max = 0;
  34.   memset(&brhist_bar[0], '*', BRHIST_BARMAX);
  35.   brhist_bar[BRHIST_BARMAX] = '';
  36.   memset(&brhist_spc[0], ' ', BRHIST_BARMAX);
  37.   brhist_spc[BRHIST_BARMAX] = '';
  38.   brhist_backcur[0] = '';
  39.   if ((termname = getenv("TERM")) == NULL)
  40.     {
  41.       fprintf(stderr, "can't get TERM environment string.n");
  42.       disp_brhist = 0;
  43.       return;
  44.     }
  45.   if (tgetent(term_buff, termname) != 1)
  46.     {
  47.       fprintf(stderr, "can't find termcap entry: %sn", termname);
  48.       disp_brhist = 0;
  49.       return;
  50.     }
  51.   tc[0] = '';
  52.   tp = &tc[0];
  53.   tp=tgetstr("up", &tp);
  54.   brhist_backcur[0] = '';
  55.   for(i = br_min-1; i <= br_max; i++)
  56.     strcat(brhist_backcur, tp);
  57.   setbuf(stderr, stderr_buff);
  58. }
  59. void brhist_add_count(void)
  60. {
  61.   int i;
  62.   for(i = brhist_vbrmin; i <= brhist_vbrmax; i++)
  63.     {
  64.       brhist_count[i] += brhist_temp[i];
  65.       if (brhist_count[i] > brhist_max)
  66. brhist_max = brhist_count[i];
  67.       brhist_temp[i] = 0;
  68.     }
  69. }
  70. void brhist_disp(void)
  71. {
  72.   int i;
  73.   long full;
  74.   int barlen;
  75.   full = (brhist_max < BRHIST_BARMAX) ? BRHIST_BARMAX : brhist_max;
  76.   fputc('n', stderr);
  77.   for(i = brhist_vbrmin; i <= brhist_vbrmax; i++)
  78.     {
  79.       barlen = (brhist_count[i]*BRHIST_BARMAX+full-1) / full;
  80.       fputs(brhist_bps[i], stderr);
  81.       fputs(&brhist_bar[BRHIST_BARMAX - barlen], stderr);
  82.       fputs(&brhist_spc[barlen], stderr);
  83.       fputc('n', stderr);
  84.     }
  85.   fputs(brhist_backcur, stderr);
  86.   fflush(stderr);
  87. }
  88. void brhist_disp_total(lame_global_flags *gfp)
  89. {
  90.   int i;
  91.   FLOAT ave;
  92.   for(i = brhist_vbrmin; i <= brhist_vbrmax; i++)
  93.     fputc('n', stderr);
  94.   ave=0;
  95.   for(i = brhist_vbrmin; i <= brhist_vbrmax; i++)
  96.     ave += bitrate_table[gfp->version][i]*
  97.       (FLOAT)brhist_count[i] / gfp->totalframes;
  98.   fprintf(stderr, "naverage: %2.0f kbsn",ave);
  99.     
  100. #if 0
  101.   fprintf(stderr, "----- bitrate statistics -----n");
  102.   fprintf(stderr, " [kbps]      framesn");
  103.   for(i = brhist_vbrmin; i <= brhist_vbrmax; i++)
  104.     {
  105.       fprintf(stderr, "   %3d  %8ld (%.1f%%)n",
  106.       bitrate_table[gfp->version][i],
  107.       brhist_count[i],
  108.       (FLOAT)brhist_count[i] / gfp->totalframes * 100.0);
  109.     }
  110. #endif
  111.   fflush(stderr);
  112. }
  113. #endif /* BRHIST */