10c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 20c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 30c1bc742181ded4930842b46e9507372f0b1b963James Dong;// File Name: armVCM4P2_SetPredDir_s.s 40c1bc742181ded4930842b46e9507372f0b1b963James Dong;// OpenMAX DL: v1.0.2 50c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Revision: 12290 60c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Date: Wednesday, April 9, 2008 70c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 80c1bc742181ded4930842b46e9507372f0b1b963James Dong;// (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. 90c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 100c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 110c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 120c1bc742181ded4930842b46e9507372f0b1b963James Dong 130c1bc742181ded4930842b46e9507372f0b1b963James Dong; ** 140c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Function: armVCM4P2_SetPredDir 150c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 160c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Description: 170c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Performs detecting the prediction direction 180c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 190c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Remarks: 200c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 210c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Parameters: 220c1bc742181ded4930842b46e9507372f0b1b963James Dong; * [in] blockIndex block index indicating the component type and 230c1bc742181ded4930842b46e9507372f0b1b963James Dong; * position as defined in subclause 6.1.3.8, of ISO/IEC 240c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 14496-2. Furthermore, indexes 6 to 9 indicate the 250c1bc742181ded4930842b46e9507372f0b1b963James Dong; * alpha blocks spatially corresponding to luminance 260c1bc742181ded4930842b46e9507372f0b1b963James Dong; * blocks 0 to 3 in the same macroblock. 270c1bc742181ded4930842b46e9507372f0b1b963James Dong; * [in] pCoefBufRow pointer to the coefficient row buffer 280c1bc742181ded4930842b46e9507372f0b1b963James Dong; * [in] pQpBuf pointer to the quantization parameter buffer 290c1bc742181ded4930842b46e9507372f0b1b963James Dong; * [out]predQP quantization parameter of the predictor block 300c1bc742181ded4930842b46e9507372f0b1b963James Dong; * [out]predDir indicates the prediction direction which takes one 310c1bc742181ded4930842b46e9507372f0b1b963James Dong; * of the following values: 320c1bc742181ded4930842b46e9507372f0b1b963James Dong; * OMX_VC_HORIZONTAL predict horizontally 330c1bc742181ded4930842b46e9507372f0b1b963James Dong; * OMX_VC_VERTICAL predict vertically 340c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 350c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Return Value: 360c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Standard OMXResult result. See enumeration for possible result codes. 370c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 380c1bc742181ded4930842b46e9507372f0b1b963James Dong; */ 390c1bc742181ded4930842b46e9507372f0b1b963James Dong 400c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE omxtypes_s.h 410c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE armCOMM_s.h 420c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE omxVC_s.h 430c1bc742181ded4930842b46e9507372f0b1b963James Dong 440c1bc742181ded4930842b46e9507372f0b1b963James Dong 450c1bc742181ded4930842b46e9507372f0b1b963James Dong M_VARIANTS ARM1136JS 460c1bc742181ded4930842b46e9507372f0b1b963James Dong 470c1bc742181ded4930842b46e9507372f0b1b963James Dong 480c1bc742181ded4930842b46e9507372f0b1b963James Dong IF ARM1136JS 490c1bc742181ded4930842b46e9507372f0b1b963James Dong 500c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Input Arguments 510c1bc742181ded4930842b46e9507372f0b1b963James DongBlockIndex RN 0 520c1bc742181ded4930842b46e9507372f0b1b963James DongpCoefBufRow RN 1 530c1bc742181ded4930842b46e9507372f0b1b963James DongpCoefBufCol RN 2 540c1bc742181ded4930842b46e9507372f0b1b963James DongpredDir RN 3 550c1bc742181ded4930842b46e9507372f0b1b963James DongpredQP RN 4 560c1bc742181ded4930842b46e9507372f0b1b963James DongpQpBuf RN 5 570c1bc742181ded4930842b46e9507372f0b1b963James Dong 580c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Local Variables 590c1bc742181ded4930842b46e9507372f0b1b963James Dong 600c1bc742181ded4930842b46e9507372f0b1b963James DongReturn RN 0 610c1bc742181ded4930842b46e9507372f0b1b963James DongblockDCLeft RN 6 620c1bc742181ded4930842b46e9507372f0b1b963James DongblockDCTop RN 7 630c1bc742181ded4930842b46e9507372f0b1b963James DongblockDCTopLeft RN 8 640c1bc742181ded4930842b46e9507372f0b1b963James Dongtemp1 RN 9 650c1bc742181ded4930842b46e9507372f0b1b963James Dongtemp2 RN 14 660c1bc742181ded4930842b46e9507372f0b1b963James Dong 670c1bc742181ded4930842b46e9507372f0b1b963James Dong M_START armVCM4P2_SetPredDir,r9 680c1bc742181ded4930842b46e9507372f0b1b963James Dong 690c1bc742181ded4930842b46e9507372f0b1b963James Dong M_ARG ppredQP,4 700c1bc742181ded4930842b46e9507372f0b1b963James Dong M_ARG ppQpBuf,4 710c1bc742181ded4930842b46e9507372f0b1b963James Dong 720c1bc742181ded4930842b46e9507372f0b1b963James Dong LDRH blockDCTopLeft,[pCoefBufRow,#-16] 730c1bc742181ded4930842b46e9507372f0b1b963James Dong LDRH blockDCLeft,[pCoefBufCol] 740c1bc742181ded4930842b46e9507372f0b1b963James Dong 750c1bc742181ded4930842b46e9507372f0b1b963James Dong TEQ BlockIndex,#3 760c1bc742181ded4930842b46e9507372f0b1b963James Dong LDREQH blockDCTop,[pCoefBufCol,#-16] 770c1bc742181ded4930842b46e9507372f0b1b963James Dong LDRNEH blockDCTop,[pCoefBufRow] 780c1bc742181ded4930842b46e9507372f0b1b963James Dong 790c1bc742181ded4930842b46e9507372f0b1b963James Dong SUBS temp1,blockDCLeft,blockDCTopLeft 800c1bc742181ded4930842b46e9507372f0b1b963James Dong RSBLT temp1,temp1,#0 810c1bc742181ded4930842b46e9507372f0b1b963James Dong SUBS temp2,blockDCTopLeft,blockDCTop 820c1bc742181ded4930842b46e9507372f0b1b963James Dong RSBLT temp2,temp2,#0 830c1bc742181ded4930842b46e9507372f0b1b963James Dong 840c1bc742181ded4930842b46e9507372f0b1b963James Dong M_LDR pQpBuf,ppQpBuf 850c1bc742181ded4930842b46e9507372f0b1b963James Dong M_LDR predQP,ppredQP 860c1bc742181ded4930842b46e9507372f0b1b963James Dong CMP temp1,temp2 870c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV temp2,#OMX_VC_VERTICAL 880c1bc742181ded4930842b46e9507372f0b1b963James Dong LDRLTB temp1,[pQpBuf,#1] 890c1bc742181ded4930842b46e9507372f0b1b963James Dong STRLT temp2,[predDir] 900c1bc742181ded4930842b46e9507372f0b1b963James Dong STRLT temp1,[predQP] 910c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV temp2,#OMX_VC_HORIZONTAL 920c1bc742181ded4930842b46e9507372f0b1b963James Dong LDRGEB temp1,[pQpBuf] 930c1bc742181ded4930842b46e9507372f0b1b963James Dong STRGE temp2,[predDir] 940c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV Return,#OMX_Sts_NoErr 950c1bc742181ded4930842b46e9507372f0b1b963James Dong STRGE temp1,[predQP] 960c1bc742181ded4930842b46e9507372f0b1b963James Dong 970c1bc742181ded4930842b46e9507372f0b1b963James Dong 980c1bc742181ded4930842b46e9507372f0b1b963James Dong 990c1bc742181ded4930842b46e9507372f0b1b963James Dong M_END 1000c1bc742181ded4930842b46e9507372f0b1b963James Dong 1010c1bc742181ded4930842b46e9507372f0b1b963James Dong ENDIF 1020c1bc742181ded4930842b46e9507372f0b1b963James Dong 1030c1bc742181ded4930842b46e9507372f0b1b963James Dong END 1040c1bc742181ded4930842b46e9507372f0b1b963James Dong 105