INTERNATIONAL ORGANISATION FOR STANDARDISATION
ORGANISATION INTERNATIONALE DE NORMALISATION
ISO/IEC JTC1/SC29/WG11
CODING OF MOVING PICTURES AND AUDIO

 

ISO/IEC JTC1/SC29/WG11 N2485
MPEG98/
Atlantic City - October 1998

 

Source: Implementation Study Group
Title: Implementation Study Group Frequently Asked Questions
Status: Approved

Introduction

This page is a compilation of studies, reports and conclusions that have been produced by the MPEG-4 implementation group and its members. For more information, the reader is referred to Table 2 for an overview of the reports from which the information on this page has been derived. These reports are available through http://www.chips.ibm.com/.mpeg. If you do not have access to these pages, please contact your National Body.

Is MPEG-4 hardware or software oriented?

Unlike previous MPEG standards, MPEG-4 is not explicitly targeting hardware or software solutions. Given the wide variety of MPEG-4 functionality as reflected in the profiles and levels, and the different envisaged application scenarios, it is expected that hardware, software and hybrid (e.g. a programmable processor with application specific accelerators) solutions will coexist.

Why should algorithms be profiled?

The profiling of algorithms serves several purposes:

What are the complexity measures?

It is not possible to give one unique way of measuring the intrinsic complexity of a system. Depending on the implementation platform, some cost parameters are considered to be more important than others. For instance, for portable systems, the power consumption is a very important characteristic. In interactive systems, the system delay is probably more important than the power consumption. Each designer therefore handles an other set of complexity parameters, which can be categorised as follows [N1169]:

How should complexity measures be interpreted?

One has always to keep in mind that whatever the quality of the instrumentation tool, the outcoming results should be handled with care. Instrumenting non-optimized source code can provide disastrous profiling results, which are orders of magnitude worse than profiling results obtained from optimized code. As a simple example, the reader is referred to Table 1. The first column shows source code for an iterative calculation without optimization. The second column corresponds to the same functionality, but calculated in an optimized way for memory accesses, by introducing registers instead of external memory accesses. In the third column, the iterative calculation scheme has been transformed into a closed-form analytical calculation formula. Clearly, the number of arithmetic operations and memory accesses can vary drastically between the different versions.

 

 

Non-optimized

Optimized for memory access

Optimized for arithmetic operations

  int Sum(int Start_Value,

int n_iterations)

{

int a[n_iterations];

a[0]=Start_Value;

For (i=0;i<n_iterations;i++)

{

a[i+1]=2*a[i]+1;

}

return a[n_iterations-1];

}

int Sum(int Start_Value,

int n_iterations)

{

int temp;

temp=Start_Value;

For (i=0;i<n_iterations;i++)

{

temp=2*temp+1;

}

return temp;

}

int Sum(int Start_Value,

int n_iterations)

{

return (1<<(n_iterations+1)-1

+(Start_Value-1)<<n_iterations);

}

# mults

n_iterations

n_iterations

0

# adds/substracts

0

0

1

# increments/ decrements

n_iterations

n_iterations

2

# 1-bit shifts

0

0

2* n_iterations+1

# external memory accesses

2*n_iterations

0 if temp is a register

0

Table 1: Difference in performances depending on the optimization level.

 

Which commercial profiling tools are available?

Different instrumentation tools can be used for measuring the complexity of a program. Some commercial tools are:

Which freeware profiling tools are available?

The only freeware tool available to the MPEG-4 community is iprof [M0838, M0921, M1056, M2863, M3551]. It is based on the GNU C/C++ compiler and delivers very accurate statistics over time of the execution of the program, including arithmetic complexity, as well as memory access cost (only for SPARC processor). It has the advantage that no source code modifications are required to perform the profiling, since it instruments the executable. Unfortunately, it does not provide memory access statistics for x86 architectures. The tool iprof is available at:

http://www.lis.e-technik.tu-muenchen.de/people/second_page/kp/iprof.html

ftp://ftp.lis.e-technik.tu-muenchen.de directory: /pub/iprof

How does the instrumentation tool work?

