[Top][All Lists]

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

[Gnash-dev] from Hong Yu: Gnash/server/asobj/LoadVars.* need fix for run

From: Hong Yu
Subject: [Gnash-dev] from Hong Yu: Gnash/server/asobj/LoadVars.* need fix for running videos
Date: Mon, 28 Jan 2008 14:25:10 +0800
User-agent: Thunderbird (X11/20071031)

We are trying to use Gnash0.8.1 with its mozilla plugin to run online video service from on Linux platform. However, we have encountered some problem and after inspection we believe that the appropriate fix is to modify the Gnash AS object 'LoadVars' event-handling implementation: 'onLoad' and 'onData'. Detailed descriptions of bug reproduction and our intended approach are in the following.

Bug-Reproducing Procedure:
[1]  Linux platform: Ubuntu 6.10 edgy
[2]  Firefox in Ubuntu with version
[3] Uninstall adobe flash player plugin by removing/renaming the file '' under the installation directory ${HOME}/.mozilla/plugins/ [4] Download Gnash 0.8.1 source from its GNU site, compile with GCC4.1.1, and with those 'configure' options:
configure --prefix=${REBUILD_ROOT} \
--disable-kparts \
--enable-gui=gtk \
--with-ffmpeg-incl=/usr/include \
--with-ffmpeg-lib=/usr/lib \
--with-plugindir=${REBUILD_ROOT}/mozilla/plugins \
--enable-debugger \
--enable-fps-debug \
[5] After building Gnash0.8.1 successfully, copy '' to ${HOME}/.mozilla/plugins/; then restart firefox; then check the URL 'about:plugins' and find Gnash plugin information [6] Test Gnash0.8.1 plugin with video on failed. The first symptoms are: gnash child process is still running, but FLV data never read from network.

In order to pinpoint the problem, we have de-compiled action-script code from 'videoplayer.swf' from (see attached). The problem is that current Gnash0.8.1 implementation of AS object 'LoadVars' event-handlers 'onLoad' and 'onData' is not consistent with adobe action-script2.0. We need to modify 'onLoad' and 'onData' of 'LoadVars' AS object to achieve:
-- 'onLoad' will handle the one BOOL parameter successfully,
-- 'onData' will handle the one STRING parameter successfully,
-- 'LoadVariablesThread' will compute correct STRING value for 'onData' handler.

We have changed 'server/LoadVariablesThread.*' and 'server/asobj/LoadVars.*' (see attached) for fixing the above problems and have had progresses: we modified 'LoadVars::processLoaded()' so that 'onData' handler would be called after successful data-load; we added 'LoadVariablesThread::_rawVal' and 'LoadVariablesThread::getRawValue()' so that 'LoadVariablesThread' would return correct unparsed string data to 'LoadVars::load()'. In addition, we tried to modify 'LoadVars::processLoaded()' and 'LoadVars::dispatchDataEvent()' so to pass raw loaded data to 'onData' event handler as parameter. However, 'onData' handler with one STRING parameter did not run successfully, and after some executions, gtk-gnash child process detected the 'env' stack non-empty in the call to 'markReachableResources()' and exited. We were not able to find simple fix for the stack problem.

On the other hand, since Gnash0.8.1 can run online video from successfully, and we find that youtube's 'player2.swf' has extensive calls to AS object 'xml's 'onLoad' event handler. Our intended fix approach is to re-write 'LoadVars' event-handlers 'onLoad' and 'onData' and follow that of 'xml's 'onLoad' handler.

And, we eagerly wish for suggestions from those Gnash developers with rich experience of Gnash internals. Your valuable advices will surely help us find the best fix.

List of Attachments:
-- 'actions_videoplayer_twango.tar.gz': de-composed action-script code from 'videoplayer.swf' of -- 'gnash_src_modified.tar.gz': modified Gnash source code with our tempted fix resulting in partial progress; after extraction, please check where '// Hong Yu --' for our modifications

Best Regards,

Hong Yu

Attachment: actions_videoplayer_twango.tar.gz
Description: GNU Zip compressed data

Attachment: gnash_src_modified.tar.gz
Description: GNU Zip compressed data

reply via email to

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