Home | History | Annotate | Download | only in src
      1 ;//
      2 ;//
      3 ;// File Name:  armVCM4P2_SetPredDir_s.s
      4 ;// OpenMAX DL: v1.0.2
      5 ;// Revision:   12290
      6 ;// Date:       Wednesday, April 9, 2008
      7 ;//
      8 ;// (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
      9 ;//
     10 ;//
     11 ;//
     12 
     13 ; **
     14 ; * Function: armVCM4P2_SetPredDir
     15 ; *
     16 ; * Description:
     17 ; * Performs detecting the prediction direction
     18 ; *
     19 ; * Remarks:
     20 ; *
     21 ; * Parameters:
     22 ; * [in] blockIndex  block index indicating the component type and
     23 ; *                          position as defined in subclause 6.1.3.8, of ISO/IEC
     24 ; *                          14496-2. Furthermore, indexes 6 to 9 indicate the
     25 ; *                          alpha blocks spatially corresponding to luminance
     26 ; *                          blocks 0 to 3 in the same macroblock.
     27 ; * [in] pCoefBufRow pointer to the coefficient row buffer
     28 ; * [in] pQpBuf      pointer to the quantization parameter buffer
     29 ; * [out]predQP      quantization parameter of the predictor block
     30 ; * [out]predDir     indicates the prediction direction which takes one
     31 ; *                  of the following values:
     32 ; *                  OMX_VC_HORIZONTAL    predict horizontally
     33 ; *                  OMX_VC_VERTICAL      predict vertically
     34 ; *
     35 ; * Return Value:
     36 ; * Standard OMXResult result. See enumeration for possible result codes.
     37 ; *
     38 ; */
     39 
     40        INCLUDE omxtypes_s.h
     41        INCLUDE armCOMM_s.h
     42        INCLUDE omxVC_s.h
     43 
     44 
     45        M_VARIANTS ARM1136JS
     46 
     47 
     48        IF ARM1136JS
     49 
     50 ;// Input Arguments
     51 BlockIndex         RN 0
     52 pCoefBufRow        RN 1
     53 pCoefBufCol        RN 2
     54 predDir            RN 3
     55 predQP             RN 4
     56 pQpBuf             RN 5
     57 
     58 ;// Local Variables
     59 
     60 Return             RN 0
     61 blockDCLeft        RN 6
     62 blockDCTop         RN 7
     63 blockDCTopLeft     RN 8
     64 temp1              RN 9
     65 temp2              RN 14
     66 
     67        M_START    armVCM4P2_SetPredDir,r9
     68 
     69        M_ARG       ppredQP,4
     70        M_ARG       ppQpBuf,4
     71 
     72        LDRH        blockDCTopLeft,[pCoefBufRow,#-16]
     73        LDRH        blockDCLeft,[pCoefBufCol]
     74 
     75        TEQ         BlockIndex,#3
     76        LDREQH      blockDCTop,[pCoefBufCol,#-16]
     77        LDRNEH      blockDCTop,[pCoefBufRow]
     78 
     79        SUBS        temp1,blockDCLeft,blockDCTopLeft
     80        RSBLT       temp1,temp1,#0
     81        SUBS        temp2,blockDCTopLeft,blockDCTop
     82        RSBLT       temp2,temp2,#0
     83 
     84        M_LDR       pQpBuf,ppQpBuf
     85        M_LDR       predQP,ppredQP
     86        CMP         temp1,temp2
     87        MOV         temp2,#OMX_VC_VERTICAL
     88        LDRLTB      temp1,[pQpBuf,#1]
     89        STRLT       temp2,[predDir]
     90        STRLT       temp1,[predQP]
     91        MOV         temp2,#OMX_VC_HORIZONTAL
     92        LDRGEB      temp1,[pQpBuf]
     93        STRGE       temp2,[predDir]
     94        MOV         Return,#OMX_Sts_NoErr
     95        STRGE       temp1,[predQP]
     96 
     97 
     98 
     99        M_END
    100 
    101        ENDIF
    102 
    103        END
    104 
    105