Hi, I'm working on some drivers for some custom AC'97 hardware on a development platform, and am seeing some weird behaviour.
The development platform is mostly FPGA-based, so it isn't the worlds most fastest machine. However, running madplay against the OSS emulation results in the following: # time madplay sample.mp3 ... 8670 frames decoded (0:03:46.4), +2.2 dB peak amplitude, 3882 clipped samples 133.99user 19.92system 2:33.95elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (1498major+69minor)pagefaults 0swaps Note that the mp3 is 3mins46 long, but we took only 2mins33 to play it! When listening to the output, it appears that we're randomly missing chunks of samples; when I added a printk into my PCM's trigger function, I noticed that we were frequently calling it with TRIGGER_START/ TRIGGER_STOP. I suspect this is because the mp3 player can't keep ALSAs buffers full. The driver source can be found at: http://patches.arm.linux.org.uk/alsa/aaci.c (its not ready for release yet tho. oh, and yes, dma is missing off the hardware implementation so its currently using PIO, but it is expected that in real CPUs the device will have DMA available.) The contents of /proc/asound/AACI/pcm0p/sub0/ while "playing": hw_params:access: RW_INTERLEAVED hw_params:format: S16_LE hw_params:subformat: STD hw_params:channels: 2 hw_params:rate: 44100 (44100/1) hw_params:period_size: 1024 hw_params:buffer_size: 16384 hw_params:tick_time: 10000 hw_params:OSS format: S16_LE hw_params:OSS channels: 2 hw_params:OSS rate: 44100 hw_params:OSS period bytes: 4096 hw_params:OSS periods: 16 info:card: 0 info:device: 0 info:subdevice: 0 info:stream: PLAYBACK info:id: PCM0 info:name: info:subname: subdevice #0 info:class: 0 info:subclass: 0 info:subdevices_count: 1 info:subdevices_avail: 0 prealloc:64 status:state: XRUN status:trigger_time: 5365.000116784 status:tstamp : 5365.000119486 status:delay : 0 status:avail : 16384 status:avail_max : 16384 status:----- status:hw_ptr : 1024 status:appl_ptr : 1024 sw_params:tstamp_mode: NONE sw_params:period_step: 1 sw_params:sleep_min: 0 sw_params:avail_min: 1024 sw_params:xfer_align: 1 sw_params:start_threshold: 1 sw_params:stop_threshold: 16384 sw_params:silence_threshold: 0 sw_params:silence_size: 0 sw_params:boundary: 1073741824 (PS, playing the same mp3 using the same mp3 player binary on a faster system using real OSS drivers but different hardware has the expected results.) -- Russell King ([EMAIL PROTECTED]) The developer of ARM Linux http://www.arm.linux.org.uk/personal/aboutme.html ------------------------------------------------------- This SF.net email is sponsored by: Etnus, makers of TotalView, The best thread debugger on the planet. Designed with thread debugging features you've never dreamed of, try TotalView 6 free at www.etnus.com. _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel