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