home *** CD-ROM | disk | FTP | other *** search
-
- MPEG-1 Video Software Encoder
- (Version 1.1; August 9, 1993)
-
- RISC OS Version 1.0
-
- Loek Frederiks
- Runmolen 88A
- 1823 GM Alkmaar
- The Netherlands
- +31-072-111551
-
- This manual is meant for the RISC OS version of the Berkeley MPEG-1 Video
- Software Encoder.
-
- Synopsis
- --------
-
- mpeg_encod [-stat stat_file] [-quiet num_seconds] [-no_frame_summary]
- [-gop gop_num] [-combine_gops] [-frames first_frame last_frame]
- [-combine_frames] [-snr] param_file
-
- Description
- -----------
-
- Produces an MPEG-1 video stream. param_file is a parameter file which
- includes a list of input files and other parameters. The file is described
- in detail below. The -gop, -combine_gops, -frames, and -combine_frames
- options are all exclusive.
-
- Options
- -------
-
- -stat stat_file
-
- Causes the encoder to append the statistics to the file stat_file. In any
- case, the statistics are output to stdout. The statistics use the following
- abbreviations: bits per block (bpb), bits per frame (bpf), seconds per
- frame (spf), and bits per second (bps).
-
- -quiet num_seconds
-
- Causes the program to not report remaining time for at least num_seconds
- seconds. A negative values tells the program not to report at all. 0 is
- the default (reports once after each frame). Note that the time remaining
- is an estimate and does not take into account time to read in frames.
-
- -no_frame_summary
-
- Prevents the program from printing a summary line for each frame
-
- -gop gop_num
-
- Causes the encoder to only encode the numbered GOP (first GOP is 0). The
- parameter file is the same as for normal usage. The output file will be
- the normal output file with the suffix ".gop.<gop_num>" No sequence info
- is output.
-
- -combine_gops
-
- Causes the encoder to simply combine some GOP files into a single MPEG
- stream. A sequence header/ender are inserted. In this case, the parameter
- file need only contain the YUV_SIZE value, an output file, and perhaps a
- list of input GOP files (see below).
-
- -frames first_frame last_frame
-
- Causes the encoder to only encode the frames from first_frame to
- last_frame, inclusive. The parameter file is the same as for normal usage.
- The output will be placed in separate files, one per frame, with the file
- names being the normal output file with the suffix ".frame.<frame num>" No
- GOP header information is output. Thus, the parameter file need not include
- the GOP_SIZE value.
-
- -combine_frames
-
- Causes the encoder to simply combine some frames into a single MPEG stream.
- Sequence and GOP headers are inserted appropriately. In this case, the
- parameter file need only contain the YUV_SIZE value, the GOP_SIZE value,
- an output file, and perhaps a list of frame files (see below).
-
- -snr
-
- Print the signal-to-noise ratio. Prints SNR (Y U V) and peak SNR (Y U V)
- for each frame. In summary, prints averages of luminance only (Y). SNR is
- defined as 10*log(variance of original/variance of error). Peak SNR is
- defined as 20*log(255/RMSE). Note that the encoder will run a little slower
- if you want it to print the SNR.
-
- Parameter file
- --------------
-
- The parameter file MUST contain the following lines (except when using the
- -combine_gops or -combine_frames options):
-
- PATTERN <pattern>
-
- OUTPUT <output file>
-
- INPUT_DIR <directory>
-
- all input files must reside in this directory. If you want to refer to the
- current directory, use '.' (an empty INPUT_DIR value would refer to the root
- directory).
-
- INPUT
-
- This line must be followed by a list of the input files (in display order)
- and then the line
-
- END_INPUT
-
- There are three types of lines between INPUT and END_INPUT. First, a line
- may simply be the name of an input file. Secondly, the line may be of the
- form
-
- <single_star_expr> [x-y]
-
- single_star_expr can have a single '*' in it. It is replaced by all the
- numbers between x and y inclusive. So, for example, the line
-
- tennis*.ppm [12-15]
-
- is replaced by tennis12.ppm, tennis13.ppm, tennis14.ppm, tennis15.ppm.
- Uniform zero-padding occurs, as well. For example, the line
-
- football.*.ppm [001-130]
-
- is replaced by football.001.ppm, football.002.ppm, ..., football.009.ppm,
- football.010.ppm, ..., football.130.ppm. The third type of line is:
-
- <single_star_expr> [x-y+s]
-
- Where the line is treated exactly as above, except that we skip by s. Thus,
- the line
-
- football.*.ppm [001-130+4]
-
- is replaced by football.001.ppm, football.005.ppm, football.009.ppm,
- football.013.ppm, etc.
-
- BASE_FILE_FORMAT <YUV or PPM or PNM>
-
- All the input files must be converted to YUV, PNM or PPM format. This line
- specifies which of the three formats (actually PPM is a subset of PNM).
- In the YUV format, the U and V components are subsampled 4:1. The reason
- for having a separate PPM option is for simplicity. If your files are
- RAWBITS ppm files, then use the PPM option rather than the PNM. Also,
- depending on the system, file reads will go much faster with the PPM
- option (as opposed to PNM).
-
- INPUT_CONVERT <conversion command>
-
- You must specify how to convert a file to the base file format. In the
- conversion command, each '*' is replaced by the filename (the items listed
- between INPUT and END_INPUT). If no conversion is necessary, then you would
- just say:
-
- INPUT_CONVERT *
-
- If you had a bunch of gif files, you might say:
-
- INPUT_CONVERT giftoppm *
-
- If you have a bunch of separate a.Y, a.U, and a.V files, then you might say:
-
- INPUT_CONVERT cat *.Y *.U *.V
-
- GOP_SIZE <n>
-
- n is roughly the number of frames in a Group of Pictures (roughly because
- a GOP must begin with an I-frame)
-
- SLICES_PER_FRAME <n>
-
- n is roughly the number of slices per frame. Note, at least one MPEG player
- may complain if slices do not start at the left side of an image.
- To ensure this does not happen, make sure the number of rows is divisible
- by SLICES_PER_FRAME.
-
- PIXEL <FULL or HALF>
-
- Use half-pixel motion vectors, or only full-pixel ones.
-
- RANGE <n>
-
- Use a search range of +/- n pixels.
-
- PSEARCH_ALG <algorithm>
-
- Algorithm must be one of {EXHAUSTIVE, TWOLEVEL, SUBSAMPLE, LOGARITHMIC}.
- Tells what kind of search procedure should be used for P-frames. Exhaustive
- gives the best compression, but logarithmic is the fastest. You select the
- desired combination of speed and compression. TWOLEVEL is an exhaustive
- full-pixel search, followed by a local half-pixel search around the best
- full-pixel vector (the PIXEL option is ignored for this search algorithm).
-
- BSEARCH_ALG <algorithm>
-
- Algorithm must be one of {SIMPLE, CROSS2, EXHAUSTIVE}. Tells what kind of
- search procedure should be used for B-frames. Simple means find best
- forward and backward vectors, then interpolate. Cross2 means find those two
- vectors, then see what backward vector best matches the best forward vector, and vice versa. Exhaustive does an n-squared search and is EXTREMELY slow
- in relation to the others (Cross2 is about twice as slow as Simple).
-
- IQSCALE <n>
-
- Use n as the qscale for I-frames.
-
- PQSCALE <n>
-
- Use n as the qscale for P-frames.
-
- BQSCALE <n>
-
- Use n as the qscale for B-frames.
-
- REFERENCE_FRAME <ORIGINAL or DECODED>
-
- If ORIGINAL is specified, then the original images are used when computing
- motion vectors. To be more accurate, use DECODED, in which the decoded
- images are used. This should increase the quality of the image, but will
- take a bit longer to encode.
-
- Notes
- -----
-
- If the BASE_FILE_FORMAT is YUV, then the parameter file must contain:
-
- YUV_SIZE <w>x<h>
-
- where w = width, h = height (in pixels) of image
-
- If the -combine-gops option is used, then only the YUV_SIZE and OUTPUT
- values need be specified in the parameter file. In addition, the parameter
- file may specify input GOP files in the same manner as normal input
- files -- except instead of using INPUT_DIR, INPUT, and END_INPUT, use
- GOP_INPUT_DIR, GOP_INPUT, and GOP_END_INPUT. If no input GOP files are
- specified, then the default is to use the output file name with suffix
- ".gop.<gop_num>" starting from 0 as the input files.
-
- If the -combine-frames option is used, then only the YUV_SIZE, GOP_SIZE, and
- OUTPUT values need be specified in the parameter file. In addition, the
- parameter file may specify input frame files in the same manner as normal
- input files -- except instead of using INPUT_DIR, INPUT, and END_INPUT, use
- FRAME_INPUT_DIR, FRAME_INPUT, and FRAME_END_INPUT. If no input frame files
- are specified, then the default is to use the output file name with
- suffix ".frame.<frame_num>" starting from 0 as the input files.
-
- Any number of spaces and tabs may come between each option and value. Lines
- beginning with '#' are ignored. Any other lines are ignored except for
- those between INPUT and END_INPUT. This allows you to use the same
- parameter file for normal usage and for -combine_gops and -combine_frames.
-
- The encoder is case-sensitive so, except for file names and directories,
- everything should be in upper case.
-
- The lines may appear in any order, except the following exceptions. INPUT
- must appear before END_INPUT (also, GOP_INPUT before GOP_END_INPUT and
- FRAME_INPUT before FRAME_END_INPUT). All lines between INPUT and END_INPUT
- must be the frames in play order.
-
- Authors
- -------
-
- Kevin Gong - University of California, Berkeley, keving@cs.berkeley.edu
-
- Ketan Patel - University of California, Berkeley, kpatel@cs.berkeley.edu
-
- Dan Wallach - University of California, Berkeley, dwallach@cs.berkeley.edu
-
- Bugs
- ----
-
- No known bugs.
-