armVCM4P2_SetPredDir_s.s revision 78e52bfac041d71ce53b5b13c2abf78af742b09d
1;// 2;// Copyright (C) 2007-2008 ARM Limited 3;// 4;// Licensed under the Apache License, Version 2.0 (the "License"); 5;// you may not use this file except in compliance with the License. 6;// You may obtain a copy of the License at 7;// 8;// http://www.apache.org/licenses/LICENSE-2.0 9;// 10;// Unless required by applicable law or agreed to in writing, software 11;// distributed under the License is distributed on an "AS IS" BASIS, 12;// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13;// See the License for the specific language governing permissions and 14;// limitations under the License. 15;// 16;// 17;// 18;// File Name: armVCM4P2_SetPredDir_s.s 19;// OpenMAX DL: v1.0.2 20;// Revision: 12290 21;// Date: Wednesday, April 9, 2008 22;// 23;// 24;// 25;// 26 27; ** 28; * Function: armVCM4P2_SetPredDir 29; * 30; * Description: 31; * Performs detecting the prediction direction 32; * 33; * Remarks: 34; * 35; * Parameters: 36; * [in] blockIndex block index indicating the component type and 37; * position as defined in subclause 6.1.3.8, of ISO/IEC 38; * 14496-2. Furthermore, indexes 6 to 9 indicate the 39; * alpha blocks spatially corresponding to luminance 40; * blocks 0 to 3 in the same macroblock. 41; * [in] pCoefBufRow pointer to the coefficient row buffer 42; * [in] pQpBuf pointer to the quantization parameter buffer 43; * [out]predQP quantization parameter of the predictor block 44; * [out]predDir indicates the prediction direction which takes one 45; * of the following values: 46; * OMX_VC_HORIZONTAL predict horizontally 47; * OMX_VC_VERTICAL predict vertically 48; * 49; * Return Value: 50; * Standard OMXResult result. See enumeration for possible result codes. 51; * 52; */ 53 54 INCLUDE omxtypes_s.h 55 INCLUDE armCOMM_s.h 56 INCLUDE omxVC_s.h 57 58 59 M_VARIANTS ARM1136JS 60 61 62 IF ARM1136JS 63 64;// Input Arguments 65BlockIndex RN 0 66pCoefBufRow RN 1 67pCoefBufCol RN 2 68predDir RN 3 69predQP RN 4 70pQpBuf RN 5 71 72;// Local Variables 73 74Return RN 0 75blockDCLeft RN 6 76blockDCTop RN 7 77blockDCTopLeft RN 8 78temp1 RN 9 79temp2 RN 14 80 81 M_START armVCM4P2_SetPredDir,r9 82 83 M_ARG ppredQP,4 84 M_ARG ppQpBuf,4 85 86 LDRH blockDCTopLeft,[pCoefBufRow,#-16] 87 LDRH blockDCLeft,[pCoefBufCol] 88 89 TEQ BlockIndex,#3 90 LDREQH blockDCTop,[pCoefBufCol,#-16] 91 LDRNEH blockDCTop,[pCoefBufRow] 92 93 SUBS temp1,blockDCLeft,blockDCTopLeft 94 RSBLT temp1,temp1,#0 95 SUBS temp2,blockDCTopLeft,blockDCTop 96 RSBLT temp2,temp2,#0 97 98 M_LDR pQpBuf,ppQpBuf 99 M_LDR predQP,ppredQP 100 CMP temp1,temp2 101 MOV temp2,#OMX_VC_VERTICAL 102 LDRLTB temp1,[pQpBuf,#1] 103 STRLT temp2,[predDir] 104 STRLT temp1,[predQP] 105 MOV temp2,#OMX_VC_HORIZONTAL 106 LDRGEB temp1,[pQpBuf] 107 STRGE temp2,[predDir] 108 MOV Return,#OMX_Sts_NoErr 109 STRGE temp1,[predQP] 110 111 112 113 M_END 114 115 ENDIF 116 117 END 118 119