blob: a7dc4ea3fe1d6933a328dc39cac1bf93aa9df411 [file] [log] [blame]
#ifdef BRHIST
#include <string.h>
#include "brhist.h"
#include "util.h"
#include <termcap.h>
#define BRHIST_BARMAX 50
int disp_brhist = 1;
long brhist_count[15];
long brhist_temp[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];
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_temp[i] = 0;
}
brhist_vbrmin = br_min;
brhist_vbrmax = br_max;
brhist_max = 0;
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';
if ((termname = getenv("TERM")) == NULL)
{
fprintf(stderr, "can't get TERM environment string.\n");
disp_brhist = 0;
return;
}
if (tgetent(term_buff, termname) != 1)
{
fprintf(stderr, "can't find termcap entry: %s\n", termname);
disp_brhist = 0;
return;
}
tc[0] = '\0';
tp = &tc[0];
tp=tgetstr("up", &tp);
brhist_backcur[0] = '\0';
for(i = br_min-1; i <= br_max; i++)
strcat(brhist_backcur, tp);
setbuf(stderr, stderr_buff);
}
void brhist_add_count(void)
{
int i;
for(i = brhist_vbrmin; i <= brhist_vbrmax; i++)
{
brhist_count[i] += brhist_temp[i];
if (brhist_count[i] > brhist_max)
brhist_max = brhist_count[i];
brhist_temp[i] = 0;
}
}
void brhist_disp(void)
{
int i;
long full;
int barlen;
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);
fputs(&brhist_bar[BRHIST_BARMAX - barlen], stderr);
fputs(&brhist_spc[barlen], stderr);
fputc('\n', stderr);
}
fputs(brhist_backcur, stderr);
fflush(stderr);
}
void brhist_disp_total(lame_global_flags *gfp)
{
int i;
FLOAT ave;
for(i = brhist_vbrmin; i <= brhist_vbrmax; i++)
fputc('\n', stderr);
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);
#if 0
fprintf(stderr, "----- 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
fflush(stderr);
}
#endif /* BRHIST */