How to use JSVM toolkit. orig. Feb. 9. 2007. – updated July 7. 2011. Eun-Seok Ryu [email protected]. Access the latest JSVM software. Option 1. Use CVS Use WinCVS or any other CVS client User ID : "jvtuser" Password : "jvt.Amd.2". - PowerPoint PPT Presentation
• In this slide, I used JSVM 8.1 (Feb. 07, 2007, CVS tag: JSVM_8_1)
• Current version (July 2011): JSVM 9.19.14• You can download any version using CVS tool.
• JSVM 9.8 was last version supporting error concealment (EC) options– As a decoding option, you could use “–ec 2 (frame
• JSVM has three contents– changes : bug fix histories– SW manual– source codes
Structure of the CVS repository for the JSVM (1)
bin location of binaries after building the softwareMore information about the binaries are given in section 1.4.
lib location of libraries after building the softwareMore information regarding the libraries are given in section 1.4.
JSVM source code and project files for the JSVM softwareAll files that are required for building and using the JSVM software
are contained in this folder.
JSVM/H264Extension/build workspaces and makesfilesWorkspaces are provided for Microsoft Visual Studio 6 and Microsoft
Visual Studio .NET. Makefiles are provided for Linux.
JSVM/H264Extension/data basic examples of encoder configuration filesThese examples are not guaranteed to be complete or to contain all
available configuration parameters. The examples only serve as a basis for writing encoder configuration files.
Structure of the CVS repository for the JSVM (2)
includes files that are required by other libraries inside the JSVM projectOnly include files for classes that are required by other libraries or test projects should be placed into this folder. This folder contains a subfolder for the frequently used library H264AVCCommonLib. Include files of classes that are only required inside a library or test project are contained in the library or test project folder in JSVM/H264Extension/src.
JSVM/H264Extension/src include and source files for all libraries and test projectsThis folder contains all source files and the include files that are only required inside a library or test project. This folder is organized in appropriate sub-folders.
JSVM0-config-samples usage examplesThis folder contains usage examples with configuration files, scripts as well as some text descriptions. These usage examples are not updated with each change of the JSVM software, and hence they are not guaranteed to be up-to-date.
Structure of the CVS repository for the JSVM (3)
MVC-Configs configuration examples for Muliple View CodingThis folder contains examples including configuration files and
scripts for using the JSVM software for Multi View Coding (MVC).
Validation validation scripts for checking the JSVM softwarePerl scripts for validating the JSVM software are provided in this
folder. These scripts shall be run after each modification of the JSVM software. They have been designed to check the functionality of integrated tools. More information on how to run these scripts are given in 4.3.
changes.txt changes log fileThis file described the (main) changes from one CVS version to the
next. It starts with JSVM version 4.0 (CVS tag: JSVM_4_0).
Build JSVM Software (1)
• Build environment– Visual C++ 6.0
• Workspace file– H264AVCVideoEncDec.d
sw • Build→Batch Build :
Rebuild All– Linux (gcc ver. 4)
> cd JSVM/H264AVCExtension/build/linux
> make – .net
• Workspace file :– H264AVCVideoEncDec.sl
n (VC 7) H264AVCVideoEncDec_vc8.sln (VC 8)
• Build→Batch Build : Rebuild All
• The executable which has ‘d’ in their file name is for debugging (compiled with debug option).
Recent version supports visual studio 2010 environment with “H264AVCVideoEncDec_vc10.sln”
JSVM Libraries (1)
H264AVCCommonLibStatic common libThis library provides classes that are used by both the encoder and
decoder, as for example macroblock data structures, buffers for storing and accessing image data, or algorithms for deblocking.
H264AVCEncoderLibStatic encoder libThis library provides classes that are only used by the encoder. For
example, it includes classes for motion estimation, mode decision, and entropy encoding.
H264AVCDecoderLibStatic decoder libThis library provides classes that are only used by the decoder. For
example, it includes classes for entropy decoding and bit-stream parsing.
H264AVCVideoIoLibStatic io libThis library provides classes for reading and writing NAL units in
the byte-stream format as well as classes for reading and writing raw video data.
JSVM Libraries (2)
DownConvertStatic resamplerThe resampler can be used for spatial/temporal resampling (up-
sampling or down-sampling) of video sequences. More information on using the resampler are provided in section 2.1.
H264AVCEncoderLibTestStatic AVC/SVC encoderThe encoder can be used for generating single-layer (AVC) or
scalable (SVC) bit-streams. More information on using the encoder are provided in section 2.2.
H264AVCDecoderLibTestStatic SVC decoderThe decoder can be used for decoding AVC or SVC bit-streams and
reconstructing raw video sequences. More information on using the decoder are provided in section 2.3
BitStreamExtractorStatic bit-stream extractorThe bit-stream extractor can be used for extracting sub-bitstreams
with a lower spatio-temporal resolution and/or bit-rate from a global scalable (SVC) bit-stream. More information on using the bit-stream extractor are provided in section 2.4.
JSVM Libraries (3)
QualityLevelAssignerStatic quality level assignerThe quality level assigner can be used for generating a bit-stream with additional quality layer information given a scalable bit-stream. Beside the additional quality layer information input and output bit-stream are identical. More information on using the quality layer assigner are provided in section 2.5.
MCTFPreProcessor MCTF pre-processorThe MCTF pre-processing tool can be used for pre-filtering image sequences. More information on using the MCTF pre-processor are provided in section 2.6.
PSNRStatic PSNR toolThe PSNR tool can be used for measuring the PSNR between two raw video sequences. In addition it can be used for measuring the bit-rate of a given bit-stream. More information on using the PSNR tool are provided in section 2.6.
FixedQPEncoderStatic fixed QP encoderThis tool can be used for controlling the encoder and adjusting the bit-rate of the generated bit-stream. More information on using this tool are provided in section 2.8.
JSVM Libraries (4)
SIPAnalyser SIP AnalyserThe SIPAnalyser tool can be used to make the selective inter-layer
prediction decision. More information on using the PSNR tool are provided in section 2.9.
Test encoding and decoding
• Steps :– Download JSVM and test sequences– Build the JSVM– Modifying config files (*.cfg) based on JSVM manual
• You can use original config files in JSVM SW– (option) DownConvertStatic.exe
• If you want to do (1)downsampling, (2)upsampling, or (3) cropping, use this tool.
– H264AVCEncoderLibTestStatic.exe• There are many encoding options• This makes encoded SVC file such as ‘test.264’
– (option) packet loss testing with additional tools– BitStreamExtractorStatic.exe
• Extract specific layers what I want from ‘test.264’– H264AVCDecoderLibTestStatic.exe
• This makes reconstructed YUV file such as ‘test.yuv’– PSNRStatic.exe
• Measuring PSNR
Test en/decoding steps (Simple)
Config fileConfig file
SVC-encoded file (.svc)
Extracted SVC-encoded file(e.g. Base layer only or Base+Enh1)
Test en/decoding stepsfor packet loss simulation (e.g. UEP)
With JSVM ver. 9.8 error concealment (EC) option (recent version does not support EC)
• My blog has more information on this : Multimedia Communications using Scalable Video Coding– http://r2d2n3po.tistory.com/
• Read JSVM software manual carefully, it explains all you want.
• AVC/SVC encoding time is quite long, and you may need to reduce encoding frame number.
• Bitstream extractor cannot extract enhan. layer only but extract base+enh layers. Thus, to extract a specific layer separately you need to write your own code (you can borrow my code from the blog mentioned above).
• For academic research you can use more options such as FMO and MCTF. You can also use ‘X264’, ‘ffmpeg’, ‘Yarm’, and ‘mp4box’ tools for your own testing.
Personal comments (2)
• Recent JSVM (after ver. 9.8) does not support EC(error concealment option). Even the old tool cannot decode damaged bitstream well (mostly died). You can use open SVC decoder from source forge website (http://sourceforge.net/projects/opensvcdecoder/) ; personally thanks Mederic Bleste
• and Mickael Raulet).
• you can use packet loss simulator because this tool just omits some NALs according to error pattern files. Even you can apply different packet loss rate to each layers with this tool.
These slides were originally prepared for internal lab seminar of operating system Lab in computer science and engineering department of Korea university, and I
updated some of them for general student and researcher. July 2011.