VC 1 Decoder On IVAHD VC1 User Guide
User Manual:
Open the PDF directly: View PDF .
Page Count: 114
Download | |
Open PDF In Browser | View PDF |
VC1 Advanced Profile Decoder on IVAHD and M3 Based Platform User’s Guide Literature Number: SPRUH52 May 2018 i IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, enhancements, improvements and other changes to its semiconductor products and services per JESD46, latest issue, and to discontinue any product or service per JESD48, latest issue. Buyers should obtain the latest relevant information before placing orders and should verify that such information is current and complete. All semiconductor products (also referred to herein as “components”) are sold subject to TI’s terms and conditions of sale supplied at the time of order acknowledgment. TI warrants performance of its components to the specifications applicable at the time of sale, in accordance with the warranty in TI’s terms and conditions of sale of semiconductor products. Testing and other quality control techniques are used to the extent TI deems necessary to support this warranty. Except where mandated by applicable law, testing of all parameters of each component is not necessarily performed. TI assumes no liability for applications assistance or the design of Buyers’ products. Buyers are responsible for their products and applications using TI components. To minimize the risks associated with Buyers’ products and applications, Buyers should provide adequate design and operating safeguards. TI does not warrant or represent that any license, either express or implied, is granted under any patent right, copyright, mask work right, or other intellectual property right relating to any combination, machine, or process in which TI components or services are used. Information published by TI regarding third-party products or services does not constitute a license to use such products or services or a warranty or endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectual property of the third party, or a license from TI under the patents or other intellectual property of TI. Reproduction of significant portions of TI information in TI data books or data sheets is permissible only if reproduction is without alteration and is accompanied by all associated warranties, conditions, limitations, and notices. TI is not responsible or liable for such altered documentation. Information of third parties may be subject to additional restrictions. Resale of TI components or services with statements different from or beyond the parameters stated by TI for that component or service voids all express and any implied warranties for the associated TI component or service and is an unfair and deceptive business practice. TI is not responsible or liable for any such statements. Buyer acknowledges and agrees that it is solely responsible for compliance with all legal, regulatory and safety-related requirements concerning its products, and any use of TI components in its applications, notwithstanding any applications-related information or support that may be provided by TI. Buyer represents and agrees that it has all the necessary expertise to create and implement safeguards which anticipate dangerous consequences of failures, monitor failures and their consequences, lessen the likelihood of failures that might cause harm and take appropriate remedial actions. Buyer will fully indemnify TI and its representatives against any damages arising out of the use of any TI components in safety-critical applications. In some cases, TI components may be promoted specifically to facilitate safety-related applications. With such components, TI’s goal is to help enable customers to design and create their own end-product solutions that meet applicable functional safety standards and requirements. Nonetheless, such components are subject to these terms. No TI components are authorized for use in FDA Class III (or similar life-critical medical equipment) unless authorized officers of the parties have executed a special agreement specifically governing such use. Only those TI components which TI has specifically designated as military grade or “enhanced plastic” are designed and intended for use in military/aerospace applications or environments. Buyer acknowledges and agrees that any military or aerospace use of TI components which have not been so designated is solely at the Buyer's risk, and that Buyer is solely responsible for compliance with all legal and regulatory requirements in connection with such use. TI has specifically designated certain components as meeting ISO/TS16949 requirements, mainly for automotive use. In any case of use of nondesignated products, TI will not be responsible for any failure to meet ISO/TS16949. Products Audio Amplifiers Data Converters DLP® Products DSP Clocks and Timers Interface Logic Power Mgmt Microcontrollers RFID OMAP Applications Processors Wireless Connectivity Applications www.ti.com/audio Automotive & Transportation amplifier.ti.com Communications & Telecom dataconverter.ti.com Computers & Peripherals www.dlp.com Consumer Electronics dsp.ti.com Energy and Lighting www.ti.com/clocks Industrial interface.ti.com Medical logic.ti.com Security power.ti.com Space, Avionics & Defense microcontroller.ti.com Video & Imaging www.ti-rfid.com www.ti.com/omap TI E2E Community www.ti.com/wirelessconnectivity www.ti.com/automotive www.ti.com/communications www.ti.com/computers www.ti.com/consumer-apps www.ti.com/energyapps www.ti.com/industrial www.ti.com/medical www.ti.com/security www.ti.com/space-avionics-defense www.ti.com/video e2e.ti.com Mailing Address: Texas Instruments, Post Office Box 655303, Dallas, Texas 75265 Copyright© 2014, Texas Instruments Incorporated ii Preface Read This First About This Manual This document describes how to install and work with Texas Instruments’ (TI) VC1 Advanced profile Decoder implementation on the IVAHD and M3 Based Platform platform. It also provides a detailed Application Programming Interface (API) reference and information on the sample application that accompanies this component. TI’s codec implementations are based on the eXpressDSP Digital Media (XDM) standard. XDM is an extension of the eXpressDSP Algorithm Interface Standard (XDAIS). Intended Audience This document is intended for system engineers who want to integrate TI’s codecs with other software to build a multimedia system based on the IVAHD and M3 Based Platform platform. This document assumes that you are fluent in the C language, have a good working knowledge of Digital Signal Processing (DSP), digital signal processors, and DSP applications. Good knowledge of eXpressDSP Algorithm Interface Standard (XDAIS) and eXpressDSP Digital Media (XDM) standard will be helpful. How to Use This Manual This document includes the following chapters: Chapter 1 - Introduction, introduces the XDAIS and XDM standards. It also provides an overview of the codec and lists its supported features. Chapter 2 - Installation Overview, describes how to install, build, and run the codec. Chapter 3 - Sample Usage, describes the sample usage of the codec. Chapter 4 - API Reference, describes the data structures and interface functions used in the codec. Chapter 5 - Frequently Asked Questions, provides answers frequently asked questions related to using VC1 Advanced Profile Decoder Chapter 6 – Debug trace usage, describes how to collect debug trace information dumped by the decoder. iii Read This First iv Chapter 7 - Picture Format, describes the format of the output pictures of the VC1 Decoder on IVAHD. Chapter 8 - Error handling, describes the error reporting mechanism of the decoder, also recommends the application behaviour for all error scenarios. Chapter 9 – Bit-Stream format, describes the bit-stream formats and codec expectation and behaviour for different formats. Chapter 10 – Meta Data Support, provides information on writing out MB info data into application provided buffers. Read This First Related Documentation From Texas Instruments The following documents describe TI’s DSP algorithm standards such as, XDAIS and XDM. To obtain a copy of any of these TI documents, visit the Texas Instruments website at www.ti.com. TMS320 DSP Algorithm Standard Rules and Guidelines (literature number SPRU352) defines a set of requirements for DSP algorithms that, if followed, allow system integrators to quickly assemble production-quality systems from one or more such algorithms. TMS320 DSP Algorithm Standard API Reference (literature number SPRU360) describes all the APIs that are defined by the TMS320 DSP Algorithm Inteface Standard (also known as XDAIS) specification. Technical Overview of eXpressDSP - Compliant Algorithms for DSP Software Producers (literature number SPRA579) describes how to make algorithms compliant with the TMS320 DSP Algorithm Standard which is part of TI’s eXpressDSP technology initiative. Using the TMS320 DSP Algorithm Standard in a Static DSP System (literature number SPRA577) describes how an eXpressDSPcompliant algorithm may be used effectively in a static system with limited memory. eXpressDSP Digital Media (XDM) Standard API Reference (literature number SPRUEC8) Using IRES and RMAN Framework Components for C64x+ (literature number SPRAAI5), describes the IRES interface definition and function calling sequence Related Documentation You can use the following documents to supplement this user guide: SMPTE 421M: - Proposed SMPTE Standard for Television: VC-1 Compressed Video Bitstream Format and Decoding Process Abbreviations The following abbreviations are used in this document. Table 1-1 List of Abbreviations Abbreviation Description v Read This First vi Abbreviation Description WMV Windows Media Video SMPTE Society Of Motion Picture and Television Engineers BIOS TI’s simple RTOS for DSPs AC/DC PRED Prediction of the first DCT co-efficient in each row and each column of a block from adjacent blocks ASF Advanced Systems Format CPB Coded Picture Buffer CSL Chip Support Library D1 720x480 or 720x576 resolutions in progressive scan DCT Discrete Cosine Transform DMA Direct Memory Access DMAN DMA Manager DPB Decoded Picture Buffer EVM Evaluation Module IDR Instantaneous Decoding Refresh HDTV High Definition Television VC-1 SMPTE 421M approved standard for Television. VLC Variable Length Coding IRES Interface standard to request and receive handles to resources ITU-T International Telecommunication Union IVA Image Video Accelerator SMPTE Society of Motion Picture and Television Engineers MB Macro Block MV Motion Vector NTSC National Television Standards Committee RMAN Resource Manager Read This First Abbreviation Description RTOS Real Time Operating System VGA Video Graphics Array (640 x 480 resolution) VOP Video Object Plane XDAIS eXpressDSP Algorithm Interface Standard XDM eXpressDSP Digital Media YUV Color space in luminance and chrominance form Text Conventions The following conventions are used in this document: Text inside back-quotes (‘‘) represents pseudo-code. Program source code, function and macro names, parameters, and command line commands are shown in a mono-spaced font. Product Support When contacting TI for support on this codec, quote the product name (VC1 Advanced Profile Decoder on IVAHD and M3 Based Platform) and version number. The version number of the codec is included in the title of the Release Notes that accompanies this codec. Trademarks Code Composer Studio, the DAVINCI Logo, DAVINCI, DSP/BIOS, eXpressDSP, TMS320, TMS320C64x, TMS320C6000, and TMS320C64x+ are trademarks of Texas Instruments. All trademarks are the property of their respective owners. vii Contents PREFACE ....................................................................................................................................... III READ THIS FIRST ......................................................................................................................... III ABOUT THIS MANUAL ..................................................................................................................... III INTENDED AUDIENCE ..................................................................................................................... III HOW TO USE THIS MANUAL ........................................................................................................... III RELATED DOCUMENTATION FROM TEXAS INSTRUMENTS ..................................................................V RELATED DOCUMENTATION .............................................................................................................V ABBREVIATIONS ..............................................................................................................................V TEXT CONVENTIONS ..................................................................................................................... VII PRODUCT SUPPORT ..................................................................................................................... VII TRADEMARKS ............................................................................................................................... VII CONTENTS .................................................................................................................................. VIII FIGURES ........................................................................................................................................ XI TABLES ........................................................................................................................................ XII INTRODUCTION .......................................................................................................................... 1-1 1.1 OVERVIEW OF XDAIS, XDM, AND IRES ......................................................................... 1-2 1.1.1 XDAIS Overview ..................................................................................................... 1-2 1.1.2 XDM Overview ........................................................................................................ 1-3 1.1.3 IRES Overview ........................................................................................................ 1-4 1.2 OVERVIEW OF VC1 ADVANCED PROFILE DECODER ......................................................... 1-5 1.3 SUPPORTED SERVICES AND FEATURES .......................................................................... 1-8 INSTALLATION OVERVIEW ....................................................................................................... 2-1 2.1 SYSTEM REQUIREMENTS ............................................................................................... 2-2 2.1.1 Hardware ................................................................................................................ 2-2 2.1.2 Software .................................................................................................................. 2-2 2.2 INSTALLING THE COMPONENT......................................................................................... 2-2 2.3 BEFORE BUILDING THE SAMPLE TEST APPLICATION ........................................................ 2-4 2.3.1 Installing Framework Component (FC) ................................................................... 2-5 2.4 BUILDING AND RUNNING THE SAMPLE TEST APPLICATION ................................................ 2-6 2.4.1 Building the Sample Test Application ..................................................................... 2-6 2.4.2 Running the Sample Test Application on OMAP4 ES1.0 ....................................... 2-6 2.4.3 Running the Sample Test Application on OMAP4 IVAHD Simulator ..................... 2-7 2.5 CONFIGURATION FILES .................................................................................................. 2-8 2.5.1 Generic Configuration File ...................................................................................... 2-8 2.5.2 Decoder Configuration File ..................................................................................... 2-9 2.6 UNINSTALLING THE COMPONENT .................................................................................. 2-10 SAMPLE USAGE ......................................................................................................................... 3-1 3.1 OVERVIEW OF THE TEST APPLICATION ............................................................................ 3-2 3.1.1 Parameter Setup ..................................................................................................... 3-3 3.1.2 Algorithm Instance Creation and Initialization ........................................................ 3-3 viii 3.1.3 Process Call ............................................................................................................ 3-4 3.1.4 Algorithm Instance Deletion .................................................................................... 3-6 3.2 FRAME BUFFER MANAGEMENT BY APPLICATION .............................................................. 3-6 3.2.1 Frame Buffer Input and Output ............................................................................... 3-6 3.2.2 Frame Buffer Format............................................................................................... 3-7 3.2.3 Frame Buffer Management by Application ............................................................. 3-7 3.3 HANDSHAKING BETWEEN APPLICATION AND ALGORITHM ................................................. 3-8 3.4 ADDRESS TRANSLATIONS............................................................................................. 3-10 3.5 SAMPLE TEST APPLICATION ......................................................................................... 3-10 API REFERENCE......................................................................................................................... 4-1 4.1 SYMBOLIC CONSTANTS AND ENUMERATED DATA TYPES.................................................. 4-2 4.2 DATA STRUCTURES ..................................................................................................... 4-10 4.2.1 Common XDM Data Structures ............................................................................ 4-10 4.2.2 VC1 Decoder Data Structures .............................................................................. 4-23 4.3 DEFAULT AND SUPPORTED PARAMETERS ...................................................................... 4-30 4.3.1 Default and supported values of IVIDDEC3_params ........................................... 4-30 4.3.2 Default and supported values of IVIDDEC3_DynamicParams ............................. 4-31 4.3.3 Default and supported values of IVC1VDEC_Params ......................................... 4-32 4.3.4 Default and supported values of IVC1VDEC_DynamicParams ........................... 4-32 4.4 INTERFACE FUNCTIONS ................................................................................................ 4-33 4.4.1 Creation APIs ........................................................................................................ 4-34 4.4.2 Initialization API .................................................................................................... 4-36 4.4.3 Control API ............................................................................................................ 4-37 4.4.4 Data Processing API ............................................................................................. 4-38 4.4.5 Termination API .................................................................................................... 4-41 FREQUENTY ASKED QUESTIONS............................................................................................ 5-1 5.1 5.2 5.3 CODE BUILD AND EXECUTION ......................................................................................... 5-1 ISSUES WITH TOOLS VERSION ........................................................................................ 5-1 ALGORITHM RELATED .................................................................................................... 5-2 DEBUG TRACE USAGE ............................................................................................................. 6-1 6.1 6.2 6.3 DEBUG TRACE MEMORY FORMAT IN THE VC1 DECODER ................................................. 6-1 METHOD TO CONFIGURE DECODER TO COLLECT DEBUG TRACE ........................................ 6-2 METHOD FOR APPLICATION TO COLLECT DEBUG TRACE .................................................... 6-2 PICTURE FORMAT...................................................................................................................... 7-1 7.1 7.2 7.3 7.4 NV12 CHROMA FORMAT ............................................................................................... 7-1 PROGRESSIVE PICTURE FORMAT ................................................................................... 7-2 INTERLACED PICTURE FORMAT ...................................................................................... 7-4 CONSTRAINTS ON BUFFER ALLOCATION FOR DECODER ................................................... 7-6 ERROR HANDLING ..................................................................................................................... 8-1 8.1 DESCRIPTION ................................................................................................................ 8-1 8.1.1 Error Codes used to set the extendedError field in IVIDDEC3_OutArgs and IVIDDEC3_Status ................................................................................................................ 8-2 8.1.2 Error Codes used to set the extendedErrorCode0, extendedErrorCode1, extendedErrorCode2, extendedErrorCode3 field in IVC1VDEC_Status ............................. 8-4 BITSTREAM FORMAT ................................................................................................................ 9-1 9.1 SIMPLE AND MAIN PROFILE ............................................................................................ 9-1 9.1.1 Sequence header syntax ........................................................................................ 9-2 9.1.2 Frame header syntax .............................................................................................. 9-2 9.2 ADVANCED PROFILE ...................................................................................................... 9-3 ix META DATA SUPPORT ............................................................................................................ 10-1 x Figures Figure 1-1. IRES Interface Definition and Function Calling Sequence. ..............1-5 Figure 1-2. Block Diagram of VC1 Decoder .......................................................1-6 Figure 1-3. Working of VC1 Decoder .................................................................1-7 Figure 2-1. Component Directory Structure .......................................................2-3 Figure 3-1. Test Application Sample Implementation.........................................3-2 Figure 3-2. Process call with Host release .........................................................3-5 Figure 3-3. Interaction of Frame Buffers Between Application and Framework .3-7 Figure 3-4. Interaction Between Application and Codec ....................................3-9 xi Tables Table 1-1 List of Abbreviations ............................................................................. v Table 2-1. Component Directories .....................................................................2-4 Table 3-1. Process ( ) Implementation .............................................................3-11 Table 4-1. List of Enumerated Data Types ........................................................4-2 xii Chapter 1 Introduction This chapter provides a brief introduction to XDAIS and XDM. It also provides an overview of TI’s implementation of the VC1 Advanced Profile Decoder on the IVAHD and M3 Based Platform and its supported features. Topic Page 1.1 Overview of XDAIS, XDM, and IRES 1-2 1.2 Overview of VC1 Advanced Profile Decoder 1-5 1.3 Supported Services and Features 1-8 1-1 Introduction 1.1 Overview of XDAIS, XDM, and IRES TI’s multimedia codec implementations are based on the eXpressDSP Digital Media (XDM) standard. XDM is an extension of the eXpressDSP Algorithm Interface Standard (XDAIS). IRES is the interface for management and utilization of special resource types such as hardware accelerators, certain types of memory and DMA. This interface allows the client application to query and provide the algorithm its requested resources. 1.1.1 XDAIS Overview An eXpressDSP-compliant algorithm is a module that implements the abstract interface IALG. The IALG API takes the memory management function away from the algorithm and places it in the hosting framework. Thus, an interaction occurs between the algorithm and the framework. This interaction allows the client application to allocate memory for the algorithm and also share memory between algorithms. It also allows the memory to be moved around while an algorithm is operating in the system. In order to facilitate these functionalities, the IALG interface defines the following APIs: algAlloc() algInit() algActivate() algDeactivate() algFree() The algAlloc() API allows the algorithm to communicate its memory requirements to the client application. The algInit() API allows the algorithm to initialize the memory allocated by the client application. The algFree() API allows the algorithm to communicate the memory to be freed when an instance is no longer required. Once an algorithm instance object is created, it can be used to process data in real-time. The algActivate() API provides a notification to the algorithm instance that one or more algorithm processing methods is about to be run zero or more times in succession. After the processing methods have been run, the client application calls the algDeactivate() API prior to reusing any of the instance’s scratch memory. The IALG interface also defines three more optional APIs algControl(), algNumAlloc(), and algMoved(). For more details on these APIs, see TMS320 DSP Algorithm Standard API Reference (literature number SPRU360). 1-2 Introduction 1.1.2 XDM Overview In the multimedia application space, you have the choice of integrating any codec into your multimedia system. For example, if you are building a video decoder system, you can use any of the available video decoders (such as VC1,MPEG4, H.263, or H.264) in your system. To enable easy integration with the client application, it is important that all codecs with similar functionality use similar APIs. XDM was primarily defined as an extension to XDAIS to ensure uniformity across different classes of codecs (for example audio, video, image, and speech). The XDM standard defines the following two APIs: control() process() The control() API provides a standard way to control an algorithm instance and receive status information from the algorithm in real-time. The control() API replaces the algControl() API defined as part of the IALG interface. The process() API does the basic processing (encode/decode) of data. Apart from defining standardized APIs for multimedia codecs, XDM also standardizes the generic parameters that the client application must pass to these APIs. The client application can define additional implementation specific parameters using extended data structures. The following figure depicts the XDM interface to the client application. Client Application XDM Interface XDAIS Interface (IALG) TI’s Codec Algorithms As depicted in the figure, XDM is an extension to XDAIS and forms an interface between the client application and the codec component. XDM insulates the client application from component-level changes. Since TI’s multimedia algorithms are XDM compliant, it provides you with the flexibility to use any TI algorithm without changing the client application code. For example, if you have developed a client application using an XDM-compliant VC1 video decoder, then you can easily replace VC1 with another XDMcompliant video decoder, say H.263, with minimal changes to the client application. For more details, see eXpressDSP Digital Media (XDM) Standard API Reference (literature number SPRUEC8). 1-3 Introduction 1.1.3 IRES Overview IRES is a generic, resource-agnostic, extendible resource query, initialization and activation interface. The application framework defines, implements, and supports concrete resource interfaces in the form of IRES extensions. Each algorithm implements the generic IRES interface, to request one or more concrete IRES resources. IRES defines standard interface functions that the framework uses to query, initialize, activate/deactivate and reallocate concrete IRES resources. To create an algorithm instance within an application framework, the algorithm and the application framework agrees on the concrete IRES resource types that are requested. The framework calls the IRES interface functions, in addition to the IALG functions, to perform IRES resource initialization, activation, and deactivation. The IRES interface introduces support for a new standard protocol for cooperative preemption, in addition to the IALG-style non-cooperative sharing of scratch resources. Co-operative preemption allows activated algorithms to yield to higher priority tasks sharing common scratch resources. Framework components include the following modules and interfaces to support algorithms requesting IRES-based resources: IRES - Standard interface allowing the client application to query and provide the algorithm with its requested IRES resources. RMAN - Generic IRES-based resource manager, which manages and grants concrete IRES resources to algorithms and applications. RMAN uses a new standard interface, the IRESMAN, to support run-time registration of concrete IRES resource managers. Client applications call the algorithm’s IRES interface functions to query its concrete IRES resource requirements. If the requested IRES resource type matches a concrete IRES resource interface supported by the application framework, and if the resource is available, the client grants the algorithm logical IRES resource handles representing the allotted resources. Each handle provides the algorithm with access to the resource as defined by the concrete IRES resource interface. IRES interface definition and function calling sequence is depicted in the following figure. For more details, see Using IRES and RMAN Framework Components for C64x+ (literature number SPRAAI5). 1-4 Introduction Figure 1-1. IRES Interface Definition and Function Calling Sequence. For more details, see Using IRES and RMAN Framework Components for C64x+ (literature number SPRAAI5). 1.2 Overview of VC1 Advanced Profile Decoder VC1 is the Society of Motion Picture and Television Engineers (SMPTE) standardized video decoder. VC1 consists of three profiles namely, simple, main, and advanced. Simple and main profiles were developed for use in lower-bit-rate networked computing environments. VC1 standard defines several profiles and levels that specify restrictions on the bit stream, and hence limits the capabilities needed to decode the bit-streams. Each profile specifies a subset of algorithmic features and limits all decoders conforming to that profile may support. Each level specifies a set of limits on the values that may be taken by the syntax elements in the profile. 1-5 Introduction Figure 1-2. Block Diagram of VC1 Decoder From this point onwards, all references to VC1 decoder mean VC1 Advanced Profile (AP) decoder only. Figure 1-3 depicts the working of the VC1 Decoder algorithm. 1-6 Introduction RMAN Callback to make non blocking API Framework Components (FC) and Codec Engine (CE) Frame Start XDAIS and XDM IVIDDEC3 IPC Video Codec (ARM Part) IRES Private and Generic IPC Inside Codec Software Video Codec (IVAHD Part) Codec Software Stack Slice/Frame Level Operation Buffer Management Codec Topology and Hardware Mode Settings (L2 API) Frame End CSL / IVAHD L0 API IPC Hardware Layer Cortex M3 ICONT1 Ducati sub-system ICONT2 IVA-HD sub-system Figure 1-3. Working of VC1 Decoder VC1 Advanced Profile Decoder implementation on OMAP4 has two parts: Core part of the decoding, which includes all frame and slice level operation and core decoding algorithm. This part is implemented on IVA-HD sub-system Interface part of the decoder, which interacts with application and system software. This part is implemented on M3. All the interfaces to query algorithm resource needs belongs to this part. This part of the video codec is exposed to system software and core part is hidden. Interface part of the video codec communicates with core part of video codec with private IPC defined in codec software through mailbox. 1-7 Introduction 1.3 Supported Services and Features This user guide accompanies TI’s implementation of VC1 Decoder on the IVAHD video accelerators. This version of the codec has the following supported features of the standard: 1-8 eXpressDSP Digital Media (XDM IVIDDEC3) compliant Uses hardware accelerators of IVAHD VC1 Advanced Profile up to Level 3 compliant All features of Simple Profile, Main Profile and Advanced Profile are supported Supports Multiple slices Minimum resolution supported is 64 x 64 Non-multiples of 16 resolutions are also supported Progressive, Interlaced frame and Interlaced field type picture decoding supported Supports all block type partitions and modes Outputs are available in YUV420 interleaved little Endian format Tested for compliance with SMPTE reference decoder release 7 Cache aware decoder library Independent of any OS (DSP/BIOS, Linux, Window CE, Symbian and so on Ability to plug in any multimedia frameworks (e.g. Codec engine, OpenMax, GStreamer, …) Supports multi-channel functionality. Supports resolutions from all standard resolutions from QCIF to 1080p/1080i. All features of Simple Profile, Main Profile and Advanced Profile are supported Both RCV(RCV V1, RCV V2) and Elementary stream formats are supported Support for error resiliency and error concealment Chapter 2 Installation Overview This chapter provides a brief description on the system requirements and instructions for installing the codec component. It also provides information on building and running the sample test application. Topic Page 2.1 System Requirements 2-2 2.2 Installing the Component 2-2 2.3 Before Building the Sample Test Application 2-4 2.4 Building and Running the Sample Test Application 2-6 2.5 Configuration Files 2-8 2.6 Uninstalling the Component 2-10 2-1 Installation Overview 2.1 System Requirements This section describes the hardware and software requirements for the normal functioning of the codec component. 2.1.1 Hardware This codec (OMAP4 release package) has been built and tested on OMAP4ES1. 2.1.2 Software The following are the software requirements for the normal functioning of the codec: Development Environment: This project is developed using CodeComposer Studio (Code Composer Studio v4) version. 4.2.0.09000. Code Composer Studio v4 can be downloaded from the following location. http://softwaredl.ti.com/dsps/dsps_registered_sw/sdo_ccstudio/CCSv4/Prereleases/set up_CCS_4.2.0.09000.zip Code Generation Tools: This project is compiled, assembled, archived,and linked using the code generation tools version 4.5.1. Although CG toolsversion 4.5.1 is a part of Code Composer Studio v4, It is recommended that you download and install the CG tools from the following location. https://www-a.ti.com/downloads/sds_support/CodeGenerationTools.htm The projects are built using g-make (GNU Make version 3.78.1) IVAHD Simulator: This codec has been tested using IVAHD simulator version 5.0.16 (IVAHD simulation CSP 1.1.5). This release can be obtained by software updates on Code Composer Studio v4. Make sure that following site is listed as part of Update sites to visit. http://softwaredl.ti.com/dsps/dsps_public_sw/sdo_ccstudio/CCSv4/Updates/IVAHD/sit e.xml 2.2 Installing the Component The codec component is released as a compressed archive. To install the codec, extract the contents of the zip file onto your local hard disk. The zip file extraction creates a top-level directory called 500.V.VC1.D.IVAHD.01.00, under which is directory named IVAHD_001. 2-2 Installation Overview Figure 2-1. Component Directory Structure 2-3 Installation Overview Sub-Directory Description \inc Contains XDM related header files which allow interface to the codec library \lib Contains the codec library file \docs Contains user guide and datasheet \client\build\TestAppOmap4 Contains the M3 cmd file. \client\build\TestAppOmap4\make Contains the make file for the test application project. \client\build\TestAppOmap4\map Contains the memory map generated on compilation of the code \client\build\TestAppOmap4\obj Contains the intermediate .asm and/or .obj file generated on compilation of the code \client\build\TestAppOmap4\out Contains the final application executable (.out) file generated by the sample test application \client\test\src Contains application C files \client\ test\inc Contains header files needed for the application code \client\testvecs\config Contains configuration parameter files \client\test\testvecs\input Contains input test vectors \client\test\testvecs\output Contains output generated by the codec \client\test\testvecs\reference Contains read-only reference output to be used for cross-checking against codec output Table 2-1. Component Directories 2.3 Before Building the Sample Test Application This codec is accompanied by a sample test application. To run the sample test application, you need TI Framework Components (FC). This version of the codec has been validated with Framework Component (FC) version 3.20.00.22 GA. To run the Simulator version of the codec, the IVAHD simulator has to be installed. The version of the simulator is 5.0.16. This can be done using the “Help->Software Updates->Find and Install” option in CCSv4. Detailed instructions to set up the configuration can be found in ivahd_sim_user_guide.pdf present in\simulation_csp_omap4\docs\pdf\ directory. 2-4 Installation Overview This codec has also been validated on Netra Video Processing Simulator that simulates all the three IVAHDs in DM816x. The simulator required for this is Netra CSP (Simulation) version 0.7.1. This simulator can also be installed using the “Help->Software Updates->Find and Install” option in CCSv4. Detailed instructions to set up the configuration can be found in netra_sim_user_guide.pdf present in \ simulation_netra\docs\user_guide directory. Install CG Tools version 4.5.1 for ARM (TMS470) at the following location in your system: \ccsv4\tools\compiler\tms470. CGTools 4.5.1 can be downloaded from https://www-a.ti.com/downloads/sds_support/CodeGenerationTools.htm Please note that CG Tools 4.5.1 is installed at the location mentioned above along with the CCS v4 installation by default. But, as some problems have been reported about this, we recommend that you install CG Tools 4.5.1 again with the installer obtained from the above link Set environment variable CG_TOOL_DIR to . /bin should contain all required code generation tools executables. Set environment variables HDVICP2_INSTALL_DIR and CSP_INSTALL_DIR to the locations where the HDVICP20 API library and IVAHD CSL are present. The HDVICP20 API library and the IVAHD CSL can be downloaded from the same place as the codec package. The HDVICP20 API .lib files should be present at HDVICP2_INSTALL_DIR/lib and HDVICP20 API interface header files at HDVICP2_INSTALL_DIR/inc. The folders csl_ivahd and csl_soc of IVAHD CSL should be present at CSP_INSTALL_DIR/. This version of the codec has been validated with HDVICP2.0 API library version 01.00.00.22 and HDVICP2.0 CSL Version 00.05.02. Set the system environment variable TI_DIR to the CCSv4 installation path. Example: TI_DIR = \ccsv4. Add gmake (GNU Make version 3.78.1) utility folder path (for example, “C:\CCStudioV4.0\ccsv4\utils\gmake”) at the beginning of the PATH environment variable. The version of the XDC tools required is 3.20.04.68 GA. 2.3.1 Installing Framework Component (FC) You can download FC from the TI website: http://softwaredl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/fc/3_20_00_22/index_ FDS.html 2-5 Installation Overview Extract the FC zip file to the some location and set the system environment variable FC_INSTALL_DIR to this path. For example: if the zip file was extracted to C:\CCSv4\, set FC_INSTALL_DIR as C:\CCSv4\ framework_components_3_20_00_22. The test application uses the following IRES and XDM files: HDVICP related IRES header files, these are available in the FC_INSTALL_DIR\packages\ti\sdo\fc\ires\hdvicp directory. Tiled memory related Header file, these are available in the FC_INSTALL_DIR\fctools\packages\ti\sdo\fc\ires\tiledmemory directory. XDM related header files, these are available in the FC_INSTALL_DIR\fctools\packages\ti\xdais directory 2.4 Building and Running the Sample Test Application 2.4.1 Building the Sample Test Application This library release of VC1 Decoder on HDVICP2.0 and M3-based platform contains the following project. Project Make file Path Output Files Test Application \client\build\TestAppOmap4\make\ \client\build\TestAppOmap4\out \vc1vdec_ti_host_testapp.out Verify that the following codec object libraries exist in \lib sub-directory: vc1vdec_ti_host_M3.lib: VC1 decoder library for Ducati make file in the project can be built using the following commands. o gmake –k –s deps o gmake –k –s all Use the following command to clean previous builds. o 2.4.2 gmake –k –s clean Running the Sample Test Application on OMAP4 ES1.0 The sample test application that accompanies this codec component will run in TI’s Code Composer Studio development environment. To run the sample test application on OMAP4 ES1.0, follow these steps: 2-6 Start Code Composer Studio v4 and set up the target configuration for OMAP4 ES1.0 Emulator. Select the Debug perspective in the workbench. Launch OMAP4 ES1.0 Emulator in CCSv4. Installation Overview Select CortexA9_0 device, right click and choose “Connect Target” and wait for emulator to connect to CortexA9 and execute the GEL file (omap4430 startup sequence). Select Cortex_M3_0 device, right click and choose “Connect Target” and wait for emulator to connect to CortexM3. Select Cortex_M3_0 device and Target > Load Program, browse to the \client\build\TestAppOmap4\out\ sub-directory, select the codec executable “vc1vdec_ti_host_testapp.out” and load it in preparation for execution. Select Target > Run to execute the application for Cortex_M3_0 device. Test application will take input streams from \client\test\testvecs\input\ directory and generates outputs in \client\test\testvecs\output\ directory. Configuration Files Note: Order of connecting to the devices is important and it should be as mentioned in above steps. 2.4.3 Running the Sample Test Application on OMAP4 IVAHD Simulator The sample test application that accompanies this codec component will run in TI’s Code Composer Studio development environment. To run the sample test application on IVAHD Simulator, follow these steps: Ensure that you have installed IVAHD Simulator version 5.0.16. Start Code Composer Studio v4 and set up the target configuration for OMAP4 IVAHD Simulator. Select the Debug perspective in the workbench. Launch OMAP4 IVAHD Simulator in CCSv4. Select CORTEX_M3_APP device and Target > Load Program, browse to the \client\build\TestApp Omap4\out\ sub-directory, select the codec executable “vc1vdec_ti_host_testapp.out” and load it into Code Composer Studio in preparation for execution. Select ICONT1 device and Target > Run to give iCont1 device a free run. Select ICONT2 device and Target > Run to give iCont2 device a free run. Select CORTEX_M3_APP device and select Target > Run to execute the application. Test application will take input streams from \client\test\testvecs\input\ directory and generates outputs in \client\test\testvecs\output\ directory. 2-7 Installation Overview 2.5 Configuration Files This codec is shipped along with: 2.5.1 Generic configuration file (testvecs.cfg) – specifies input and reference files for the sample test application. Decoder configuration file (testparams.cfg) – specifies the configuration parameters used by the test application to configure the Decoder. Generic Configuration File The sample test application shipped along with the codec uses the configuration file, testvecs.cfg for determining the input and reference files for running the codec and checking for compliance. The testvecs.cfg file is available in the \client\test\testvecs\config sub-directory. The format of the testvecs.cfg file is: X Config Input Output/Reference where: X may be set as: o 1 - for CRC compliance checking, no output file is created o 0 - for writing the output to the output file Config is the Decoder configuration file. For details, see Section 2.5.2. Input is the input file name (use complete path). Output/Reference is the output file name (if X is 0) or reference file name (if X is 1). A sample testvecs.cfg file is as shown: 1 ..\..\..\test\testvecs\config\testparams.cfg ..\..\..\test\testvecs\input\foreman_176x144.rcv ..\..\..\test\testvecs\reference\foreman_176x144.txt 0 ..\..\..\test\testvecs\config\testparams.cfg ..\..\..\test\testvecs\input\foreman_176x144.rcv ..\..\..\test\testvecs\output\foreman_176x144.yuv In compliance mode of operation, the decoder compared the reference and the generated output and declares Passes/Failed message. If output dump mode is selected(X set to 0), then the decoder dumps the output to the specified file. 2-8 Installation Overview Note: Compliance test will not work for Interlaced test cases 2.5.2 Decoder Configuration File The decoder configuration file, testparams.cfg contains the configuration parameters required for the decoder. The testparams.cfg file is available in the \client\test\testvecs\config sub-directory. A sample testparams.cfg file is as shown: # New Input File Format is as follows # = # Comment # ############################################################ ############################## # Parameters ############################################################ ############################## ImageWidth = 1920 # Image width in Pels, must be multiple of 16 ImageHeight = 1088 # Image height in Pels, must be multiple of 16 FramesToDecode = 500 # Number of frames to be decoded DumpFrom = 0 # Start dumping from this frame. isTiler = 0 # 1-> ENable Tiler Memory Usage for Output Buffers, 0-> Use RAW memory. debugTraceLevel Trace Levels. lastNFramesToLog Values. metaDataEnable Parsed MetaData metaDataType Parse MB Info = 0 # 0,1,2,3,4 are the Valid = 0 # 0 to 10 are the Valid = 1 # 0 -> (Default) 1-> = 0 # -1 -> (Default) 0-> 2-9 Installation Overview To check the functionality of the codec for the inputs other than those provided with the release, change the configuration file accordingly with corresponding input test vector. Note: ChromaFormat supported in this codec is 420 semi-planar, that is, the chroma planes (Cb and Cr) are interleaved. 2.6 Uninstalling the Component To uninstall the component, delete the codec directory from your hard disk. 2-10 Chapter 3 Sample Usage This chapter provides a detailed description of the sample test application that accompanies this codec component. Topic Page 3.1 Overview of the Test Application 3-2 3.2 Frame Buffer Management by Application 3-6 3.3 Handshaking Between Application and Algorithm 3-8 3.4 Address Translations 3-10 3.5 Sample Test Application 3-10 3-1 Sample Usage 3.1 Overview of the Test Application The test application exercises the IVIDDEC3 base class of the VC1 Decoder library. The main test application files are vc1vdec_ti_host_testapp.c and vc1vdec_ti_ires_app.c. These files are available in the \client\test\src directory. Figure 3-1 depicts the sequence of APIs exercised in the sample test application. Currently, the test application does not use RMAN resource manager. However, all the resource allocations happens through IRES interfaces. Figure 3-1. Test Application Sample Implementation 3-2 Sample Usage The test application is divided into four logical blocks: 3.1.1 Parameter setup Algorithm instance creation and initialization Process call Algorithm instance deletion Parameter Setup Each codec component requires various codec configuration parameters to be set at initialization. For example, a video codec requires parameters such as video height, video width, and so on. The test application obtains the required parameters from the Decoder configuration files. In this logical block, the test application does the following: Opens the generic configuration file, Testvecs.cfg and reads the compliance checking parameter, Decoder configuration file name (Testparams.cfg), input file name, and output/reference file name. Opens the Decoer configuration file, (Testparams.cfg) and reads the various configuration parameters required for the algorithm. For more details on the configuration files, see Section 2.5. Sets the IVIDDEC3_Params structure based on the values it reads from the Testparams.cfg file. Reads the input bit-stream into the application input buffer. After successful completion of these steps, the test application does the algorithm instance creation and initialization. 3.1.2 Algorithm Instance Creation and Initialization In this logical block, the test application accepts the various initialization parameters and returns an algorithm instance pointer. The following APIs are called in sequence: algNumAlloc() - To query the algorithm about the number of memory records it requires. algAlloc() - To query the algorithm about the memory requirement to be filled in the memory records. algInit() - To initialize the algorithm with the memory structures provided by the application. A sample implementation of the create function that calls algNumAlloc(), algAlloc(), and algInit() in sequence is provided in the ALG_create() function implemented in the alg_create.c file. 3-3 Sample Usage Note: Decoder requests only one memory buffer through algNumAlloc. This buffer is for the algorithm handle. Other memory buffer requirements are done through IRES interfaces. After successful creation of the algorithm instance, the test application does HDVICP Resource and memory buffer allocation for the algorithm. Currently, RMAN resource manager is not used. However, all the resource allocations happen through IRES interfaces: numResourceDescriptors() - To understand the number of resources (HDVICP and buffers) needed by algorithm. getResourceDescriptors() – To get the attributes of the resources. initResources() - After resources are created, application gives the resources to algorithm through this API. 3.1.3 Process Call After algorithm instance creation and initialization, the test application does the following: 3-4 Sets the dynamic parameters (if they change during run-time) by calling the control() function with the XDM_SETPARAMS command. Sets the input and output buffer descriptors required for the process()function call. The input and output buffer descriptors are obtained by calling the control() function with the XDM_GETBUFINFO command. Implements the process call based on the non-blocking mode of operation explained in step 4. The behavior of the algorithm can be controlled using various dynamic parameters (see Section 4.2.1.8). The inputs to the process()functions are input and output buffer descriptors, pointer to the IVIDDEC3_InArgs and IVIDDEC3_OutArgs structures. On the call to the process() function for encoding/decoding a single frame of data, the software triggers the start of encode/decode. After triggering the start of the encode/decode frame, the video task can be put to SEM-pend state using semaphores. On receipt of interrupt signal at the end of frame encode/decode, the application releases the semaphore and resume the video task, which does any book-keeping operations by the codec and updates the output parameter of IVIDDEC3_OutArgs structure. Sample Usage Process call frame n Process call frame n+1 Host System application HDVICP Tasks Interrupt between HDVICP and Host Transfer of tasks at Host Host Video Task MB level tasks for frame n MB level tasks for frame n+1 Host system tasks HDVICP Busy Figure 3-2. Process call with Host release The control() and process() functions should be called only within the scope of the algActivate() and algDeactivate() XDAIS functions which activate and deactivate the algorithm instance respectively. Once an algorithm is activated, there could be any ordering of control() and process() functions. The following APIs are called in a sequence: algActivate() - To activate the algorithm instance. control() (optional) - To query the algorithm on status or setting of dynamic parameters and so on, using the six available control commands. process() - To call the Decoder with appropriate input/output buffer and arguments information. control() (optional) - To query the algorithm on status or setting of dynamic parameters and so on, using the six available control commands. algDeactivate() - To deactivate the algorithm instance. The do-while loop encapsulates picture level process() call and updates the input buffer pointer every time before the next call. The do-while loop breaks off either when an error condition occurs or when the input buffer exhausts. It also protects the process() call from file operations by placing appropriate calls for cache operations. The test application does a cache invalidate for the valid input buffers before process() and a cache write back invalidate for output buffers after a control() call with GET_STATUS command. In the sample test application, after calling algDeactivate(), the output data is either dumped to a file or compared with a reference file. 3-5 Sample Usage 3.1.4 Algorithm Instance Deletion Once decoding/encoding is complete, the test application frees the memory resources and deletes the current algorithm instance. The following APIs are called in sequence: numResourceDescriptors() - To get the number of resources and free them. If the application needs handles to the resources, it can call getResourceDescriptors(). algNumAlloc() - To query the algorithm about the number of memory records it used. algFree() - To query the algorithm for memory, to free when removing an instance. A sample implementation of the delete function that calls algNumAlloc() and algFree() in sequence is provided in the ALG_delete() function implemented in the alg_create.c file. 3.2 Frame Buffer Management by Application 3.2.1 Frame Buffer Input and Output With the new XDM IVIDDEC3 class, decoder does not ask for frame buffer at the time of alg_create(). It uses buffer from XDM1_BufDesc *outBufs, which it reads during each decode process call. Hence, there is no distinction between DPB and display buffers. The framework needs to ensure that it does not overwrite the buffers that are locked by the codec. VC1VDEC_create(); VC1VDEC_control(XDM_GETBUFINFO); /* Returns default PAL D1 size */ do{ VC1VDEC_decode(); //call the decode API VC1VDEC_control(XDM_GETBUFINFO); /* updates the memory required as per the size parsed in stream header */ } while(all frames) Note: 3-6 Application can take the information retured by the control function with the XDM_GETBUFINFO command and change the size of the buffer passed in the next process call. Application can re-use the extra buffer space of the 1st frame, if Sample Usage the above control call returns a small size than that was provided. The frame pointer given by the application and that returned by the algorithm may be different. BufferID (InputID/outputID) provides the unique ID to keep a record of the buffer given to the algorithm and released by the algorithm. As explained above, buffer pointer cannot be used as a unique identifier to keep a record of frame buffers. Any buffer given to algorithm should be considered locked by algorithm, unless the buffer is returned to the application through IVIDDEC3_OutArgs->freeBufID[]. Note: BufferID returned in IVIDDEC3_OutArgs ->outputID[] is only for display purpose. Application should not consider it free unless it is a part of IVIDDEC3_OutArgs->freeBufID[]. 3.2.2 Frame Buffer Format The frame buffer format to be used for both progressive and interlaced pictures is as explained in the following document available in the release package. \IVAHD_001\docs\IVAHD_Picture_Format.pdf 3.2.3 Frame Buffer Management by Application The application framework can efficiently manage frame buffers by keeping a pool of free frames from which it gives the decoder empty frames on request. Algorithm Framework GetFreeBuffer( ) Video Decode Thread XDM API ReleaseBuffer( ) Free Frame Buffers Post Processing or Display Subsystem Video Decoder Figure 3-3. Interaction of Frame Buffers Between Application and Framework The sample application also provides a prototype for managing frame buffers. It implements the following functions, which are defined in file buffermanager.c provided along with test application. 3-7 Sample Usage BUFFMGR_Init() - BUFFMGR_Init function is called by the test application to initialize the global buffer element array to default and to allocate the required number of memory data for reference and output buffers. The maximum required DPB size is defined by the supported profile and level. BUFFMGR_ReInit() - BUFFMGR_ReInit function allocates global luma and chroma buffers and allocates entire space to the first element. This element will be used in the first frame decode. After the picture height and width and its luma and chroma buffer requirements are obtained, the global luma and chroma buffers are re-initialized to other elements in the buffer array. BUFFMGR_GetFreeBuffer() - BUFFMGR_GetFreeBuffer function searches for a free buffer in the global buffer array and returns the address of that element. Incase none of the elements are free, then it returns NULL. BUFFMGR_ReleaseBuffer() - BUFFMGR_ReleaseBuffer function takes an array of buffer-IDs which are released by the test application. 0 is not a valid buffer ID, hence this function moves until it encounters a buffer ID as zero or it hits the MAX_BUFF_ELEMENTS. BUFFMGR_DeInit()- BUFFMGR_DeInit function releases all memory allocated by buffer manager. 3.3 Handshaking Between Application and Algorithm Application provides the algorithm with its implementation of functions for the video task to move to SEM-pend state, when the execution happens in the co-processor. The algorithm calls these application functions to move the video task to SEM-pend state. 3-8 Sample Usage Codec Application Side process() #include <…/ires_hdvicp.h> void _MyCodecISRFunction(); MYCODEC::IVIDDEC2::process() { : …. set up for frame decode HDVICP_configure(vc1d, vc1d>hdvicpHandle, VC1DISRFunction); HDVICP_wait(vc1D, vc1d>hdvicpHandle); // Release of HOST …. End of frame processing } void VC1DISRFunction(IALG_Handle handle) { VC1VDEC_TI_Obj *vc1d = (void *)handle; Framework Provided HDVICP Callback APIs int _doneSemaphore; HDVICP_configure(handle, hdVicpHandle, ISRFunction){ installNonBiosISR(handle, hdvicpHandle, ISRFunction); } HDVICP_wait(handle, hdVicpHandle){ SEM_pend(_doneSemaphore); } HDVICP_done(handle, hdVicpHandle) { SEM_post(_doneSemaphore) HDVICP_done(vc1d , Vc1d>hdvicpHandle); } } Figure 3-4. Interaction Between Application and Codec Note: Process call architecture to share Host resource among multiple threads. ISR ownership is with the Host layer resource manager – outside the codec. The actual codec routine to be executed during ISR is provided by the codec. OS/System related calls (SEM_pend, SEM_post) also outside the codec. Codec implementation is OS independent. The functions to be implemented by the application are: HDVICP_configure(IALG_Handle handle, void *hdvicpHandle, void (*ISRfunctionptr)(IALG_Handle handle)) This function is called by the algorithm to register its ISR function, which the application needs to call when it receives interrupts pertaining to the video task. HDVICP_wait (void *hdvicpHandle) This function is called by the algorithm to move the video task to SEMpend state. 3-9 Sample Usage HDVICP_done (void *hdvicpHandle) This function is called by the algorithm to release the video task from SEM-pend state. In the sample test application, these functions are implemented in hdvicp_framework.c file. The application can implement it in a way considering the underlying system. 3.4 Address Translations The buffers addresses(DDR addresses) as seen by Ducati(Cortex-M3) and IVA-HD(VDMA) will be different. Hence, address translations are needed to convert from one address view to another. The application needs to implement a MEMUTILS function for this address translation (which will be later implemented by the framework components). An example of the address translation function is as shown. The codec will make a call to this function from the host (cortex-M3) library. Therefore, the function name and arguments should follow the example provided below. For a given input address, this function returns the VDMA view of the buffer (that is, address as seen by IVAHD). void *MEMUTILS_getPhysicalAddr(Ptr Addr) { return ((void *)((unsigned int)Addr & VDMAVIEW_EXTMEM)); } } Sample settings for the macro VDMAVIEW_EXTMEM is as shown. #if defined(HOSTARM968_FPGA) #define VDMAVIEW_EXTMEM (0x07FFFFFF) #elif defined(HOSTCORTEXM3_OMAP4) #define VDMAVIEW_EXTMEM (0xFFFFFFFF) #elif defined(HOSTCORTEXM3_GAIA) #define VDMAVIEW_EXTMEM (0x1FFFFFFF) #else #define VDMAVIEW_EXTMEM (0x07FFFFFF) #endif 3.5 Sample Test Application The test application exercises the IVC1VDEC extended class of the VC1 Decoder. 3-10 Sample Usage Table 3-1. Process ( ) Implementation /* Main Function acting as a client for Video Decode Call */ BUFFMGR_Init(); TestApp_SetInitParams(¶ms.viddecParams); RMAN_AssignResources(&hdvicpObj); /*---------------- Decoder creation -----------------*/ handle = (IALG_Handle) VC1VDEC_create(); /* Get Buffer information */ VC1VDEC_control(handle, XDM_GETBUFINFO); /* Do-While Loop for Decode Call for a given stream */ do{ /* Read the bitstream in the Application Input Buffer*/ validBytes = ReadByteStream(inFile); /* Get free buffer from buffer pool */ buffEle = BUFFMGR_GetFreeBuffer(); /* Optional: Set Run-time parameters in the Algorithm via control() */ VC1VDEC_control(handle, XDM_SETPARAMS); /* Start the process : To start decoding a frame*/ /* This will always follow a VC1VDEC_decode_end call */ retVal = VC1VDEC_decode(handle,(XDM1_BufDesc *)&inputBufDesc,(XDM_BufDesc *)&outputBufDesc, (IVIDDEC1_InArgs *)&inArgs,(IVIDDEC1_OutArgs *)&outArgs ); /* Get the statatus of the decoder using comtrol */ VC1VDEC_control(handle, IVC1VDEC_GETSTATUS); /* Get Buffer information: */ VC1VDEC_control(handle, XDM_GETBUFINFO); /* Optional: Reinit the buffer manager in case the /* frame size is different*/ BUFFMGR_ReInit(); /* Always release buffers - which are released from /* the algorithm side -back to the buffer manager*/ 3-11 Sample Usage BUFFMGR_ReleaseBuffer((XDAS_UInt32 *)outArgs.freeBufID); }while(1); /* end of Do-While loop - which decodes frames */ /* Reset the decode process. Bring the decoder to */ /* the state where decode process can start afresh */ VC1VDEC_control(handle, XDM_RESET); ALG_delete (handle); BUFFMGR_DeInit(); Note: This sample test application does not depict the actual function parameter or control code. It shows the basic flow of the code. 3-12 Chapter 4 API Reference This chapter provides a detailed description of the data structures and interfaces functions used in the codec component. Topic Page 4.1 Symbolic Constants and Enumerated Data Types 4-2 4.2 Data Structures 4-10 4.3 Default and supported parameters 4-30 4.4 Interface Functions 4-33 4-1 API Reference 4.1 Symbolic Constants and Enumerated Data Types This section describes the XDM defined data structures that are common across codec classes. These XDM data structures can be extended to define any implementation specific parameters for a codec component. Table 4-1. List of Enumerated Data Types Group or Enumeration Class Symbolic Constant Name Description or Evaluation IVIDEO_FrameType IVIDEO_NA_FRAME Frame type not available IVIDEO_I_FRAME Intra coded frame IVIDEO_P_FRAME Forward inter coded frame IVIDEO_B_FRAME Bi-directional inter coded frame IVIDEO_IDR_FRAME Intra coded frame that can be used for refreshing video content IVIDEO_II_FRAME Interlaced Frame, both fields are I frames IVIDEO_IP_FRAME Interlaced Frame, first field is an I frame, second field is a P frame IVIDEO_IB_FRAME Interlaced Frame, first field is an I frame, second field is a B frame IVIDEO_PI_FRAME Interlaced Frame, first field is a P frame, second field is a I frame IVIDEO_PP_FRAME Interlaced Frame, both fields are P frames IVIDEO_PB_FRAME Interlaced Frame, first field is a P frame, second field is a B frame IVIDEO_BI_FRAME Interlaced Frame, first field is a B frame, second field is an I frame. IVIDEO_BP_FRAME Interlaced Frame, first field is a B frame, second field is a P frame IVIDEO_BB_FRAME Interlaced Frame, both fields are B frames IVIDEO_MBAFF_I_FRAME Intra coded MBAFF frame IVIDEO_MBAFF_P_FRAME Forward inter coded MBAFF frame IVIDEO_MBAFF_B_FRAME Bi-directional inter coded MBAFF frame 4-2 API Reference Group or Enumeration Class IVIDEO_ContentType IVIDEO_FrameSkip Symbolic Constant Name Description or Evaluation IVIDEO_MBAFF_IDR_FRAME Intra coded MBAFF frame that can be used for refreshing video content. IVIDEO_FRAMETYPE_DEFAUL T Default set to IVIDEO_I_FRAME IVIDEO_CONTENTTYPE_NA Content type is not applicable IVIDEO_PROGRESSIVE IVIDEO_PROGRESSIVE_FRAM E Progressive video content IVIDEO_INTERLACED IVIDEO_INTERLACED_FRAME Interlaced video content IVIDEO_INTERLACED_TOPFI ELD Interlaced video content, Top field IVIDEO_INTERLACED_TOPFI ELD Interlaced video content, Bottom field IVIDEO_CONTENTTYPE_DEFA ULT Default set to IVIDEO_NO_SKIP Do not skip the current frame. Default Value Not supported in this version of VC1 Decoder IVIDEO_SKIP_P Skip forward inter coded frame. Not supported in this version of VC1 Decoder. IVIDEO_SKIP_B Skip bi-directional inter coded frame. Not supported in this version of VC1 Decoder. IVIDEO_SKIP_I Skip intra coded frame. Not supported in this version of VC1 Decoder. IVIDEO_SKIP_IP Skip I and P frame/field(s) Not supported in this version of VC1 Decoder. IVIDEO_SKIP_IB Skip I and B frame/field(s). Not supported in this version of VC1 Decoder. IVIDEO_SKIP_PB Skip P and B frame/field(s). Not supported in this version of VC1 Decoder. IVIDEO_SKIP_IPB Skip I/P/B/BI frames Not supported in this version of VC1 Decoder. IVIDEO_PROGRESSIVE 4-3 API Reference Group or Enumeration Class IVIDEO_VideoLayout IVIDEO_OperatingMode IVIDEO_OutputFrameStatus 4-4 Symbolic Constant Name Description or Evaluation IVIDEO_SKIP_IDR Skip IDR Frame Not supported in this version of VC1 Decoder. IVIDEO_SKIP_NONREFERENC E Skip non reference frame Not supported in this version of VC1 Decoder. IVIDEO_SKIP_DEFAULT Default set to IVIDEO_NO_SKIP IVIDEO_FIELD_INTERLEAVE D Buffer layout is interleaved. IVIDEO_FIELD_SEPARATED Buffer layout is field separated. IVIDEO_TOP_ONLY Buffer contains only top field. IVIDEO_BOTTOM_ONLY Buffer contains only bottom field IVIDEO_DECODE_ONLY Decoding Mode IVIDEO_ENCODE_ONLY Encoding Mode IVIDEO_TRANSCODE_FRAME LEVEL Transcode Mode of operation (encode/decode), which consumes /generates transcode information at the frame level. IVIDEO_TRANSCODE_MBLEV EL Transcode Mode of operation (encode/decode), which consumes /generates transcode information at the MB level. Not supported in this version of VC1 Decoder IVIDEO_TRANSRATE_FRAME LEVEL Transrate Mode of operation for encoder, which consumes transrate information at the frame level. Not supported in this version of VC1 Decoder IVIDEO_TRANSRATE_MBLEV EL Transrate Mode of operation for encoder, which consumes transrate information at the MB level. Not supported in this version of VC1 Decoder IVIDEO_FRAME_NOERROR Output buffer is available. IVIDEO_FRAME_NOTAVAILAB LE Codec does not have any output buffers. IVIDEO_FRAME_ERROR Output buffer is available and corrupted. IVIDEO_OUTPUTFRAMESTATU S_DEFAULT Default set to IVIDEO_FRAME_NOERROR API Reference Group or Enumeration Class Symbolic Constant Name Description or Evaluation IVIDEO_PictureType IVIDEO_NA_PICTURE Frame type not available IVIDEO_I_PICTURE Intra coded picture IVIDEO_P_PICTURE Forward inter coded picture IVIDEO_B_PICTURE Bi-directional inter coded picture IVIDEO_FIXEDLENGTH Input to the decoder is in multiples of a fixed length (example, 4K) (input side for decoder) IVIDEO_SLICEMODE Slice mode of operation (Input side for decoder). Not supported in this version of VC1 Decoder. IVIDEO_NUMROWS Number of rows, each row is 16 lines of video (output side for decoder). Not supported in this version of VC1 Decoder. IVIDEO_ENTIREFRAME Processing of entire frame data IVIDEO_DECODE_ONLY Decoding mode. IVIDEO_ENCODE_ONLY Encoding mode. IVIDEO_TRANSCODE_FRAME LEVEL Transcode mode of operation encode/decode) which consumes/generates transcode information at the frame level. Not supported in this version of VC1 Decoder. IVIDEO_TRANSRATE_FRAME LEVEL Transcode mode of operation encode/decode) which consumes/generates transcode information at the MB level. Not supported in this version of VC1 Decoder. IVIDEO_TRANSRATE_MBLEV EL Transrate mode of operation encode/decode) which consumes/generates transcode information at the Frame level. Not supported in this version of VC1 Decoder. IVIDEO_TRANSCODE_MBLEV EL Transrate mode of operation encode/decode) which consumes/generates transcode information at the MB level. Not supported in this version of VC1 Decoder. IVIDEO_DataMode IVIDEO_DataMode 4-5 API Reference Group or Enumeration Class Symbolic Constant Name Description or Evaluation IVIDDEC3_displayDelay IVIDDEC3_DISPLAY_DELAY_ AUTO Decoder decides the display delay IVIDDEC3_DECODE_ORDER Display frames are in decoded order without delay Other than IVIDDEC3_DECODE_ORDER and IVIDDEC3_DISPLAY_DELAY_AUT O are not supported in this version of VC1 decoder. IVIDDEC3_DISPLAY_DELAY_ 1 Display the frames with 1 frame delay IVIDDEC3_DISPLAY_DELAY_ 2 Display the frames with 2 frame delay IVIDDEC3_DISPLAY_DELAY_ 3 Display the frames with 3 frame delay IVIDDEC3_DISPLAY_DELAY_ 4 Display the frames with 4 frame delay IVIDDEC3_DISPLAY_DELAY_ 5 Display the frames with 5 frame delay IVIDDEC3_DISPLAY_DELAY_ 6 Display the frames with 6 frame delay IVIDDEC3_DISPLAY_DELAY_ 7 Display the frames with 7 frame delay IVIDDEC3_DISPLAY_DELAY_ 8 Display the frames with 8 frame delay IVIDDEC3_DISPLAY_DELAY_ 9 Display the frames with 9 frame delay IVIDDEC3_DISPLAY_DELAY_ 10 Display the frames with 10 frame delay IVIDDEC3_DISPLAY_DELAY_ 11 Display the frames with 11 frame delay IVIDDEC3_DISPLAY_DELAY_ 12 Display the frames with 12 frame delay IVIDDEC3_DISPLAY_DELAY_ 13 Display the frames with 13 frame delay IVIDDEC3_DISPLAY_DELAY_ 14 Display the frames with 14 frame delay IVIDDEC3_DISPLAY_DELAY_ 15 Display the frames with 15 frame delay 4-6 API Reference Group or Enumeration Class XDM_DataFormat XDM_ChromaFormat Symbolic Constant Name Description or Evaluation IVIDDEC3_DISPLAY_DELAY_ 16 Display the frames with 16 frame delay IVIDDEC3_DISPLAYDELAY_D EFAULT Same as XDM_BYTE Big endian stream (default value) XDM_LE_16 16-bit little endian stream. Not supported in this version of VC1 Decoder. XDM_LE_32 32-bit little endian stream. Not supported in this version of VC1 Decoder. XDM_LE_64 64-bit little endian stream. Not supported in this version of VC1 Decoder. XDM_BE_16 16-bit big endian stream. Not supported in this version of VC1 Decoder. XDM_BE_32 32-bit big endian stream. Not supported in this version of VC1 Decoder. XDM_BE_64 64-bit big endian stream. Not supported in this version of VC1 Decoder. XDM_YUV_420P YUV 4:2:0 planar. Not supported in this version of VC1 Decoder. XDM_YUV_422P YUV 4:2:2 planar. Not supported in this version of VC1 Decoder. XDM_YUV_422IBE YUV 4:2:2 interleaved (big endian). Not supported in this version of VC1 Decoder. XDM_YUV_422ILE YUV 4:2:2 interleaved (little endian) (default value). Not supported in this version of VC1 Decoder. XDM_YUV_444P YUV 4:4:4 planar. Not supported in this version of VC1 Decoder. IVIDDEC3_DISPLAY_DELAY_AU TO 4-7 API Reference Group or Enumeration Class XDM_MemoryType XDM_CmdId 4-8 Symbolic Constant Name Description or Evaluation XDM_YUV_411P YUV 4:1:1 planar. Not supported in this version of VC1 Decoder. XDM_GRAY Gray format. Not supported in this version of VC1 Decoder. XDM_RGB RGB color format. Not supported in this version of VC1 Decoder. XDM_YUV_420SP YUV 4:2:0 chroma semi-planar XDM_ARGB8888 ARGB8888 color format. Not supported in this version of VC1 Decoder. XDM_RGB555 RGB555 color format. Not supported in this version of VC1 Decoder. XDM_RGB565 RGB565 color format. Not supported in this version of VC1 Decoder. XDM_YUV_444ILE YUV 4:4:4 interleaved (little endian) color format. Not supported in this version of VC1 Decoder. XDM_MEMTYPE_ROW Raw Memory Type XDM_MEMTYPE_TILED8 2D memory in 8-bit container of tiled memory space XDM_MEMTYPE_TILED16 2D memory in 16-bit container of tiled memory space XDM_MEMTYPE_TILED32 2D memory in 32-bit container of tiled memory space XDM_MEMTYPE_TILEDPAGE 2D memory in page container of tiled memory space XDM_GETSTATUS Query algorithm instance to fill Status structure XDM_SETPARAMS Set run-time dynamic parameters via the DynamicParams structure XDM_RESET Reset the algorithm. API Reference Group or Enumeration Class Symbolic Constant Name Description or Evaluation XDM_SETDEFAULT Initialize all fields in Params structure to default values specified in the library. XDM_FLUSH Handle end of stream conditions. This command forces algorithm instance to output data without additional input. XDM_GETBUFINFO Query algorithm instance regarding the properties of input and output buffers XDM_GETVERSION Query the algorithm’s version. The result will be returned in the @ data field of the Status structure The application should provide a buffer of minimum size of 200 bytes to hold the version information. The buffer will be provided to codec through data field as mentioned above. XDM_AccessMode IVC1VDEC_mbErrStatus XDM_GETDYNPARAMSDEFAULT Query algorithm instance regarding the dynamic parameters default values XDM_ACCESSMODE_READ The algorithm read from the buffer using the CPU. XDM_ACCESSMODE_WRITE The algorithm wrote from the buffer using the CPU IVC1VDEC_MB_NOERROR This indicates that the current MB is not erroneous. IVC1VDEC_MB_ERROR This indicates that the current MB is erroneous. 4-9 API Reference 4.2 Data Structures This section describes the XDM defined data structures, which are common across codec classes. These XDM data structures can be extended to define any implementation specific parameters for a codec component. 4.2.1 Common XDM Data Structures This section includes the following common XDM data structures: 4.2.1.1 XDM2_SingleBufDesc XDM2_BufDesc XDM1_AlgBufInfo IVIDEO2_BufDesc IVIDDEC3_Fxns IVIDDEC3_Params IVIDDEC3_DynamicParams IVIDDEC3_InArgs IVIDDEC3_Status IVIDDEC3_OutArgs XDM2_SingleBufDesc ║ Description This structure defines the buffer descriptor for single input and output buffers. ║ Fields Field Data Type Input/ Output Description *buf XDAS_Int8 Input Pointer to the buffer memType XDAS_Int32 Input Type of memory. See XDM_MemoryType enumeration for more details. bufSize XDM2_BufSize Input Size of the buffer(for tile memory/row memory) accessMask XDAS_Int32 Output If the buffer was not accessed by the algorithm processor (for example, it was filled by DMA or other hardware accelerator that does not write through the algorithm CPU), then bits in this mask should not be set. 4-10 API Reference 4.2.1.2 XDM2_BufSize ║ Description This defines the union describing a buffer size. ║ Fields Field Data Type Input/ Output Description width XDAS_Int32 Input Width of buffer in 8-bit bytes. Required only for tile memory. height XDAS_Int32 Input Height of buffer in 8-bit bytes. Required only for tile memory. bytes XDM2_BufSi ze Input Size of the buffer in bytes 4.2.1.3 XDM2_BufDesc ║ Description This structure defines the buffer descriptor for output buffers. ║ Fields Field Data Type Input/ Output Description numBufs XDAS_Int32 Input Number of buffers descs[XDM_MAX _IO_BUFFERS] XDM2_Singl eBufDesc Input Array of buffer descriptors 4.2.1.4 XDM1_AlgBufInfo ║ Description This structure defines the buffer information descriptor for input and output buffers. This structure is filled when you invoke the control() function with the XDM_GETBUFINFO command. ║ Fields Field Data Type Input/ Output Description minNumInBufs XDAS_Int32 Output Number of input buffers minNumOutBufs XDAS_Int32 Output Number of output buffers minInBufSize[XDM_MAX_IO _BUFFERS] XDM2_BufSize Output Size required for each input buffer 4-11 API Reference Field Data Type Input/ Output Description minOutBufSize[XDM_MAX_I O_BUFFERS] XDM2_BufSize Output Size required for each output buffer inBufMemoryType[XDM_MAX _IO_BUFFERS] XDAS_Int32 Output Memory type for each input buffer outBufMemoryType[XDM_MA X_IO_BUFFERS] XDAS_Int32 Output Memory type for each output buffer minNumBufSets XDAS_Int32 Output Minimum number of buffer sets for buffer management Note: For VC1 Advanced Profile Decoder, the buffer details are: Number of input buffer required is 1. Number of output buffer required is 2 for YUV420 SP. For frame mode of operation, there is no restriction on input buffer size except that it should contain atleast one frame of encoded data. The output buffer sizes (in bytes) for worst case 1080p format are: For YUV 420 SP: Y buffer = (((1920+ 2*PAD_LUMA_X +127)>>7)<<7) * (1088 + 2*PAD_LUMA_Y) UV buffer = (((1920+ 2*PAD_CHROMA_X +127)>>7)<<7) * (544 + 4*PAD_CHROMA_Y) Where, PAD_LUMA_X = 32 PAD_LUMA_Y = 40 PAD_CHROMA_X = 32 PAD_CHROMA_Y = 20 These are the maximum buffer sizes but they can be reconfigured depending on the format of the bit-stream. 4.2.1.5 IVIDEO2_BufDesc ║ Description This structure defines the buffer descriptor for input and output buffers. ║ Fields Field Data Type Input/ Output Description numPlanes XDAS_Int32 Input/O utput Number of buffers for video planes numMetaPlanes XDAS_Int32 Input/O utput Number of buffers for Metadata dataLayout XDAS_Int32 Input/O Video buffer layout. See 4-12 API Reference Field Data Type Input/ Output Description utput IVIDEO_VideoLayout enumeration for more details planeDesc [IVIDEO_MAX_NUM_PLANES] XDM1_Singl eBufDesc Input/O utput Description for video planes metadataPlaneDesc [IVIDEO_MAX_NUM_METADATA_PLA NES] XDM1_Singl eBufDesc Input/O utput Description for metadata planes XDAS_Int32 Input/O utput Offset value for second field in planeDesc buffer (width in pixels) Input/O utput Offset value for second field in planeDesc buffer (height in lines) Input/O utput Image pitch, common for all planes Input/O utput Decoded image region including padding /encoder input image Input/O utput Actual display region/capture region secondFieldOffsetWidth[IVIDE O_MAX_NUM_PLANES] secondFieldOffsetHeight[IVID EO_MAX_NUM_PLANES] XDAS_Int32 imagePitch XDAS_Int32 imageRegion XDM_Rect activeFrameRegion XDM_Rect extendedError XDAS_Int32 Input/O utput Provision for informing the error type if any frameType XDAS_Int32 Input/O utput Video frame types. See enumeration IVIDEO_FrameType. Not applicable for encoders topFieldFirstFlag XDAS_Int32 Input/O utput Indicates when the application (should display)/(had captured) the top field first. Not applicable for progressive content. repeatFirstFieldFlag XDAS_Int32 Input/O utput Indicates when the first field should be repeated. Not applicable for encoders. frameStatus XDAS_Int32 Input/O utput Video in/out buffer status. Not applicable for encoders. repeatFrame XDAS_Int32 Input/O utput Number of times to repeat the displayed frame. Not applicable for encoders. contentType XDAS_Int32 Input/O utput Video content type. See Input/O utput Chroma format for encoder input data/decoded output buffer. See chromaFormat XDAS_Int32 IVIDEO_ContentType 4-13 API Reference Field Data Type Input/ Output Description XDM_ChromaFormat enumeration for details. scalingWidth XDAS_Int32 Input/O utput Scaled image width for post processing for decoder. This field is updated when scaling parameters are present in the bitstream scalingHeight XDAS_Int32 Input/O utput Scaled image height for post processing for decoder. This field is updated when scaling parameters are present in the bitstream. rangeMappingLuma XDAS_Int32 Input/O utput The process of rescaling decoded pixels is called range mapping. The Luma scale factor for range mapping is indicated by this field. This field takes the value from 0 to 7. rangeMappingChroma XDAS_Int32 Input/O utput The process of rescaling decoded pixels is called range mapping. The chroma scale factor for range mapping is indicated by this field. This field takes the value from 0 to 7. enableRangeReductionFlag XDAS_Int32 Input/O utput This flag indicates that the decoded pixel values are scaled by a scaling factor indicated by rangeMappingLuma & rangeMappingChroma. This information can be used by the application for post processing. This flag is updated only for advanced profile streams. 4-14 API Reference Note: IVIDEO_MAX_NUM_PLANES: Max YUV buffers - one each for Y, U, and V. Metaplane data is not given out in this version of the codec. The following parameters are not supported/updated in this version of the decoder repeatFrame The Range mapping for luma and chroma should be done by the application, using the below formulae. Y[n] = CLIP ((((Y[n] – 128) * (rangeMappingLuma + 9) + 4) >> 3) + 128); Cb[n] = CLIP ((((Cb[n] – 128) * (rangeMappingChroma + 9) + 4) >> 3) + 128); Cr[n] = CLIP ((((Cr[n] – 128) * (rangeMappingChroma + 9) + 4) >> 3) + 128); Where, Y[n] corresponds to every Luma pixel, Cb[n] and Cr[n] correpond to every choma pair. 4-15 API Reference 4.2.1.6 IVIDDEC3_Fxns ║ Description This structure contains pointers to all the XDAIS and XDM interface functions. ║ Fields Field Data Type Input/ Output Description Ialg IALG_Fxns Input Structure containing pointers to all the XDAIS interface functions. For more details, see TMS320 DSP Algorithm Standard API Reference (literature number SPRU360). *process XDAS_Int32 Input Pointer to the process() function *control XDAS_Int32 Input Pointer to the control() function 4.2.1.7 IVIDDEC3_Params ║ Description This structure defines the creation parameters for an algorithm instance object. Set this data structure to NULL, if you are not sure of the values to be specified for these parameters. ║ Fields Field Data Type Input/ Output Description Size XDAS_Int32 Input Size of the basic or extended (if being used) data structure in bytes. maxHeight XDAS_Int32 Input Maximum video height to be supported in pixels maxWidth XDAS_Int32 Input Maximum video width to be supported in pixels maxFrameRate XDAS_Int32 Input Maximum frame rate in fps * 1000 to be supported. maxBitRate XDAS_Int32 Input Maximum bit-rate to be supported in bits per second. For example, if bit-rate is 10 Mbps, set this field to 10485760. dataEndianness XDAS_Int32 Input Endianness of input data. See 4-16 API Reference Field Data Type Input/ Output Description XDM_DataFormat enumeration for details. forceChromaFormat XDAS_Int32 Input Sets the output to the specified format. Only 420 semi-planar format supported currently. See XDM_ChromaFormat and eChromaFormat_t enumerations for details. operatingMode XDAS_Int32 Input Video coding mode of operation (encode/decode/transcode/transrate). Only decode mode is supported in this version. displayDelay XDAS_Int32 Input Display delay to start display. inputDataMode XDAS_Int32 Input Input mode of operation. For decoder, it is fixed length/slice mode/entire frame. outputDataMode XDAS_Int32 Input Output mode of operation. For decoder, it is row mode/entire frame. numInputDataUnits XDAS_Int32 Input Number of input slices/rows. For decoder, it is the number of slices or number of fixed length units. numOutputDataUnit s XDAS_Int32 Input Number of output slices/rows. For decoder, it is the number of rows of output. errorInfoMode XDAS_Int32 Input Enable/disable packet error information for input/output displayBufsMode XDAS_Int32 Input Indicates the displayBufs mode. This field can be set either as IVIDDEC3_DISPLAYBUFS_EMBEDDED or IVIDDEC3_DISPLAYBUFS_PTRS. 4-17 API Reference 4.2.1.8 IVIDDEC3_DynamicParams ║ Description This structure defines the run-time parameters for an algorithm instance object. Set this data structure to NULL, if you are not sure of the values to be specified for these parameters. ║ Fields Field Data Type Input/ Output Description Size XDAS_Int32 Input Size of the basic or extended (if being used) data structure in bytes. decodeHeader XDAS_Int32 Input Number of access units to decode: 0 (XDM_DECODE_AU) - Decode entire frame including all the headers 1 (XDM_PARSE_HEADER) - Decode only one NAL unit (Not Supported) displayWidth XDAS_Int32 Input If the field is set to: 0 - Uses decoded image width as pitch If any other value greater than the decoded image width is given, then this value in pixels is used as pitch. frameSkipMode XDAS_Int32 Input Frame skip mode. See IVIDEO_FrameSkip enumeration for details. newFrameFlag XDAS_Int32 Input Flag to indicate that the algorithm should start a new frame. Valid values are XDAS_TRUE and XDAS_FALSE. This is useful for error recovery, for example, when the end of frame cannot be detected by the codec but is known to the application. *putDataFxn XDM_DataSy ncPutFxn Input DataSync call back function pointer for putData putDataHandle XDM_DataSy ncHandle Input DataSync handle for putData *getDataFxn XDM_DataSy ncGetFxn Input DataSync call back function pointer for getData getDataHandle XDM_DataSy ncHandle Input DataSync handle for getData putBufferFxn XDM_DataSy ncPutBuffe rFxn Input Function pointer provided to make a sub-frame level callback to request buffers. 4-18 API Reference Field Data Type Input/ Output Description putBufferHand le XDM_DataSy ncHandle Input This is a handle which the codec must provide when calling the app-registered IVIDDEC3_DynamicParam.putBufferFxn(). lateAcquireAr g XDAS_Int32 Input Argument used during late acquire mode of IVAHD. If the codec supports late acquisition of resources,and the application has supplied a lateAcquireArg value (via #XDM_SETLATEACQUIREARG), then the codec must also provide this lateAcquireArg value when requesting resources (i.e. during their call to acquire() when requesting the resource). 4.2.1.9 IVIDDEC3_InArgs ║ Description This structure defines the run-time input arguments for an algorithm instance object. ║ Fields Field Data Type Input/ Output Description Size XDAS_Int32 Input Size of the basic or extended (if being used) data structure in bytes. numBytes XDAS_Int32 Input Size of input data (in bytes) provided to the algorithm for decoding inputID XDAS_Int32 Input Application passes this ID to algorithm and decoder will attach this ID to the corresponding output frames. This is useful in case of re-ordering (for example, B frames). If there is no re-ordering, outputID field in the IVIDDEC3_OutArgs data structure will be same as inputID field. Note: VC1 Decoder copies the inputID value to the outputID value of IVIDDEC3_OutArgs structure after factoring in the display delay. 4-19 API Reference 4.2.1.10 IVIDDEC3_Status ║ Description This structure defines parameters that describe the status of an algorithm instance object. ║ Fields Field Data Type Input/ Output Description Size XDAS_Int32 Input Size of the basic or extended (if being used) data structure in bytes. extendedError XDAS_Int32 Output Extended error code. See XDM_ErrorBit enumeration for details. data XDM1_SingleBufDesc Output Buffer information structure for information passing buffer. maxNumDisplayBufs XDAS_Int32 Output Maximum number of buffers required by the codec. maxOutArgsDisplayB ufs XDAS_Int32 Output The maximum number of display buffers that can be returned through IVIDDEC3_OutArgs.displayB ufs. outputHeight XDAS_Int32 Output Output height in pixels outputWidth XDAS_Int32 Output Output width in pixels frameRate XDAS_Int32 Output Average frame rate in fps * 1000 bitRate XDAS_Int32 Output Average bit-rate in bits per second contentType XDAS_Int32 Output Video content. See IVIDEO_ContentType enumeration for details. sampleAspectRatioH eight XDAS_Int32 Output Sample aspect ratio for height sampleAspectRatioW idth XDAS_Int32 Output Sample aspect ratio for width bitRange XDAS_Int32 Output Bit range. It is set to IVIDEO_YUVRANGE_FULL. forceChromaFormat 4-20 XDAS_Int32 Output Output chroma format. See XDM_ChromaFormat and eChromaFormat_t enumeration for details. API Reference Field Data Type Input/ Output Description operatingMode XDAS_Int32 Output Mode of operation: Encoder/Decoder/Transcode/Transr ate. It is set to IVIDEO_DECODE_ONLY. frameOrder XDAS_Int32 Output Indicates the output frame order. See IVIDDEC3_displayDelay enumeration for more details. inputDataMode XDAS_Int32 Output Input mode of operation. For decoder, it is fixed length/slice mode/entire frame. This version of the decoder supports only the and entire frame mode. outputDataMode XDAS_Int32 Output Output mode of operation. For decoder, it is the row mode/entire frame. This version of the decoder supports only the entire frame mode. bufInfo XDM_AlgBufInfo Output Input and output buffer information. See XDM_AlgBufInfo data structure for details. decDynamicParams IVIDDEC3_DynamicPar ams Output Current values of the decoder's dynamic parameters. 4.2.1.11 IVIDDEC3_OutArgs ║ Description This structure defines the run-time output arguments for an algorithm instance object. ║ Fields Field Data Type Input/ Output Description size XDAS_Int32 Input Size of the basic or extended (if being used) data structure in bytes. extendedError XDAS_Int32 Output extendedError Field bytesConsumed XDAS_Int32 Output Bytes consumed per decode call outputID[IVIDEO2 _MAX_IO_BUFFERS] XDAS_Int32 Output Output ID corresponding to displayBufs A value of zero (0) indicates an invalid ID. The first zero entry in array will indicate end of valid outputIDs within the array. Hence, the application 4-21 API Reference Field Data Type Input/ Output Description can stop reading the array when it encounters the first zero entry. decodedBufs IVIDEO2_Bu fDesc Output The decoder fills this structure with buffer pointers to the decoded frame. Related information fields for the decoded frame are also populated. When frame decoding is not complete, as indicated by outBufsInUseFlag, the frame data in this structure will be incomplete. However, the algorithm will provide incomplete decoded frame data in case application may choose to use it for error recovery purposes. freeBufID[IVIDEO 2_MAX_IO_BUFFERS ] XDAS_Int32 Output This is an array of inputIDs corresponding to the frames that have been unlocked in the current process call. outBufsInUseFlag XDAS_Int32 Output Flag to indicate that the outBufs provided with the process() call are in use. No outBufs are required to be supplied with the next process() call. displayBufsMode XDAS_Int32 Output Indicates the mode for #IVIDDEC3_OutArgs.displayBufs. bufDesc [1] IVIDEO2_Bu fDesc Output Array containing display frames corresponding to valid ID entries in the outputID array. See IVIDEO2_BufDesc data structure for more details. *pBufDesc[IVIDEO 2_MAX_IO_BUFFERS ] IVIDEO2_Bu fDesc * Output Array containing pointers to display frames corresponding to valid ID entries in the @c outputID[] Note: IVIDEO2_MAX_IO_BUFFERS - Maximum number of I/O buffers set to 20. The display buffer mode can be set as either IVIDDEC3_DISPLAYBUFS_EMBEDDED or IVIDDEC3_DISPLAYBUFS_PTRS. The current implementation of the decoder will always return a maximum of one display buffer per process call. If the mode is IVIDDEC3_DISPLAYBUFS_EMBEDDED, then the instance of the display buffer structure will be present in OutArgs. If the mode is IVIDDEC3_DISPLAYBUFS_PTRS, then a pointer to the instance will be present in OutArgs, 4-22 API Reference 4.2.2 VC1 Decoder Data Structures This section includes the following VC1Decoder specific data structures: 4.2.2.1 IVC1VDEC_Params IVC1VDEC_DynamicParams IVC1VDEC_InArgs IVC1VDEC_Status IVC1VDEC_OutArgs IVC1VDEC_TI_MbInfo IVC1VDEC _Params ║ Description This structure defines the creation parameters and any other implementation specific parameters for an VC1 Decoder instance object. The creation parameters are defined in the XDM data structure, IVIDDEC3_Params. ║ Fields Field Data Type Input/ Output Description viddec3Params IVIDDEC3_Params Input See IVIDDEC3_Params data structure for details. errorConcealmen tON XDAS_Int32 Input This parameter is used to enable (or) disable the error concealment. Possible values are 0 (disable) & 1 (enable) frameLayerDataP resentFlag XDAS_Int32 Input Possible values are 0 (Frame layer data not present) & 1 (Frame layer data present) This flag is used by the codec only if the bit-stream is in RCV format. Refer Chapter 9, section 9.1.2.1 for more details. debugTraceLevel XDAS_UInt32 Input This parameter specifies the debug trace level Possible values are 0 to 4 lastNFramesTolo g XDAS_UInt32 Input This variable specifies the number of most recent frames to log in debug trace Possible values are 0 to 10 4-23 API Reference 4.2.2.2 IVC1VDEC_DynamicParams ║ Description This structure defines the run-time parameters and any other implementation specific parameters for an VC1 instance object. The runtime parameters are defined in the XDM data structure, IVIDDEC3_DynamicParams. ║ Fields Field Data Type Input/ Output Description viddec3DynamicParam s IVIDDEC3_DynamicPara ms Input See IVIDDEC3_DynamicParams data structure for details. 4.2.2.3 IVC1VDEC_InArgs ║ Description This structure defines the run-time input arguments for an VC1 instance object. ║ Fields Field Data Type Input/ Output Description viddec3InArgs IVIDDEC3_InArgs Input See IVIDDEC3_InArgs data structure for details. 4.2.2.4 IVC1VDEC_Status ║ Description This structure defines parameters that describe the status of the VC1 Decoder and any other implementation specific parameters. The status parameters are defined in the XDM data structure, IVIDDEC3_Status. ║ Fields Field Data Type Input/ Output Description viddec3Status IVIDDEC3_Status Output See IVIDDEC3_Status data structure for details extendedError Code0 XDAS_UInt32 Output Bit 0 to 31 of the error status extendedError Code1 XDAS_UInt32 Output Bit 32 to 63 of the error status 4-24 API Reference Field Data Type Input/ Output Description extendedError Code2 XDAS_UInt32 Output Bit 64 to 95 of the error status extendedError Code2 XDAS_UInt32 Output Bit 96 to 127 of the error status debugTraceLev el XDAS_UInt32 Output Specifies the debug trace level.VC-1 decoder will support till level 4. lastNFramesTo log XDAS_UInt32 Output Specifies the number of most recent frames to log in debug trace. extMemoryDebu gTraceAddr XDAS_UInt32 * Output Pointer to debug trace structure in external memory. extMemoryDebu gTraceSize XDAS_UInt32 Output Size of debug trace structure. 4.2.2.5 IVC1VDEC_OutArgs ║ Description This structure defines the run-time output arguments for the VC1 Decoder instance object. ║ Fields Field Data Type Input/ Output Description viddec3OutArgs IVIDDEC3_OutArgs Output See IVIDDEC3_OutArgs data structure for details. 4.2.2.6 IVC1VDEC_TI_MbInfo ║ Description This structure defines the Mb info fields for the VC1 Decoder. ║ Fields Field Data Type Input/ Output Description mb_addr XDAS_UInt8 Output It is equal to the macroblock address (counter) in the picture. 4-25 API Reference Field Data Type Input/ Output Description error_flag XDAS_UInt8 Output This indicates that an error was detected while decoding the macroblock. . If error_flag = 1, the contents of macroblock header data are not ensured. This means ECD3 outputs right data for the first 64-bit of macroblock header, but the other parts of macroblock header data may be corrupted. first_mb_flag XDAS_UInt8 Output This indicates that the current MB is the first MB in the slice. pic_bound_b XDAS_UInt8 Output This indicates that the current MB is at the bottom edge of the picture pic_bound_u XDAS_UInt8 Output This indicates that the current MB is at the upper edge of the picture pic_bound_r XDAS_UInt8 Output This indicates that the current MB is at the right edge of the picture pic_bound_l XDAS_UInt8 Output This indicates that the current MB is at the left boundary of the picture mb_ur_avail XDAS_UInt8 Output This indicates whether the current MB has the upper right pixels available. (in the same slice). mb_uu_avail XDAS_UInt8 Output This indicates whether the current MB has the upper pixels available. (in the same slice). mb_ul_avail XDAS_UInt8 Output This indicates whether the current MB has the upper left pixels available. (in the same slice). mb_ll_avail XDAS_UInt8 Output This indicates whether the current MB has the left pixels available. (in the same slice). fmt_type XDAS_UInt8 Output This is always 0x08. which is Bi-4-MV Macroblock Header Format codec_type XDAS_UInt8 Output This indicated the codec type. This is always 0x3 for VC1 decoder. dc_coef_q_y[4] XDAS_UInt8 Output These are the 4 DC co-efficient values of each of the 8x8 Luma block dc_coef_q_cr XDAS_UInt8 Output This is the DC co-efficient value for the 8x8 Cr block dc_coef_q_cb XDAS_UInt8 Output This is the DC co-efficient value for the 8x8 Cb block 4-26 API Reference Field Data Type Input/ Output Description block_type_cr XDAS_UInt8 Output This is the block type of Cr block 0: Intra, 1: Inter 8x8, 2: Inter 8x4, 3: Inter 4x8, 4: Inter 4x4 block_type_cb XDAS_UInt8 Output This is the block type of Cb block 0: Intra, 1: Inter 8x8, 2: Inter 8x4, 3: Inter 4x8, 4: Inter 4x4 block_type_y[4] XDAS_UInt8 Output These are the 4 block type values of each of the 8x8 Luma block 0: Intra, 1: Inter 8x8, 2: Inter 8x4, 3: Inter 4x8, 4: Inter 4x4 end_of_slice XDAS_UInt8 Output This flag is used only in AP.This indicates that this is the last MB of this slice cond_skip_flag XDAS_UInt8 Output This can be used to skip the MB if coded block pattern is 0 skip XDAS_UInt8 Output 0: Non Skipped MB 1: Skipped MB overlap XDAS_UInt8 Output Indicates that overlap filtering is in use for the macroblock. 0: overlap filtering is off 1: overlap filtering is on acpred XDAS_UInt8 Output Indicates that AC prediction is in use for the macroblock. 0: AC prediction is off 1: AC prediction is on b_picture_direc tion XDAS_UInt8 Output denotes inter-prediction direction for the macroblock in B-picture 0: direct 1: forward 2: backward 3: interpolated 4: switched to backward 5: switched to forward mv_mode XDAS_UInt8 Output Denotes the number of motion vectors 0: Intra (no motion vector), 1: 1-MV, 2: 2-MV, 3: 4-MV 4-27 API Reference Field Data Type Input/ Output Description Fieldtx XDAS_UInt8 Output Indicates that the field transform is in use for the macroblock. 0: Frame transform, 1: Field transform mv_type XDAS_UInt8 Output Indicates that field inter-prediction is in use (motion compensation is in field-mode). This field is used in interlace frames only. 0: Frame prediction mode, 1: Field prediction mode Refdist XDAS_UInt8 Output This equals the reference frame distance. This field is valid for decoding interlace field only, and used for co-located macroblock in anchor frame mquant_overflow XDAS_UInt8 Output Indicates that macroblock quantizer-scale (MQUANT) overflows. 0: MQUANT does not overflow, 1: MQUANT overflows quant XDAS_UInt8 Output Equals the quantizer-scale for the macroblock halfqp XDAS_UInt8 Output 1 indicates that 0.5 shall be added to PQUANT in calculation of quantizer-scale. This field is valid for decoding only. 0: quantizer = PQUANT, 1: quantizer = PQUANT + 1/2 dc_step_size XDAS_UInt8 Output Equals the DC coefficient step size which is derived from MQUANT in the bit-stream cbp_cr XDAS_UInt8 Output Denotes the coded sub-block pattern for cr block cbp_cb XDAS_UInt8 Output Denotes the coded sub-block pattern for cb block cbp_y[3] XDAS_UInt8 Output Denotes the coded sub-block pattern for luma blocks mv_bw_ref_y[4] XDAS_UInt8 Output Contains the backward reference field picture mv_fw_ref_y[3] XDAS_UInt8 Output Contains the forward reference field picture mv_fw_y[4][4] XDAS_UInt8 Output Unclipped forward motion vectors for luma mv_bw_y[1][1] XDAS_UInt8 Output Unclipped backward motion vector for luma mv_bw_c[2] XDAS_UInt8 Output Unclipped backward motion vector for chroma mv_fw_c[2] XDAS_UInt8 Output Unclipped forward motion vector for chroma cmv_fw_y[4][4] XDAS_UInt8 Output Clipped forward motion vector for luma 4-28 API Reference Field Data Type Input/ Output Description cmv_bw_y[4][4] XDAS_UInt8 Output Clipped backward motion vector for luma cmv_fw_c[4][4] XDAS_UInt8 Output Clipped forward motion vector for chroma cmv_bw_c[4][4] XDAS_UInt8 Output Clipped backward motion vector for chroma 4-29 API Reference 4.3 Default and supported parameters This section describes default and supported values for parameters of the following structures: 4.3.1 IVIDDEC3_Params IVIDDEC3_DynamicParams IVC1VDEC_Params IVC1VDEC_DynamicParams Default and supported values of IVIDDEC3_params Field Size maxHeight Default Value Sizeof(IVIDDEC3_Params) 1088 Supported Values Sizeof(IVIDDEC3_Par ams) Sizeof(IVC1VDEC_Par ams) 64 <= maxHeight <= 1080 [See Note below for additional constraint] maxWidth 1920 64 <= maxWidth <= 1920 [See Note below for additional constraint] maxFrameRate maxBitRate dataEndianness forceChromaFormat operatingMode displayDelay inputDataMode outputDataMode 4-30 30000 Don’t Care 10000000 Don’t Care XDM_BYTE XDM_BYTE XDM_YUV_420SP XDM_YUV_420SP IVIDEO_DECODE_ONLY IVIDEO_TRANSCODE_FR AMELEVEL IVIDDEC3_DISPLAY_DE LAY_AUTO IVIDDEC3_DECODE_ORD ER IVIDDEC_DISPLAY_DEL AY_1 IVIDEO_DECODE_ONLY IVIDDEC3_DISPLAY_DELAY_1 IVIDEO_ENTIREFRAME IVIDEO_ENTIREFRAME IVIDEO_ENTIREFRAME IVIDEO_ENTIREFRAME API Reference numInputDataUnits numOutputDataUnits errorInfoMode displayBufsMode metadataType[0] metadataType[1] metadataType[2] 4.3.2 0 0 0 0 IVIDEO_ERRORINFO_OFF IVIDEO_ERRORINFO_OFF IVIDDEC3_DISPLAYBUF S_EMBEDDED IVIDDEC3_DISPLAYBUF S_PTRS IVIDEO_METADATAPLAN E_NONE IVIDEO_METADATAPLAN E_MBINFO IVIDEO_METADATAPLAN E_NONE IVIDDEC3_DISPLAYBUFS_EMBEDDED IVIDEO_METADATAPLANE_NONE IVIDEO_METADATAPLANE_NONE IVIDEO_METADATAPLAN IVIDEO_METADATAPLANE_NONE E_NONE Default and supported values of IVIDDEC3_DynamicParams Field size Default Value Sizeof(IVIDDEC3_DynamicParams ) Supported Values Sizeof(IVIDDEC3_DynamicPa rams) Sizeof(IVC1VDEC_DynamicPa rams) decodeHeader displayWidth frameSkipMode newFrameFlag putDataFxn putDataHandle getDataFxn getDataHandle XDM_DECODE_AU 0 IVIDEO_NO_SKIP XDM_DECODE_AU XDM_PARSE_HEADER If YUV buffers are in RAW/TILED_PAGE region, Any value > = 0, which is a multiple of 128 bytes. If YUV buffers are in TILED region, then this parameter value is ignored. IVIDEO_NO_SKIP XDAS_TRUE XDAS_TRUE XDAS_FALSE NULL NULL NULL NULL NULL NULL NULL NULL 4-31 API Reference putBufferFxn putBufferHand le lateAcquireAr g 4.3.3 NULL NULL NULL NULL IRES_HDVICP2_UNKNOWNLATEACQUI Any Value REARG Default and supported values of IVC1VDEC_Params Field IVIDDEC3_Params Default Value See Section 4.3.1 errorConcealmentON 0 frameLayerDataPresentFlag 0 Supported Values See Section 4.3.1 0 - Disable 1 - Enable 0 – Frame layer data not present. 1 – Frame layer data present debugTraceLevel 0 lastNFramesToLog 0 0 1 2 3 4 – – – – – Disable level 1 level 2 level 3 level 4 0 <= lastNFramesToLog <= 10 Note: 4.3.4 The usage of debugTraceLevel and lastNFramesToLog are explained in detail in chapter 6. The frameLayerDataPresentFlag is explained in detail in the section 9.1.2.1 of chapter 9. Default and supported values of IVC1VDEC_DynamicParams Field IVIDDEC3_DynamicPara Ms 4-32 Default Value See Section 4.3.2 Supported Values See Section 4.3.2 API Reference 4.4 Interface Functions This section describes the application programming interfaces used in the VC1 Decoder. The VC1 Decoder APIs are logically grouped into the following categories: Creation – algNumAlloc(), algAlloc() Initialization – algInit() Control – control() Data processing – algActivate(), process(), algDeactivate() Termination – algFree() You must call these APIs in the following sequence: 1) algNumAlloc() 2) algAlloc() 3) algInit() 4) algActivate() 5) process() 6) algDeactivate() 7) algFree() control() can be called any time after calling the algInit() API. 4-33 API Reference 4.4.1 Creation APIs Creation APIs are used to create an instance of the component. The term creation could mean allocating system resources, typically memory. ║ Name algNumAlloc() – determine the number of buffers that an algorithm requires ║ Synopsis XDAS_Int32 algNumAlloc(Void); ║ Arguments Void ║ Return Value XDAS_Int32; /* number of buffers required */ ║ Description algNumAlloc() returns the number of buffers that the algAlloc() method requires. This operation allows you to allocate sufficient space to call the algAlloc() method. algNumAlloc() may be called at any time and can be called repeatedly without any side effects. It always returns the same result. The algNumAlloc() API is optional. For more details, see TMS320 DSP Algorithm Standard API Reference. ║ See Also algAlloc() 4-34 API Reference ║ Name algAlloc() – determine the attributes of all buffers that an algorithm requires ║ Synopsis XDAS_Int32 algAlloc(const IALG_Params *params, IALG_Fxns **parentFxns, IALG_MemRec memTab[]); ║ Arguments IALG_Params *params; /* algorithm specific attributes */ IALG_Fxns **parentFxns;/* output parent algorithm functions */ IALG_MemRec memTab[]; /* output array of memory records */ ║ Return Value XDAS_Int32 /* number of buffers required */ ║ Description algAlloc() returns a table of memory records that describe the size, alignment, type, and memory space of all buffers required by an algorithm. If successful, this function returns a positive non-zero value indicating the number of records initialized. The first argument to algAlloc() is a pointer to a structure that defines the creation parameters. This pointer may be NULL; however, in this case, algAlloc(), must assume default creation parameters and must not fail. The second argument to algAlloc() is an output parameter. algAlloc() may return a pointer to its parent’s IALG functions. Since the client does not require a parent object to be created, this pointer must be set to NULL. The third argument is a pointer to a memory space of size nbufs * sizeof(IALG_MemRec) where, nbufs is the number of buffers returned by algNumAlloc() and IALG_MemRec is the buffer-descriptor structure defined in ialg.h. After calling this function, memTab[] is filled up with the memory requirements of an algorithm. For more details, see TMS320 DSP Algorithm Standard API Reference. ║ See Also algNumAlloc(), algFree() 4-35 API Reference 4.4.2 Initialization API Initialization API is used to initialize an instance of the VC1 Decoder. The initialization parameters are defined in the IVIDDEC3_Params structure (see Data Structures section for details). ║ Name algInit() – initialize an algorithm instance ║ Synopsis XDAS_Int32 algInit(IALG_Handle handle, IALG_MemRec memTab[], IALG_Handle parent, IALG_Params *params); ║ Arguments IALG_Handle handle; /* handle to the algorithm instance*/ IALG_memRec memTab[]; /* array of allocated buffers */ IALG_Handle parent; /* handle to the parent instance */ IALG_Params *params; /* algorithm initialization parameters */ ║ Return Value IALG_EOK; /* status indicating success */ IALG_EFAIL; /* status indicating failure */ ║ Description algInit() performs all initialization necessary to complete the run-time creation of an algorithm instance object. After a successful return from algInit(), the instance object is ready to be used to process data. The first argument to algInit() is a handle to an algorithm instance. This value is initialized to the base field of memTab[0]. The second argument is a table of memory records that describe the base address, size, alignment, type, and memory space of all buffers allocated for an algorithm instance. The number of initialized records is identical to the number returned by a prior call to algAlloc(). The third argument is a handle to the parent instance object. If there is no parent object, this parameter must be set to NULL. The last argument is a pointer to a structure that defines the algorithm initialization parameters. All fields in the params structure must be set as described in IALG_Params structure (see Data Structures section for details). For more details, see TMS320 DSP Algorithm Standard API Reference. ║ See Also algAlloc(), algMoved() 4-36 API Reference 4.4.3 Control API Control API is used for controlling the functioning of VC1 Decoder during run-time. This is done by changing the status of the controllable parameters of the decoder during run-time. These controllable parameters are defined in the IVIDDEC3_DynamicParams data structure (see Data Structures section for details). ║ Name control() – change run-time parameters of the VC1 Decoder and query the decoder status ║ Synopsis XDAS_Int32 (*control)(IVIDDEC3_Handle handle, IVIDDEC3_Cmd id,IVIDDEC3_DynamicParams *params, IVIDDEC3_Status *status); ║ Arguments IVIDDEC3_Handle handle; /* handle to the VC1 decoder instance */ IVIDDEC3_Cmd id; /* VC1 decoder specific control commands*/ IVIDDEC3_DynamicParams *params /* VC1 decoder run-time parameters */ IVIDDEC3_Status *status /* VC1 decoder instance status parameters */ ║ Return Value IALG_EOK; /* status indicating success */ IALG_EFAIL; /* status indicating failure */ ║ Description This function changes the run-time parameters of VC1 Decoder and queries the status of decoder. control() must only be called after a successful call to algInit() and must never be called after a call to algFree(). The first argument to control() is a handle to the VC1 Decoder instance object. The second argument is a command ID. See IVIDDEC3_Cmd in enumeration table for details. The third and fourth arguments are pointers to the IVIDDEC3_DynamicParams and IVIDDEC3_Status data structures respectively. ║ See Also algInit() 4-37 API Reference 4.4.4 Data Processing API Data processing API is used for processing the input data using the VC1 Decoder. ║ Name algActivate()– initialize scratch memory buffers prior to processing. ║ Synopsis Void algActivate(IALG_Handle handle); ║ Arguments IALG_Handle handle; /* algorithm instance handle */ ║ Return Value Void ║ Description algActivate() initializes any of the instance’s scratch buffers using the persistent memory that is part of the algorithm’s instance object. The first (and only) argument to algActivate() is an algorithm instance handle. This handle is used by the algorithm to identify various buffers that must be initialized prior to calling any of the algorithm’s processing methods. For more details, see TMS320 DSP Algorithm Standard API Reference. (literature number SPRU360). ║ See Also algDeactivate() 4-38 API Reference ║ Name process() – basic video decoding call ║ Synopsis XDAS_Int32 (*process)(IVIDDEC3_Handle handle, XDM1_BufDesc *inBufs, XDM_BufDesc *outBufs, IVIDDEC3_InArgs *inargs, IVIDDEC3_OutArgs *outargs); ║ Arguments IVIDDEC3_Handle handle; /* handle to the VC1 decoder instance */ XDM1_BufDesc *inBufs; /* pointer to input buffer descriptor data structure */ XDM_BufDesc *outBufs; /* pointer to output buffer descriptor data structure */ IVIDDEC3_InArgs *inargs /* pointer to the VC1 decoder runtime input arguments data structure */ IVIDDEC3_OutArgs *outargs /* pointer to the VC1 decoder runtime output arguments data structure */ ║ Return Value IALG_EOK; /* status indicating success */ IALG_EFAIL; /* status indicating failure */ ║ Description This function does the basic VC1 video decoding. The first argument to process() is a handle to the VC1 Decoder instance object. The second and third arguments are pointers to the input and output buffer descriptor data structures respectively (see XDM1_BufDesc and XDM_BufDesc data structure for details). The fourth argument is a pointer to the IVIDDEC3_InArgs data structure that defines the run-time input arguments for the VC1 Decoder instance object. Note: Prior to each decode call, ensure that all fields are set as described in XDM1_BufDesc, XDM_BufDesc, and IVIDDEC3_InArgs structures. The last argument is a pointer to the IVIDDEC3_OutArgs data structure that defines the run-time output arguments for the VC1 Decoder instance object. The algorithm may also modify the output buffer pointers. The return value is IALG_EOK for success or IALG_EFAIL in case of failure. The extendedError field of the IVIDDEC3_Status structure contains error conditions flagged by the algorithm. This structure can be populated by a calling Control API using XDM_GETSTATUS command. ║ See Also control() 4-39 API Reference ║ Name algDeactivate()– save all persistent data to non-scratch memory ║ Synopsis Void algDeactivate(IALG_Handle handle); ║ Arguments IALG_Handle handle; /* algorithm instance handle */ ║ Return Value Void ║ Description algDeactivate() saves any persistent information to non-scratch buffers using the persistent memory that is part of the algorithm’s instance object. The first (and only) argument to algDeactivate() is an algorithm instance handle. This handle is used by the algorithm to identify various buffers that must be saved prior to next cycle of algActivate() and processing. For more details, see TMS320 DSP Algorithm Standard API Reference. ║ See Also algActivate() 4-40 API Reference 4.4.5 Termination API Termination API is used to terminate the VC1 Decoder and free up the memory space that it uses. ║ Name algFree() – determine the addresses of all memory buffers used by the algorithm ║ Synopsis XDAS_Int32 algFree(IALG_Handle handle, IALG_MemRec memTab[]); ║ Arguments IALG_Handle handle; /* handle to the algorithm instance */ IALG_MemRec memTab[]; /* output array of memory records */ ║ Return Value XDAS_Int32; /* Number of buffers used by the algorithm */ ║ Description algFree() determines the addresses of all memory buffers used by the algorithm. The primary aim of doing so is to free up these memory regions after closing an instance of the algorithm. The first argument to algFree() is a handle to the algorithm instance. The second argument is a table of memory records that describe the base address, size, alignment, type, and memory space of all buffers previously allocated for the algorithm instance. For more details, see TMS320 DSP Algorithm Standard API Reference (literature number SPRU360). ║ See Also algAlloc() 4-41 API Reference This page is intentionally left blank 4-42 Chapter 5 Frequenty Asked Questions This section answers frequently asked questions related to using VC1 Advanced Profile Decoder 5.1 Code Build and Execution 5-1 5.2 Issues with Tools Version 5-1 5.3 Algorithm Related 5-2 5.1 Code Build and Execution Question Answer Build error saying that code memory section is not sufficient Make sure that project settings are not changed from the released package settings; such as making project setting as File -03 and no debug information, which throws an error that code memory section is not sufficient. Application returns an error saying “Cannot open input file “….vc1” while running the host test app Make sure that input bit-stream path is given correctly. If the application is accessing input from network, ensure that the network connectivity is stable. 5.2 Issues with Tools Version Question Answer Which simulator version should I use for this release of VC1 Decoder on IVA-HD? The IVAHD simulator version to be used is 5.0.16 and is available on the Does this release support on IVA-HD FPGA? Yes What CG tools version should I use for code compilation? The CG tools version used in this version of VC1 Decoder is 4.5.0 5-1 Frequenty Asked Questions 5.3 Algorithm Related Question Answer What XDM interface does codec support? Codec supports XDM IVIDDEC3 interface Does VC1 Decoder support non-multiple of 16 frame height and width? Yes What are the levels VC1 decoder supports? VC1 Decoder supports up to advanced profile level 3 Does this version of VC1 decoder, support RTV format? No this not included in this version Does this version of VC1 decoder expose motion vectors for a frame to the application? No Does this version of VC1 Decoder support additional tolls like Intensity compensation and Range Mapping? Yes Does decoder will support Range Mapping and Resolution scaling after frame decoding? No. The Range Mapping and Resolution scaling parameters are informed with IVIDDEC3 XDM parameters to the application. Does this version of decoder will support the display delay? Only display delay, 1 or 0 is supported in this release. Display delay 0 means decoding order. Does this version of VC1 decoder support, partial frame decode and header only decode features? Yes What is the Maximum bit rate supported by this version of VC1 Decoder? This version of decoder supports up to 45Mbps Does this version of decoder support meta-data parsing and provide the same to application? This version of decoder will parse the Metadata present in bitstream but does NOT provide to application. What is the maximum resolution supported by this version of VC1 Decoder? This version of VC1 Decoder supports resolution up to 1920x1088. 5-2 Chapter 6 Debug Trace Usage This section describes the debug trace feature supported by codec and its usage. Topic Page 6.1 Debug Trace Memory format in the VC1 Decoder 6-1 6.2 Method to configure decoder to collect debug trace 6-2 6.3 Method for application to collect debug trace 6-2 6.1 Debug Trace Memory format in the VC1 Decoder Debug trace header Debug Trace Parameters for Process Call 1 Debug Trace Parameters for Process Call 2 Debug Trace Parameters for Process Call 3 Debug Trace Parameters for Process Call 4 Debug Trace Parameters for Process Call N Debug Trace Parameters for Process Call N+1 Decoder collects and dumps the Debug Trace Information in DDR in above format. At the start of the buffer, is a header. Following the header, Debug Trace parameters for each process call is stored. There are N+1 buffers, since logs of last N process calls need to be stored and one extra buffer for current process call logs. Buffers for N+1 process calls are used in a circular manner by decoder once data for N+1 process calls are collected, decoder wraps back in the buffer and starts storing from first buffer location. 6-1 Debug Trace Usage 6.2 Method to configure decoder to collect debug trace During decoder creation, application needs to set IVC1VDEC_Params::debugTraceLevel = IVC1VDEC_DEBUGTRACE_LEVEL1. And set IVC1VDEC_Params::lastNFramesToLog = N, where N refers to number of process calls for which trace needs to be collected. Note that the buffer for debug trace collection will be requested by decoder, in DDR, during create time and size of it will be linearly proportional to N. 6.3 Method for application to collect debug trace Application can understand the address of the buffer by performing control call with XDM_GETSTATUS command. Base address of the buffer will be reported in IVC1VDEC_Status::extMemoryDebugTraceAddr. Total size of the buffer will be reported in IVC1VDEC_Status::extMemoryDebugTraceSize. NOTE: Before collecting the contents from DDR, Application needs to perform cache write back of the header portion of the buffer from M3 side. M3_Cache_WriteBack needs to be performed at address IVC1VDEC_Status::extMemoryDebugTraceAddr and for a size equal to that of header (In this release, size of header is 48 Bytes) + lastNFramesToLog * size of debug trace params (size of debug trace params is 288 bytes) 6-2 Chapter 7 Picture Format This Appendix explains picture format details for decoder. Decoder outputs YUV frames in NV 12 format. Topic Page 7.1 NV12 Chroma Format 7-1 7.2 Progressive Picture Format 7-2 7.3 Interlaced Picture Format 7-4 7.4 Constraints on Buffer Allocation for Decoder 7-6 7.1 NV12 Chroma Format NV12 is YUV 420 semi-planar with two separate planes, one for Y, one for U and V interleaved. Y1,0 Y1,1 U0,0 V0,0 U1,0 V1,0 Luma Plane Chroma Plane HEIGHT/2 Y0,1 HEIGHT Y0,0 WIDTH 7-1 Picture Format 7.2 Progressive Picture Format picLumaBufferAddr imageRegion.topLeft Y 0,1 Y 0,2 Y 0,3 Y 1,0 Y 1,1 Y 1,2 Y 1,3 ACTIVE REGION (LUMA) frameWidth maxWidth imagePitch maxHeight Y 0,0 frameHeight activeRegion.topLeft activeRegion.bottomRight picChromaBufferAddr imageRegion.bottomRight imagePitch U 0,1 V 0,1 U 1,0 V 1,0 U 1,1 V 1,1 ACTIVE REGION (CHROMA) frameWidth 7-2 maxHeight/2 V 0,0 frameHeight/2 maxWidth U 0,0 ActiveRegion and ImageRegion offsets for chroma are derived from luma offset ChromaXoffset = lumaX_offset & 0xfffffffe; ChromaYoffset = (lumaY_offset>>1) & 0xfffffffe; Picture Format Note that for decoder in case of progressive sequence: Luma and chroma buffer addresses can be allocated independently Application shall provide this through separate buffer addresses The outermost yellow coloured region is the minimum buffer that application should allocate for a given maxWidth and maxHeight activeRegion o The displayable region after cropping done by application. o The cropping information is derived from VUI information in the bitstream imageRegion o Image data decoded by the decoder whose dimensions are always multiple of 16. o Contains the activeRegion as a proper subset. Picture Buffer (pic(Luma/Chroma)BufferAddr) o Contains padded regions and extra region due to alignment constraints. o Contains the imageRegion as a proper subset. imagePitch o The difference in addresses of two vertically adjacent pixels o Typically equal to width of the picture Buffer. Padding Amounts o In horizontal direction left and right padding amounts are 32 pixels for both Luma and chroma buffers. o In vertical direction top and bottom padding amounts are 40 pixels for Luma and chroma buffers . 7-3 Picture Format 7.3 Interlaced Picture Format picLumaBufferAddr = lumaTopFieldOutput imageRegion.topLeft Padded region activeRegion.topLeft imagePitch Decoded region multiple of 16x16 macroblock Y 0,1 Y 0,2 Y 0,3 Y 2,0 Y 2,1 Y 2,2 Y 2,3 ACTIVE REGION TOP FIELD (Luma) maxWidth Display region of any integer number of pixels in horizontal and vertical direction frameHeight/2 Y 0,0 Y 1,0 Y 1,1 Y 1,2 Y 1,3 Y 3,0 Y 3,1 Y 3,2 Y 3,3 ACTIVE REGION BOTTOM FIELD (Luma) imageRegion.bottomRight frameHeight/2 activeRegion.bottomRight maxHeight frameWidth frameWidth ActiveRegion and ImageRegion offsets are same for top and bottom field For top field, offsets should be calculated from lumaTopFieldOutput For bottom field, offsets should be calculated from lumaBottomFieldOutput lumaBottomFieldOutput picChromaBufferAddr = chromaTopFieldOutput imagePitch V 0,0 U 0,1 V 0,1 U 2,0 V 2,0 U 2,1 V 2,1 ACTIVE REGION TOP FIELD (Chroma) U 1,0 V 1,0 U 1,1 V 1,1 U 3,0 V 3,0 U 3,1 V 3,1 ACTIVE REGION BOTTOM FIELD (Chroma) frameWidth chromaTopFieldOutput 7-4 frameHeight/4 maxHeight/2 frameWidth frameHeight/4 maxWidth U 0,0 ActiveRegion and ImageRegion offsets for chroma are derived from luma offset ChromaXoffset = lumaX_offset & 0xfffffffe; ChromaYoffset = (lumaY_offset >> 1) & 0xfffffffe; ActiveRegion and ImageRegion offsets are same for top and bottom field For top field, offsets should be calculated from lumaTopFieldOutput For bottom field, offsets should be calculated from lumaBottomFieldOutput Picture Format Note that for decoder in case of interlaced sequence: Luma and chroma buffers can be allocated independently Field buffer allocation cannot be independent For every pair of top and bottom field, decoder shall expect a single buffer address from the application The outermost yellow coloured region is the minimum buffer that application should allocate for a given maxWidth and maxHeight activeRegion o The displayable region after cropping done by application. o The cropping information is derived from VUI information in the bitstream imageRegion o Image data decoded by the decoder. o Contains the activeRegion as a proper subset. Picture Buffer (pic(Luma/Chroma)BufferAddr) o Contains padded regions and extra region due to alignment constraints. o Contains the imageRegion as a proper subset. imagePitch o The difference in addresses of two vertically adjacent pixels o Typically equal to width of the picture Buffer. Padding Amounts o In horizontal direction left and right padding amounts are 32 pixels for both Luma and chroma buffers. o In vertical direction top and bottom padding amounts are 40 pixels for Luma and 20 pixels for chroma buffers for each interlaced fields. 7-5 Picture Format 7.4 Constraints on Buffer Allocation for Decoder maxWidth and maxHeight are inputs given by the decoder to the applications o Application may not know the output format of the decoder. o Therefore, application should allocate Image Buffer based on maxWidth and maxHeight The extra region beyond the (maxWidth x maxHeight) requirements may be allocated by application due to alignment, pitch or some other constraints Application needs to ensure following conditions regarding imagePitch o imagePitch shall be greater or equal to the maxWidth. o imagePitch shall be multiple of 128 bytes (if the buffer is not in TILED region). o imagePitch shall actually be the tiler space width (i.e. depends on how many bit per pixel, for 8bpp 16bpp and 32bpp respectively 16Kbyte, 32Kbyte and 32Kbyte). (if the buffer is in TILED region). o Application may set imagePitch greater than maxWidth as per display constraints. However this value must be a multiple of 128 bytes (if the buffer is not in TILED region). picLumaBufferAddr and picChromaBufferAddr shall be 16-byte aligned address. (if the buffer is not in TILED region). ActiveRegion.topLeft and ActiveRegion.bottomRight are decoder outputs o Application should calculate actual display width and display height based on these parameters o ActiveRegion.topLeft and ActiveRegion.bottomRight shall be identical for both fields in case of interlaced format Maximum and Minimum Resolution is defined as below o o 7-6 Progressive Minimum frameWidth = 64 Minimum frameHeight = 64 Maximum frameWidth = 1920 Maximum frameHeight = 1088 Interlaced Minimum frameWidth = 64 Minimum (frameHeight / 2) = 32 Maximum frameWidth = 1920 Maximum (frameHeight / 2) = 544 Picture Format Typically picture buffer allocation requirements for decoder, after buffer addresses meet alignment constraints (depends on decoder’s padding requirements), for both progressive and interlaced are as given below. o Luma buffer size = maxWidth x maxHeight and Chroma buffer size = maxWidth x maxHeight/2 where maxWidth = frameWidth + 4 (progressive/interlaced) maxHeight = frameHeight 7-7 Picture Format This page is intentionally left blank 7-8 Chapter 8 Error Handling This chapter describes the error codes reported by codec for different erroneous situation, and recommended action by application. 8.1 Description 8-1 8.1 Description This version of the decoder supports handling of erroneous situations while decoding. If decoder encounters errors in bit stream or any other erroneous situations, decoder shall exit gracefully without any hang or crash. Also decoder process call shall return IVIDDEC3_EFAIL and relevant error code will be populated in extendedError field of outArgs. Different error codes and their meanings are described below. Definitions of bits numbered 8-15 are as per common XDM definition. Definition of remaining bits are VC1 Decoder specific and as given in below tabular column. Bit numbering in the 32 bit word extendedError is from Least Significant Bit to Most Significant Bit. Some of the erroneous situations will get reported as XDM_FATALERROR by the decoder. In these cases, Application should perform XDM_RESET of the decoder. After an XDM_RESET is performed, the decoder will treat the bitstream provided freshly and it shall use no information from previously parsed data. Some of the erroneous situations like pointer NULL, invalid memory types for input and output buffers are flagged as fatal errors. In such scenarios, the application may not have initialized valid values for them. Hence the expected behaviour from the application is to re-initialize the fields. In certain fatal erroneous situations, the Application, might flush out the locked buffers, if need be. See below table for more details on error situations when flush can be performed. In case of non-fatal errors, application need not perform XDM_RESET. It can proceed with more decode calls, if bit stream is still not exhausted. Meanings of various error codes and the recommended application behavior are provided in the following tables: 8-1 8.1.1 Bit Error Code Explanation XDM Error Code Mapping 0 IVC1DEC_ERR_UNSUPPO RTED_VIDDEC3PARAMS This is deprecated NA 1 IVC1DEC_ERR_UNSUPPO RTED_VIDDEC3DYNAMIC PARAMS Unsupported VIDDEC3 dynamic params XDM_UNSUPPORT EDPARAM 2 IVC1DEC_ERR_UNSUPPO RTED_VC1DECDYNAMICP ARAMS IVC1DEC_ERR_IMPROPE R_DATASYNC_SETTING IVC1DEC_ERR_NOSLICE This is deprecated NA Call set params with supported values of IVIDDEC3 dynamic params NA This is deprecated This is deprecated NA NA NA NA 5 IVC1DEC_ERR_SLICEHD R Error in slice header XDM_CORRUPTED HEADER 6 IVC1DEC_ERR_MBDATA Error in MB data XDM_CORRUPTED DATA 7 IVC1DEC_ERR_UNSUPPF EATURE This is deprecated NA If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. NA 8 XDM_PARAMSCHA NGE Sequence Parameters Change XDM_PARAMSCHA NGE Refer codec specific error which causes this 9 XDM_APPLIEDCO NCEALMENT Applied concealment XDM_APPLIEDCO NCEALMENT 10 XDM_INSUFFICI ENTDATA Insufficient input data XDM_INSUFFICI ENTDATA 11 XDM_CORRUPTED DATA XDM_CORRUPTED DATA 12 XDM_CORRUPTED HEADER 13 XDM_UNSUPPORT EDINPUT Data problem/corruptio n Header problem/corruptio n Unsupported feature/paramete Refer codec specific error which causes this Refer codec specific error which causes this Refer codec specific error which causes this Refer codec specific error which causes this Refer codec specific error 3 4 8-2 Error Codes used to set the extendedError field in IVIDDEC3_OutArgs and IVIDDEC3_Status XDM_CORRUPTED HEADER XDM_UNSUPPORT EDINPUT Recommended App Behavior NA r 14 XDM_UNSUPPORT EDPARAM 15 XDM_FATALERRO R 16 which causes this Unsupported input parameter Fatal error XDM_UNSUPPORT EDPARAM IVC1DEC_ERR_STREAM_ END This is deprecated NA Refer codec specific error which causes this Refer codec specific error which causes this NA 17 IVC1DEC_ERR_UNSUPPR ESOLUTION This is deprecated NA NA 18 IVC1DEC_ERR_STANDBY This is deprecated NA NA 19 IVC1DEC_ERR_INVALID _MBOX_MESSAGE This is deprecated NA NA 20 IVC1DEC_ERR_SEQHDR Error in the sequence header XDM_FATALERRO R or XDM_CORRUPTED HEADER 21 IVC1DEC_ERR_ENTRYHD R Error in entry point header XDM_FATALERRO R or XDM_CORRUPTED HEADER 22 IVC1DEC_ERR_PICHDR Error in picture header XDM_CORRUPTED HEADER 23 IVC1DEC_ERR_REF_PIC TURE_BUFFER Error bit for Ref picture Buffer NO XDM Mapping If more bytes available in bit stream and not fatal error, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream and not fatal error, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. Pass the next frame in the stream 24 IVC1DEC_ERR_NOSEQUE NNCEHEADER No sequence header found in the input NO XDM Mapping 30 IVC1DEC_ERR_BUFDESC XDM_FATALERRO R 31 IVC1DEC_ERR_PICSIZE CHANGE Input bytes in inargs is less than or equal to 0 or Input ID is 0 Resolution of the picture changes XDM_FATALERRO R NO XDM Mapping If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. Invoke process call with proper bytes in inargs and valid input ID If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. 8-3 8.1.2 Error Codes used to set the extendedErrorCode0, extendedErrorCode1, extendedErrorCode2, extendedErrorCode3 field in IVC1VDEC_Status Bit Error Code Explanation XDM Error Code Mapping 0 VC1_DYNAMIC_PARAMS_S IZE_ERROR Dynamic Params size is wrong XDM_FATALERROR 1 VC1_DECODE_HEADER_ER ROR Decode header param in dynamic params is invalid XDM_UNSUPPORTED PARAM 2 VC1_DISPLAY_WIDTH_ER ROR Display width is invalid XDM_UNSUPPORTED PARAM 3 VC1_FRAME_SKIP_MODE_ ERROR Frame skip mode is invalid XDM_UNSUPPORTED PARAM 4 VC1_NEW_FRAME_FLAG_E RROR New frame falg is invalid XDM_UNSUPPORTED PARAM 5 VC1_PUT_DATA_FXN_ERR OR The putDataFxn is non NULL XDM_UNSUPPORTED PARAM 6 VC1_PUT_DATA_HANDLE_ ERROR The putDataHandle is non NULL XDM_UNSUPPORTED PARAM 7 VC1_GET_DATA_FXN_ERR OR The GetDataFxn is non NULL XDM_UNSUPPORTED PARAM 8 VC1_GET_DATA_HANDLE_ ERROR The GetDataHandle is XDM_UNSUPPORTED PARAM 8-4 Recommended App Behaviour Invoke control call again with proper DynamicParams structure. Invoke control call again with proper DynamicParams structure or codec will continue with default settings of dynamic params Invoke control call again with proper DynamicParams structure or codec will continue with default settings of dynamic params Invoke control call again with proper DynamicParams structure or codec will continue with default settings of dynamic params Invoke control call again with proper DynamicParams structure or codec will continue with default settings of dynamic params Invoke control call again with proper DynamicParams structure or codec will continue with default settings of dynamic params Invoke control call again with proper DynamicParams structure or codec will continue with default settings of dynamic params Invoke control call again with proper DynamicParams structure or codec will continue with default settings of dynamic params Invoke control call again with proper non NULL DynamicParams structure or codec will continue with default settings of dynamic params Invoke control call again with proper DynamicParams structure or codec will continue with default settings of dynamic params Invoke control call again with proper DynamicParams structure or codec will continue with default settings of dynamic params Invoke control call again with proper DynamicParams structure or codec will continue with default settings of dynamic params Invoke process call again with proper inargs pointer Invoke process call again with proper inargs size Invoke process call again with proper input bytes in the inargs structure NA 9 VC1_PUT_BUFFER_FXN_E RROR The purBufferFxn is non NULL XDM_UNSUPPORTED PARAM 10 VC1_PUT_BUFFER_HANDL E_ERROR The PutBufferHandle is non NULL XDM_UNSUPPORTED PARAM 11 VC1_LATE_ACQUIRE_ARG _ERROR The late acquire argument is wrong XDM_UNSUPPORTED PARAM 12 VC1_NULL_INARGS_POIN TER_ERROR Inargs pointer is NULL XDM_FATALERROR 13 VC1_INARGS_SIZE_ERRO R Inargs size is NULL XDM_FATALERROR 14 VC1_INVALID_INPUT_BY TES_ERROR Inargs input bytes is less than or equal to zero XDM_FATALERROR 15 VC1_INVALID_INPUT_BY TES_IN_FLUSH_MODE_ER ROR VC1_INVALID_INPUT_ID _ERROR This is deprecated NA Input ID is 0 XDM_FATALERROR 17 VC1_NULL_INSTANCE_HA NDLE_ERROR XDM_FATALERROR 18 VC1_DECODER_NOT_INIT IALIZED_ERROR VC1_INVALID_INPUT_BU F_DESC_ERROR Handle provided to process or control call is NULL This is deprecated Input buffer descriptor pointer given to the process call is NULL Input buffer pointer given to process call is NULL Input buffer size given to process call is less than or equal to zero No of input buffers is not equal to one XDM_FATALERROR Invoke process call again with proper input buffer descriptor XDM_FATALERROR Invoke process call again with proper input buffer pointer Invoke process call again with proper input buffer size 16 19 20 VC1_INVALID_INPUT_BU FFER_POINTER_ERROR 21 VC1_INVALID_INPUT_BU FFER_SIZE_ERROR 22 VC1_INVALID_NUM_OF_I NPUT_BUFFERS_ERROR NA XDM_FATALERROR XDM_FATALERROR Invoke process call again with proper input ID Invoke process call again with proper pointer to the handle NA Invoke process call again with correct 8-5 number of buffer size 23 24 VC1_EXCESS_NUM_OF_IN PUT_BUFFERS_ERROR VC1_INVALID_INPUT_BU FFER_MEMTYPE_ERROR This is deprecated NA NA XDM_FATALERROR Invoke process call with input buffer properties as RAW or TILED_PAGE Invoke process call with proper outargs pointer Invoke process call with proper outargs size Invoke process call again with proper output buffer descriptor 25 VC1_INVALID_OUTARGS_ POINTER_ERROR The input buffer memory type is not RAW or TILED_PAGE The outargs pointer is NULL 26 VC1_INVALID_OUTARGS_ SIZE The outargs size is invalid XDM_FATALERROR 27 VC1_INVALID_OUTPUT_B UF_DESC_POINTER_ERRO R XDM_FATALERROR 28 VC1_INVALID_OUTPUT_B UF_DESC_ERROR VC1_INVALID_NUM_OF_O UTPUT_BUFFERS_ERROR output buffer descriptor pointer given to the process call is NULL This is deprecated NA NA Number of output buffers given to the codec is invalid XDM_FATALERROR Luma pointer in the output buffer descriptor is NULL This is deprecated XDM_FATALERROR Invoke process call again with proper number of output buffers Invoke process call again with valid pointer to buffer 0 NA 29 30 VC1_INVALID_OUTPUT_B UFFER0_POINTER_ERROR 31 VC1_INVALID_OUTPUT_B UFFER0_SIZE_ERROR VC1_INVALID_OUTPUT_B UFFER0_MEMTYPE_ERROR 32 33 VC1_INVALID_OUTPUT_B UFFER1_POINTER_ERROR 34 VC1_INVALID_OUTPUT_B UFFER1_SIZE_ERROR VC1_INVALID_OUTPUT_B UFFER1_MEMTYPE_ERROR 35 36 VC1_INVALID_OUTPUT_B UFFER2_POINTER_ERROR 37 VC1_INVALID_OUTPUT_B UFFER2_SIZE_ERROR VC1_INVALID_OUTPUT_B UFFER2_MEMTYPE_ERROR 38 39 40 41 8-6 VC1_INVALID_BUFFER_U SAGE_MODE VC1_INVALID_OUTPUT_B UFFER0_TILED_WIDTH_E RROR VC1_INVALID_OUTPUT_B UFFER0_TILED_HEIGHT_ ERROR XDM_FATALERROR NA Luma buffer memory type is invalid chroma pointer in the output buffer descriptor is NULL This is deprecated XDM_FATALERROR NA chroma buffer memory type is invalid Invoke process call again with valid pointer memory type for buffer 0 Invoke process call again with valid pointer to buffer 1 NA NA Invoke process call again with valid pointer memory type for buffer 1 Invoke process call again with valid pointer to buffer 2 NA This is deprecated NA Invoke process call again with valid pointer memory type for buffer 2 NA This is deprecated NA NA This is deprecated NA NA MB info pointer in the output buffer descriptor is NULL This is deprecated XDM_FATALERROR Mb info buffer memory type is invalid VC1_INVALID_OUTPUT_B UFFER1_TILED_WIDTH_E RROR VC1_INVALID_OUTPUT_B UFFER1_TILED_HEIGHT_ ERROR VC1_INVALID_OUTPUT_B UFFER2_TILED_WIDTH_E RROR VC1_INVALID_OUTPUT_B UFFER2_TILED_HEIGHT_ ERROR VC1_INVALID_REF_PICT URE_BUFFER This is deprecated NA NA This is deprecated NA NA This is deprecated NA NA This is deprecated NA NA Invalid picture reference buffers NA Pass the next frame in the stream 64 VC1_SEQ_HDR_INVALID_ PROFILE Invalid profile found in the bit-stream Application should exit 65 VC1_SEQ_HDR_INVALID_ LEVEL Invalid level found in the bit-stream XDM_CORRUPTEDHE ADER & XDM_FATALERROR XDM_CORRUPTEDHE ADER 66 VC1_SEQ_HDR_INVALID_ COLORDIFF_FORMAT Invalid color format found in the bitstream XDM_CORRUPTEDHE ADER 67 VC1_SEQ_HDR_INVALID_ MAX_CODED_WIDTH 68 VC1_SEQ_HDR_INVALID_ MAX_CODED_HEIGHT 69 VC1_SEQ_HDR_INVALID_ RESERVED Invalid max coded width found in the bit-stream Invalid max coded height found in the bit-stream Reserved bits are set in the bit-stream XDM_CORRUPTEDHE ADER & XDM_FATALERROR XDM_CORRUPTEDHE ADER & XDM_FATALERROR XDM_CORRUPTEDHE ADER 70 VC1_SEQ_HDR_INVALID_ ASPECT_RATIO Invalid aspect ratio found in the bitstream XDM_CORRUPTEDHE ADER 71 VC1_SEQ_HDR_INVALID_ FRAMERATENR Invalid numerator value decoded for the frame rate in the bit-stream XDM_CORRUPTEDHE ADER 72 VC1_SEQ_HDR_INVALID_ FRAMERATEDR Invalid denominator value decoded for the frame rate in the bit-stream XDM_CORRUPTEDHE ADER 42 43 44 45 46 If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. Application should exit Application should exit If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. 8-7 73 VC1_SEQ_HDR_INVALID_ COLOR_PRIM Invalid color primary values found in the bitstream XDM_CORRUPTEDHE ADER 74 VC1_SEQ_HDR_INVALID_ TRANSFER_CHAR Invalid transfer characters found in the bit-stream XDM_CORRUPTEDHE ADER 75 VC1_SEQ_HDR_INVALID_ MATRIX_COEF Invalid matrix coefficients found in the bit-stream XDM_CORRUPTEDHE ADER 76 VC1_SEQ_HDR_INVALID_ LOOPFILTER Invalid loop filter value found in the bit-stream XDM_CORRUPTEDHE ADER 77 VC1_SEQ_HDR_INVALID_ FASTUVMC Invalid Fast UV motion compensation flag found in the bitstream XDM_CORRUPTEDHE ADER 78 VC1_SEQ_HDR_INVALID_ EXTENDED_MV Invalid extended MV found in the bit-stream XDM_CORRUPTEDHE ADER 79 VC1_SEQ_HDR_INVALID_ DQUANT 80 VC1_SEQ_HDR_INVALID_ SYNCMARKER Invalid dquant value found in the bit-stream Invalid sync marker found in the bitstream XDM_CORRUPTEDHE ADER & XDM_FATALERROR XDM_CORRUPTEDHE ADER 81 VC1_SEQ_HDR_INVALID_ RANGERED Invalid range reduction value found in the bitstream XDM_CORRUPTEDHE ADER 82 VC1_SEQ_HDR_INVALID_ MAXBFRAMES Invalid value of maximum B frames found in the bitstream XDM_CORRUPTEDHE ADER 83 VC1_ENTRY_PNT_HDR_IN VALID_DQUANT Invalid Dquant found in the entry point header. XDM_CORRUPTEDHE ADER & XDM_FATALERROR 8-8 If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. Application should exit If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. Application should exit 84 VC1_ENTRY_PNT_HDR_IN VALID_CODED_WIDTH 85 VC1_ENTRY_PNT_HDR_IN VALID_CODED_HEIGHT 86 Invalid coded width found in the entry point header. Invalid coded height found in the entry point header. XDM_CORRUPTEDHE ADER & XDM_FATALERROR XDM_CORRUPTEDHE ADER VC1_PIC_HDR_INVALID_ PTYPE Invalid picture type in picture header 87 VC1_PIC_HDR_INVALID_ PQINDEX Invalid PQ index in picture header 88 VC1_PIC_HDR_INVALID_ MVRANGE Invalid MV Range in picture header XDM_CORRUPTEDHE ADER & XDM_FATALERROR XDM_CORRUPTEDHE ADER & XDM_FATALERROR XDM_CORRUPTEDHE ADER & XDM_FATALERROR 89 VC1_PIC_HDR_INVALID_ RESPIC Invalid Residual Pic value in picture header XDM_CORRUPTEDHE ADER 90 VC1_PIC_HDR_INVALID_ FCM 91 VC1_PIC_HDR_INVALID_ RNDCTRL Invalid Frame coding mode in picture header Invalid Rounding control parameter in picture header XDM_CORRUPTEDHE ADER & XDM_FATALERROR XDM_CORRUPTEDHE ADER 92 VC1_PIC_HDR_INVALID_ MVMODE Invalid MV mode in picture header 93 VC1_PIC_HDR_INVALID_ DMVRANGE 94 VC1_PIC_HDR_INVALID_ BFRACTION 95 VC1_PIC_HDR_INVALID_ REFDIST Invalid Direct MV range in picture header Invalid Bfraction syntax element value in picture header Invalid reference distance in picture header XDM_CORRUPTEDHE ADER & XDM_FATALERROR XDM_CORRUPTEDHE ADER & XDM_FATALERROR XDM_CORRUPTEDHE ADER & XDM_FATALERROR 96 VC1_ERR_MBNUMB 97 VC1_ERR_SCALERES 98 VC1_ERR_ALTPQUANT Application should exit If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. Application should exit Application should exit Application should exit If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. Application should exit If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. Application should exit Application should exit Application should exit XDM_CORRUPTEDHE ADER & XDM_FATALERROR Application should exit Invalid number of MBs in picture header Invalid scaled resolution in picture header XDM_CORRUPTEDHE ADER & XDM_FATALERROR XDM_CORRUPTEDHE ADER Application should exit Invalid ALTPQUANT syntax element in picture header XDM_CORRUPTEDHE ADER If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are 8-9 99 100 VC1_VOPDQUANT_INVALI D_ABSPQ VC1_SLC_HDR_INVALID_ SLICE_ADDR 101 VC1_IMPROPER_RESET 102 VC1_IMPROPER_STANDBY 103 VC1_ECD_MB_ERROR 104 VC1_NO_SEQUENCE_STAR TCODE 8-10 not available call Flush operation. NA This is deprecated NA Invalid slice restart position in slice header The reset IVAHD function returned error. The standby check on M3 failed MB level error detected by ECD3 XDM_CORRUPTEDHE ADER & XDM_FATALERROR XDM_FATALERROR Application should exit XDM_FATALERROR Application should exit XDM_CORRUPTEDDA TA This is deprecated NA If more bytes available in bit stream, then pass it to decoder. ELSE if bytes are not available call Flush operation. NA Application should exit Chapter 9 Bitstream Format This chapter explains the bitstream format of VC1 decoder for different profiles. In addition, it explains the constraints to the application, regarding bit-stream formats and corresponding codec behaviour. 9.1 Simple and Main Profile 9-1 9.2 Advanced Profile 9-3 9.1 Simple and Main Profile Sequence Header occurs only once in the beginning of the stream and is in the format specified in the figure below. The same is explained in Table 265 in Annex L of VC1 standard. The sequence header is given to the codec during the XDM_PARSE_HEADER. During this command execution, the codec assumes that only the sequence header is present in the input buffer and it decodes the same. 9-1 9.1.1 Sequence header syntax Figure 9-1 Sequence Layer syntax 9.1.2 Frame header syntax While the codec executes XDM_DECODE_AU command, the input buffer shall only contain the compressed frame data corresponding to the FRAMEDATA in the frame layer syntax of Table 266 in Annex L of VC1 standard. In addition, codec assumes that the buffer always contains one full frame-data in it. Figure 9-2 Frame layer syntax 9.1.2.1 frameLayerDataPresentFlag for RCV streams This flag should be used to notify the decoder that frame layer payload is provided in standard or non-standard format. 9-2 Standard Format: All fields of the frame layer are present in the payload.(i.e KEY, RES, FRAMESIZE, TIMESTAMP, FRAMEDATA). This is specified by enabling the frameLayerDataPresentFlag in the IVC1VDEC_Params structure (Explained in Section 4.2.2.1) at create time. Non Standard Format: Only FRAMEDATA of the frame layer syntax is present in the payload. This is specified by disabling the frameLayerDataPresentFlag in the IVC1VDEC_Params structure (Explained in Section 4.2.2.1) at create time. 9.2 Advanced Profile The bit-stream format for an advanced profile stream is as shown in the figure below. During XDM_PARSE_HEADER, execution, the input bit-stream shall contain SEQ_SC and SEQ_HDR only. During XDM_DECODE_AU, execution, the input bit-stream contains ENTRY_SC, ENTRY_HDR, FRAME_SC and FRAME_DATA. In an advanced profile stream, multiple SEQ_SC, SEQ_HDR, ENTRY_SC and ENTRY_HDR may occur. Figure 9-3 Bitstream syntax for an advanced profile stream For an interlaced stream, During XDM_PARSE_HEADER, execution, the input bit-stream shall contain SEQ_SC and SEQ_HDR only. During XDM_DECODE_AU, execution: The input bit-stream for the first field data shall contain FRAME_SC, FRAME_HDR and FRM_DATA. The input bit-stream for the second field data shall contain FIELD_SC, HDR and FIELD_DATA. The Frame-header syntax is explained in Table 18, 20 and 22 of VC1 standard. Also, frame start codes are explained in Annex G of the VC1 standard. 9-3 This page is intentionally left bank 9-4 Chapter 10 Meta Data Support This version of the decoder supports writing out the MB Info data into application provided buffers. For the details on MB Info data structures, See section 4.2.2. This feature can be enabled/disabled through create time parameters IVIDDEC3_Params::metadataType[IVIDEO_MAX_NUM_METADATA_PLA NES]. There can be maximum 3 (IVIDEO_MAX_NUM_METADATA_PLANES) metadata planes possible to be supported with one instance of the decoder. Each element of metadataType[] array can take following enumerated values. Enumeration IVIDEO_METADATAPLANE_NONE IVIDEO_METADATAPLANE_MBINFO IVIDEO_METADATAPLANE_EINFO IVIDEO_METADATAPLANE_ALPHA Value -1 0 1 2 This version of the decoder supports only following enumerated values: IVIDEO_METADATAPLANE_NONE IVIDEO_METADATAPLANE_MBINFO If user wants to get the Mb info data, then IVIDDEC3_Params::metadataType[0] should be set to IVIDEO_METADATAPLANE_MBINFO. If user does not want to use any meta data plane then all the entries of IVIDDEC3_Params::metadataType[] should be set to IVIDEO_METADATAPLANE_NONE. Note that the metadataType[] array need to be filled contiguosly (there cannot be IVIDEO_METADATAPLANE_NONE between 2 metadata types. The buffer requirements for metadata can be obtained using Control call with XDM_GETBUFINFO: The order of the metadata buffer info supplied using status structure is same as the order set by the user in the metadataType[] array during 10-1 create time. For example if the user has IVIDDEC3_Params::metadataType[0] = IVIDEO_METADATAPLANE_MBINFO and then status->bufInfo.minOutBufSize[2] will have the Mb info buffer. The buffer pointers for the metadata need to be supplied as below during process Call: When the application makes the process() call, the pointers to the buffers where Mb info should be stored needs to be provided to the codec in the output buffer descriptor [outputBufDesc.descs]. OutBufs->numBufs = numBuffers forYUVPlanes + number of meta data enabled (This is = 3 if MB info is enabled) outBufs->descs[0] -> Y plane outBufs->descs[1] -> Cb/Cr plane outBufs. outBufs->descs[2] -> Buffer allocated for Mb info Codec internally writes the meta data in appropriate buffer. When the decoder writes the MB info data, the number of metadata planes is indicated by outArgs->decodedBufs.numMetaPlanes (this is 1 if Mb info is enabled) Also, the respective buffer pointer is copied back in the first metaplane pointer: outArgs->decodedBufs.metadataPlaneDesc[0].buf , again the ordering of the metadata is as per the order supplied by IVIDDEC3_Params::metadataType[] input parameter. Decoder parses metadata in the current process call and returns in the same process call. This means, effectively meta data will be given out in decode order [Not in Display Order]. If application is interested in display order, it should have a logic to track based on input and output ID. In case of interlaced pictures, meta data buffers provided for each field (each process call) is assumed to be independent. Decoder shares two types of information at MB Level: MB Error Map: It’s an array of bytes - One byte per MB (Refer Enum IVC1VDEC_ mbErrStatus). The byte indicates whether the MB is in error or not. MB Info structure: It is a structure which defines properties of a MB. Refer structure IVC1VDEC_TI_MbInfo in ivc1vdec.h file. Size per MB = 192 bytes. Case1: If the Application sets viddec3Params.metadataType[x] = IVIDEO_METADATAPLANE_MBINFO and IVIDDEC3_Params.operatingMode = IVIDEO_DECODE_ONLY, then 10-2 decoder will dump out MB Error Map at buffer location given for MB Info meta data. Case2: If the Application sets viddec3Params.metadataType[x] = IVIDEO_METADATAPLANE_MBINFO and IVIDDEC3_Params.operatingMode = IVIDEO_TRANSCODE_FRAMELEVEL, then decoder will dump out MB Error Map at buffer location given for MB Info meta data. Error Map will be followed by MB Info structure for all MBs. Note that if the Application does not set viddec3Params.metadataType[x] = IVIDEO_METADATAPLANE_MBINFO, then no information will be dumped, irrespective of the value of IVIDDEC3_Params.operatingMode. Also, as a minor Interface limitation, there is no provision to dump MB Info structure alone w/o error map and error concealment structure. Format details for Case 1 (Dumping of Error map and Error concealment structure): Case 1a, Progressive Frame: Error Map, Size in Bytes = Number of MBs in Frame Case 1b, Interlaced Frame: Error Map for Top Field, Size in Bytes = (Number of MBs in Frame / 2) Error Map for Bottom Field, Size in Bytes = (Number of MBs in Frame / 2) Format details for Case 2 (Dumping of Error map, MB Info and Error concealment structure): Case 2a, Progressive Frame: Error Map, Size in Bytes = Number of MBs in Frame MB Info structure for all MBs, Size in Bytes = 192 * Number of MBs in Frame Case 2b, Interlaced Frame: Error Map for Top Field, Size in Bytes = (Number of MBs in Frame / 2) Error Map for Bottom Field, Size in Bytes = (Number of MBs in Frame / 2) MB Info structure for all MBs of Top Field, Size in Bytes = 192 * (Number of MBs in Frame / 2) MB Info structure for all MBs of Bottom Field, Size in Bytes = 192 * (Number of MBs in Frame / 2) 10-3 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, enhancements, improvements and other changes to its semiconductor products and services per JESD46, latest issue, and to discontinue any product or service per JESD48, latest issue. Buyers should obtain the latest relevant information before placing orders and should verify that such information is current and complete. All semiconductor products (also referred to herein as “components”) are sold subject to TI’s terms and conditions of sale supplied at the time of order acknowledgment. TI warrants performance of its components to the specifications applicable at the time of sale, in accordance with the warranty in TI’s terms and conditions of sale of semiconductor products. Testing and other quality control techniques are used to the extent TI deems necessary to support this warranty. Except where mandated by applicable law, testing of all parameters of each component is not necessarily performed. TI assumes no liability for applications assistance or the design of Buyers’ products. Buyers are responsible for their products and applications using TI components. To minimize the risks associated with Buyers’ products and applications, Buyers should provide adequate design and operating safeguards. TI does not warrant or represent that any license, either express or implied, is granted under any patent right, copyright, mask work right, or other intellectual property right relating to any combination, machine, or process in which TI components or services are used. Information published by TI regarding third-party products or services does not constitute a license to use such products or services or a warranty or endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectual property of the third party, or a license from TI under the patents or other intellectual property of TI. Reproduction of significant portions of TI information in TI data books or data sheets is permissible only if reproduction is without alteration and is accompanied by all associated warranties, conditions, limitations, and notices. TI is not responsible or liable for such altered documentation. Information of third parties may be subject to additional restrictions. Resale of TI components or services with statements different from or beyond the parameters stated by TI for that component or service voids all express and any implied warranties for the associated TI component or service and is an unfair and deceptive business practice. TI is not responsible or liable for any such statements. Buyer acknowledges and agrees that it is solely responsible for compliance with all legal, regulatory and safety-related requirements concerning its products, and any use of TI components in its applications, notwithstanding any applications-related information or support that may be provided by TI. Buyer represents and agrees that it has all the necessary expertise to create and implement safeguards which anticipate dangerous consequences of failures, monitor failures and their consequences, lessen the likelihood of failures that might cause harm and take appropriate remedial actions. Buyer will fully indemnify TI and its representatives against any damages arising out of the use of any TI components in safety-critical applications. In some cases, TI components may be promoted specifically to facilitate safety-related applications. With such components, TI’s goal is to help enable customers to design and create their own end-product solutions that meet applicable functional safety standards and requirements. Nonetheless, such components are subject to these terms. No TI components are authorized for use in FDA Class III (or similar life-critical medical equipment) unless authorized officers of the parties have executed a special agreement specifically governing such use. Only those TI components which TI has specifically designated as military grade or “enhanced plastic” are designed and intended for use in military/aerospace applications or environments. Buyer acknowledges and agrees that any military or aerospace use of TI components which have not been so designated is solely at the Buyer's risk, and that Buyer is solely responsible for compliance with all legal and regulatory requirements in connection with such use. TI has specifically designated certain components as meeting ISO/TS16949 requirements, mainly for automotive use. In any case of use of non-designated products, TI will not be responsible for any failure to meet ISO/TS16949. Products Applications Audio www.ti.com/audio Automotive & Transportation Amplifiers amplifier.ti.com Communications & Telecom Data Converters dataconverter.ti.com Computers & Peripherals DLP® Products www.dlp.com Consumer Electronics DSP dsp.ti.com Energy and Lighting Clocks and Timers www.ti.com/clocks Industrial Interface interface.ti.com Medical Logic logic.ti.com Security Power Mgmt power.ti.com Space, Avionics & Defense Microcontrollers microcontroller.ti.com Video & Imaging RFID www.ti-rfid.com OMAP Applications Processors www.ti.com/omap TI E2E Community Wireless Connectivity www.ti.com/wirelessconnectivity www.ti.com/automotive www.ti.com/communications www.ti.com/computers www.ti.com/consumer-apps www.ti.com/energyapps www.ti.com/industrial www.ti.com/medical www.ti.com/security www.ti.com/space-avionics-defense www.ti.com/video e2e.ti.com Mailing Address: Texas Instruments, Post Office Box 655303, Dallas, Texas 75265 Copyright© 2014, Texas Instruments Incorporated 10-4
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : No Page Count : 114 Language : en-IN Tagged PDF : Yes Title : VC-1 decoder on IVAHD Author : Sayanna Chandula Creator : Microsoft® Word 2010 Create Date : 2018:05:31 14:26:51+05:30 Modify Date : 2018:05:31 14:26:51+05:30 Producer : Microsoft® Word 2010EXIF Metadata provided by EXIF.tools