env: Win2k, ie6
How do you stop broken-up sound? I have configured to play from both disk and memory, and both exhibit the same fault (admittedly from disk appears worse) Extending the size of the buffer has no benefit.
The problem is 100% repeatable…
Go to a web site where IE must display a scroll bar (a search result good) Start some audio playing, then grab the scroll bar and start scrolling – a lot. The result is broken audio, jumping and repeating.
I had blamed other things, but to check I did exactly the same action with the same piece of music playing through Media Player, and NO problems occurred.
Brett, is this fixable?
- ih asked 17 years ago
I got the same problem with IE.
I try with B*SS (another “sound engine”) with a PREbuffer and it works.
But i prefer fmod so if your new dll correct the problem maybe you can put it in a beta page…
Maybe you didn’t want to do that so if you are agree i can test it on my config too if you send it to me by mail.
My mail : firstname.lastname@example.org
P3 1Ghz, 512Mo, SBLive 1024, ATI Radeon 32SDR
Windows 2000PRO, Delphi6 and VisualC++6.
It might be that Winamp’s decoding buffer is 2 seconds or so, but when you put Winamp to Directsound mode, you can specify a 100 ms latency.
Ok, fmod is 50 or even only 25 ms, but its just to tell that winamp is not always Wave Output and 2 seconds buffer.
Here’s my wishlist for fmod 3.5 :
-StreamSetFileBufferSize : or something like this to set the size of the buffer in which a piece of the file is read or decoded.
-StreamSetDSPBufferSize : The size of the buffer that is passed to the DSP’s. This should come directly from the FileBuffer, just cut in some pieces to minimize latency while maximizing stability.
All the other features I have been requesting are indeed too specific for a general sound api, so I will try to find a solution for them myself…
Have just redone the buffer to 2 seconds and the problem STILL occurs. (Of course the delay from starting playing to actually getting any output is now totally unrealistic)
I even set the buffer size to 4 secs, but can reliably get the sound to break up using the method described. Yes you get 4s of good stuff but it will break and remain broken until the buffer has a chance to refill. i.e. 4s of rubbish after activity stops, then good sound.
Brett, please try it.
- ih answered 17 years ago
If I understand what you mean, you get good sound, you slide in IE, and 4 seconds later you get a skip in the sound?
This sounds like the buffers can not be filled faster than realtime, which would make the buffers rather useless…
Or is it only skipping when you slide for more than 4 seconds, which wouldn’t look like a very realistic situation either.
If you just get skips while sliding, I would say windows is taking a higher priority on the sliding, but brett said the decoding and such were highest priority already.
Then I don’t understand how Winamp gets the priority it needs while fmod does not.
Anyway, I’ve done the test myself, and I got slightly different results :
My PC: AMD K7-1Ghz, 256 MB SDRAM, GeForce 2 MX, SB Live 5.1
When I play in my program using fmod (2 mp3’s streaming) I only get the skipping when I slide over animated images. (which is something you can clearly see IE has some problems with (maybe other browsers too) because scrolling gets a bit slower when there are animated banners shown.
When I use winamp, I don’t get the error with DirectSound 1 second buffer, but I do get the error when putting the buffer to 100 ms, which means winamp is affected by it too.
The only strange thing (I haven’t tested that myself) is why fmod still skips with larger buffers…
Anyway, it seems there just is a price to pay to get very small buffer sizes.
Altough I think Microsoft should lower the priority of Minimizing and Maximizing windows and scrolling and stuff.
ok, sorry, I think I understand now.
So the buffersize you specify in Winamp is actually the prebuffered buffersize, which is the same as the Stream buffersize fmod uses, but not the same as fmod’s mixing buffer.
I was running at 1024×768.
When the stream buffersize is set to 200 ms, would this mean the dsp is also called in 200 ms intervals?
I would personally set the buffersize to 50 or so, because I need the fast interaction with the dsp.
I don’t really know if it would help in performance if there was already 200 ms of data prebuffered, on which the dsp is executed every 50 ms.
Please login first to submit.