diff -Naur MPlayer-0.90.orig/libmpdemux/demux_audio.c MPlayer-0.90/libmpdemux/demux_audio.c
--- MPlayer-0.90.orig/libmpdemux/demux_audio.c	2003-04-29 21:57:38.000000000 +0200
+++ MPlayer-0.90/libmpdemux/demux_audio.c	2003-05-05 23:49:52.000000000 +0200
@@ -362,3 +362,23 @@
   free(priv);
 }
 
+int demux_audio_control(demuxer_t *demuxer,int cmd, void *arg){
+   sh_audio_t *sh_audio=demuxer->audio->sh;
+
+    switch(cmd) {
+	case DEMUXER_CTRL_GET_TIME_LENGTH:
+	    if(!sh_audio->i_bps)  // unspecified or VBR 
+    		return DEMUXER_CTRL_DONTKNOW;
+	    *((unsigned long *)arg)=(demuxer->movi_end-demuxer->movi_start)/sh_audio->i_bps;
+	    return DEMUXER_CTRL_GUESS;
+
+	case DEMUXER_CTRL_GET_PERCENT_POS:
+	    if (demuxer->movi_end==demuxer->movi_start) 
+    		return DEMUXER_CTRL_DONTKNOW;
+    	    *((int *)arg)=(int)((demuxer->filepos-demuxer->movi_start)/((demuxer->movi_end-demuxer->movi_start)/100));
+	    return DEMUXER_CTRL_OK;
+
+	default:
+	    return DEMUXER_CTRL_NOTIMPL;
+    }
+}
diff -Naur MPlayer-0.90.orig/libmpdemux/demuxer.c MPlayer-0.90/libmpdemux/demuxer.c
--- MPlayer-0.90.orig/libmpdemux/demuxer.c	2003-04-29 21:57:38.000000000 +0200
+++ MPlayer-0.90/libmpdemux/demuxer.c	2003-05-05 23:50:49.000000000 +0200
@@ -1354,6 +1354,7 @@
 extern int demux_mpg_control(demuxer_t *demuxer, int cmd, void *arg);
 extern int demux_asf_control(demuxer_t *demuxer, int cmd, void *arg);
 extern int demux_avi_control(demuxer_t *demuxer, int cmd, void *arg);
+extern int demux_audio_control(demuxer_t *demuxer,int cmd, void *arg);
 extern int demux_xmms_control(demuxer_t *demuxer, int cmd, void *arg);
 
 int demux_control(demuxer_t *demuxer, int cmd, void *arg) {
@@ -1368,6 +1369,8 @@
 	case DEMUXER_TYPE_AVI_NI:
 	case DEMUXER_TYPE_AVI_NINI:
 	    return demux_avi_control(demuxer,cmd,arg);
+	case DEMUXER_TYPE_AUDIO:
+	    return demux_audio_control(demuxer,cmd,arg);
 #ifdef HAVE_XMMS
 	case DEMUXER_TYPE_XMMS:
 	    return demux_xmms_control(demuxer,cmd,arg);
