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