omxVCM4P2_DecodeVLCZigzag_IntraDCVLC_s.s revision 0c1bc742181ded4930842b46e9507372f0b1b963
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project;/**
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * File Name:  omxVCM4P2_DecodeVLCZigzag_IntraDCVLC_s.s
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * OpenMAX DL: v1.0.2
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * Revision:   9641
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * Date:       Thursday, February 7, 2008
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * Description:
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * Contains modules for zigzag scanning and VLC decoding
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * for inter block.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * Function: omxVCM4P2_DecodeVLCZigzag_Inter
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * Description:
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * Performs VLC decoding and inverse zigzag scan for one intra coded block.
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * Remarks:
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * Parameters:
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * [in]    ppBitStream        pointer to the pointer to the current byte in
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *                    the bitstream buffer
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * [in]    pBitOffset        pointer to the bit position in the byte pointed
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *                    to by *ppBitStream. *pBitOffset is valid within    [0-7].
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * [in] shortVideoHeader     binary flag indicating presence of short_video_header;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *                           escape modes 0-3 are used if shortVideoHeader==0,
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *                           and escape mode 4 is used when shortVideoHeader==1.
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * [out]    ppBitStream        *ppBitStream is updated after the block is
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *                    decoded, so that it points to the current byte
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *                    in the bit stream buffer
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * [out]    pBitOffset        *pBitOffset is updated so that it points to the
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *                    current bit position in the byte pointed by
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *                    *ppBitStream
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * [out]    pDst            pointer to the coefficient buffer of current
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *                    block. Must be 16-byte aligned
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
42bda8874a2990a864f32f8d2d916f7a05f33f797bFred Quintana; * Return Value:
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * OMX_Sts_BadArgErr - bad arguments
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *   -At least one of the following pointers is NULL: ppBitStream, *ppBitStream, pBitOffset, pDst, or
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *   -pDst is not 16-byte aligned, or
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *   -*pBitOffset exceeds [0,7].
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; * OMX_Sts_Err - status error
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *   -At least one mark bit is equal to zero
49bda8874a2990a864f32f8d2d916f7a05f33f797bFred Quintana; *   -Encountered an illegal stream code that cannot be found in the VLC table
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *   -Encountered and illegal code in the VLC FLC table
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *   -The number of coefficients is greater than 64
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; *
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; */
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      INCLUDE omxtypes_s.h
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      INCLUDE armCOMM_s.h
58bda8874a2990a864f32f8d2d916f7a05f33f797bFred Quintana      INCLUDE armCOMM_BitDec_s.h
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      M_VARIANTS ARM1136JS
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      IF ARM1136JS :LOR: CortexA8
68bda8874a2990a864f32f8d2d916f7a05f33f797bFred Quintana
691c4027b68d5938795cc536c1d45e8d942ea537a4Daniel Lehmann
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ;// Import various tables needed for the function
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        IMPORT          armVCM4P2_IntraVlcL0L1             ;// Contains optimized and packed VLC Tables for both Last =1 and last=0
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                                               ;// Packed in Run:Level:Last format
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        IMPORT          armVCM4P2_IntraL0L1LMAX            ;// Contains LMAX table entries with both Last=0 and Last=1
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        IMPORT          armVCM4P2_IntraL0L1RMAX            ;// Contains RMAX table entries with both Last=0 and Last=1
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        IMPORT          armVCM4P2_aClassicalZigzagScan     ;// contains CLassical, Horizontal, Vertical Zigzag table entries with double the original values
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        IMPORT          armVCM4P2_aIntraDCLumaChromaIndex  ;// Contains Optimized DCLuma and DCChroma Index table Entries
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        IMPORT          armVCM4P2_DecodeVLCZigzag_AC_unsafe
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project;//Input Arguments
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectppBitStream          RN 0
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectpBitOffset           RN 1
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectpDst                 RN 2
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectPredDir              RN 3
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectshortVideoHeader     RN 3
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectvideoComp            RN 5
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project;//Local Variables
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectReturn               RN 0
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectpDCLumaChromaIndex   RN 4
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectpDCChromaIndex       RN 7
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectpVlcTableL0L1        RN 4
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectpLMAXTableL0L1       RN 4
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectpRMAXTableL0L1       RN 4
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectpZigzagTable         RN 4
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCount                RN 6
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectDCValueSize          RN 6
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectpowOfSize            RN 7
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecttemp1                RN 5
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project;// Scratch Registers
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRBitStream           RN 8
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRBitBuffer           RN 9
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRBitCount            RN 10
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectT1                   RN 11
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectT2                   RN 12
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectDCVal                RN 14
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ;// Allocate stack memory to store optimized VLC,Zigzag, RMAX, LMAX Table Addresses
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_ALLOC4        ppVlcTableL0L1,4
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_ALLOC4        ppLMAXTableL0L1,4
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_ALLOC4        ppRMAXTableL0L1,4
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_ALLOC4        ppZigzagTable,4
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_ALLOC4        pDCCoeff,4
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_START omxVCM4P2_DecodeVLCZigzag_IntraDCVLC,r12
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_ARG           shortVideoHeaderonStack,4                                  ;// Pointer to argument on stack
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_ARG           videoComponstack,4                                         ;// Pointer to argument on stack
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ;// Decode DC Coefficient
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        LDR             pDCLumaChromaIndex, =armVCM4P2_aIntraDCLumaChromaIndex ;// Load Optimized VLC Table for Luminance and Chrominance
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ;// Initializing the Bitstream Macro
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_BD_INIT0      ppBitStream, pBitOffset, RBitStream, RBitBuffer, RBitCount
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_LDR           videoComp,videoComponstack
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_BD_INIT1      T1, T2, T2
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ADD             pDCLumaChromaIndex,pDCLumaChromaIndex,videoComp, LSL #6
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_BD_INIT2      T1, T2, T2
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_BD_VLD        DCValueSize,T1,T2,pDCLumaChromaIndex,4,2                    ;// VLC Decode using optimized Luminance and Chrominance VLC Table
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectDecodeDC
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        CMP             DCValueSize,#12
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        BGT             ExitError
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        CMP             DCValueSize,#0
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        MOVEQ           DCVal,#0                                                    ;// If DCValueSize is zero then DC coeff =0
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        BEQ             ACDecode                                                    ;// Branch to perform AC Coeff Decoding
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_BD_VREAD16    DCVal,DCValueSize,T1,T2                                     ;// Get DC Value From Bit stream
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        MOV             powOfSize,#1
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        LSL             powOfSize,DCValueSize                                       ;// powOfSize=pow(2,DCValueSize)
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        CMP             DCVal,powOfSize,LSR #1                                      ;// Compare DCVal with powOfSize/2
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ADDLT           DCVal,DCVal,#1
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        SUBLT           DCVal,DCVal,powOfSize                                       ;// If Lessthan powOfSize/2 DCVal=DCVal-powOfSize+1
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                                                                    ;// Else DCVal= fetchbits from bit stream
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCheckDCValueSize
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        CMP             DCValueSize,#8                                              ;// If DCValueSize greater than 8 check marker bit
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        BLE             ACDecode
177bda8874a2990a864f32f8d2d916f7a05f33f797bFred Quintana
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_BD_READ8      temp1,1,T1
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        TEQ             temp1,#0                                                    ;// If Marker bit is zero Exit with an Error Message
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        BEQ             ExitError
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ;// Decode AC Coefficient
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectACDecode
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_STR           DCVal,pDCCoeff                                             ;// Store Decoded DC Coeff on Stack
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_BD_FINI       ppBitStream,pBitOffset                                     ;// Terminating the Bit stream Macro
190bda8874a2990a864f32f8d2d916f7a05f33f797bFred Quintana
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        LDR             pZigzagTable, =armVCM4P2_aClassicalZigzagScan          ;// Load Zigzag talbe address
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ADD             pZigzagTable, pZigzagTable, PredDir, LSL #6                ;// Modify the Zigzag table adress based on PredDir
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_STR           pZigzagTable,ppZigzagTable                                 ;// Store zigzag table on stack
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        LDR             pVlcTableL0L1, =armVCM4P2_IntraVlcL0L1                 ;// Load Optimized VLC Table With both Last=0 and Last=1 Entries
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_STR           pVlcTableL0L1,ppVlcTableL0L1                               ;// Store Optimized VLC Table on stack
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        LDR             pLMAXTableL0L1, =armVCM4P2_IntraL0L1LMAX               ;// Load LMAX Table
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_STR           pLMAXTableL0L1,ppLMAXTableL0L1                             ;// Store LMAX table on stack
199bda8874a2990a864f32f8d2d916f7a05f33f797bFred Quintana        LDR             pRMAXTableL0L1, =armVCM4P2_IntraL0L1RMAX               ;// Load RMAX Table
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        MOV             Count,#1                                                   ;// Set Start =1
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_STR           pRMAXTableL0L1,ppRMAXTableL0L1                             ;// Store RMAX Table on Stack
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_LDR           shortVideoHeader,shortVideoHeaderonStack                   ;// Load the Input Argument From Stack
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        BL              armVCM4P2_DecodeVLCZigzag_AC_unsafe                    ;// Call the Unsafe Function
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_LDR           DCVal,pDCCoeff                                             ;// Get the Decoded DC Value From Stack
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        STRH            DCVal,[pDst]                                               ;// Store the DC Value
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        B               ExitOK
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExitError
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_BD_FINI       ppBitStream,pBitOffset                                     ;// Terminating the Bit Stream Macro in case of an Error
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        MOV             Return,#OMX_Sts_Err                                        ;// Exit with an Error Message
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExitOK
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        M_END
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ENDIF
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        END
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project