bugGnash - The GNU Flash player - Bugs: bug #24898, Gnash loading problems

 
 

bug #24898: Gnash loading problems

Submitted by:  Reuben Caron <reubencaron>
Submitted on:  Fri 21 Nov 2008 10:04:08 PM UTC  
 
Category: soundSeverity: 3 - Normal
Release: 0.8.3 releaseStatus: Fixed
Privacy: PublicAssigned to: None
Open/Closed: Closed

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

(Jump to the original submission Jump to the original submission)

Fri 02 Jan 2009 04:58:31 PM UTC, comment #16:

For an XO ? I can probably build you an RPM, or you can do a Gnash build from trunk.

Rob Savoye <rsavoye>
Project Administrator
Fri 02 Jan 2009 04:56:25 PM UTC, comment #15:

Where/How can I get the update/fix to test. Thanks

Reuben Caron <reubencaron>
Wed 26 Nov 2008 09:24:00 PM UTC, comment #14:

With strk's fix this game (and all the others in the key stage 1 area) should work.

Benjamin Wolsey <bwy>
Project Member
Wed 26 Nov 2008 04:53:46 PM UTC, comment #13:

At the moment getBytesLoaded returns _lastParsedPosition (for ffmpeg at least).

Benjamin Wolsey <bwy>
Project Member
Wed 26 Nov 2008 04:45:40 PM UTC, comment #12:

the reason is seeks.
Consider youtube... getBytesLoaded from a NetStream doesn't
get back to zero if you seek back to zero.

Rather, there's a bug in one of the media parsers
which is not properly updating the bytes loaded member
(what's returned by getBytesLoaded).

Sandro Santilli <strk>
Project Member
Wed 26 Nov 2008 04:40:42 PM UTC, comment #11:

Returning _stream->tell() from the media parser's getBytesLoaded method finally lets the movie play. Is there a reason not to do this?

Benjamin Wolsey <bwy>
Project Member
Wed 26 Nov 2008 04:25:21 PM UTC, comment #10:

Now, I've committed a fix for the constructor, which allows Gnash to start loading the sounds.

This depends on getBytesLoaded() and getBytesTotal(). The latter is undefined in the pp much more than in Gnash. With ffmpeg we load quite a few sounds, with gst not as many.

With ffmpeg it gets stuck loading instructions.mp3 for me, as Gnash only reaches 6144 bytes, when the stream is 6188 bytes long.

Benjamin Wolsey <bwy>
Project Member
Wed 26 Nov 2008 01:37:15 PM UTC, comment #9:

DisplayList::place_character, which calls stagePlacementCallback, can't copy the properties because the displaylist is still not constructed.

I have a working implementation that passes initObj to MovieClip::stagePlacementCallback (and unfortunately all the other implementations of the virtual function), and delays calling copyProperties() and constructAsScriptObject() until the end of the function, instead of before DisplayList construction. It doesn't seem particularly clean.

Benjamin Wolsey <bwy>
Project Member
Wed 26 Nov 2008 12:19:38 PM UTC, comment #8:

The display list is constructed by the ::onStagePlacement call,
which is performed on placement.
You may try passing the init object to DisplayList, and maybe
forward to ::onStagePlacement as an argument, or let DisplayList
do the dirty work.

Sandro Santilli <strk>
Project Member
Wed 26 Nov 2008 11:39:07 AM UTC, comment #7:

The null bounds comes from MovieClip::getBounds() being called while the display list is empty.

Benjamin Wolsey <bwy>
Project Member
Wed 26 Nov 2008 10:17:28 AM UTC, comment #6:

In attachMovie, copying the initObj properties before attaching the character succeeds (I think) in every instance except for height and width. This seems to be because those two properties rely on getBounds(), and the bounds are NULL at that time. Not sure what to do about this.

That change does fix the loading of this movie, but it still get stuck, I imagine because Sounds.getBytesLoaded / getBytesTotal still haven't been implemented.

Benjamin Wolsey <bwy>
Project Member
Mon 24 Nov 2008 03:42:50 PM UTC, comment #5:

I tested with 0.8.4-2 and now it appears to "lock up" when loading text instead of sounds.

The system crash I originally mentioned occurred on an OLPC XO. I'll see what I can do to get some more debugging information from that to help.

Reuben Caron <reubencaron>
Mon 24 Nov 2008 03:36:47 PM UTC, comment #4:

The problem comes from the attachMovie call with an initialization object and a constructor function. The properties of the object should be available to the constructor, but they are not.

Benjamin Wolsey <bwy>
Project Member
Mon 24 Nov 2008 02:13:31 PM UTC, comment #3:

Some arrays of URLs to mp3s should be loaded from a sounds XML file.

The function reference_Sounds seems to be passed as a callback in loadXMLSounds(). reference_Sounds() is called, but soundsXML.firstChild.childNodes is empty, which means the two arrays soundsC and soundsL aren't filled, so in referenceSpeechs() the call to addSounds passes an empty array. Consequently the elements 0 and 1 are undefined. That's where the undefined values are coming from.

It's not (yet) an XML parsing bug, as Gnash traces show that the sounds xml file is never loaded.

Benjamin Wolsey <bwy>
Project Member
Sat 22 Nov 2008 09:27:44 AM UTC, comment #2:

The undefined value comes from R5[1] (shown both in the LOADING trace and the loadSound call), which is used after array.shift(). Not sure whether the array is defined at that point yet.

R5 = array_.shift();
R4 = R5[0];
R6 = root.PATH.sounds+R5[1];
R7 = R5[2];

[...]

this.tempSound = new Sound(this.tempMC);
this.tempName = R4;
trace('LOADING '+R5[1]);
this.tempSound.loadSound(R6,false);

Benjamin Wolsey <bwy>
Project Member
Sat 22 Nov 2008 09:01:25 AM UTC, comment #1:

An example of the loading problem is: http://www.bbc.co.uk/schools/ks1bitesize/numeracy/numbers/maincontainer_001.swf

14957:3045320432] 09:54:03 ERROR: HTTP response 404 from url http://downloads.bbc.co.uk/schools/ks1bitesize/numbers/data/sounds/undefined
14957:3045320432] 09:54:03 ERROR: MediaHandler::isFLV: Could not read 3 bytes from input stream
14957:3045320432] 09:54:03 DEBUG: CurlStreamFile 0x9f6adc0 deleted
14957:3045320432] 09:54:03 ERROR: Could not create FFMPEG based media parser for input stream: MediaParserFfmpeg could not read probe data from input
14957:3045320432] 09:54:03 ERROR: Unable to create parser for Sound at http://downloads.bbc.co.uk/schools/ks1bitesize/numbers/data/sounds/undefined
14957:3045320432] 09:54:03 DEBUG: Global instance list grew to 16 entries
14957:3045320432] 09:54:03 UNIMPLEMENTED: Sound.getBytesLoaded()
14957:3045320432] 09:54:03 UNIMPLEMENTED: Sound.getBytesTotal()