Different approaches can be used for profiling. One approach consists of counting the number of activations of the different functions and the number of times that some loops in the function are traversed. This approach has the advantage that the profiling results can more easily be reinterpreted for different architectures. Indeed, if some function loops are pipelined over different hardware modules, the execution time is only limited by the slowest module. Therefore, mainly the profiling results corresponding to that particular module should be taken into account. An example of that approach can be found in [arithm coder].

At a finer granularity, one can count the number of arithmetic operations. Often, this is performed by overloading operations in C++ [M0724]. In general, statistics of the arithmetic operations are gathered without distinction of the function call, so that these fine granularity statistics can often not be remapped onto different architectures without repeated simulation processes.

To make this mechanism of operation overloading effective, the elements that are to be instrumented should be declared as class instances (e.g. Word8, Word16, Word32, Float32, Float64) instead of basic data types (char, short, long, float, double). Source code editing is therefore often required.

A last approach consists of subdividing a program into basic blocks. Basic blocks are straight-line sequences of machine instructions that execute sequentially, without jumps into or out of the sequence. This approach has the advantage that source code editing can be avoided, but the profiling results are completely architecture dependent.

How can I measure execution/CPU time?

The execution time can often be measured quite easily by reading the system clock. The disadvantage of measuring the system clock is that other processes can delay the execution of the program to be profiled, therefore influencing the execution time measurements. CPU time measurements do not have this disadvantage, but for practical reasons CPU time measurements have limited accuracy (in the order of magnitude of ms, which represents an eternity for processor time).

What is Computational Graceful Degradation?

The main idea of CGD is to render images or produce sound at poorer quality when the desirable quality cannot be obtained in real time, for instance because the complexity of the task exceeds the available processing power. This approach makes the guarantee of the correct scheduling of tasks possible, even when the computational system load fluctuates and necessary resources exceed the available ones.

The goal is to be able to provide the guarantee of real-time video and audio decoding with possible degradations of the image quality, i.e reductions of the peak signal to noise ratio (PSNR), without loosing parts of the image. Such alternative is certainly much more desirable than other straightforward options such as cutting image portions or simply skipping frames.

What is normative in Computational Graceful Degradation?

The implementation of specific CGD algorithms which provides the highest complexity reduction for the lowest image degradation is an implementation dependent issue which has no normative implications. Only the definition of the complexity parameters, that will be transmitted through the network, so that the decoder can estimate the required processing power for high quality rendering, is normative.

 

Overview of contributions

 

Document number

Title

Authors

Profiling tools

M3551 A complexity analysis tool: iprof (version 0.41) Peter Kuhn
M2863 A Complexity Analysis Tool: iprof (Version 0.3) Peter Kuhn
N1169 Methodology used for assessment of implementation cost and performance for proposals incorporated into the Verification Models of MPEG-4. ISG
M1056 A portable Instruction Level Profiler for Complexity Analysis – Software Peter Kuhn
M0921 A portable Instruction Level Profiler for Complexity Analysis – Documentation Peter Kuhn
M0846 Ad-hoc group report on defining and implementing instrumentation tools for embedding within VM_s. (N1171) Paul Fellows
M0839 Report of Ad-hoc group on defining framework of implementation complexity analysis when performing core experiments Nicolas Demassieux
M0838 Instrumentation Tools and Methods for MPEG-4 VM: Review and a new Proposal Peter Kuhn
M0724 "instrumentation tools", some proposals David Molter, Jean Gobert

Computational Graceful Degradation

