blob: bf3f363b3364053a85a0208807c6b6844a944934 [file] [log] [blame]
;//
;// Copyright (C) 2007-2008 ARM Limited
;//
;// Licensed under the Apache License, Version 2.0 (the "License");
;// you may not use this file except in compliance with the License.
;// You may obtain a copy of the License at
;//
;// http://www.apache.org/licenses/LICENSE-2.0
;//
;// Unless required by applicable law or agreed to in writing, software
;// distributed under the License is distributed on an "AS IS" BASIS,
;// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
;// See the License for the specific language governing permissions and
;// limitations under the License.
;//
;//
;//
;// File Name: armVCM4P2_SetPredDir_s.s
;// OpenMAX DL: v1.0.2
;// Revision: 12290
;// Date: Wednesday, April 9, 2008
;//
;//
;//
;//
; **
; * Function: armVCM4P2_SetPredDir
; *
; * Description:
; * Performs detecting the prediction direction
; *
; * Remarks:
; *
; * Parameters:
; * [in] blockIndex block index indicating the component type and
; * position as defined in subclause 6.1.3.8, of ISO/IEC
; * 14496-2. Furthermore, indexes 6 to 9 indicate the
; * alpha blocks spatially corresponding to luminance
; * blocks 0 to 3 in the same macroblock.
; * [in] pCoefBufRow pointer to the coefficient row buffer
; * [in] pQpBuf pointer to the quantization parameter buffer
; * [out]predQP quantization parameter of the predictor block
; * [out]predDir indicates the prediction direction which takes one
; * of the following values:
; * OMX_VC_HORIZONTAL predict horizontally
; * OMX_VC_VERTICAL predict vertically
; *
; * Return Value:
; * Standard OMXResult result. See enumeration for possible result codes.
; *
; */
INCLUDE omxtypes_s.h
INCLUDE armCOMM_s.h
INCLUDE omxVC_s.h
M_VARIANTS ARM1136JS
IF ARM1136JS
;// Input Arguments
BlockIndex RN 0
pCoefBufRow RN 1
pCoefBufCol RN 2
predDir RN 3
predQP RN 4
pQpBuf RN 5
;// Local Variables
Return RN 0
blockDCLeft RN 6
blockDCTop RN 7
blockDCTopLeft RN 8
temp1 RN 9
temp2 RN 14
M_START armVCM4P2_SetPredDir,r9
M_ARG ppredQP,4
M_ARG ppQpBuf,4
LDRH blockDCTopLeft,[pCoefBufRow,#-16]
LDRH blockDCLeft,[pCoefBufCol]
TEQ BlockIndex,#3
LDREQH blockDCTop,[pCoefBufCol,#-16]
LDRNEH blockDCTop,[pCoefBufRow]
SUBS temp1,blockDCLeft,blockDCTopLeft
RSBLT temp1,temp1,#0
SUBS temp2,blockDCTopLeft,blockDCTop
RSBLT temp2,temp2,#0
M_LDR pQpBuf,ppQpBuf
M_LDR predQP,ppredQP
CMP temp1,temp2
MOV temp2,#OMX_VC_VERTICAL
LDRLTB temp1,[pQpBuf,#1]
STRLT temp2,[predDir]
STRLT temp1,[predQP]
MOV temp2,#OMX_VC_HORIZONTAL
LDRGEB temp1,[pQpBuf]
STRGE temp2,[predDir]
MOV Return,#OMX_Sts_NoErr
STRGE temp1,[predQP]
M_END
ENDIF
END