So first problem: undefined value for load. Second problem, Sound.getBytesLoaded and getBytesTotal should be implemented. There's already a bug report for a similar problem.

For the crash, please try with a more recent version of Gnash. 0.8.4 contains many bugfixes compared to 0.8.3, and current head fixes some bugs in 0.8.4.

Can you give a URL of a page (and preferably the SWF file) where you see a crash? I've tried some of the pages under http://www.bbc.co.uk/schools/ks2bitesize/, and they appear to work fine, but I've no idea if I'm trying the same ones as you.

And please open another bug for it. This bug is for the loading problems.

Benjamin Wolsey <bwy>
Project Member
Fri 21 Nov 2008 10:04:08 PM UTC, original submission:

Problematic sites are:

Link to all of the sections;

http://www.bbc.co.uk/schools/revision/

Links to different key stages;

http://www.bbc.co.uk/schools/ks1bitesize/ - Not loading - due to sound

http://www.bbc.co.uk/schools/ks2bitesize/ - Crashes

http://www.bbc.co.uk/schools/ks3bitesize/

Reuben Caron <reubencaron>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

Attached Files
file #16926:  trace-version.swf added by bwy (10KiB - application/x-shockwave-flash)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by rsavoye (Posted a comment)
  • -unavailable- added by strk (Posted a comment)
  • -unavailable- added by bwy (Posted a comment)
  • -unavailable- added by reubencaron (Submitted the item)
  • -unavailable- added by reubencaron
  • -unavailable- added by reubencaron
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 7 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Fri 02 Jan 2009 04:11:04 PM UTCbwyStatusReady For Test=>Fixed
      Open/ClosedOpen=>Closed
    Wed 26 Nov 2008 09:24:00 PM UTCbwyStatusConfirmed=>Ready For Test
    Wed 26 Nov 2008 08:28:09 PM UTCbwyAttached File-=>Added trace-version.swf, #16926
    Sat 22 Nov 2008 09:01:25 AM UTCbwyStatusNone=>Confirmed
    Fri 21 Nov 2008 10:04:08 PM UTCreubencaronCarbon-Copy-=>Added reubencaron
      Carbon-Copy-=>Added -unavailable-

    Back to the top


    Powered by Savane 3.1-cleanup1