From danapple  Wed Mar  8 00:41:51 1989
Received: by FLOTSAM.MIT.EDU (5.45/4.8)  id AA00825; Wed, 8 Mar 89 00:41:51 EST
From: Daniel I. Applebaum <danapple>
Message-Id: <8903080541.AA00825@FLOTSAM.MIT.EDU>
To: galatea-users, video-mail@athena
Subject: Big switchers
Date: Wed, 08 Mar 89 00:41:47 EST


I have a devised a system by which I can extend Galatea to handle
switchers with multiple outputs.  The method I've been thinking of will
require no changes to the protocol.  Unfortunately, to make this method
work efficiently will require the server final output numbers be
restricted.  Server output numbers used to be any integer.  Now, they
will have to be positive, and there will be a maximum integer, which
will be compile-time changeable.  I don't believe either of these
restrictions should cause any problem, but if anybody thinks of a
serious reason why these restrictions are burdensome, let me know.

I'm thinking of making the default number of outputs 10, numbered 0-9.
For SIGGRAPH, this number will be at least 20.

Dan.

From rubin@media-lab.media.mit.edu  Wed Mar  8 14:17:39 1989
Received: by FLOTSAM.MIT.EDU (5.45/4.8)  id AA04737; Wed, 8 Mar 89 14:17:39 EST
Received: by media-lab.media.mit.edu (5.61/4.8)  id AA08549; Wed, 8 Mar 89 14:16:47 -0500
Date: Wed, 8 Mar 89 14:16:47 -0500
From: Ben Rubin <rubin@media-lab.media.mit.edu>
Message-Id: <8903081916.AA08549@media-lab.media.mit.edu>
To: danapple@FLOTSAM.MIT.EDU
Subject: Re:  Big switchers
Cc: galatea-users@FLOTSAM.MIT.EDU, video-mail@ATHENA.MIT.EDU

As long as the maximum allowable outputs will accomodate our 16x16
matrix, it sounds good to me

-b

From hkbirke@MOVIES.MIT.EDU  Sun Apr 23 22:29:33 1989
Received: by FLOTSAM.MIT.EDU (5.45/4.8)  id AA16009; Sun, 23 Apr 89 22:29:33 EDT
Received: by MOVIES.MIT.EDU (5.45/4.8)  id AA01179; Sun, 23 Apr 89 22:29:55 EDT
From: Hal Birkeland <hkbirke@MOVIES.MIT.EDU>
Message-Id: <8904240229.AA01179@MOVIES.MIT.EDU>
To: danapple@FLOTSAM.MIT.EDU
Cc: rubin@MEDIA-LAB.MEDIA.MIT.EDU, hkbirke@MOVIES.MIT.EDU,
        galatea-users@FLOTSAM.MIT.EDU, bgardner@ATHENA.MIT.EDU
Subject: Galatea Seamless Playback (new version proposal)
Date: Sun, 23 Apr 89 21:29:52 EST


Seamless playback routine modification (grammar -- text format):

	List 	::=  Clips : Switches
	Clips	::=  Clip ; Clips | 
			Clip
	Switches::=  Switch ; Switches | 
			Switch
	Clip	::=  Time, Volume , InFrame , OutFrame [, Speed]
	Switch	::=  Time, VolumeFrom, VolumeTo [, Mask]
	
	Time	::=  Frame
	InFrame ::=  Frame
	OutFrame::=  Frame
	
	Volume     ::= VolumeName
	VolumeFrom ::= VolumeName
	VolumeTo   ::= VolumeName

	Frame	::=  Integer
	Speed	::=  Integer
	Mask	::=  Integer

	VolumeName ::= String


What all this means (as if you really care Dan):
	A seamless playback is now composed of two distinct segments:
the clip and the switch. Clips are the physical disc motion commands,
the rolls and releases. Switches are the appearance changes on the
client's output. They are being separated after a long discussion with
Ben where we talked about the hassles of hierarchies and the current
assignment methods. It is very easy to determine where the switches
occur in a playback, but not always where to put them in the current
structured list. Also this will allow for better optimization of the
generated list and improved resource allocation.

	We will be producing a set of library routines (client side) to
facilitate using these commands... here is an initial spec for it:

/* structures */

typedef structure _clip {
	int frame;
	char *volumename;
	int in,out,speed;
} Clip;

typedef structure _switch {
	int frame;
	Clip *in, *out;
	int mask;
} Switch;

typedef structure _list {
	Clip *clip[MAX_CLIPS];
	Switch *switch[MAX_SWITCHES];	
} List;

/* create a new list to work with */
List *SeamlessCreate()
	
