Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gnash (our AVM1 fallback) is breaking on newer systems, is unmaintained, and is being removed from distros. #339

Closed
wyatt8740 opened this issue Nov 24, 2018 · 10 comments

Comments

@wyatt8740
Copy link

wyatt8740 commented Nov 24, 2018

Not really a bug in Lightspark, but still an issue for the project, since Gnash is going the way of swfdec and the dodo. Last commit was in 2016, and now distros are dropping it.

Removed from Debian Sid (so next stable release will likely not have it):
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895736
...And consequentially, Ubuntu and pretty much all Ubuntu derivatives.

The upstream source is in an unbuildable state in Sid as of now, so expecting users to maintain it might be hard.

If you want, I have the source patches from the last version that was packaged in Debian Sid, which make it build and work as of now. However, ffmpeg 4.0 appears to break it again, so that'll be a problem when it gets released.

Is maintaining a fork of Gnash a possibility? There's really nothing else quite as compatible out there.

I suppose the other options are implementing our own AVM0/1, picking up swfdec (which can still be built with a little hacking, and is much less complex IMO, but is less compatible), or dropping the gnash 'chain loading' that Lightspark currently does.

As an afterthought, I'd expect that GTK2 will be getting dropped from distros sometime in the next half decade. That'll be another hurdle.

@dbluelle
Copy link
Collaborator

IMHO the gnash fallback was mostly done as it is not possible to have two flash player plugins registered in the browser.
I think that in the long run we will need our own implementation of AVM0/1 anyway, as AVM2 allows loading and display of older movies by the class flash.display.AVM1Movie.
This would mostly come down to implementing the different action models of the different swf versions.
To achieve that, I see two possibilities:

  1. build and include Gnash as a library and integrate calls to their implementation somehow.
  2. implement our own handling of the actions and use the Gnash sourcecode only as "inspiration" for how to achieve that.

I don't know which way is easier or even possible or if there is another better way (I've not yet looked into the Gnash sourcecode...)
However, as building gnash is becoming more difficult I currently would prefer option 2 to avoid that dependency.

@dbluelle
Copy link
Collaborator

I've managed to compile gnash (on arch linux) by just disabling ffmpeg and only enabling the sdl frontend.
Of course that also disables sound, but it's enough for me for development.
However, using sdl should "fix" your worries about gtk2 ;)

@dbluelle
Copy link
Collaborator

dbluelle commented Dec 2, 2018

Okay, with the latest commit it is possible to use lightspark without gnash fallback.
Just set enverionment variable LIGHTSPARK_USE_GNASH=0
There is not much to see yet, as nothing of the AVM1 acton model is implemented,
but animations without user interaction should work to some extent.

@wyatt8740
Copy link
Author

wyatt8740 commented Dec 7, 2018

The main breakage seems to be coming from ffmpeg (which is a pretty normal problem since they like breaking the API) and from libagg breakage (so frontend stuff). I'm guessing Arch has some patches to fix that. Debian did, before it was removed from Sid.

The backend stuff should (?) be transferrable.

I wasn't too worried about GTK2 except in that I liked having a nice frontend. Knew that'd be one of the easier things to work around. But as it is, it appears to be unmaintained code and therefore risky.

@dbluelle
Copy link
Collaborator

dbluelle commented Dec 9, 2018

Yeah, the ffmpeg API breakages are also frustrating in lightspark :(
(e.g. take a look at the #ifdefs in src/backend/decoder.cpp...)
I don't know if arch has patches for gnash, I've just build it from source configured with --enable-media=none, so no dependency on ffmpeg.

@dbluelle
Copy link
Collaborator

dbluelle commented May 6, 2019

I've now set the default for LIGHTSPARK_USE_GNASH to 1, so that we normally don't need gnash anymore.

@dbluelle dbluelle closed this as completed May 6, 2019
@ousia
Copy link
Contributor

ousia commented May 25, 2019

@dbluelle, do you plan to release a new stable version in the near future?

@dbluelle
Copy link
Collaborator

I'm currently working on #346 , I think after that is fixed it's time for a new release.

@ousia
Copy link
Contributor

ousia commented May 26, 2019

@dbluelle, many thanks for your reply and these are great news!!!

BTW, will sound be available for AVM1?

@dbluelle
Copy link
Collaborator

dbluelle commented Jun 9, 2019

Sound should mostly work for AVM1, but I haven't tested it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants