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 )