TODO list for next release
--------------------------

Add option to do searches in Cr/Cb as well as Lum blocks
jpeg5! (below)
last-frame must be P/I error, and pattern interact badly
add gnuconfigure so the Makefile is cake
YUV correct (cf mail below)
fix the "ifdef BUGGY_CODE" code in bframe.c
Change sizing stuff so it works with non multiples of 16
Does "RESIZE WxH" work?  Seems to for PPm but not JPG.  Fix it.  Document it
mpeg_encode in parallel generates a "zero size warning"  It should 
    exit(1) here, when not in parallel, and not warn when in parallel.
     sometimes it generates a 0x0 MPEG!
Give time estimates for parallel encoding
Verify YUV file sizes with stat() call (when not STDIN)

--------------------

YUV mail:
Please have a look on these few lines extracted from the ISO
mpeg2encode/readpic.c/read_ppm() available on 
ftp.netcom.com:/pub/cf/cfogg/mpeg2 :

    .........

     /* convert to YUV */

     y = cr*r +cg*g +cb*b;
     u = cu*(b-y);
     v = cv*(r-y);
     yp[j] = (219.0/256.0)*y + 16.5;  /* nominal range : 16..235 */
     up[j] = (224.0/256.0)*u + 128.5; /* nominal range : 16..240 */
     vp[j] = (224.0/256.0)*v + 128.5; /* nominal range : 16..240 */
    ...........

I think there is a slight misunderstanding in the Berkeley's mpeg1 codec about
what the YUV format looks like, exactly about how to translate from PPM to YUV 
and vice versa : the dynamic of YUV format has to be reduced as described
above. Otherwise, on a full color display a Berkeley's MPEG bitstream has not 
exactly the right colors if played by an ISO compliant player.

Best regards


                            Thierry GODIN

--------------------
And just for fun, kevin's list:
To-do list	(in no particular order)
----------
	- should delete decoded frame files when done with them
		(need to make sure no one else needs it)
	- port to CM5
	- try on Snake cluster, and other clusters (FDDI -- 100Mb/s)
	- fix bug on snakes (look at header file for queue length)
	- look at 24-bit display
	- try having I/O server getting things in order, and asking Master
		where to send them
	- bug:  closing connections at end (on DEC 5000)
	- GOP on space in input list
	- pnm convolve
	- telescopic search
	- include system layer
	- update documentation
	- show error images
	- graphical interface (showing motion vectors, etc.)
	- use DCT-space when computing error terms
	- vary the q-scale according to the error term
	- modify the program to have a finer-grained parallelism option -- we
	  can probably encode slices in parallel (this will only be useful if
	  we want to do a few B-frames using exhaustive search)
	- make search technique stop at x.5, not x.0
	- pel aspect ratio in parameter file (2.4.3.2)
	- skipped blocks options?
	- recover from parallel machine errors?
	- subsample B-search
	- bug:  decoded with 1 machine can freeze
	- malloc bug:  hello.param, with DECODED frames only
	- portability:
		times() function
		popen/pclose

Oh yes, I liked the concept of a spiral for your full search algorithm,
however I thought this code a little difficult to read.  What about
using a look up table (pre generated at compile time) to generate
the coord offsets that would then spiral around the location in question?

	+ change MAXPATHLEN to something else
	+ put ./ in test in Makefile

Currently, the IPPBPBB sequence is fixed for the entire sequence.  A later
version should probably either test for scene changes or allow the user to
specify them.

	+ check all << and >> to make sure they are used properly
		(note truncation of >>)
	+ allow variable bit rate
	+ allow size of video sequences to be set
	+ make REMOTE usage more clear
	+ fix bug:  when I-frame only, and decoded, does a lot of extra work
	+ replace ZAG[i] with a pointer? (in quantization)
		(and speed up by using 31 times the space (one for each
		 q-value)
	+ add interrupt handler to parallel encoder
	+ should pad black instead of truncating
	- graph histogram of motion vectors
	- allow new PATTERN statements inside of file listing
	- put in run-time checks for size of int32, int16, etc.
	- replace pnm crap with ppm.dwallach
	- add option to allow different p-search in b-search
	- allow -frames option along with parallel option (shouldn't be
		too difficult)
	- incorrect compression rates given if do -frames option

	- enforce:  >Hmmm...I will have to look at the standard.  I did find something earlier --
>"forced updating" makes it illegal to have more than 132 P-frames without an
>I-frame.  But "forced updating" does not disallow any number of consecutive
>B-frames.  I'll have to check on limits for GOP lengths...

	- rectangular search windows

	- make parallel stats to 4 digits

One of my friend just fixed the problem.....she 
retype the whole parameter file and it is working
now.  I think the problem was there were some 
spacing problem......for example, if there
are some space is the line, when the 
program read in....it just mess everything up.

It really become a problem if there is space after the image name...
or even after the path name.

	Subject: may not want to >> 4	in postdct.c

------------------------------------------------------------------------
P.S. In the future versions (is one already been released), you could add
option for encoder to remove picture after encoding it & therefore saving
space on disk + option to sleep while picture it's waiting for is not done.
I've hacked this: (in readframe.c)

        while ((tempfile = fopen(fullFileName, "r")) == NULL) {
            fprintf(stderr, "Cannot open '%s', retrying...\n", fullFileName);
            sleep(120);
        }

        fclose(tempfile);

arijan@kette.fer.uni-lj.si