/* free a current list */
void SeamlessFree(list)
	List *list;

/* add a clip */
int SeamlessAddClip(list,clip)
	List *list;
	Clip *clip;

/* add a switch */
int SeamlessAddSwitch(list,swtch)
	List *list;
	Switch *swtch; /* switch is a reserved word */

/* create a clip */
Clip *SeamlessCreateClip(time, volumename, in, out, speed)
	char *volumename;
	int time, in, out, speed; /* time is frames from start */

/* create a switch */
Switch *SeamlessCreateSwitch(time, in, out, mask)
	Clip *in, *out; /* in and out clips */
	int time, mask; /* time is frames from start */

This left to be decided...
	There needs to be an improved interface here to isolate the
programmer from all of the nastiness associated with overlaying shots...
but there doesn't seem to be a nice way of doing it... here are a few of
my suggestions:

/* Return "top" clip at a given point in time */
Clip *SeamlessTopClip (list, time)
	List *list;
	int time;

/* Optimize List -- Whee!!! */
SeamlessOptimize (list)
	List *list;

/* Find Current List */
List *SeamlessCurrent (list)

/* make a new current list */
SeamlessMakeCurrent (list)
	List *list; 

/* play current list, downloading if needed */
SeamlessPlayback ()



--hal

From danapple  Mon Apr 24 00:15:10 1989
Received: by FLOTSAM.MIT.EDU (5.45/4.8)  id AA16140; Mon, 24 Apr 89 00:15:10 EDT
From: Daniel I. Applebaum <danapple>
Message-Id: <8904240415.AA16140@FLOTSAM.MIT.EDU>
To: Hal Birkeland <hkbirke@MOVIES.MIT.EDU>
Cc: danapple@FLOTSAM.MIT.EDU, rubin@MEDIA-LAB.MEDIA.MIT.EDU,
        galatea-users@FLOTSAM.MIT.EDU, bgardner@ATHENA.MIT.EDU, danapple
Subject: Re: Galatea Seamless Playback (new version proposal) 
In-Reply-To: Your message of Sun, 23 Apr 89 21:29:52 EST.
             <8904240229.AA01179@MOVIES.MIT.EDU> 
Date: Sun, 23 Apr 89 23:15:05 EST


Great, wonderful!  Except: check for naming conflicts (ie. I already have
a #define for Switch.

Dan.

From hkbirke@MOVIES.MIT.EDU  Tue May  9 20:25:43 1989
Received: by FLOTSAM.MIT.EDU (5.45/4.8)  id AA20508; Tue, 9 May 89 20:25:43 EDT
Received: by MOVIES.MIT.EDU (5.45/4.8)  id AA01459; Tue, 9 May 89 20:26:04 EDT
Date: Tue, 9 May 89 20:26:04 EDT
From: Hal Birkeland <hkbirke@MOVIES.MIT.EDU>
Message-Id: <8905100026.AA01459@MOVIES.MIT.EDU>
To: galatea-users@FLOTSAM.MIT.EDU
Subject: multiple client problem: seamless


MAJOR PROBLEM WITH CURRENT SEAMLESS PLAYBACK IMPLEMENTATION 
	when running with multiple clients...

a client is not guaranteed that his playback list will be the one he
requests to playback.

Scenario:

Client #1 downloads a 15 second playlist
Client #2 downloads a 2 hour playlist
Client #1 play list.

Client #1 will play the 2 hour and not the fifteen second list...
	sigh. This will be repaired in Seamless Part 2, due out in 10 days
	or so.

--hal
hkbirke@movies.mit.edu

From danapple  Thu Mar 15 17:28:15 1990
Received: by flotsam.MIT.EDU (5.61/4.8)  id AA06141; Thu, 15 Mar 90 17:28:15 -0500
From: Daniel I. Applebaum <danapple>
Message-Id: <9003152228.AA06141@flotsam.MIT.EDU>
To: galatea-users
Subject: New Galatea
Date: Thu, 15 Mar 90 17:28:14 EST
Sender: danapple


Galatea 2.4 is now available.  This newest version of the Galatea
Network Video Device Control System has many new features compared to
the previous release, 2.2.  Some of the enhancements include the
capability to record onto write-once video devices and run-time
remounting of video discs.

To get the new release, you may ftp the tar or cpio files from
flotsam.mit.edu using anonymous ftp.  The files galatea.2.4.tar and
galatea.2.4.cpio are available under the galatea subdirectory.  Or, if
you are unable to retrieve the files that way, I'd be happy to mail you
a uuencoded version of either file.

Dan.

