Re: Embedding of Mime parts

Daniel Dardailler (
Thu, 19 Jan 1995 21:35:31 +0100

> But I wish I had a nickle for every time somebody came along later and
> said "why isn't the <IMG> tag more general, like an <INCLUDE> tag or
> something?" I'd be rich!

you'd get my nickle for sure :-|

> In fact, maybe all this technology is overkill for the problems at
> hand. We'll see...

I think eventually, something along the line of OLE/Opendoc/CORBA will
have to be used to achieve embedding, but I also think having a simple
way to initiate the embeddee process (or process agent - read below)
from the browser - i.e. the mailcap extension - is a good first start,
which should't hurt (in terms of having to maintain compatibility,
etc) any future plan we might have.

> >I don't want the browser to do it itself, I'd like to be able to
> >configure my mailcap file on the browser side with something like:
> >
> > video/mpeg : mpeg_play_embed %s %E
> > application/postscript : ghostview_embed %s %E
> >
> >where %E (E for Embedded_info) could be the id of the window (a
> >browser sub-window) where the rendering is to happen.
> >
> >I'm not sure if an extension of rfc1524 (mailcap syntax) is needed, or
> >if a set of conventions would be enough.
> How about:
> video/mpeg: mpeg_play%s; embed=mpeg_play_embed %s %E
> The Mailcap specification[8] allows for keywords like print=, compose=,
> etc. Just add another one: embed=

Yes, that's better.

> Of course this requires the mpeg player to be a child process of the
> browser. It doesn't allow for the case of X server on machine X, web
> client on machine W, and video player on machine V, where the web
> client wants to invoke the video player.

My eventual goal being to run an X program on the httpd side with
display embedded in the browser, I hope it does ! (I'll be posting a
document about that X/Web stuff soon).

The only think that needs to run as a child process of the browser is
an agent that controls the embedded client execution, not the embedded
client itself. This agent gets passed the X server id, the window on
the display, and is up to remote execute the embedded process on
machine V.

Example on the simple non-embedded case:

video/mpeg: r_mpeg_play %s

r_mpeg_play is the agent (r for remote) and it does something like:
rsh hosta mpeg_play argv[0]

(assuming PATH, DISPLAY, etc., get passed correctly)

Same thing can be done for embedding, just using argv[1].

Of course, if everything is local, there is no need for an agent.