maybe acrhive lts is right to have two time bases
at least at some level of abstractions)
(so you can align multiple clips with different origins
in the same app)

how to update programmed events from LTS...?
interesting problem (e.g., page-flipping needs to
obey random-access protocol)

add a simple lip-sync slider to main MASH demo.

video port selection stopped working!

question: on lts trigger, will LTSTimer fix itself up?

add a random offset to ts for each src in rtp playback
(to allow for graceful restart... maybe also allocate
a new srcid)

need archive hook that says when play is done
(an aggregate hook rather than individual streams, which is
already there)

print out javascript spec ~/jss

better plumbing: make sure we can
	o plug a capture pipeline into
	  the decoder/render pipeline (without an intervening network)
	o plug the archive output into a transcoder for rate-controlled
	   playback
	o plug the capture tools directly into the archive for authoring

fix fonts per Brian Smith's suggestion

fix headless UI

finish moving defaults from apps to respective objects

ArchiveFile::Write writes header at offset 0 on every packet!

Archive needs consistent records at EOF (in index file) ... this is
a problem!

SM: finish latest options_ changes...

In general, is "catch" right model for error handling?

AS: archive file shouldn't return values as it does (i.e., through arrays)
(e.g., pass a pointer to an object that gets set)

AS: re-use ArchiveSystem object in rtsp server

recorder needs to catch RTPRecordAgent's call
to archive_error $error and do the following:

		# error occurred in above script
		if { [info exists dataFile ] } { delete $dataFile  }
		if { [info exists indexFile] } { delete $indexFile }
		Dialog transient MessageBox -image Icons(warning) \
				-text "Error occurred while creating new\
				[$session media] stream:\n$error"\
				-modal 0
(this code came from ArchiveStream/Record which should not do
any UI stuff)

keep tcl/archive to 3 levels deep

don't reparent classes in ArchiveSession/Play,Record

doc archive

redo app construction - have simple data base of app name to class
and use import to build... i.e., get rid of main.tcl everywhere
how to debug?  import could support simple database...

SM: otcldoc - add tag for "observable events" so observer API can
be clearly indicated in docs (look at doc format of hand-written
archive pages)

Obsolete?
	RTPVideoApplication
	ArchiveRecorder/Video
	ArchiveRecorder/Audio
	HeaderFile?

SM: finish fixing loopback... all invocations should be through network
manager (for net level) or session/agent (for app level)

SM: simple web/mash authoring scripts... not a fancy UI but rather
a combination of simple UI and scripting extensions for the semi-guru
power user

SM: move some of these TODOs to the web page

SM: make it easy to import classes from outside mash build environment
(i.e., from some tree that's in a well-known place pointed to by
an environment var etc) and then be able to easy roll a flat
script (i.e., tcl-expand)

KW: integrate webcast and archive (i.e., webcast hooks provide almost
exactly what we need to have archive system "play" html pages
into a webcast window from the archive)

KW: fix problem with URL's in mc, e.g., http::/foo/ vs http://foo and how
this impacts expansion of embedded URLs.

SM: after rough demo finish... make Network more VUSystem-like
(i.e., replace DataHandler, CtrlHandler with composable linkage)

get rid of AudioSession & VideoSession and instead use
bit vector of allowable payload types

anything that takes a spec as an arg should instead
take an AddressBlock

many items +project/mash/todo

rtsp-client: playOrPause method (absoluate semantics are usually
better than toggle)... take play-update out of rtsp-client (app
would be the one setting play/pause); event model is too hard
to use, e.g., you can't call open/setup because the describe
hasn't gotten back from the open.  if you call a method that relies
upon an earlier one, then you should block.  as well, you should
be able to do everything asynchronously.  everything is serialized
so it should be easy.

ported rtsp server to TCP/Server class... this means that
multiple connections should be handled correctly now
(describe multi connection problem to group)
impacts webcache and rtsp server

Suggestions for rtsp server: use objects (i.e., in place of
reponse_, params_ arrays etc); re-work error handling conventions
(sometimes use catch, other times return values, other times
ignored)

get rtsp server running locally and write a simple script
to control (i.e., something that's easier than recorder for
taking multiple cuts and manipulating...)

KW: optimization techniques to reduce latency... SRM delays could
cause big latencies as you set a timer for each URL request... but
receivers could easily anticipate requests and pipeline response.

KW: need to canonicalize URLs in mc...

