 |
Masato Alemayehu's People Page
name: Masato Alemayehu
age: 18
java.net id: sat1196
location: Geneva, Switzerland
Favorite project: Project Looking Glass
| Subject number | 209 |
| Title | Media (video) player for LG3D? |
Assignment
In this project, the applicant is expected to deliver a media player that at least plays back video. It should have UI that benefits from the LG3D? experience. It also needs to expose a well defined API for media (video) playback for use by other applications. There already is an LG3D? project called "Project Alice" https://alice.dev.java.net/ . It was initiated by folks at University of Colorado as their senior project. As they are graduating, they hope someone takes it over and make enhancements. It currently provides framework as a media player and implements the audio player part. The applicant can chose to extend this work.
Deliverables
- proof-of-concept video player - already available
- an API, well-designed and well-documented
- additional codecs for SVG rendering and animation
Benefits
The purpose of this project is to provide advanced multimedia capabilities to Project Looking Glass, providing a standard way to playback multimedia whilst taking full advantage of the 3D interface. One can tile the player in full screen, display multimedia (videos) as textures on arbitrarily shaped nodes. It opens a lot of possibilities, for example, a slow SVG animation that changes over the day could be set as a background. One could also implement an audio renderer where the sound of the movie would grow lower as the object goes farther from the viewer. This new feature will add to the dynamic nature of Looking Glass.
Approach
- Basic approach: I will use the Java Media Framework for this project, with the additional codecs from the Fobs project which I am relatively used to by now. This will greatly increase the decoding capabilities of the media player. I will use textures to render every frame in 3D space. The advantange of using textures is that it will allow to render on any shapes and add new possibilities for the 3D space. My idea is to make the interface very easy for any application to use within LG3D? in order to make it a standard for media playback. It will be easily configurable to choose, for instance, the shape on which to render (Sphere, flat Rectangle, Cube, multiple shapes, ..).
- FFmpeg will be used through Fobs to support virtually any video formats.
- Scalable Vector Graphics support will be included.
- Webbrowser? Most recent media players like Quicktime include some kind of HTML viewing capabilities. I will consider it in this project. In addition to SVG, SMIL-like capabilities would be a great plus.
- Videoconferencing? might be supported. JMF uses
MediaLocator 's which are just like URL's. A MediaLocator which would contain a JXTA URN could be used to start a conference with the person in question. Multi-user video conference could also leverage the 3D environment: checkout http://www.apple.com/macosx/features/ichat/ to see a possible 3D layout of a such app.
- Performance: At present the demo isn't very optimised. Many things could help: use of NIO to avoid data copy, non-power-of-two textures could improve performance. Image scaling could also be enhanced and shaders could accelerate the rendering. See page: https://j3d-core.dev.java.net/j3d1_4/proposed-changes.html
- Fullscreen mode will be made possible.
- A set of controls either using Swing or in 3D will be added. I am considering using Project Alice for this, however the widgets seem to take too much space and hard to access. Using a small Swing app to control the player would be anothe solution.
- Passing arbitrary shapes to the player to render onto will be made possible.
- Animations will be added, when switching to fullscreen for example.

Schedule
| Schedule |
| June 14th | Summer of Code Application deadline |
| June 30th | graduation, start working on Algea3D? |
| July 10th | first version of Algea3D? |
| midst July | API for external app and configuration |
| August | SVG codec, fullscreen mode |
| August | still to consider: HTML capabilities, videoconferencing |
| August | testing and debuging |
Background
I have been learning Java on my own since around 2001, thanks to the Sun Java tutorial. I was most interested in Swing, as well as many extensions such as Java Media Framework, Java3D?, JXTA, and so on. Last year, I took the SCJP and got certified as Java Programmer for J2SE? 1.4. I am currently finishing high school in Switzerland and will then go to university at the Swiss Federal Institute of Technology. I have contributed to project Fobs which is an extension to JMF that adds a great amount of decoding as well as (soon-to-come) encoding capabilities. I have made a small contribution to Project Looking Glass in the beginning of this year, which was a "proof-of-concept" multimedia player based on Sun's reference code. In this project, I am planning to extend it into a real, full featured, media player.
Status
created SVG parser
trying to create HTML handler using jdic; having problems with jdic. Probably switch to other library (flying saucer or Xsmiles).
|