On Fri, Sep 25, 2009 at 12:43:50AM +0200, Jes?s Guerrero wrote: > On Fri, 25 Sep 2009 00:29:37 +0200, Reimar D?ffinger > <Reimar.Doeffinger at gmx.de> wrote: > > On Thu, Sep 24, 2009 at 11:56:17PM +0200, Jes?s Guerrero wrote: > >> 29549 is the first one that I can compile against current mplayer (and > it > >> exhibits this same problem), 29548 will not compile: > >> > >> $ make > >> cc -MM -Wundef -Wdisabled-optimization -Wno-pointer-sign > >> -Wdeclaration-after-statement -std=gnu99 -Wall -Wno-switch > >> -Wpointer-arith > >> -Wredundant-decls -O4 -march=native -mtune=native -pipe -ffast-math > >> -fomit-frame-pointer -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 > >> -D_LARGEFILE64_SOURCE -Ilibdvdread4 -I. -D_REENTRANT > >> -I/usr/include/directfb -I/usr/include/SDL -D_REENTRANT > >> -I/usr/include/freetype2 -I/usr/include/dirac > >> -I/usr/include/schroedinger-1.0 -I/usr/include/liboil-0.3 > >> libao2/ao_alsa.c | sed -e "s,[0-9a-z._-]*: \([a-z0-9/]*/\)[^/]* ,\1&," > -e > >> "s,\(.*\)\.o: ,\1.d &," > libao2/ao_alsa.d > >> cc -Wundef -Wdisabled-optimization -Wno-pointer-sign > >> -Wdeclaration-after-statement -std=gnu99 -Wall -Wno-switch > >> -Wpointer-arith > >> -Wredundant-decls -O4 -march=native -mtune=native -pipe -ffast-math > >> -fomit-frame-pointer -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 > >> -D_LARGEFILE64_SOURCE -Ilibdvdread4 -I. -D_REENTRANT > >> -I/usr/include/directfb -I/usr/include/SDL -D_REENTRANT > >> -I/usr/include/freetype2 -I/usr/include/dirac > >> -I/usr/include/schroedinger-1.0 -I/usr/include/liboil-0.3 -c -o > >> libao2/ao_alsa.o libao2/ao_alsa.c > >> libao2/ao_alsa.c: In function 'init': > >> libao2/ao_alsa.c:647: error: 'MSGTR_AO_ALSA_UnableToSetPeriodSize' > >> undeclared (first use in this function) > >> libao2/ao_alsa.c:647: error: (Each undeclared identifier is reported > only > >> once > >> libao2/ao_alsa.c:647: error: for each function it appears in.) > >> make: *** [libao2/ao_alsa.o] Error 1 > > > > So it gets ugly :-(. You can comment out any mp_msg lines that causes an > > issue (line 647 in this case). > > It compiles commenting that, and it works beautifully. So yes, it's > 29548->29549 which broke this somewhat. I can't reproduce the issue, could you 1) say which version of ALSA/the kernel you use? 2) add the patch below and see if there are any particular values when the issue starts appearing (I'd expect some rather small values < 512 there) 3) add the patch even further below and tell me what changes (if anything)? Index: libao2/ao_alsa.c =================================================================== --- libao2/ao_alsa.c (revision 29731) +++ libao2/ao_alsa.c (working copy) @@ -819,6 +819,7 @@ ret = snd_pcm_status_get_avail(status) * bytes_per_sample; if (ret > ao_data.buffersize) // Buffer underrun? ret = ao_data.buffersize; +printf("space: %i\n", ret); return ret; } Index: libao2/ao_alsa.c =================================================================== --- libao2/ao_alsa.c (revision 29731) +++ libao2/ao_alsa.c (working copy) @@ -763,8 +763,10 @@ static int play(void* data, int len, int flags) { - int num_frames = len / bytes_per_sample; + int num_frames; snd_pcm_sframes_t res = 0; + len = len / ao_data.outburst * ao_data.outburst; + num_frames = len / bytes_per_sample; //mp_msg(MSGT_AO,MSGL_ERR,"alsa-play: frames=%i, //len=%i\n",num_frames,len);