[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-dev], MP3 problem

From: Martin Sidaway
Subject: [Gnash-dev], MP3 problem
Date: Mon, 10 Nov 2008 04:54:49 +0000

Hi everyone

I'm trying to get into open source development at the moment and so I'd like to get involved in working on gnash. I've identified a couple of problems that come up when playing particular SWFs with embedded (non-streaming) MP3s.

Note: I am using a recent bzr trunk version of gnash with SDL and gstreamer 0.10.14.

The first problem occurs particularly with movies on (the earlier ones - the new ones use the newest version of flash, which causes other problems). I have looked in particular at the movies /flash/pie.swf, /flash/donkey.swf, /flash/angry.swf, and /flash/hairy.swf. They all have a looping sound that is set to loop a large number of times (say, 50) in the StartSound tag. The movie doesn't actually last for that number of loops, so presumably it is just a lazy way of saying "until end of movie". In Adobe flash, this is certainly how it is interpreted. However, gnash seems to keep the old copy of the looping sound playing when the movie restarts. An odd feature of this is that when it restarts the movie, it first momentarily pauses the old instance (of the MP3), then restarts it again when the new MP3 instance starts.

I've put a printf, reporting the value of soundsPlaying, into play_sound. On the first run of the SWF, it reports values of 1, 2, 2, 2, ..., 3, 2, 2..., while on the second run it reports 2, 3, 3, 3, ..., 4, 3, 3... .

I created my own looping-MP3 swfs using Ming, to see if I got the same behaviour, and strangely, my SWFs have the probem in both gnash *and* in the adobe player (i.e. where the old copy overlaps with the new copy). It is difficult to see how the adobe player manages to "differentiate" between the two sets of swf files.

The other problem is that sound decoding doesn't keep up with output. This shows up with "gtk-gnash -v -v pie.swf":

DEBUG: do_mixing: less samples fetched (1488) then I requested (1880). Filling the rest with silence

and this seems to happen every time a new sound comes in on top of the background loop. It causes noticeable pauses in playback. The fact that it always happens exactly once per new sound-instance suggests to me that it only happens at the beginning or end of decoding...

As for the looping sounds problem, it is difficult for me to know where to start, as I do not know what the correct behaviour should be. But I would personally take the attitude that whatever the adobe flash player does is the correct behaviour, as the primary aim here is compatibility.

Martin Sidaway

reply via email to

[Prev in Thread] Current Thread [Next in Thread]