Paper Title (use style: paper title)

advertisement
Study and Analysis of JSVM on
TMS320DM8168EVM
Prasad S.Yedurkar &
Prof.Mrs.P.M. Jadhav
Dept.of Electronics & Telecommunication
Maharashtra Institute of Technology
Pune- 411038, India
prasady2004@gmail.com
Abstract— Scalable Video Coding (SVC) is an extension
of the H.264/Advance Video Coding (AVC) standard. SVC
provides scalability for visual services which are serving
heterogeneous network conditions and terminal capabilities.
The Joint Scalable Video Model (JSVM) reference software
provides a highly efficient solution. This can further be
analyzed & optimized using the dedicated processor with
higher speeds. Advanced Davinci Series media processor
DM8168 with high processing capability which have
multiple supporting features especially for H.264 codec
optimization & can be effectively used to analyze the JSVM
in real time environment . At first stage its higher clock rates
serve higher encoding capabilities & in second stage
operating system like Linux provide features like multi-core
multi- processing for further speed optimization. Such an
integration of code level Rate Control optimization &
hardware level speed optimization analysis can help to
design highly scalable H.264 encoder for embedded video
applications.
Keywords - H.264, JSVM, Makefiles, Media Processor,
Video Codec.
I.
INTRODUCTION
With the recent development of third-generation
communication technologies, encoding live video using an
embedded multimedia device and sharing it within different
places with the real time steaming capability has become a
reality. However, the embedded processor inside such devices
is still not powerful enough. The current state of - the-art,
embedded devices have far less computing power and memory
compared to a PC and there are two major hurdles to
overcome: (I) video coding needs to meet the rigorous
constraint of the available computation capacity of a
embedded processor; (II) In a multimedia device the
computing power allocated to video coding may vary
drastically (in bursts) because of computations [1]. In this
paper, detailed procedure to port JSVM the Advanced Video
Codec on a TMS320DM8168 the advanced media processor is
described [2]. Also experimental results are discussed.
In the work done by, Pescador et. al, H.264/SVC
decoder performance comparison for dsp-based consumer
electronic applications has been implemented, in which, a
performance comparison of two H.264/SVC-compliant video
decoders, Joint Scalable Video Model and Open SVC is
demonstrated [3][4].
The paper is organized as, Section II highlights the
discussion of JSVM briefly, Section III discusses on
TMS320DM8168 architecture, whereas Section IV gives a
brief introduction of porting procedure and optimization of
JSVM. Cross compilation on DM8168 is discussed in Section
V. In Section VI, VII, VIII highlights on results and
discussion, conclusion, and future scope respectively.
II. JSVM
The JSVM (Joint Scalable Video Model) software is
the reference software for the Scalable Video Coding (SVC)
project of the Joint Video Team (JVT) of the ISO/IEC Moving
Pictures Experts Group (MPEG) and the ITU-T Video Coding
Experts Group (VCEG).
In this standard library, the video compression is
performed by generating a unique hierarchical stream with
several layers with different resolution. Currently, JSVM is
available in Microsoft visual studio .NET written in C++
language in which there are 16 projects with compiled
programs which can be used for understanding the H.264
encoding. JSVM also provides to use this code with linux
platform on PC which makes suitable to be implemented on
embedded processor. So these programs can be used in video
applications such as digital television, video conferencing etc.
JSVM provides code for further development and integration
of this code as a reference library into various applications.
JSVM is having 16 different projects included in its
structure which includes H264 Encoder, H264 Decoder, up
sampling & down sampling tools, Bit stream extractor, etc. As
a part of the standardization effort, the Joint Scalable Video
Model (JSVM) reference software has been developed.
Streams with different levels of scalability can be encoded and
decoded with the test bench implemented in the JSVM.
Table 1 shows some of the currently available C++ libraries
used by the reference software [4].
These features from this advanced media processor makes it
suitable for designing today’s video applications.
Table 1: C++ libraries used by the reference software
Liabrary
This library provides classes…
H264AVCCommon
LibStatic
(Common)
…used in both encoding and decoding
process,
e.g. to provide different data structures
H264AVCEncoder
LibStatic (Encoder)
…used only in the encoder, e.g. to
implement
the motion estimation or the entropy
coding
H264AVCDecoder
LibStatic (Decoder)
…used only in the decoder, e.g. to
implement
the stream analysis or the entropy
decoding
H264AVCVideoIo
LibStatic (VideoIo)
BitStreamExtractor
…used to provide input video to the
encoder or
to store the decoded video (from/to
files)
... used to extract in a file the selected
layers
from an other stream
III.
IV. PORTING & OPTIMIZING JSVM FOR SVC ON DM8168
EVM.
As already discussed, the JSVM software is written
in C++, it is also be possible to build the software on other
platforms, which provide a C++ compiler. Embedding them
on such platforms will help JSVM to analyse the algorithms
which are optimized to achieve scalability to be suitable with
respected hardware platforms.
As application layer of DM8168 EVM is built on
Linux platform it uses GCC compiler which is the same
compiler used by JSVM on Linux platform [5].
For porting JSVM on DM8168 EVM following
things are needed to be done,


