GenReS: a plug-in for Mozilla/Firefox: README

# GenReS 0.7

## Plug-in for Mozilla/Firefox

###

### Requirements

gcc
gxx
gmake
mozilla-dev

### Compile

make genres.so

### Install

Copy genres.so into a directory plug-ins/.mozilla/plugins/;
Create a subdirectory /.mozilla/genres/slaves/video/;
Place there one of the scripts from slaves/video directory with name corresponding mime-type, "mpeg" for example;
Make symlinks for service of others mime-types;
Restart a browser.

### Technical details

The plug-in uses a XEmbed window and in any way does not process events from keyboard and mouse, they simply go directly to a browser. All necessary possible to do through javascript, using standard opportunities which already are in mozilla for elements of HTML documents.
Use NPObject allows to have unlimited number of variables and functions of EMBED object not informing about them in advance.
Depending on mime-type the script "~/.mozilla/genres / <mime-type>" is started.
The plug-in transfers data from a browser to the control script. The script interprets them, runs a player and transfers to it.
Data from the player through the script are transferred back to the plug-in.
Data between the plug-in and the script are transferred in a format: var=value\n.
Today to the external program are transfered: all parameters of EMBED tag, the identifier of a window for embedding and URL of the document for transformation of relative references to absolute.
When all is ready for display "run=1" is sent to the script.
On a command "run=0" the script should to stop a player and come to the end .
The control script for mplayer is written on perl and as alternative on shell.
The Perl-script demands threads (may be switched off in some linux distribution kits).
Before command "run=1" the script receives values of all parameters of EMBED or OBJECT tag.
Now it understands:
Static parameters
href - url a file or a stream
lowres - parameter for accelerated DCT with low resolution (0-3) .
width - width of a window
loop - repetition of playing (0 or not specified - is infinitely)
fps - frames per second
src - alias for href
Dynamic variables
pause=1 or play=0 - pause playing
pause=0 or play=1 - continue playing
run=1 - run player again if it is terminated (an error or end of file occured)
run=0 - exit mplayer
save - start mencoder instead of mplayer:
save=ask - start recording, plugin will ask user about filename for recording
save=auto - start recording, plugin can ask user only once
When data comes from a player it trasmitted to javascript object properties. If in this moment object method with corresponded name "on<variable-name>" is defined it will be called.
In the directory "example" is a html-document showing video 2048x1536 with scrolling by scrollbars and picture dragging .
It reqires a videofile 'default.avi' or to replace URL in the HTML.
Browser requests a list of accepted mime-types only in the first start after installation of a plug-in, therefore after change of the directory tree with control scripts it is necessary to reinstall the script (to remove genres.so to restart a browser to restore genres.so and again to restart a browser).

### TODO

#### Use mozilla streams with "src" parameter

We can to get data from browser and to tranfer it through a pipe instead to give the url to player