10c1bc742181ded4930842b46e9507372f0b1b963James Dong; 20c1bc742181ded4930842b46e9507372f0b1b963James Dong; Copyright (C) 2009 The Android Open Source Project 30c1bc742181ded4930842b46e9507372f0b1b963James Dong; 40c1bc742181ded4930842b46e9507372f0b1b963James Dong; Licensed under the Apache License, Version 2.0 (the "License"); 50c1bc742181ded4930842b46e9507372f0b1b963James Dong; you may not use this file except in compliance with the License. 60c1bc742181ded4930842b46e9507372f0b1b963James Dong; You may obtain a copy of the License at 70c1bc742181ded4930842b46e9507372f0b1b963James Dong; 80c1bc742181ded4930842b46e9507372f0b1b963James Dong; http://www.apache.org/licenses/LICENSE-2.0 90c1bc742181ded4930842b46e9507372f0b1b963James Dong; 100c1bc742181ded4930842b46e9507372f0b1b963James Dong; Unless required by applicable law or agreed to in writing, software 110c1bc742181ded4930842b46e9507372f0b1b963James Dong; distributed under the License is distributed on an "AS IS" BASIS, 120c1bc742181ded4930842b46e9507372f0b1b963James Dong; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130c1bc742181ded4930842b46e9507372f0b1b963James Dong; See the License for the specific language governing permissions and 140c1bc742181ded4930842b46e9507372f0b1b963James Dong; limitations under the License. 150c1bc742181ded4930842b46e9507372f0b1b963James Dong; 160c1bc742181ded4930842b46e9507372f0b1b963James Dong 170c1bc742181ded4930842b46e9507372f0b1b963James Dong REQUIRE8 180c1bc742181ded4930842b46e9507372f0b1b963James Dong PRESERVE8 190c1bc742181ded4930842b46e9507372f0b1b963James Dong 200c1bc742181ded4930842b46e9507372f0b1b963James Dong AREA |.text|, CODE 210c1bc742181ded4930842b46e9507372f0b1b963James Dong 220c1bc742181ded4930842b46e9507372f0b1b963James Dong EXPORT h264bsdFlushBits 230c1bc742181ded4930842b46e9507372f0b1b963James Dong 240c1bc742181ded4930842b46e9507372f0b1b963James Dong; Input / output registers 250c1bc742181ded4930842b46e9507372f0b1b963James DongpStrmData RN 0 260c1bc742181ded4930842b46e9507372f0b1b963James DongnumBits RN 1 270c1bc742181ded4930842b46e9507372f0b1b963James DongreadBits RN 2 280c1bc742181ded4930842b46e9507372f0b1b963James DongstrmBuffSize RN 3 290c1bc742181ded4930842b46e9507372f0b1b963James DongpStrmBuffStart RN 1 300c1bc742181ded4930842b46e9507372f0b1b963James DongpStrmCurrPos RN 2 310c1bc742181ded4930842b46e9507372f0b1b963James DongbitPosInWord RN 1 320c1bc742181ded4930842b46e9507372f0b1b963James Dong 330c1bc742181ded4930842b46e9507372f0b1b963James Dong; -- NEON registers -- 340c1bc742181ded4930842b46e9507372f0b1b963James Dong 350c1bc742181ded4930842b46e9507372f0b1b963James Dong 360c1bc742181ded4930842b46e9507372f0b1b963James Dong 370c1bc742181ded4930842b46e9507372f0b1b963James Dong;/*------------------------------------------------------------------------------ 380c1bc742181ded4930842b46e9507372f0b1b963James Dong; 390c1bc742181ded4930842b46e9507372f0b1b963James Dong; Function: h264bsdFlushBits 400c1bc742181ded4930842b46e9507372f0b1b963James Dong; 410c1bc742181ded4930842b46e9507372f0b1b963James Dong; Functional description: 420c1bc742181ded4930842b46e9507372f0b1b963James Dong; 430c1bc742181ded4930842b46e9507372f0b1b963James Dong; Inputs: 440c1bc742181ded4930842b46e9507372f0b1b963James Dong; 450c1bc742181ded4930842b46e9507372f0b1b963James Dong; Outputs: 460c1bc742181ded4930842b46e9507372f0b1b963James Dong; 470c1bc742181ded4930842b46e9507372f0b1b963James Dong; Returns: 480c1bc742181ded4930842b46e9507372f0b1b963James Dong; 490c1bc742181ded4930842b46e9507372f0b1b963James Dong;------------------------------------------------------------------------------*/ 500c1bc742181ded4930842b46e9507372f0b1b963James Dong 510c1bc742181ded4930842b46e9507372f0b1b963James Dongh264bsdFlushBits 520c1bc742181ded4930842b46e9507372f0b1b963James Dong;// PUSH {r4-r6,lr} 530c1bc742181ded4930842b46e9507372f0b1b963James Dong 540c1bc742181ded4930842b46e9507372f0b1b963James Dong LDR readBits, [pStrmData, #0x10] 550c1bc742181ded4930842b46e9507372f0b1b963James Dong LDR strmBuffSize, [pStrmData, #0xC] 560c1bc742181ded4930842b46e9507372f0b1b963James Dong 570c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD readBits, readBits, numBits 580c1bc742181ded4930842b46e9507372f0b1b963James Dong AND bitPosInWord, readBits, #7 590c1bc742181ded4930842b46e9507372f0b1b963James Dong 600c1bc742181ded4930842b46e9507372f0b1b963James Dong STR readBits, [pStrmData, #0x10] 610c1bc742181ded4930842b46e9507372f0b1b963James Dong STR bitPosInWord, [pStrmData, #0x8] 620c1bc742181ded4930842b46e9507372f0b1b963James Dong 630c1bc742181ded4930842b46e9507372f0b1b963James Dong LDR pStrmBuffStart, [pStrmData, #0x0] 640c1bc742181ded4930842b46e9507372f0b1b963James Dong 650c1bc742181ded4930842b46e9507372f0b1b963James Dong CMP readBits, strmBuffSize, LSL #3 660c1bc742181ded4930842b46e9507372f0b1b963James Dong 670c1bc742181ded4930842b46e9507372f0b1b963James Dong BHI end_of_stream 680c1bc742181ded4930842b46e9507372f0b1b963James Dong 690c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD pStrmCurrPos, pStrmBuffStart, readBits, LSR #3 700c1bc742181ded4930842b46e9507372f0b1b963James Dong STR pStrmCurrPos, [pStrmData, #0x4] 710c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r0, #0 720c1bc742181ded4930842b46e9507372f0b1b963James Dong BX lr 730c1bc742181ded4930842b46e9507372f0b1b963James Dong;// POP {r4-r6,pc} 740c1bc742181ded4930842b46e9507372f0b1b963James Dong 750c1bc742181ded4930842b46e9507372f0b1b963James Dongend_of_stream 760c1bc742181ded4930842b46e9507372f0b1b963James Dong MVN r0, #0 770c1bc742181ded4930842b46e9507372f0b1b963James Dong BX lr 780c1bc742181ded4930842b46e9507372f0b1b963James Dong;// POP {r4-r6,pc} 790c1bc742181ded4930842b46e9507372f0b1b963James Dong 800c1bc742181ded4930842b46e9507372f0b1b963James Dong END 810c1bc742181ded4930842b46e9507372f0b1b963James Dong 820c1bc742181ded4930842b46e9507372f0b1b963James Dong 83