From Gnash Project Wiki
Input Device Task
During our summer program a few years ago, one of the other students wrote much code to handle input devices like webcams. This mostly works standalone, but has never been integrated into Gnash. This task is to finish that work.
|Done||Nov 25||Get Gnash to compile for GNU/Linux, and pass the testsuite||(Done for release 0.8.8;)|
|In progress||Nov 31||Research how input devices works on win32 and OSX|
|In progress||Dec 15||Submit redesign doc for Input classes to gnash-dev list||Postponing deadline until Jan 25 due to Gneo reorganization if that's okay|
|Feb 15||Implement new Input classes for device handling|
|Feb 15||Implement unit tests in C++ and ActionScript|
|Feb 25||Submit integration proposal to gnash-dev email list|
|May 15||Integrate standalone input device classes into Gnash core|
- Research functionality of existing Input Device code. IN PROGRESS (trying to ask ben limmer; ask bwy's opinion on structure)
- Research how to add integration to Gnash
- Work with input devices on Win32 and OSX
- Work with input devices on mobile devices
- Work with ffmpeg as well as Gstreamer
- Fix following bug:
"I've fixed the segfault, but still getting a non-zero exit code from gprocessor.
Benjamin showed me that the problem is in AudioInputGst containing exit(EXIT_FAILURE) calls, which is a no-no for any library. Classes in libmedia should throw MediaException at worst.
Since CU students are supposed to look at libmedia I think this would be a good starting task: documenting current classes and improving their stability/usability.
The goal would be for a build w/out gst plugins to survive. This is such a system: http://gnashdev.org:8010/builders/lenny-linux-x86/
You can see it keeps giving failures running gprocessor, first for segfaults, then for deep exists...
So I think the best place I found for working with gstreamer was the links provided on the site (http://gstreamer.freedesktop.org/documentation/). But other than that, I really don't remember the resources I used to setup the pipeline. I'm pretty sure I just poked around the internet to get things working.
My best recommendation would be to look at the source code for the project Cheese, which is a webcam suite that its also a GNU project. The link is here: http://projects.gnome.org/cheese/download . Look at their source code, because I'm pretty sure when I wrote what I already had, I used Cheese's source code/documentation pretty heavily.
Libmedia redesign notes
- Fix memory leaks
- Reduce duplicate code
- Fix crashes/improper exits
- Plan data -> core; submit to wiki or mailing list
- Look at AS objects vs AudioInputs, addition/deletion
"There's also the case of video and audio being attached to a MovieClip. There is already an interface (Video) to transfer video from a source to the core, and it seems sensible to use that existing interface for this particular use-case.
input devices on win32 and OSX
When emailing Ben, don't include Gnash in subject b/c filters to huge Gnash folder
"For general coding karma:
1. Avoid all use of g_printf, *especially* g_strdup and friends, gchar*, and any other g* functions or types, because they aren't typesafe or exception safe, and the current code omits to free most of the objects it creates in any case. 2. Read the coding style guidelines on the Gnash wiki. 3. Become familiar with boost.
And finally: make sure the entire testsuite builds and completes before changing anything, because causing failures in the testsuite is worse than not writing any code at all.