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