JSVM is having program binaries for Linux platform
those must be cross compiled with the GCC compiler
on DM8168 application layer
Supporting firmware for input/output functions need
to be integrated with those programs which will be a
operating system abstraction layer for the JSVM
software on DM8168.This will be the dependency for
this program to run on DM8168.
TMS320DM8168
The TMS320DM816x DaVinci video processing
devices are highly integrated, programmable platform that
meets the processing needs of the following applications such
as video encode, decode, transcode, and transrate; video
security; video conferencing; video infrastructure; media
server; and digital signage.
Key to the device is up to three high-definition video
and imaging coprocessors (HDVICP2). Each coprocessor can
perform a single 1080p60 H.264 encode or decode or multiple
lower resolution or frame rate encodes and decodes.
Multichannel HD-to-HD or HD-to-SD transcoding and
multicoding are also possible. With the ability to
simultaneously
process
1080p60
streams,
the
TMS320DM816x device is a powerful solution for today's
demanding
HD
video
application
requirements.
Programmability is provided by an ARM Cortex-A8 RISC
CPU with NEON extension, TI C674x VLIW floating-point
DSP core, and high-definition video and imaging
coprocessors. The ARM processor lets developers keep
control functions separate from audio and video algorithms
programmed on the DSP and coprocessors, thus reducing the
complexity of the system software. The ARM Cortex-A8 32bit RISC processor with NEON floating-point extension
includes: 32KB of instruction cache; 32KB of data cache;
256KB of L2 cache; 48KB of public ROM, and 64KB of
RAM [2].
Following is the software architecture as shown in Figure 1
for the processor which is used to implement above stated
requirements
Figure 1 Software Architecture of Davinci Platform
V.
CROSS COMPILATION OF JSVM FOR DM8168
There is a make file structure provided by JSVM
software to build it on Linux operating system which can be
used to integrate with Linux kernel associated with
DM8168EVM. Makefiles are special format files that together
with the make utility helps to automatically build and manage
projects. The make file utility is available in Linux by default
[6].
In
JSVM
following
path
“JSVM/H264Extension/build/linux” contains a make file
which is to be used for compiling all 16 projects. Command
“make” can be used to compile. Inside linux folder there are
all 16 different makefiles available for each project. Separate
makefiles for each project can be used to compile separate
projects. In “linux” folder there is another important folder
“common” which contains makefile.base which is the most
basic make file which uses object (.O) files created for all 16
projects and creates a combined binaries for all projects. For
actually cross compiling it for DM8168 we also need to build
linux kernel separately for the processor. Then this built kernel
is then used to cross compile it for JSVM.
Codesourcery tool chain [7] from mentor graphics is used as a
cross compiling platform which supports TMS320DM8168
and which includes all the libraries associated with processor’s
hardware abstraction layer. For cross compiling the paths of
include folders and kernel directories need to be provided in
“makefile.base” which will create binaries for all projects
which can be run on DM8168.
VI.
RESULTS AND DISCUSSION
After creating binaries using previously discussed
procedures finally those can be executed on DM8168 as
applications of this particular processor. For executing these
binaries “./” command can be used. DM8168 is booted with
Linux as operating system & all binaries copied to Target file
system.
JSVM configuration file is used to set parameters.
Parameters need to be set according to the requirements such
as frame rate can be set to 30 or 60 frames per second. Path
for video input and output also can be set from configuration
file. Also, there are layer configuration files with which we
can opt for single or multilayer encoding for scalability
improvement. Command to execute the encoder binary on
DM8168 linux platform is as follows,
DM8168EVM<path where binary is kept>$
H264AVCencoderLibTestStaticd.exe –pf encoder.cfg
Here encoder.cfg is configuration file for encoding
parameters. As seen in the above command Project binary
“H264AVC EncoderLibTestStaticd” executed to run the
encoder for encoding 32 frames of video sample file “bridgeclose_720x576.yuv”. After encoding the the video frames as
per the configuration set following sample results obtained
which are as shown in Figure 2,
VII. CONCLUSION
Now the JSVM application can be executed on
TMS320DM8168EVM which can be used for analyzing
encoding and decoding processes on Embedded processor.
Also, further optimization is possible using this analysis so
that this framework can be used to design highly efficient HD
video codecs for real time applications. Also, the method
given in this paper to port on DM8168 processor can be used
to port other Scalable video codecs from other sources or the
same codec can be ported on various other suitable embedded
devices.
VIII. FUTURE SCOPE
In future this code can be optimized using the
important features of the DM8168 processor. As the Linux
operating system is ported on the processor, features of
operating system can be used to parallelize the encoding
process. Also, DM8168 is multi core processor which can
facilitate multi core multi processing functionality. “V4L2 i.e.
video for linux two” library [8] on the processor can help for
handling video buffers and its management. So, all the above
possible methods can make this implementation very useful
for HD video applications.
REFERENCES
[1]. Z.G. Li, C. Zhu, Nam Ling, X.K. Yang, G.N. Feng,
S. Wu, F. Pan, A unified architecture for real time
video coding systems, IEEE Trans. Circuit. Syst.
Video Technol. 13 (2008) 472–487.
[2]. “TMS320DM8168 datasheet”
http://www.ti.com/lit/ds/symlink/tms320dm8168.pdf
[3]. F. Pescador, M. Blestel, E. Juarez, M. Raulet and M.
Garrido, “H.264/SVC decoder performance
comparison for DSP-based consumer electronic
applications”, Consumer Electronics (ISCE), 2011
IEEE 15th International Symposium on, France
(2011) DOI : 10.1109/ISCE.2011.5973807.
[4]. “JSVM
software
refernce
manual”
ube.ege.edu.tr/~boztok/JSVM/SoftwareManual.pdf
[5]. “Guide to software development on DM816x”
http://processors.wiki.ti.com/index.php/AM389x_C6
A816x_DM816x_Software_Design_Guide”
[6]. “Makefiles for linux”
http://docstore.mik.ua/orelly/linux/run/ch13_02.htm
[7]. “Codesourcery toolchain”
http://www.mentor.com/india/ .
[8]. “Linux - Video for linux two introduction”
http://linuxtv.org/downloads/v4l-dvb-apis/
Figure 2: Summary of the results obtained after encoding
Download