Audio-Play-MPG123
view release on metacpan or search on metacpan
mpg123/common.c view on Meta::CPAN
bufsize = (long)((double) bufsize / buffermem->buf[0] /
buffermem->buf[1] / compute_tpf(fr));
if((buffermem->buf[2] & AUDIO_FORMAT_MASK) == AUDIO_FORMAT_16)
return bufsize/2;
else
return bufsize;
}
void print_stat(struct reader *rds,struct frame *fr,int no,long buffsize,struct audio_info_struct *ai)
{
double bpf,tpf,tim1,tim2;
double dt = 0.0;
int sno,rno;
char outbuf[256];
if(!rds || !fr)
return;
outbuf[0] = 0;
mpg123/control_generic.c view on Meta::CPAN
fr->mode_ext,
fr->framesize+4,
fr->stereo,
fr->copyright ? 1 : 0,
fr->error_protection ? 1 : 0,
fr->emphasis,
tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index],
fr->extension,
fr->lsf);
init = 0;
generic_sendstat(fr, framecnt);
statcnt = 0;
}
framecnt++;
statcnt++;
if (statfreq && statcnt >= statfreq)
{
statcnt -= statfreq;
generic_sendstat(fr, framecnt);
}
}
}
else {
/* wait for command */
while (1) {
n = select(32, &fds, NULL, NULL, NULL);
if (n != 0)
break;
}
mpg123/control_generic.c view on Meta::CPAN
}
/* OPTS */
if (!strcasecmp(cmd, "STATFREQ")) {
statfreq = atof (strtok (NULL, ""));
continue;
}
/* STAT */
if (!strcasecmp(cmd, "STAT")) {
generic_sendstat(fr, framecnt);
continue;
}
/* STOP */
if (!strcasecmp(cmd, "S") || !strcasecmp(cmd, "STOP")) {
if (mode != MODE_STOPPED) {
if (param.outmode == DECODE_AUDIO) {
audio_close(&ai);
ai.fn = -1;
}
mpg123/mpg123.c view on Meta::CPAN
leftFrames--;
if(!play_frame(mp,init,fr)) {
fprintf(stderr,"Error in Frame\n");
break;
}
init = 0;
if(param.verbose) {
#ifndef NOXFERMEM
if (param.verbose > 1 || !(frameNum & 0x7))
print_stat(rd,fr,frameNum,xfermem_get_usedspace(buffermem),&ai);
if(param.verbose > 2 && param.usebuffer)
fprintf(stderr,"[%08x %08x]",buffermem->readindex,buffermem->freeindex);
#else
if (param.verbose > 1 || !(frameNum & 0x7))
print_stat(rd,fr,frameNum,0,&ai);
#endif
}
#ifdef TERM_CONTROL
if(!param.term_ctrl) {
continue;
} else {
long offset;
if((offset=term_control(fr))) {
if(!rd->back_frame(rd, fr, -offset)) {
frameNum+=offset;
mpg123/mpg123.c view on Meta::CPAN
#ifndef NOXFERMEM
if(param.usebuffer) {
int s;
while ((s = xfermem_get_usedspace(buffermem))) {
struct timeval wait170 = {0, 170000};
buffer_ignore_lowmem();
if(param.verbose)
print_stat(rd,fr,frameNum,s,&ai);
#ifdef TERM_CONTROL
if(param.term_ctrl) {
long offset;
if((offset=term_control(fr))) {
if((!rd->back_frame(rd, fr, -offset))
&& read_frame(rd,fr)) {
frameNum+=offset;
if (frameNum < 0)
frameNum = 0;
goto tc_hack; /* Doh! Gag me with a spoon! */
}
}
}
#endif
select(0, NULL, NULL, NULL, &wait170);
}
}
#endif
if(param.verbose)
print_stat(rd,fr,frameNum,xfermem_get_usedspace(buffermem),&ai);
if (!param.quiet) {
/*
* This formula seems to work at least for
* MPEG 1.0/2.0 layer 3 streams.
*/
int secs = get_songlen(rd,fr,frameNum);
fprintf(stderr,"\n[%d:%02d] Decoding of %s finished.\n", secs / 60,
secs % 60, filename);
}
mpg123/mpg123.h view on Meta::CPAN
extern int synth_ntom_8bit (real *,int,unsigned char *,int *);
extern int synth_ntom_mono (real *,unsigned char *,int *);
extern int synth_ntom_mono2stereo (real *,unsigned char *,int *);
extern int synth_ntom_8bit_mono (real *,unsigned char *,int *);
extern int synth_ntom_8bit_mono2stereo (real *,unsigned char *,int *);
extern void rewindNbits(int bits);
extern int hsstell(void);
extern void huffman_decoder(int ,int *);
extern void huffman_count1(int,int *);
extern void print_stat(struct reader *rd,struct frame *fr,int no,long buffsize,struct audio_info_struct *ai);
extern int get_songlen(struct reader *rd,struct frame *fr,int no);
extern void init_layer3(int);
extern void init_layer2(void);
extern void make_decode_tables(long scale);
extern void make_conv16to8_table(int);
extern void dct64(real *,real *,real *);
#ifdef USE_MMX
extern void dct64_MMX(short *a,short *b,real *c);
mpg123/tools/Mp3play view on Meta::CPAN
ClearScreen();
MyExit(0);
sub ReadDirectory
{ # subroutine to read all MP3
# files from a directory
my $Entry;
my @DirectoryContents;
my $dev;
my $inode;
($dev,$inode)=stat($_[0]);
if((!$Directory{$dev,$inode})&&(opendir(DIRECTORY,$_[0])))
{ # this directory has not been
# searched yet and could be open
# so read it
$Directory{$dev,$inode}=1; # this directory is searched
$_[0].="/" if($_[0]=~/[^\/]$/); # add "/" to the end of
# directory if it hasn't one
@DirectoryContents=readdir(DIRECTORY); # read directory contents
closedir(DIRECTORY);
foreach $Entry (@DirectoryContents)
( run in 1.011 second using v1.01-cache-2.11-cpan-49f99fa48dc )