ppmtompeg(1)


NAME

   ppmtompeg - encodes MPEG-1 bitstreams

SYNOPSIS

   ppmtompeg [ options ] parameter-file

DESCRIPTION

   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.

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.

   -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.

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).  If
                 input files will be coming in from  standard  input,  use
                 'stdin'.

          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 or JPEG or JMOVIE>
                 All the input files must be converted to  YUV,  JPEG(v4),
                 JMOVIE, PNM, or PPM format.  This line specifies which of
                 the three formats (actually PPM is a subset of PNM).  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
                        Input conversion is not allowed  with  input  from
                        stdin.

                 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.
                 The following lines are optional:

                        FORCE_I_ALIGN
                               This  option  is only relevant for parallel
                               execution  (see  below).   It  forces  each
                               processor  to  encode  a block of N frames,
                               where N must be a multiple of  the  pattern
                               length.   Since  the  first  frame  in  any
                               pattern is an  I-frame,  this  forces  each
                               block  encoded by a processor to begin with
                               an I-frame.
                        foo

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, and
          YUV_FORMAT <ABEKAS or PHILLIPS or UCB or EYUV or pattern>.
   See the file doc/INPUT.FORMAT for more information.

   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.

PARALLEL OPERATION

   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>
          The encoder uses the remote shell command to start processes  on
          other  machines.  The default command is 'rsh.'  If your machine
          supports a different command, specify it here.

   PARALLEL_TEST_FRAMES <n>
          n is the number of frames to encode initially on each processor

   PARALLEL_TIME_CHUNKS <t>
          subsequently, each slave processor will be asked to  encode  for
          approximately   t  seconds.   Smaller  values  of  <t>  increase
          communication, but improve load balancing.

          The default values for these two options are n = 3 frames and  t
                 = 30 seconds.

   PARALLEL_PERFECT
          If  this  line  is  present,  then  scheduling  is  done  on the
          assumption that work distribution  will  be  perfectly  even  --
          meaning  that  each machine is about the same speed.  The frames
          will simply be divided up evenly between the  processors.   This
          has  the  advantage  of very minimal scheduling overhead, but is
          obviously wrong if machines  have  varying  speeds,  or  if  the
          network load makes performance uneven.

VERSION

   This  is version 1.5 it contins new features and bug fixes from version
   1.3.

BUGS

   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.

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

   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                   PPMTOMPEG(1)





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.