summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/on2/h264dec/omxdl/arm11/vc/m4p10/src/armVCM4P10_DecodeCoeffsToPair_s.s
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/codecs/on2/h264dec/omxdl/arm11/vc/m4p10/src/armVCM4P10_DecodeCoeffsToPair_s.s')
-rw-r--r--media/libstagefright/codecs/on2/h264dec/omxdl/arm11/vc/m4p10/src/armVCM4P10_DecodeCoeffsToPair_s.s325
1 files changed, 0 insertions, 325 deletions
diff --git a/media/libstagefright/codecs/on2/h264dec/omxdl/arm11/vc/m4p10/src/armVCM4P10_DecodeCoeffsToPair_s.s b/media/libstagefright/codecs/on2/h264dec/omxdl/arm11/vc/m4p10/src/armVCM4P10_DecodeCoeffsToPair_s.s
deleted file mode 100644
index ac448a0..0000000
--- a/media/libstagefright/codecs/on2/h264dec/omxdl/arm11/vc/m4p10/src/armVCM4P10_DecodeCoeffsToPair_s.s
+++ /dev/null
@@ -1,325 +0,0 @@
-;//
-;//
-;// File Name: armVCM4P10_DecodeCoeffsToPair_s.s
-;// OpenMAX DL: v1.0.2
-;// Revision: 9641
-;// Date: Thursday, February 7, 2008
-;//
-;// (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
-;//
-;//
-;//
-
- INCLUDE omxtypes_s.h
- INCLUDE armCOMM_s.h
- INCLUDE armCOMM_BitDec_s.h
-
- IMPORT armVCM4P10_CAVLCCoeffTokenTables
- IMPORT armVCM4P10_CAVLCTotalZeroTables
- IMPORT armVCM4P10_CAVLCTotalZeros2x2Tables
- IMPORT armVCM4P10_CAVLCRunBeforeTables
- IMPORT armVCM4P10_SuffixToLevel
- IMPORT armVCM4P10_ZigZag_4x4
- IMPORT armVCM4P10_ZigZag_2x2
-
- M_VARIANTS ARM1136JS
-
-;//DEBUG_ON SETL {TRUE}
-
-LAST_COEFF EQU 0x20 ;// End of block flag
-TWO_BYTE_COEFF EQU 0x10
-
-;// Declare input registers
-
-ppBitStream RN 0
-pOffset RN 1
-pNumCoeff RN 2
-ppPosCoefbuf RN 3
-nC RN 4 ;// number of coeffs or 17 for chroma
-sMaxNumCoeff RN 5
-
-;// Declare inner loop registers
-
-;// Level loop
-Count RN 0
-TrailingOnes RN 1
-pLevel RN 2
-LevelSuffix RN 3
-SuffixLength RN 4
-TotalCoeff RN 5
-
-pVLDTable RN 6
-Symbol RN 7
-T1 RN 8
-T2 RN 9
-RBitStream RN 10
-RBitBuffer RN 11
-RBitCount RN 12
-lr RN 14
-
-;// Run loop
-Count RN 0
-ZerosLeft RN 1
-pLevel RN 2
-ppRunTable RN 3
-pRun RN 4
-TotalCoeff RN 5
-
-pVLDTable RN 6
-Symbol RN 7
-T1 RN 8
-T2 RN 9
-RBitStream RN 10
-RBitBuffer RN 11
-RBitCount RN 12
-lr RN 14
-
-;// Fill in coefficients loop
-pPosCoefbuf RN 0
-temp RN 1
-pLevel RN 2
-ppPosCoefbuf RN 3
-pRun RN 4
-TotalCoeff RN 5
-pZigZag RN 6
-
-T1 RN 8
-T2 RN 9
-RBitStream RN 10
-RBitBuffer RN 11
-RBitCount RN 12
-CoeffNum RN 14
-
-
-
- IF ARM1136JS
-
- ;// Allocate stack memory required by the function
- M_ALLOC4 pppBitStream, 4
- M_ALLOC4 ppOffset, 4
- M_ALLOC4 pppPosCoefbuf, 4
- M_ALLOC4 ppLevel, 16*2
- M_ALLOC4 ppRun, 16
-
- ;// Write function header
- M_START armVCM4P10_DecodeCoeffsToPair, r11
-
- ;// Define stack arguments
- M_ARG pNC, 4
- M_ARG pSMaxNumCoeff,4
-
- ;// Code start
- M_BD_INIT0 ppBitStream, pOffset, RBitStream, RBitBuffer, RBitCount
- LDR pVLDTable, =armVCM4P10_CAVLCCoeffTokenTables
- M_LDR nC, pNC
-
- M_BD_INIT1 T1, T2, lr
- LDR pVLDTable, [pVLDTable, nC, LSL #2] ;// Find VLD table
-
- M_BD_INIT2 T1, T2, lr
-
- ;// Decode Symbol = TotalCoeff*4 + TrailingOnes
- M_BD_VLD Symbol, T1, T2, pVLDTable, 4, 2
-
- MOVS TotalCoeff, Symbol, LSR #2
- STRB TotalCoeff, [pNumCoeff]
- M_PRINTF "TotalCoeff=%d\n", TotalCoeff
- BEQ.W EndNoError ;// Finished if no coefficients
-
- CMP Symbol, #17*4
- BGE.W EndBadSymbol ;// Error if bad symbol
-
- ;// Save bitstream pointers
- M_STR ppBitStream, pppBitStream
- M_STR pOffset, ppOffset
- M_STR ppPosCoefbuf, pppPosCoefbuf
-
- ;// Decode Trailing Ones
- ANDS TrailingOnes, Symbol, #3
- M_ADR pLevel, ppLevel
- M_PRINTF "TrailingOnes=%d\n", TrailingOnes
- BEQ TrailingOnesDone
- MOV Count, TrailingOnes
-TrailingOnesLoop
- M_BD_READ8 Symbol, 1, T1
- SUBS Count, Count, #1
- MOV T1, #1
- SUB T1, T1, Symbol, LSL #1
- M_PRINTF "Level=%d\n", T1
- STRH T1, [pLevel], #2
- BGT TrailingOnesLoop
-TrailingOnesDone
-
- ;// Decode level values
- SUBS Count, TotalCoeff, TrailingOnes ;// Number of levels to read
- BEQ DecodeRuns ;// None left
-
- MOV SuffixLength, #1
- CMP TotalCoeff, #10
- MOVLE SuffixLength, #0
- CMP TrailingOnes, #3 ;// if (TrailingOnes<3)
- MOVLT TrailingOnes, #4 ;// then TrailingOnes = +4
- MOVGE TrailingOnes, #2 ;// else TrailingOnes = +2
- MOVGE SuffixLength, #0 ;// SuffixLength = 0
-
-LevelLoop
- M_BD_CLZ16 Symbol, T1, T2 ;// Symbol=LevelPrefix
- CMP Symbol,#16
- BGE EndBadSymbol
-
- MOVS lr, SuffixLength ;// if LevelSuffixSize==0
- TEQEQ Symbol, #14 ;// and LevelPrefix==14
- MOVEQ lr, #4 ;// then LevelSuffixSize=4
- TEQ Symbol, #15 ;// if LevelSuffixSize==15
- MOVEQ lr, #12 ;// then LevelSuffixSize=12
-
- TEQEQ SuffixLength,#0
- ADDEQ Symbol,Symbol,#15
-
- TEQ lr, #0 ;// if LevelSuffixSize==0
- BEQ LevelCodeRead ;// LevelCode = LevelPrefix
-
- M_BD_VREAD16 LevelSuffix, lr, T1, T2 ;// Read Level Suffix
-
- MOV Symbol, Symbol, LSL SuffixLength
- ADD Symbol, LevelSuffix, Symbol
-
-LevelCodeRead
- ;// Symbol = LevelCode
- ADD Symbol, Symbol, TrailingOnes ;// +4 if level cannot be +/-1, +2 o/w
- MOV TrailingOnes, #2
- MOVS T1, Symbol, LSR #1
- RSBCS T1, T1, #0 ;// If Symbol odd then negate
- M_PRINTF "Level=%d\n", T1
- STRH T1, [pLevel], #2 ;// Store level.
-
- LDR T2, =armVCM4P10_SuffixToLevel
- LDRSB T1, [T2, SuffixLength] ;// Find increment level
- TEQ SuffixLength, #0
- MOVEQ SuffixLength, #1
- CMP Symbol, T1
- ADDCS SuffixLength, SuffixLength, #1
- SUBS Count, Count, #1
- BGT LevelLoop
-
-DecodeRuns
- ;// Find number of zeros
- M_LDR T1, pSMaxNumCoeff ;// sMaxNumCoeff
- SUB Count, TotalCoeff, #1 ;// Number of runs excluding last
- SUBS ZerosLeft, T1, TotalCoeff ;// Maximum number of zeros there could be
- M_ADR pRun, ppRun
- MOV CoeffNum,TotalCoeff
- SUB CoeffNum,CoeffNum,#1
- BEQ NoZerosLeft
-
- ;// Unpack number of zeros from bitstream
- TEQ T1, #4
- LDREQ pVLDTable, =(armVCM4P10_CAVLCTotalZeros2x2Tables-4)
- LDRNE pVLDTable, =(armVCM4P10_CAVLCTotalZeroTables-4)
- LDR pVLDTable, [pVLDTable, TotalCoeff, LSL #2]
-
- M_BD_VLD Symbol, T1, T2, pVLDTable, 4, 2 ;// Symbol = ZerosLeft
- CMP Symbol,#16
- BGE EndBadSymbol
-
- LDR ppRunTable, =(armVCM4P10_CAVLCRunBeforeTables-4)
- M_ADR pRun, ppRun
- MOVS ZerosLeft, Symbol
-
- ADD CoeffNum,CoeffNum,ZerosLeft
-
- BEQ NoZerosLeft
-
- ;// Decode runs while zeros are left and more than one coefficient
-RunLoop
- SUBS Count, Count, #1
- LDR pVLDTable, [ppRunTable, ZerosLeft, LSL#2]
- BLT LastRun
- M_BD_VLD Symbol, T1, T2, pVLDTable, 3, 2 ;// Symbol = Run
- CMP Symbol,#15
- BGE EndBadSymbol
-
- SUBS ZerosLeft, ZerosLeft, Symbol
- M_PRINTF "Run=%d\n", Symbol
- STRB Symbol, [pRun], #1
- BGT RunLoop
-
- ;// Decode runs while no zeros are left
-NoZerosLeft
- SUBS Count, Count, #1
- M_PRINTF "Run=%d\n", ZerosLeft
- STRGEB ZerosLeft, [pRun], #1
- BGT NoZerosLeft
-
-LastRun
- ;// Final run length is remaining zeros
- M_PRINTF "LastRun=%d\n", ZerosLeft
- STRB ZerosLeft, [pRun], #1
-
- ;// Write coefficients to output array
- M_LDR T1, pSMaxNumCoeff ;// sMaxNumCoeff
- TEQ T1, #15
- ADDEQ CoeffNum,CoeffNum,#1
-
-
- SUB pRun,pRun,TotalCoeff
- SUB pLevel,pLevel,TotalCoeff
- SUB pLevel,pLevel,TotalCoeff
-
- M_LDR ppPosCoefbuf, pppPosCoefbuf
- LDR pPosCoefbuf, [ppPosCoefbuf]
- TEQ T1, #4
- LDREQ pZigZag, =armVCM4P10_ZigZag_2x2
- LDRNE pZigZag, =armVCM4P10_ZigZag_4x4
-
-
-
-OutputLoop
-
- LDRB T2, [pRun],#1
- LDRB T1, [pZigZag, CoeffNum]
- SUB CoeffNum, CoeffNum, #1 ;// Skip Non zero
- SUB CoeffNum, CoeffNum, T2 ;// Skip Zero run
-
- LDRSH T2, [pLevel],#2
-
- SUBS TotalCoeff, TotalCoeff, #1
- ORREQ T1, T1, #LAST_COEFF
-
- ADD temp, T2, #128
- CMP temp, #256
- ORRCS T1, T1, #TWO_BYTE_COEFF
-
-
- TEQ TotalCoeff, #0 ;// Preserves carry
-
- M_PRINTF "Output=%02x %04x\n", T1, T2
- STRB T1, [pPosCoefbuf], #1
- STRB T2, [pPosCoefbuf], #1
- MOV T2, T2, LSR #8
- STRCSB T2, [pPosCoefbuf], #1
- BNE OutputLoop
-
- ;// Finished
- STR pPosCoefbuf, [ppPosCoefbuf]
- M_LDR ppBitStream, pppBitStream
- M_LDR pOffset, ppOffset
- B EndNoError
-
-EndBadSymbol
- MOV r0, #OMX_Sts_Err
- B End
-
-EndNoError
- ;// Finished reading from the bitstream
- M_BD_FINI ppBitStream, pOffset
-
- ;// Set return value
- MOV r0, #OMX_Sts_NoErr
-End
- M_END
-
- ENDIF
-
- END
-