\section{Browser requirements}
If I were to make a report on paper, I could send the actual paper
print-out to the person I wanted to read it. I would not have to worry much
about what it would look like for him/her, since it was the very paper
I myself had had in my hand, that he/she would have gotten.

If I were to make a report on a video tape, it would still be fairly
simple, but I would have to make sure, that that person were able to
view the video tape format I had used, e.g.\ Super-VHS PAL. 
And of course, it would be absolutely necessary that the person had a
VCR in the first place.

Now that I am making a report as a multimedia document on
the Web, what then?
As a first prerequisite,
the person should have a Web browser (such as \netscapef{}), 
running on a machine with access to the Net.
In more details, 
the browser requirements for this multimedia report are:
\begin{description}
\item	[Ability to show the different occurring content types:]
	As discussed
	\hyperref
	{earlier}
	{in section }
	{}
	{multimedia_content_types},
	there are several different ``classes'' of content types,
	e.g.\ still images, movies, and 3D scenes, 
	and within these classes there are several different
	``formats''. These latter each have a distinct so-called
	{\em MIME type\/}.
	When a Web server sends some data (e.g.\ the contents of a GIF file),
	it also sends the MIME type, so that the Web browser
	(e.g.\ \netscape{}) knows what kind of data it is getting.
	The Web browser then has a table (the {\em mailcap\/}),
	that specifies what to do with a number of different MIME types;
	it could either handle it itself,
	or it could send it to an external viewer.

	Here is an example of all the different MIME types that I
	use in this Web exhibition. Try to click on it and see what happens.
	If your browser just lets you save the file without displaying it,
	help might be found further down.
	Note, that I will explain
	\hyperref
	{later}
	{in section }
	{}
	{movie02}
	what these files show.
	\begin{description}
	\item	[\link{{\tt text/plain}}
		{http://www.astro.ku.dk/\~{}milvang/RelViz/MIME/test.txt}:]
		Text, plain
	\item	[{\tt text/html}:]
		Text, HTML (that is what you are reading right now ;-)
	\item	[\link{{\tt image/gif}}
		{http://www.astro.ku.dk/\~{}milvang/RelViz/MIME/test.gif}:]
		Still image, GIF
	\item	[\link{{\tt video/mpeg}}
		{http://www.astro.ku.dk/\~{}milvang/RelViz/MIME/test.mpeg}:]
		Movie, MPEG (here: MPEG-1 video bitstream)
	\item	[\link{{\tt video/quicktime}}
		{http://www.astro.ku.dk/\~{}milvang/RelViz/MIME/test.qt}:]
		Movie, QuickTime (here: {\em Animation\/} coded)
	\item	[\link{{\tt image/gif}}
		{http://www.astro.ku.dk/\~{}milvang/RelViz/MIME/test\_anim.gif}:]
		Movie, Animated GIF
	\item	[\link{{\tt application/x-inventor}}
		{http://www.astro.ku.dk/\~{}milvang/RelViz/MIME/test.iv}:]
		3D Scene, Inventor
	\item	[\link{{\tt x-world/x-vrml}}
		{http://www.astro.ku.dk/\~{}milvang/RelViz/MIME/test.wrl}:]
		3D Scene, VRML
	\item	[\link{{\tt application/postscript}}
		{http://www.astro.ku.dk/\~{}milvang/RelViz/MIME/test.ps}:]
		Page description language, PostScript
	\end{description}
\item	[Ability to show the HTML markup used:]
	I have used HTML version 2.2, that have {\em tags\/} for making tables.
	If you see a nicely formatted 3 by 3
	table right below this, your browser
	understands these tags:
	\begin{center}
	\begin{rawhtml}
	<p>
	<center>
	\end{rawhtml}
	\begin{tabular}{|l|l|r|} \hline
	{\em type} &
	  \multicolumn{2}{c|}{\em style} \\ \hline
	smart		& red	& short \\
	rather silly	& puce	& tall \\ \hline
	\end{tabular}
	\begin{rawhtml}
	</center>
	\end{rawhtml}
	\end{center}
	(courtesy Lamport 1986 ;-)
\item	[Ability to make interactive forms:]
	In this project I have also used interactive forms.
	For these, the browser needs to render the associated HTML tags
	correctly, accept input from the user, and send it in the right
	way to the Web server.
	An example of a form follows here. It will return an HTML
	document telling you what value you submitted.
	\begin{latexonly}
	\begin{quote}
	In the HTML version there is an interactive form at this place.
	{\em Please go see it there!\/}.
	\end{quote}
	\end{latexonly}
	%
	\begin{rawhtml}
	<form method="post"
	action="/cgi-bin/milvang/RelViz/test.cgi">
	<input name="foo_variable" maxlength=10 size=10 value=1.0>
	input a number!
	<p>
	<input type="submit" value="get output"> or 
	<input type="reset" value="reset form">
	\end{rawhtml}
\item	[Ability to decompress compressed files:]
	I have often compressed Inventor and VRML files using
	{\tt gzip}, since their size is reduced a factor of $\sim$ 5
	that way.
	\linkf{Here}
	{http://www.astro.ku.dk/\~{}milvang/RelViz/MIME/test.iv.gz}
	is a gzip'ed Inventor file.
\end{description}
If all of the above worked for you, you do not have to read through
the rest of this section!

\htmlrule

So, what kind of setup fulfills all of the above requirements?
To start with the three last ones (tables, forms, and gzip):
just get \netscape{} version 2 or later. I have been running version 2.02
myself.

To be able to view all the above mentioned MIME types, you have to:
\begin{itemize}
\item
Have an external viewer for those MIME types
which your Web browser cannot handle itself
(\netscape{} has built-in viewers for 
plain text, HTML, GIF, and animated GIF).
\item
Have your Web browser configured to actually use these external viewers.
For \netscape{}, this is done through the mailcap file.
There are actually two: a system-wide and a personal;
follow the menu chain 
{\em Options\/} $\longrightarrow$
{\em General Preferences...\/} $\longrightarrow$
{\em Helpers\/}
to see where they are located
(typically {\tt /usr/local/lib/netscape/mailcap}
and {\tt \~{}/.mailcap}).
\end{itemize}
If you are running on a 
\link{Silicon Graphics}
{http://www.sgi.com/}
computer like I am,
you could use the following mailcap:
\begin{quote}
\begin{verbatim}
video/mpeg; mpeg_play %s >/dev/null 2>&1; \
        description="MPEG Movie"; \
        x11-bitmap="/usr/lib/Zmail/bitmaps/movie.xbm"

video/quicktime; movieplayer -nofork %s >/dev/null 2>&1; \
        compose=moviemaker %s; \
        description="QuickTime Movie"; \
        x11-bitmap="/usr/lib/Zmail/bitmaps/movie.xbm"

application/x-inventor; ivview %s >/dev/null 2>&1

x-world/x-vrml;  /usr/local/bin/webspace -remote %s -URL %u ; \
        description="VRML document"

application/postscript; ghostview %s; \
        description="PostScript Language";
\end{verbatim}
\end{quote}
The syntax is actually quite simple, it is
``{\em MIME\_type\/}{\tt ;} {\em viewer\/} {\tt \%s}'', where
{\tt \%s} will be substituted by the name of the temporary file
containing the data.
\netscape{} spawns external viewers using the Bourne Shell
({\tt /bin/sh}), and ``\verb+>/dev/null 2>&1+'' is the syntax for
throwing away standard output and standard error, so that one does not
have to click ``OK'' on all the messages like 
``could not allocate {\em whatever\/} color'', or 
``played movie at {\em foo\/} frames per second''.

Note, that the MIME types {\tt text/plain}, {\tt text/html}, and
{\tt image/gif} are {\em not\/} mentioned, and therefore they will be
handled by \netscape{} itself. This is important, since an external GIF
viewer might not be able to view animated GIFs --
this is the case for {\tt xv} and {\tt imgview}.
Note, that {\em both\/} the system-wide {\em and\/} your personal mailcap file
has not to map {\tt image/gif} to anything for this to work.

About the viewers I am using, and possible alternatives:
\begin{itemize}
\item	\linkf{{\tt mpeg\_play}}
	{http://bmrc.berkeley.edu/projects/mpeg/mpeg\_play.html}:
	public domain MPEG player.\\
	Alternative for playing MPEG movies:
	Not 
	\link{XAnim}
	{http://www.portal.com/\~{}podlipec/home.html},
	since it can only play the I frames, not the B and P frames
	(for what I, B and P frames are, see e.g.\ 
	\linkf{Patel, Smith, \& Rowe (1993)}
	{ftp://mm-ftp.cs.berkeley.edu/pub/multimedia/papers/MM93.ps.Z}).

\item	{\tt movieplayer}:
	A \link{Silicon Graphics}
	{http://www.sgi.com/} specific program that plays among other things
	QuickTime movies. QuickTime movies using the {\em Animation\/}
	coding does not require a license, while those using
	{\em Cinepak\/} coding does.
	{\em Please note\/}, that you have to chose 
	{\em Play Every Frame\/} in the {\em Options\/} menu before
	you press {\em Play\/} to get the intended result.\\
	Alternative for playing QuickTime movies:
	\linkf{XAnim}
	{http://www.portal.com/\~{}podlipec/home.html}.

\item	{\tt ivview}:
	A \link{Silicon Graphics}
	{http://www.sgi.com/} specific program that views / renders
	Inventor files.\\
	Alternative for viewing Inventor files:
	Nothing I know of.
	But since in this context Inventor and VRML are virtually the same,
	as long as you can view the latter, you are OK.

\item	\linkf{{\tt webspace}}
	{http://webspace.sgi.com/}:
	A \link{Silicon Graphics}
	{http://www.sgi.com/} specific program (I think) that views / renders
	VRML files.\\
	Alternatives for viewing VRML files:
	VRweb 
	(\linkf{here}{http://www.iicm.tu-graz.ac.at/Cvrweb} or
	\linkf{here}{http://www.3dsite.com/cgi/arch-VRML/VRweb.html});
	also check out what
	Yahoo has to say on 
	\link{VRML browsers}
	{http://www.yahoo.com/Computers\_and\_Internet/Internet/World\_Wide\_Web/Virtual\_Reality\_Modeling\_Language\_\_VRML\_/Browsers/}.

\item	\linkf{{\tt ghostview}}
	{http://www.cs.wisc.edu/\~{}ghost/}:
	A public domain PostScript viewer.
	\link{Silicon Graphics}{http://www.sgi.com/} users can also use
	{\tt xpsview}.

\end{itemize}

A final comment is about speed, e.g.\ the speed with which you can 
play a movie.
Here at the Observatory, we have a number of \sgi{} Indys 
with typically 32 Mbytes of RAM and a 100 MHz R4000 CPU.
They run as X-terminals, and the typical user will via them log in to a
computer with more RAM and a faster CPU (say, an R8000).
However, for playing movies, I have found a speed factor of 4--25 in favor
of the Indy!
Therefore, I advise you to run \netscape{} and thus the movie viewers
locally, if you have the same type of computer setup as we do, or even better,
to make the comparison yourself.