M4076 Complexity analysis of OpenGL 3D rendering for Computational Graceful Degradation Gauthier Lafruit, Toon Gijbels, Andy Scherpenberg, Tom Huybrechts, Jan Bormans
M3615 Some results of MB coding complexity Marc Mongenet, Marco Mattavelli
M3602 A method for complexity measurements in Structured Audio Giorgio Zoia
M3601 Proposed revisions to FCD 14496-3 Subpart 5 Giorgio Zoia
M3567 Computational Graceful Degradation Analysis in SNHC Gauthier Lafruit, Lode Nachtergaele, Andy Scherpenberg, Tom Huybrechts, Jan Bormans
M3433 Computational Graceful Degradation and backward compatibility issues Gauthier Lafruit, Jan Bormans
M3146 Performance Evaluation of a Reduced Complexity Implementation for Quarter Pel Motion Compensation Ulrich Benzler
M3075 Report of the ad-hoc group on Computational Graceful Degradation M. Mattavelli
M3074 Proposed modification of the complexity estimation parameter list and complexity estimation results for the video CD M.Mattavelli, S. Brunetton
M3073 Informative annex about the use and implementation of complexity estimation and CGD M. Mattavelli, S. Brunetton
M3009 The need for Computational Graceful Degradation in SNHC Gauthier Lafruit, Jan Bormans
M2796 Control of video decoding time by means of CGD techniques Marco Mattavelli, Sylvain Brunetton
M2790 Report of the ad-hoc group on Computational Graceful Degradation. Mattavelli Marco
M2759 On the decoder QoS conformance levels and CGD Young-Kwon Lim, Sanggyu Park, Jinwoong Kim
M2754 Alternative Method to Determine VOP CGD Parameters Brent Wilson
M2655 Graceful degradation parameters for a scalable wavelet codec Gauthier Lafruit, Jan Bormans
M2601 Market Driven Levels with CGD Brent Wilson, C.S. Boon
M2447 Results of ISG core experiment on CGD Young-Kwon Lim, Sang Gyu Park, Chieteuk Ahn
M2232 Report of the ad-hoc group on Computational Graceful Degradation. M. Mattavelli
M2231 Proposal for a MPEG-4 syntax supporting CGD M. Mattavelli, S. Brunetton
M2230 Some results of core experiment on CGD: methods to measure bitstream video decoding complexity for CGD implementation. M. Mattavelli, S. Brunetton
M2223 Implementation of Computational Graceful Degradation Takao Yamaguchi, Minoru Etoh, and Makoto Hagai
M2093 Proposal for the final definition of ISG core experiments on CGD (Computational Graceful Degradation) Young-Kwon Lim, Sang Gyu Park, Chieteuk Ahn
M1998 An Implementation of Graceful-Degradation Concept in a 3D Audio Compositor Pierre Bonnard, Gakl Richard, Jirome Boudy, Cidric Sibade, Franck Rigoulet
M1920 Report of the ad-hoc group on Computational Graceful Degradation. Marco Mattavelli
M1745 Proposal for the ISG core experiments on Computational Graceful Degradation in multiple VOs case Young-Kwon Lim, Sanggyu Park, Munchurl Kim, Chieteuk Ahn, Yong Han Kim
M1636 Draft proposal for the specification of the ISG Computational Graceful Degradation core experiment Marco Mattavelli, Sylvain Brunetton
M1634 Report of the ad-hoc group on Computational Graceful Degradation Marco Mattavelli
M1526 Report of the ad-hoc group on computational graceful degradation Marco Mattavelli
M1445 Controlling decoding power by graceful degradation techniques Marco Mattavelli, Sylvain Brunetton
M1192 Report of the Ad-hoc group on computational graceful degradation Marco Mattavelli
M0925 Scalability of the MPEG-4 VM based on the computational power of texture decoding Marco Mattavelli, Sylvain Brunetton

Quality of Service

M3616 Report of the ad-hoc group on decoder QoS Marco Mattavelli
M3329 Summary of the AHG on Decoder QoS Dan Tamir
M2934 Analysis of tools and associated data structure of natural video to identify metrics for defining QoS conformance levels Young-Kwon Lim
M2728 Proposal for Decoder QoS Cliff Reader

Video complexity

