diff mplayer.c @ 758:5a92a5601666

better audio out buffering & sample_format added
author arpi_esp
date Fri, 11 May 2001 01:22:35 +0000
parents 1417d8a4a96c
children 479f753a66ae
line wrap: on
line diff
--- a/mplayer.c	Fri May 11 01:20:59 2001 +0000
+++ b/mplayer.c	Fri May 11 01:22:35 2001 +0000
@@ -1033,8 +1033,8 @@
     printf("Couldn't initialize audio codec! -> nosound\n");
     has_audio=0;
   } else {
-    printf("AUDIO: samplerate=%d  channels=%d  bps=%d  ratio: %d->%d\n",sh_audio->samplerate,sh_audio->channels,sh_audio->samplesize,
-        sh_audio->i_bps,sh_audio->o_bps);
+    printf("AUDIO: srate=%d  chans=%d  bps=%d  sfmt=0x%X  ratio: %d->%d\n",sh_audio->samplerate,sh_audio->channels,sh_audio->samplesize,
+        sh_audio->sample_format,sh_audio->i_bps,sh_audio->o_bps);
   }
 }
 
@@ -1369,8 +1369,13 @@
   int r;
   audio_buf_info zz;
 
-  r=(sh_audio->samplesize==2)?AFMT_S16_LE:AFMT_U8;ioctl (audio_fd, SNDCTL_DSP_SETFMT, &r);
+  r=sh_audio->sample_format;
+//  (sh_audio->samplesize==2)?AFMT_S16_LE:AFMT_U8;
+  ioctl (audio_fd, SNDCTL_DSP_SETFMT, &r);
+  printf("audio_setup: sample format: 0x%X  (requested: 0x%X)\n",r,sh_audio->sample_format);
+  
   r=sh_audio->channels-1; ioctl (audio_fd, SNDCTL_DSP_STEREO, &r);
+  
   r=sh_audio->samplerate; if(ioctl (audio_fd, SNDCTL_DSP_SPEED, &r)==-1){
       printf("audio_setup: your card doesn't support %d Hz samplerate => nosound\n",r);
       has_audio=0;
@@ -1417,6 +1422,12 @@
 #endif
   printf("Audio buffer size: %d bytes, delay: %5.3fs\n",audio_buffer_size,audio_buffer_delay);
 
+  // fixup audio buffer size:
+  if(outburst<MAX_OUTBURST){
+    sh_audio->a_buffer_size=sh_audio->audio_out_minsize+outburst;
+    printf("Audio out buffer size reduced to %d bytes\n",sh_audio->a_buffer_size);
+  }
+
 //  a_frame=-(audio_buffer_delay);
   a_frame=0;
 //  RESET_AUDIO(audio_fd);
@@ -1761,14 +1772,14 @@
 
     if(has_audio){
           int delay=get_audio_delay(audio_fd);
-          if(verbose)printf("delay=%d\n",delay);
+          if(verbose>1)printf("delay=%d\n",delay);
           time_frame=v_frame;
           time_frame-=a_frame-(float)delay/(float)sh_audio->o_bps;
     } else {
           if(time_frame<-0.1 || time_frame>0.1) time_frame=0;
     }
     
-      if(verbose)printf("sleep: %5.3f  a:%6.3f  v:%6.3f  \n",stime,a_frame,v_frame);
+      if(verbose>1)printf("sleep: %5.3f  a:%6.3f  v:%6.3f  \n",time_frame,a_frame,v_frame);
       
       while(time_frame>0.005){
           if(time_frame<=0.020)