
This package contains the initial release of Joint Multiview Video Model 
(JMVM) 1.0 software based upon the JSVM reference software (version 6_5) 
obtained from the CVS repository at jvtuser@garcon.ient.rwth-aachen.de:/cvs/jvt.  

This software implements the JMVM 1.0 specification (JVT-T208) inlcuding 
reference picture management techniques and the new high-level syntaxes. 
Comments and questions should be directed to the JVT-MVC email reflector
(jvt-mvc@lists.rwth-aachen.de).

Note: All the necessary high-level syntax changes were implemented. However, 
the parameters specifying inter-view dependencies (see G.7.3.1 Sequence 
parameter set MVC extension syntax) are currently hard-coded in the source 
code (although they are being encoded and decoded). Also, some of the known 
issues of this JMVM 1.0 software to be addressed in the future are described 
in the document "KnownIssues-JMVM1.doc". 


COMPILATION:
----------------------------------------------------------------------

All C/C++ files are compiled in the same manner as for the JSVM software.
On LINUX/UNIX systems, do 

  "cd jsvm/JSVM/H264Extension/build/linux/; make"

On Windows, use the appropriate IDE to compile.  Note, you may need to
add the new files listed below to your project/solution. Currently, only 
the project file for visual studio.net is provided. In case you need one
for VC++6, please contact Sehoon Yea (yea@merl.com). 
----------------------------------------------------------------------


RUNNING:
----------------------------------------------------------------------

The encoder can be run in a similar way as for the MVC encoder
provided by HHI in version 4_2 of the JSVM reference software:

  "jsvm/bin/H264AVCEncoderLibTestStaticd -pf <configFile>"

where <configFile> is similar to the configuration files provided for
the multiview encoder in version 6_5 of the JSVM reference software.

The main difference provided by this package is that it is no longer
necessary to put all video files into one interleaved stream and
encode that stream using MMCO and RPLR commands.  Instead, the new
package provides the capability to encode one video file using
previously encoded/decoded video files as prediction references.  
This is enabled using 3 new configuration file elements:

  AddForwardViewRef   <fileName>
  AddBackwardViewRef  <fileName>
  VFramePeriod        <integer>

For each AddForwardViewRef/AddBackwardViewRef element in the
configuration file, before processing frame i, the encoder inserts
frame i from <fileName> into the end of prediction list_0/list_1 so
that it can be used as a reference for predictive coding.  Thus all
P/B frames can predict from the specified views in addition to
past/future frames in the same stream.

The VFramePeriod configuration file element adds the ability to have
V-pictures, which are pictures that do no temporal predictive coding,
but do allow predictive coding from other views.  If VFramePeriod=i
with i > 0, then for every ith frame, all temporal prediction
references are removed from the prediction lists leaving only
multiview prediction references in the list.

To encode a set of multiview sequences, one first runs the encoder 
for the initial view, then places the appropriate AddForwardViewRef 
or AddBackwardViewRef commands in the configuration file for the next
view, runs the second view, etc.  Since this can be somewhat tedious,
a set of python scripts is provided in jsvm/scripts/MVC/ to automate
this process (see the README in jsvm/scripts/MVC/ for details). 
Also provided are a sample encoding/decoding script for ballroom 
sequences (see jsvm/scripts/BallroomExample ). You can run the 
encoder cfg files one by one and decode the resulting bitstream as 
illustrated by the c-shell script.

Note:  You should also see the README in jsvm/scripts/MVC/ for instructions
       on how to use the provided python scripts to automate generation
       of configuration files.

The decoder can be run in either one of the following command forms:

"H264AVCDecoderLibTestStaticd <in> <out>"
"H264AVCDecoderLibTestStaticd <in> <out> <FV_Ref> <FV_Width> <FV_Height> <VF_Period>"
"H264AVCDecoderLibTestStaticd <in> <out> <FV_Ref> <FV_Width> <FV_Height> <BV_Ref> <BV_Width> <BV_Height> <VF_Period>", 

where

 <in>       : encoded bitstream file (.264)
 <out>      : decoded sequence to be generated  (.yuv)
 <FV_Ref>   : forward-view reference sequence file (.yuv)
 <FV_Width> : width of the frame (forward-view reference sequence)
 <FV_Height>: height of the frame (forward-view reference sequence)
 <BV_Ref>   : backward-view reference sequence file (.yuv)
 <BV_Width> : width of the frame (backward-view reference sequence)
 <BV_Height>: height of the frame (backward-view reference sequence)
 <VF_Period>: V-frame period
 
----------------------------------------------------------------------

