PPMTOMPEG(1) | General Commands Manual | PPMTOMPEG(1) |
ppmtompeg - encodes MPEG-1 bitstreams
ppmtompeg [ options ] parameter-file
ppmtompeg 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. This man page is probably incomplete. For complete usage, see the User's Guide.
-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.
-realquiet : causes the encoder to run silently, with the only screen output being errors. Particularly useful when reading input from stdin.
-no_frame_summary : prevents the program from printing a summary line for each frame
-float_dct : forces the encoder to use a more accurate, yet more computationally expensive version of the DCT.
-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).
-nice : causes the program to run any remote processes 'nicely.' This is only relevant if the program is using parallel encoding. (see 'man nice.')
-max_machines num_machines : causes the program to use no more than num_machines machines as slaves for use in parallel encoding.
-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.
-mse : computes the mean squared error per block. Also automatically computes the quality of the images when set, so there is no need to specify -snr then.
-bit_rate_info rate_file : prints bit rate information into the file rate_file. Bit rate info is bits per frame, and also bits per I-frame-to-I-frame.
-mv-histogram : prints histogram of motion vectors as part of statistics. There are three histograms -- one for P, forward B, and backward B vectors. Each histogram is a 2-dimensional array, and there is one entry for each vector in the search window.
The parameter file MUST contain the following lines (except when using the -combine_gops or -combine_frames options):
OUTPUT <output file>
INPUT_DIR <directory>
INPUT
BASE_FILE_FORMAT <YUV or PPM or PNM or JPEG or JMOVIE>
INPUT_CONVERT <conversion command>
GOP_SIZE <n>
SLICES_PER_FRAME <n>
PIXEL <FULL or HALF>
RANGE <n>
PSEARCH_ALG <algorithm>
BSEARCH_ALG <algorithm>
IQSCALE <n>
PQSCALE <n>
BQSCALE <n>
REFERENCE_FRAME <ORIGINAL or DECODED>
If the BASE_FILE_FORMAT is YUV, then the parameter file must contain:
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.
The encoder is prepared to handle up to 16 B frames between reference frames when encoding with input from stdin. To increase this amount, change the constant B_FRAME_RUN in frame.c and recompile.
The encoder may be run on multiple machines at once. To do so, add a line "PARALLEL" in the parameter file, followed by a listing, one machine per line, then "END_PARALLEL". Each of the lines should be in one of two forms. If the machine has access to the file server, then the line should be:
<machine> <user> <executable>
The executable is normally ppmtompeg (you may need to give the complete path if you've built for different architectures). If the machine is a remote machine, then the line should be:
REMOTE <machine> <user> <executable> <parameter file>
Full paths should generally be used when describing executables and parameter files. This INCLUDES the parameter file given as an argument to the original call to ppmtompeg. Also, .rhosts files on the appropriate machines should have the appropriate information.
The encoder will use the original machine for the master and I/O server processes, and uses the listed machines as slaves to do the computation.
Optional lines are
RSH <remote shell command>
PARALLEL_TEST_FRAMES <n>
PARALLEL_TIME_CHUNKS <t>
The default values for these two options are n = 3 frames and t = 30 seconds.
PARALLEL_PERFECT
This is version 1.5 it contins new features and bug fixes from version 1.3.
Not really a bug, but at least a limitation: If writing to an output file, ppmtompeg sometimes uses <filename>.* as temporary files.
No known bugs, but if you find any, report them to mpeg-bugs@plateau.cs.berkeley.edu.
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
Darryl Brown - University of California, Berkeley, darryl@cs.berkeley.edu
Eugene Hung - University of California, Berkeley, eyhung@cs.berkeley.edu
Steve Smoot - University of California, Berkeley, smoot@cs.berkeley.edu
1 February 1995 |