Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 31 Jan 2004 00:30:17 -0800 (PST)
From:      Eugene Grosbein <eugen@grosbein.pp.ru>
To:        freebsd-ports-bugs@FreeBSD.org
Subject:   Re: ports/56597: bad startup perfomance of mpg123 with pcm/oss/dsp
Message-ID:  <200401310830.i0V8UHhI063333@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/56597; it has been noted by GNATS.

From: Eugene Grosbein <eugen@grosbein.pp.ru>
To: bug-followup@freebsd.org
Cc: des@des.no
Subject: Re: ports/56597: bad startup perfomance of mpg123 with pcm/oss/dsp
Date: Sat, 31 Jan 2004 15:22:22 +0700

 Hi!
 
 I have not obtain a responce from mpg123's author Michael Hipp,
 so here is a patch for ports/audio/mpg123
 
 The patch is "no-op" when mpg123 builds with Esound or NAS.
 
 It utilizes the knowledge that all three sets of 120 ioctls
 are effectively "no-op" for mpg123 using FreeBSD and /dev/dsp.
 
 So it just skips that loop when command line switch '-r' is not used.
 120 cycles are replaced with 2 when '-r' is used for FreeBSD and /dev/dsp
 that results in 60 times faster startup time.
 
 How-To-Apply: cd /usr/ports/audio; patch </path/to/patch
 
 diff -Nru mpg123.orig/Makefile mpg123/Makefile
 --- mpg123.orig/Makefile	Sat Jan 31 14:20:14 2004
 +++ mpg123/Makefile	Sat Jan 31 14:49:07 2004
 @@ -58,6 +58,7 @@
  ALL_TARGET=	freebsd-nas
  .else
  ALL_TARGET=	freebsd
 +CFLAGS+=	-DWITH_FREEBSD_DSP_ONLY
  .endif
  
  pre-fetch:
 diff -Nru mpg123.orig/files/patch-quickstart mpg123/files/patch-quickstart
 --- mpg123.orig/files/patch-quickstart	Thu Jan  1 07:00:00 1970
 +++ mpg123/files/patch-quickstart	Sat Jan 31 15:01:57 2004
 @@ -0,0 +1,43 @@
 +--- audio.c.orig	Tue Apr  6 23:53:05 1999
 ++++ audio.c	Sat Jan 31 15:00:06 2004
 +@@ -75,7 +75,12 @@
 + 		return;
 + 	}
 + 
 ++#ifndef WITH_FREEBSD_DSP_ONLY
 + 	memset(capabilities,0,sizeof(capabilities));
 ++#else
 ++	memset(capabilities,1,sizeof(capabilities));
 ++	j = k1;
 ++#endif
 + 	if(param.force_rate) {
 + 		rates[NUM_RATES-1] = param.force_rate;
 + 		k1 = NUM_RATES;
 +@@ -86,8 +91,13 @@
 + 		exit(1);
 + 	}
 + 
 ++#ifdef WITH_FREEBSD_DSP_ONLY
 ++	if(param.force_rate)
 ++#endif
 + 	for(i=0;i<NUM_CHANNELS;i++) {
 ++#ifndef WITH_FREEBSD_DSP_ONLY
 + 		for(j=0;j<NUM_RATES;j++) {
 ++#endif
 + 			ai1.channels = channels[i];
 + 			ai1.rate = rates[j];
 + 			fmts = audio_get_formats(&ai1);
 +@@ -96,8 +106,13 @@
 + 			for(k=0;k<NUM_ENCODINGS;k++) {
 + 				if((fmts & encodings[k]) == encodings[k])
 + 					capabilities[i][k][j] = 1;
 ++#ifdef WITH_FREEBSD_DSP_ONLY
 ++				else	capabilities[i][k][j] = 0;
 ++#endif
 + 			}
 ++#ifndef WITH_FREEBSD_DSP_ONLY
 + 		}
 ++#endif
 + 	}
 + 
 + 	audio_close(&ai1);
 
 
 Eugene Grosbein



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200401310830.i0V8UHhI063333>