Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Nov 1997 14:32:36 +0100 (MET)
From:      Luigi Rizzo <luigi@labinfo.iet.unipi.it>
To:        henrich@crh.cl.msu.edu (Charles Henrich)
Cc:        hasty@rah.star-gate.com, freebsd-multimedia@FreeBSD.ORG
Subject:   Re: ftp://rah.star-gate.com/pub/linux_ioctl-3.0-current.tar.gz
Message-ID:  <199711171332.OAA17030@labinfo.iet.unipi.it>
In-Reply-To: <199711171404.JAA06681@crh.cl.msu.edu> from "Charles Henrich" at Nov 17, 97 09:04:29 am

next in thread | previous in thread | raw e-mail | index | archive | help
> >xquake and the linux real player 5.0 works over here with this version
> >of the linux layer.
> 
> Any chance of a 2.2.5 version of these mods?

if you are only interested in raplayer, the fixes are quite trivial
(the relevant files are in /sys/i386/linux):

--- linux.h.orig	Tue Dec  3 16:47:28 1996
+++ linux.h	Mon Nov 17 00:05:29 1997
@@ -491,6 +491,9 @@
 #define LINUX_SNDCTL_DSP_GETOSPACE	0x500C
 #define LINUX_SNDCTL_DSP_GETISPACE	0x500D
 #define LINUX_SNDCTL_DSP_NONBLOCK	0x500E
+#define LINUX_SNDCTL_DSP_GETCAPS	0x500F
+#define LINUX_SNDCTL_DSP_GETIPTR       0x5011
+#define LINUX_SNDCTL_DSP_GETOPTR       0x5012
 #define LINUX_SOUND_MIXER_WRITE_VOLUME	0x4d00
 #define LINUX_SOUND_MIXER_WRITE_BASS	0x4d01
 #define LINUX_SOUND_MIXER_WRITE_TREBLE	0x4d02
--- linux_ioctl.c.orig	Sat Nov  9 22:10:15 1996
+++ linux_ioctl.c	Mon Nov 17 10:20:14 1997
@@ -691,6 +691,26 @@
 	args->cmd = SNDCTL_DSP_NONBLOCK;
 	return ioctl(p, (struct ioctl_args *)args, retval);
 
+    case LINUX_SNDCTL_DSP_GETCAPS:
+	args->cmd = SNDCTL_DSP_GETCAPS;
+	return ioctl(p, (struct ioctl_args *)args, retval);
+
+    case LINUX_SNDCTL_DSP_GETIPTR:
+	args->cmd = SNDCTL_DSP_GETIPTR;
+	return ioctl(p, (struct ioctl_args *)args, retval);
+
+    case LINUX_SNDCTL_DSP_GETOPTR:
+	args->cmd = SNDCTL_DSP_GETOPTR;
+	{ int a= ioctl(p, (struct ioctl_args *)args, retval);
+	struct count_info *p = (struct count_info *)(args->arg);
+#if 0
+       p->bytes += 128 ; /* if the output sounds choppy... */
+	uprintf("GETOPTR bytes %d blk %d ptr %d\n",
+		p->bytes, p->blocks, p->ptr);
+#endif
+	return a;
+	}
+
     case LINUX_SOUND_MIXER_WRITE_VOLUME:
 	args->cmd = SOUND_MIXER_WRITE_VOLUME;
 	return ioctl(p, (struct ioctl_args *)args, retval);


These changes more or less work with my audio driver (you need
support for a few more ioctl() which I have added just yesterday
and will make available later today).

I notice that rvplayer 5.0 with the sample file (welcome.rm) seems
to produce choppy audio output when the "synchronized" option is
set -- at least with my driver and my P5-133 at home (with a P6-200
things are much smoother).  I am not sure if the same problem exists
with guspnp.

Unless I have misinterpreted the semantics of GETOPTR (which is
quite possible), i suspect the problem is that the application
(which seems to be using 128-byte buffers) leaves too little spare
data in the play buffer, which expires before rendering of the next
video frame has expired.
In case, the p->bytes += 128 is there to reduce the problem (it is a
dirty hack, i know...)

	Cheers
	Luigi
-----------------------------+--------------------------------------
Luigi Rizzo                  |  Dip. di Ingegneria dell'Informazione
email: luigi@iet.unipi.it    |  Universita' di Pisa
tel: +39-50-568533           |  via Diotisalvi 2, 56126 PISA (Italy)
fax: +39-50-568522           |  http://www.iet.unipi.it/~luigi/
_____________________________|______________________________________



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