next_ADU API shouldn't take "next" size arg...
it should do another upcall at the appropriate time
(i.e., app can't necessarily know what the next size will be!)
... this is actually a major inconvenience

for demo - need integrated web browsing in archive...
fix mc

How does receiver know what ID packet is in SRM_PacketHandler::recv?
... probably in srm_hdr

put together design notes for SRM usage wrt to webcache
and talk to Suchi (and Kristin and others) re srmv2...
clean up case where we plop a new buffer (html page)
into our cache and kick SRM to launch (i.e., simply give
SRM the data name and size and callback refers to chunk
explicitly for repair... e.g., first transmission and
repair have identical API)

SRM: webcache cache does not want to be per-source!
This has interesting ramifications on SRM/ALF realization.
i.e., there is logically one distributed table indexed
by a URL

SRM: is_local hook to new_source?

SRM: should be able to orchestrate multiple simultaneous ADUs where
one with higher priority might come along and pre-empt an existing
rate-limited object transmission.

SRM: nextADU - app needs to know when expired... oh it does,
because it will return no more data.

KW: use server push instead of netscape -remote

tcp server abstraction is problematic because multiple
connection instances will interefere with each other

glue philosphy KW... (better to glue in tcl than in C++)

add various to vic acks (including Isidore and Andrew Swan)

remove gamma.gif from vic dist and insert URL into vic usage page

www2.cs.cornell.edu/zeno/
        VM for video signal processing
                Projects/RIVL/RIVL-VM

Yatin: document WidgetClass, ui-tools (e.g., ImageTextButton etc)

tcl profiling?

archive memory leak:
        - hand packet to network layer
        - network layer frees
        - we reallocate...

        - race:
                if network frees before us, we're okay
                if not, then we never free the pktbuf?
Look at 19MB player footprint with dmalloc

        struct recordhdr {
                u_int len;
                u_char type;
                u_char d2;
        };

32-bit length?

        struct recordhdr {
                u_int16 len;
                u_char type;
                u_char d2;
                u_int32 rts; (receiver ts? middle 32-bits of ntp?)
        or:
                u_int64 rts; (receiver ts? ntp format?)
        };

figure out why (and verify that) WidgetClass is taking so much time



tkerror -> bgerror and update to Tcl::eval
as discussed with Teck

otcl dieing at deallocation time.
My theory:
problem is Tcl deletes all the procs from the namespace
in a random order and this can delete the command that
corresponds to "Foo::destroy" before deleteing "Foo",
and the class deletion of Foo needs to call destroy.


FIXME in application.tcl

Get rid of Application::toplevel

fix: mb button on startup...

fix up archive... objects/apps

change parse-args to ignore unknown options and return them...
then we can do multiple passes with multiple config options

gen up simple rtsp controller and send smash video from heart
to home.

make helper script that tells you what import line
you (probably) need... suggested by Elan

#Class -> C++Class

coordbus

havefont

Create Log class (or UserNotify class...)
... it's UI version should use Dialog class
and replace ErrorWindow with it

finish commenting pipeline.  get rid of dummy hooks from
pipeline into tap.

thumbnail not update right on 411 -> 422 change
(try loopback and changing h261 to nv)

what is APP processing doing in session-rtp.cc?
thumbnails?  Don't think this is used.

VideoAgent::sessionbw is in the wrong place.
There should be a separate abstraction for
controlled aggregate bandwidth
(i.e., mixing of policy and mechanism at the wrong place)

get rid of app in otcl rtp-agent

start using mc as my netscape proxy...

grep -i grabber video/*  ... some other time.

mark_icon -> UI

video format change not quite working.

implement better model for format changes, i.e., UI should merely
be notified of new decoder and not have to actually create it...
(actually, not clear... there are cases where observer might
want to have a lot of influence)

audio-freebsd seems to ignore oport_
even though it sets output-ports to "speaker lineout"

arbiter not working

AnnounceListenManager -> ALM

ELan: changes to mega/al-client.tcl
tcl/mega/al-client.tcl... test handler changes
these breaks agent-mbgw (because it's design is flawed...
it shouldn't be calleding rtp_format but it does because
AnnounceListenManager/MeGa/Client calls it)

move flock out of audio.cc

three levels of pri for Configuration

factor out warn/fatal etc from Application and make "do nothing" default
	-> class

should unify timebase (currently have unixtime in AudioController and
	elsewhere...)

web page samples - how to setup so it's easy to generate
	scripts from core components.
	write app, but then provide customization layer
	(i.e., built-in addresses, UI components and defaults, etc)


debug all the new command parsing code

changed syntax of
	nsdr -proxy a -proxy b -sap c/d -sap e/f
to
	nsdr -proxy a:b -sap c/d:e/f

  Andrew - wouldn't comma be better than colon?


double check that scuabvic is obsolete and nuke

tgmb broken

Explain how *HandoffClient won't work and that we want to get
away from X resource model... instead prefs stored in .mash/prefs-appname

Problem with multiple Application objects in player/recorder.

Notify Teck:
        # REVIEW: need this or use RTPApplication instproc init?
        catch "option readfile ~/.RTPdefaults startupFile"
	catch "option readfile ~/.mashrc userDefault"

grep for instproc

use tk class option instead of $self get_option ctrlfont
	(and ctrltitle)
(and for fonts in general)

init_local -> load_preferences (FINISH THIS)

doesn't want to be a simple hierarchical space because then you can't
have say two audio agents with different bandwidths in the same process.
Instead, my approach uses multiple objects.  This should work well.

impact of nuking -u?

removed vic -A -> update on-line man page.

revisit tags... mostly works.

parse ~/.RTPdefaults manually instead of relying upon tk options

get rid of defaulHostSpec, special_parse, bool_resource_?

Got rid of parse_epilog

trigger
	trigger_idle
	trigger_sdes
	trigger_media
	trigger_format

	register
	unregister
	activate
	deactivate

Document notify: used to log loss for RLM
	(should probably use a different name... trigger_loss?)


Re-visit plugin story

re-design option database access and role of Application class...

	Goal: Application should merely handle pasting together of
	objects to build an app.  Parsing argv, setting default resources,
	etc. (actually, default resources should be taken care of
	by each object...)

	get rid of app_ everywhere... used almost exclusively for
	resource manipulation and $self methods now override this need.
	Other (rare) uses can all be done more cleanly.

	Get rid of Application::media_ (finish eliminating from
		init args)

	Move resource management of all objects into its own class.
	So every object that needs resources can be subclassed
	from this main object.  Then, the defaults are defined
	where they belong... and it's up to an App to override
	them by setting them after the underlying obejcts are created.

	How to handle command-line options?

	With sane naming conventions... that are mapped onto Tk options?

	Need to develop a test-suite...
	(just a list of things to do to test everything... each person
	should write down a test procedure for the app's that they've
	written)

Elan: src activation should pass session name to tcl no?
no need to keep it in C++.

need to fix hardware/software renderer decode differentation
i.e., I changed Decoder::render_frame to always call renderer
even for hardware renderer's; seems like object linkages aren't
quite right here (should have a split out to hw/sw)

tcl-methods, tcl-tracevar

check for memory leaks under new otcl layout

fix the way Source's are delete -> everything driven from tcl

take out cosmo grabber

make sure all grabbers ported (use class, fix "device open")

casner says srcid collision doesn't work

who do decoders depend on source.h? -> separate out packet-handler

merge in audio/vat.  put in DEC's mme changes.

have to roll in Berson's RSVP changes

update PVH codec wrt JSAC paper.  do HQ quantizer.
do rate-control.

pvh decoder bug: 2-bits of SBC or DCT refinement cannot occur
within a level...?  I think this is not due to 2 bits but
rather was due to us running off the bottom of the DCT
coefficient in this case.  -> the encode_block routine
throws out the two low-bits w/o any choice...
ALSO: still have a few more bugs in SBC coding.
Should play around with pvh layour hooks in ui-ctrlmenu.tcl

new arch breaks JPEG because flush does not guarantee that
packets no longer used downstream (i.e., can still be buffered
in decoder).

fix up copyrights to reflect MASH/UCB
	add copyright or modifying existing?

document win95 UserName problem in web page

rework payload types to minimize number of modules that need to be
changed to add a new encoder/decoder (put pt in TransmitterModule)

fix MAXHDR

fix temporal-CR.  make uniform and clean so that tcl can specify
temporal layering structures and encoders do the right thing
with the temporal-layer rather than the temporal-index

local_fqdn calls non-existant gethostname proc

script to collapse tcl script (i.e., follows source directives)

FIXME not encoding SBC's because commented out!

finish command parsing (cf-args.tcl); generalize

nv session manager doesn't work because no network ever installed
in ch_ so no session messages generated.

why don't background blocks go on the base layer in layered-CR?

need separation between sending to multiple layers and
receiving on multiple layers (i.e., we might send to layers
that we are not receiving)

config:
	- have list of objects in configure that we want for our app
	- use MAP to map to object files
	- still link with everything so that support files
	get pulled in with desired objects

think through how temporal layering affects compositor

encryption broken on alpha

rtcp sdes going out on all layers right now...