M3572 VLSI implementation of repetitive padding: cost and architecture Christoph Heer
M3569 Experimental Results on a Fast SA-DCT Implementation Peter Kauff, Klaas Schueuer, Minhua Zhou
M3487 Report of the AhG on OBMC Complexity Evaluation Simon A. J. Winder, Wei-ge Chen
M3468 OBMC Complexity Evaluation Results Kevin O'Connell, Manish Singhal, James Brailean
M3449 Intelligent Pre-Quantization in Motion Compensated Video Coding Albert Hsueh, Anurag Bist, Wei Wu
M3416 Assessment of video spatial scalability complexity Gauthier Lafruit, Jan Bormans
M3204 Complexity Analysis of single Tools of the MPEG-4 Video Verification Model Peter Kuhn
M3182 Set Of Complexity Profiles For MPEG-4 VM-8- And VCD-V08-Compliant Video Decoder Implementations (formerly M3183A) Andy Hotchkiss, Andrea Barbieri, Raj Talluri., Jean Gobert, Beatrice Nezot, Benno Stabernack
M2862 Complexity Analysis of the MPEG-4 Video Verification Model Version 8.0 Peter Kuhn, Georg Diebel
M2813 Generically optimized VM7 compatible MPEG-4 video decoder Jean Gobert, Serge Gourrier, Francoise Caillaud, Beatrice Nezot, Christophe Etienne, Lionel Bouchard, Benno Stabernack, Andrea Barbieri, Pascal Fleury
M2129 Report of the Ad-Hoc Group on Investigating Reduced Complexity Padding Techniques Simon Winder
M2039 Complexity Analysis of Padding C. S. Boon, J. Takahashi, K. Horiike
M1921 Some results of the video VM complexity using the instrumentation tools Marco Mattavelli, Sylvain Brunetton, Pascal Fleury
M1914 Initial Assessment of the Video VM 5.0 Memory Requirements Jan Bormans, Toon Gijbels, Lode Nachtergaele
M1814 Report of the Ad-Hoc Group on Investigating Reduced Complexity Padding Techniques Simon Winder
M1578 Report of the Ad-Hoc Group on Investigating Reduced Complexity Padding Techniques Simon A.J. Winder
M1490 Padding for Motion Compensation : Review of Past Results and Preliminary Study of Complexity Evaluation C.S.Boon,J.Takahashi,S.Kadono
M1258 AHG Report on Video Verification Model Complexity Assessment Peter Kuhn
M1257 Complexity Analysis of the MPEG-4 Video Verification Model Decoder Peter Kuhn
M1199 Complexity Analysis of the Decoder used in the P5 Core Experiment Keith Kenemer, Dmitriy Korchev, Michael Zeug
M1193 Measures of the range of computational based scalability Marco Mattavelli, Sylvain Brunetton
M1097 Concerns about the complexity of padding operations in video coding Simon A.J. Winder
M0959 Report of the Ad-Hoc Group on Complexity Analysis of the Video Verification Model Peter Kuhn, Marco Mattavelli
M0920 Complexity Analysis of the MPEG-4 Video Verification Model using Profiling Tools Peter Kuhn
M0916 Report of Ad-hoc Group on analyzing the implementation considerations for software-configurable MPEG-4 systems Jean-Claude Dufourd
M0774 Concerns about latency and memory requirements when implementing the video Verification Model David Molter, Jean Gobert
M0741 Implementation complexity of VLC decoding. P.Bonnard, C.Castaing, Th.Fehrenbach

Still Texture Coding complexity

M3645 Complexity analysis and guidelines for profile definition of Still Texture Coding Gauthier Lafruit, Mercedes Peon, Bart Vanhoof, Jan Bormans
M3568 Complexity Analysis of FCD still texture coding Gauthier Lafruit, Mercedes Peon, Bart Vanhoof, Jan Bormans
M2654 Complexity comparison between scalable wavelet codec and scalable DCT codec Gauthier Lafruit, Jan Bormans
M2581 Initial assessment of still-image scalability implementation complexity Jan Bormans
M0924 A statistical study of MPEG-4 VM texture decoding complexity Marco Mattavelli, Sylvain Brunetton

SNHC complexity

M3631 Computation Complexity Profiling of the IM-1 MPEG-4 Player Mercedes Peon, Lode Nachtergaele, Gauthier Lafruit, Peter Vos, Jan Bormans

Shape Coding

M1288 Hardware evaluation of shape decoding APIs Gilles PRIVAT, Ivan LE HIN
M0933 Complexity analysis of binary shape decoding. Improvements for speed efficiency. Pierre Bonnard, Cyril Castaing, Thierry Fehrenbach

Audio Coding

M1932 Implementation of Audio Compositing Functions: Software Considerations Matthias Rosenthal
M1931 Implementation of Audio Compositing Functions: Algorithms and Hardware Requirements Ulrich Horbach

Architectural studies

M3058 Complexity Analysis and Functional Specification of a Coprocessor for MPEG-4 Image Rendering Mladen Berekovic
M0873 Architecture reconfigurability . opening up new levels of extensibility for MPEG4 systems Gilles Privat, Frederic Robin

Table 2: Overview of contributions related to MPEG-4 implementation