diff options
Diffstat (limited to 'media/libstagefright/codecs/mp3dec')
10 files changed, 90 insertions, 1468 deletions
diff --git a/media/libstagefright/codecs/mp3dec/Android.mk b/media/libstagefright/codecs/mp3dec/Android.mk index 135c715..8284490 100644 --- a/media/libstagefright/codecs/mp3dec/Android.mk +++ b/media/libstagefright/codecs/mp3dec/Android.mk @@ -50,6 +50,8 @@ LOCAL_C_INCLUDES := \ LOCAL_CFLAGS := \ -DOSCL_UNUSED_ARG= +LOCAL_CFLAGS += -Werror + LOCAL_MODULE := libstagefright_mp3dec LOCAL_ARM_MODE := arm @@ -69,6 +71,8 @@ LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/src \ $(LOCAL_PATH)/include +LOCAL_CFLAGS += -Werror + LOCAL_SHARED_LIBRARIES := \ libstagefright libstagefright_omx libstagefright_foundation libutils liblog diff --git a/media/libstagefright/codecs/mp3dec/SoftMP3.cpp b/media/libstagefright/codecs/mp3dec/SoftMP3.cpp index 7c382fb..5396022 100644 --- a/media/libstagefright/codecs/mp3dec/SoftMP3.cpp +++ b/media/libstagefright/codecs/mp3dec/SoftMP3.cpp @@ -49,6 +49,8 @@ SoftMP3::SoftMP3( mNumChannels(2), mSamplingRate(44100), mSignalledError(false), + mSawInputEos(false), + mSignalledOutputEos(false), mOutputPortSettingsChange(NONE) { initPorts(); initDecoder(); @@ -144,6 +146,23 @@ OMX_ERRORTYPE SoftMP3::internalGetParameter( return OMX_ErrorNone; } + case OMX_IndexParamAudioMp3: + { + OMX_AUDIO_PARAM_MP3TYPE *mp3Params = + (OMX_AUDIO_PARAM_MP3TYPE *)params; + + if (mp3Params->nPortIndex > 1) { + return OMX_ErrorUndefined; + } + + mp3Params->nChannels = mNumChannels; + mp3Params->nBitRate = 0 /* unknown */; + mp3Params->nSampleRate = mSamplingRate; + // other fields are encoder-only + + return OMX_ErrorNone; + } + default: return SimpleSoftOMXComponent::internalGetParameter(index, params); } @@ -186,7 +205,7 @@ OMX_ERRORTYPE SoftMP3::internalSetParameter( } } -void SoftMP3::onQueueFilled(OMX_U32 portIndex) { +void SoftMP3::onQueueFilled(OMX_U32 /* portIndex */) { if (mSignalledError || mOutputPortSettingsChange != NONE) { return; } @@ -194,48 +213,36 @@ void SoftMP3::onQueueFilled(OMX_U32 portIndex) { List<BufferInfo *> &inQueue = getPortQueue(0); List<BufferInfo *> &outQueue = getPortQueue(1); - while (!inQueue.empty() && !outQueue.empty()) { - BufferInfo *inInfo = *inQueue.begin(); - OMX_BUFFERHEADERTYPE *inHeader = inInfo->mHeader; + while ((!inQueue.empty() || (mSawInputEos && !mSignalledOutputEos)) && !outQueue.empty()) { + BufferInfo *inInfo = NULL; + OMX_BUFFERHEADERTYPE *inHeader = NULL; + if (!inQueue.empty()) { + inInfo = *inQueue.begin(); + inHeader = inInfo->mHeader; + } BufferInfo *outInfo = *outQueue.begin(); OMX_BUFFERHEADERTYPE *outHeader = outInfo->mHeader; + outHeader->nFlags = 0; - if (inHeader->nFlags & OMX_BUFFERFLAG_EOS) { - inQueue.erase(inQueue.begin()); - inInfo->mOwnedByUs = false; - notifyEmptyBufferDone(inHeader); - - if (!mIsFirst) { - // pad the end of the stream with 529 samples, since that many samples - // were trimmed off the beginning when decoding started - outHeader->nFilledLen = - kPVMP3DecoderDelay * mNumChannels * sizeof(int16_t); - - memset(outHeader->pBuffer, 0, outHeader->nFilledLen); - } else { - // Since we never discarded frames from the start, we won't have - // to add any padding at the end either. - outHeader->nFilledLen = 0; + if (inHeader) { + if (inHeader->nOffset == 0 && inHeader->nFilledLen) { + mAnchorTimeUs = inHeader->nTimeStamp; + mNumFramesOutput = 0; } - outHeader->nFlags = OMX_BUFFERFLAG_EOS; + if (inHeader->nFlags & OMX_BUFFERFLAG_EOS) { + mSawInputEos = true; + } - outQueue.erase(outQueue.begin()); - outInfo->mOwnedByUs = false; - notifyFillBufferDone(outHeader); - return; - } + mConfig->pInputBuffer = + inHeader->pBuffer + inHeader->nOffset; - if (inHeader->nOffset == 0) { - mAnchorTimeUs = inHeader->nTimeStamp; - mNumFramesOutput = 0; + mConfig->inputBufferCurrentLength = inHeader->nFilledLen; + } else { + mConfig->pInputBuffer = NULL; + mConfig->inputBufferCurrentLength = 0; } - - mConfig->pInputBuffer = - inHeader->pBuffer + inHeader->nOffset; - - mConfig->inputBufferCurrentLength = inHeader->nFilledLen; mConfig->inputBufferMaxLength = 0; mConfig->inputBufferUsedLength = 0; @@ -262,13 +269,28 @@ void SoftMP3::onQueueFilled(OMX_U32 portIndex) { mConfig->outputFrameSize = kOutputBufferSize / sizeof(int16_t); } - // This is recoverable, just ignore the current frame and - // play silence instead. - memset(outHeader->pBuffer, - 0, - mConfig->outputFrameSize * sizeof(int16_t)); - - mConfig->inputBufferUsedLength = inHeader->nFilledLen; + if (decoderErr == NO_ENOUGH_MAIN_DATA_ERROR && mSawInputEos) { + if (!mIsFirst) { + // pad the end of the stream with 529 samples, since that many samples + // were trimmed off the beginning when decoding started + outHeader->nOffset = 0; + outHeader->nFilledLen = kPVMP3DecoderDelay * mNumChannels * sizeof(int16_t); + + memset(outHeader->pBuffer, 0, outHeader->nFilledLen); + } + outHeader->nFlags = OMX_BUFFERFLAG_EOS; + mSignalledOutputEos = true; + } else { + // This is recoverable, just ignore the current frame and + // play silence instead. + memset(outHeader->pBuffer, + 0, + mConfig->outputFrameSize * sizeof(int16_t)); + + if (inHeader) { + mConfig->inputBufferUsedLength = inHeader->nFilledLen; + } + } } else if (mConfig->samplingRate != mSamplingRate || mConfig->num_channels != mNumChannels) { mSamplingRate = mConfig->samplingRate; @@ -289,7 +311,7 @@ void SoftMP3::onQueueFilled(OMX_U32 portIndex) { outHeader->nFilledLen = mConfig->outputFrameSize * sizeof(int16_t) - outHeader->nOffset; - } else { + } else if (!mSignalledOutputEos) { outHeader->nOffset = 0; outHeader->nFilledLen = mConfig->outputFrameSize * sizeof(int16_t); } @@ -298,23 +320,24 @@ void SoftMP3::onQueueFilled(OMX_U32 portIndex) { mAnchorTimeUs + (mNumFramesOutput * 1000000ll) / mConfig->samplingRate; - outHeader->nFlags = 0; - - CHECK_GE(inHeader->nFilledLen, mConfig->inputBufferUsedLength); + if (inHeader) { + CHECK_GE(inHeader->nFilledLen, mConfig->inputBufferUsedLength); - inHeader->nOffset += mConfig->inputBufferUsedLength; - inHeader->nFilledLen -= mConfig->inputBufferUsedLength; + inHeader->nOffset += mConfig->inputBufferUsedLength; + inHeader->nFilledLen -= mConfig->inputBufferUsedLength; - mNumFramesOutput += mConfig->outputFrameSize / mNumChannels; - if (inHeader->nFilledLen == 0) { - inInfo->mOwnedByUs = false; - inQueue.erase(inQueue.begin()); - inInfo = NULL; - notifyEmptyBufferDone(inHeader); - inHeader = NULL; + if (inHeader->nFilledLen == 0) { + inInfo->mOwnedByUs = false; + inQueue.erase(inQueue.begin()); + inInfo = NULL; + notifyEmptyBufferDone(inHeader); + inHeader = NULL; + } } + mNumFramesOutput += mConfig->outputFrameSize / mNumChannels; + outInfo->mOwnedByUs = false; outQueue.erase(outQueue.begin()); outInfo = NULL; @@ -329,6 +352,9 @@ void SoftMP3::onPortFlushCompleted(OMX_U32 portIndex) { // depend on fragments from the last one decoded. pvmp3_InitDecoder(mConfig, mDecoderBuf); mIsFirst = true; + mSignalledError = false; + mSawInputEos = false; + mSignalledOutputEos = false; } } @@ -362,6 +388,8 @@ void SoftMP3::onReset() { pvmp3_InitDecoder(mConfig, mDecoderBuf); mIsFirst = true; mSignalledError = false; + mSawInputEos = false; + mSignalledOutputEos = false; mOutputPortSettingsChange = NONE; } diff --git a/media/libstagefright/codecs/mp3dec/SoftMP3.h b/media/libstagefright/codecs/mp3dec/SoftMP3.h index 4af91ea..f9e7b53 100644 --- a/media/libstagefright/codecs/mp3dec/SoftMP3.h +++ b/media/libstagefright/codecs/mp3dec/SoftMP3.h @@ -61,6 +61,8 @@ private: bool mIsFirst; bool mSignalledError; + bool mSawInputEos; + bool mSignalledOutputEos; enum { NONE, diff --git a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_dct_9_arm.s b/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_dct_9_arm.s deleted file mode 100644 index 3a6dd4f..0000000 --- a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_dct_9_arm.s +++ /dev/null @@ -1,210 +0,0 @@ -; ------------------------------------------------------------------ -; Copyright (C) 1998-2009 PacketVideo -; -; 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. -; ------------------------------------------------------------------- - -; -; -; Filename: pvmp3_dct_9.s -; -;------------------------------------------------------------------------------ -; REVISION HISTORY -; -; -; Who: Date: MM/DD/YYYY -; Description: -; -;------------------------------------------------------------------------------ - - AREA |.drectve|, DRECTVE - - DCB "-defaultlib:coredll.lib " - DCB "-defaultlib:corelibc.lib " - - IMPORT pvmp3_mdct_18 ; pvmp3_mdct_18.cpp - -;------------------------------------------------------------------------------ - - AREA |.rdata|, DATA, READONLY - % 4 - - -;------------------------------------------------------------------------------ - - AREA |.text|, CODE, READONLY - - -;------------------------------------------------------------------------------ - - EXPORT |pvmp3_dct_9| - -|pvmp3_dct_9| PROC - stmfd sp!,{r4-r10,lr} - ldr r2, [r0, #0x20] - ldr r3, [r0] - ldr r12,[r0, #4] - add r1,r2,r3 - sub lr,r2,r3 - ldr r3,[r0, #0x1c] - ldr r4,[r0, #0x18] - add r2,r3,r12 - ldr r5,[r0,#8] - sub r3,r3,r12 - add r12,r4,r5 - sub r4,r4,r5 - ldr r5,[r0, #0x14] - ldr r7,[r0, #0xc] - ldr r9,[r0, #0x10] - add r6,r5,r7 - sub r5,r5,r7 - add r7,r1,r12 - add r8,r9,r2 - add r7,r7,r6 - add r10,r7,r8 - rsb r7,r8,r7,asr #1 - str r7,[r0, #0x18] - rsb r2,r9,r2,asr #1 - str r10,[r0] - ldr r11,|cos_2pi_9| - rsb r7,r2,#0 - - mov r9,r1,lsl #1 - mov r1,r9 ;;;;;; !!!!!! - mov r8,r7 - -; vec[4] = fxp_mac32_Q32( vec[4], tmp0<<1, cos_2pi_9); - - smlal r1,r8,r11,r9 - ldr r10,|cos_4pi_9| - ldr r11,|cos_pi_9| - -; vec[8] = fxp_mac32_Q32( vec[8], tmp0<<1, cos_4pi_9); - - smlal r1,r7,r10,r9 - - - -; vec[2] = fxp_mac32_Q32( vec[2], tmp0<<1, cos_pi_9); - - smlal r9,r2,r11,r9 - mov r1,r12,lsl #1 - rsb r9,r10,#0 - ldr r11,|cos_5pi_9| - - smlal r12,r2,r9,r1 - - - -; vec[2] = fxp_mac32_Q32( vec[2], tmp2<<1, cos_5pi_9); - - ldr r9,|cos_2pi_9| - mov r12,r1 ;;;;;; !!!!!! - smlal r12,r8,r11,r1 - - -; vec[8] = fxp_mac32_Q32( vec[8], tmp2<<1, cos_2pi_9); - - smlal r1,r7,r9,r1 - mov r1,r6,lsl #1 - smlal r12,r7,r11,r1 - and r6,r10,r11,asr #14 - smlal r12,r8,r6,r1 - ldr r10,|cos_11pi_18| - add r12,r11,r6 - smlal r1,r2,r12,r1 - ldr r9,|cos_8pi_9| - str r2,[r0,#8] - mov r1,r5,lsl #1 - -; vec[8] = fxp_mac32_Q32( vec[8], tmp3<<1, cos_8pi_9); - - smull r2,r6,r9,r1 - str r7,[r0,#0x20] - mov r2,r4,lsl #1 - ldr r7,|cos_13pi_18| - smlal r12,r6,r10,r2 - - mov r3,r3,lsl #1 - -; vec[5] = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18); - - smlal r12,r6,r7,r3 - add r4,r5,r4 - mov r12,lr,lsl #1 - sub lr,r4,lr - ldr r7,|cos_17pi_18| - str r8,[r0, #0x10] - ldr r4,|cos_pi_6| - - mov lr,lr,lsl #1 - -; vec[1] = fxp_mac32_Q32( vec[1], tmp8<<1, cos_17pi_18); - - smlal r8,r6,r7,r12 - -; vec[3] = fxp_mul32_Q32((tmp5 + tmp6 - tmp8)<<1, cos_pi_6); - - smull r5,lr,r4,lr - str r6,[r0, #4] - str lr,[r0, #0xc] - - -; vec[5] = fxp_mul32_Q32(tmp5<<1, cos_17pi_18); - smull r5,lr,r7,r1 - rsb r6,r9,#0 -; vec[5] = fxp_mac32_Q32( vec[5], tmp6<<1, cos_7pi_18); - smlal r5,lr,r6,r2 -; vec[5] = fxp_mac32_Q32( vec[5], tmp7<<1, cos_pi_6); - smlal r5,lr,r4,r3 -; vec[5] = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18); - smlal r5,lr,r10,r12 - str lr,[r0, #0x14] - rsb lr,r10,#0 - -; vec[7] = fxp_mul32_Q32(tmp5<<1, cos_5pi_18); - smull r5,r1,lr,r1 -; vec[7] = fxp_mac32_Q32( vec[7], tmp6<<1, cos_17pi_18); - smlal r2,r1,r7,r2 -; vec[7] = fxp_mac32_Q32( vec[7], tmp7<<1, cos_pi_6); - smlal r3,r1,r4,r3 -; vec[7] = fxp_mac32_Q32( vec[7], tmp8<<1, cos_11pi_18); - smlal r12,r1,r9,r12 - str r1,[r0, #0x1c] - ldmfd sp!,{r4-r10,pc} -|cos_2pi_9| - DCD 0x620dbe80 -|cos_4pi_9| - DCD 0x163a1a80 -|cos_pi_9| - DCD 0x7847d900 -|cos_5pi_9| - DCD 0x87b82700 -|cos_8pi_9| - DCD 0xd438af00 -|cos_11pi_18| - DCD 0xadb92280 -|cos_13pi_18| - DCD 0x91261480 -|cos_17pi_18| - DCD 0x81f1d200 -|cos_pi_6| - DCD 0x6ed9eb80 - ENDP - - - - - - END diff --git a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_mdct_18_arm.s b/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_mdct_18_arm.s deleted file mode 100644 index 9401d8c..0000000 --- a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_mdct_18_arm.s +++ /dev/null @@ -1,369 +0,0 @@ -; ------------------------------------------------------------------ -; Copyright (C) 1998-2009 PacketVideo -; -; 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. -; ------------------------------------------------------------------- - -; -; -; Filename: pvmp3_dct_18.s -; -;------------------------------------------------------------------------------ -; REVISION HISTORY -; -; -; Who: Date: MM/DD/YYYY -; Description: -; -;------------------------------------------------------------------------------ - - EXPORT pvmp3_mdct_18 - - IMPORT ||Lib$$Request$$armlib|| [WEAK] - IMPORT ||Lib$$Request$$cpplib|| [WEAK] - IMPORT pvmp3_dct_9 - - -;------------------------------------------------------------------------------ - - AREA |.text|, CODE, READONLY, ALIGN=2 - - -;------------------------------------------------------------------------------ - -|pvmp3_mdct_18| PROC - stmfd sp!,{r4-r10,lr} - mov r7,r2 - ldr r2,table - mov r6,r1 - add r3,r2,#0x24 - add r12,r3,#0x44 - add r1,r0,#0x44 - mov r5,r0 - -; for ( i=9; i!=0; i--) -; { - - mov r4,#9 -Loop_1 - -; tmp = *(pt_vec); -; tmp1 = *(pt_vec_o); - - ldr lr,[r0] ;; tmp == lr - ldr r8,[r3],#4 ;; tmp1 == r8 - -; tmp = fxp_mul32_Q32( tmp<<1, *(pt_cos++ )); -; tmp1 = fxp_mul32_Q27( tmp1, *(pt_cos_x--)); - - mov lr,lr,lsl #1 - smull r10,lr,r8,lr - ldr r8,[r12],#-4 - ldr r9,[r1] - subs r4,r4,#1 - smull r9,r10,r8,r9 - mov r8,r9,lsr #27 - add r8,r8,r10,lsl #5 - -; *(pt_vec++) = tmp + tmp1 ; -; *(pt_vec_o--) = fxp_mul32_Q28( (tmp - tmp1), *(pt_cos_split++)); - - add r9,lr,r8 - sub r8,lr,r8 - ldr lr,[r2],#4 - str r9,[r0],#4 - smull r8,r9,lr,r8 - mov lr,r8,lsr #28 - add lr,lr,r9,lsl #4 - str lr,[r1],#-4 - bne Loop_1 - -; } - - mov r0,r5 ;; r0 = vec - bl pvmp3_dct_9 - add r0,r5,#0x24 ;; r0 = &vec[9] - bl pvmp3_dct_9 - - ldr r0,[r5,#0x20] - ldr r2,[r5,#0x40] - str r0,[r5,#0x40] - ldr r0,[r5,#0x1c] - ldr r3,[r5,#0x38] - str r0,[r5,#0x38] - ldr r1,[r5,#0x18] - ldr r0,[r5,#0x30] - str r1,[r5,#0x30] - ldr r12,[r5,#0x14] - ldr r1,[r5,#0x28] - str r12,[r5,#0x28] - ldr r12,[r5,#0x10] - str r12,[r5,#0x20] - ldr r12,[r5,#0xc] - str r12,[r5,#0x18] - ldr r12,[r5,#8] - str r12,[r5,#0x10] - ldr r12,[r5,#4] - str r12,[r5,#8] - ldr r12,[r5,#0x24] - sub r12,r12,r1 - str r12,[r5,#4] - ldr r12,[r5,#0x2c] - sub r1,r12,r1 - str r1,[r5,#0xc] - sub r1,r12,r0 - str r1,[r5,#0x14] - ldr r1,[r5,#0x34] - sub r0,r1,r0 - str r0,[r5,#0x1c] - sub r0,r1,r3 - str r0,[r5,#0x24] - ldr r1,[r5,#0x3c] - sub r3,r1,r3 - sub r1,r1,r2 - str r1,[r5,#0x34] - str r3,[r5,#0x2c] - ldr r1,[r5,#0x44] - sub r1,r1,r2 - str r1,[r5,#0x3c] - ldr r12,[r5,#0] - -Loop_2 - add r1,r5,r4,lsl #2 - ldr r2,[r1,#0x28] - ldr r3,[r6,r4,lsl #2] - add r0,r0,r2 - str r0,[r1,#0x28] - ldr lr,[r7,r4,lsl #2] - ldr r1,[r1,#4] - smlal r0,r3,lr,r0 - mov r0,r2 - add r2,r12,r1 - rsb r2,r2,#0 - str r3,[r5,r4,lsl #2] - str r2,[r6,r4,lsl #2] - add r4,r4,#1 - cmp r4,#6 - mov r12,r1 - - blt Loop_2 - - ldr r1,[r5,#0x40] - ldr r2,[r6,#0x18] - add r3,r0,r1 - str r3,[r5,#0x40] - ldr lr,[r7,r4,lsl #2] - mov r3,r3,lsl #1 - ldr r0,[r5,#0x1c] - smlal r3,r2,lr,r3 - add r3,r12,r0 - str r2,[r5,#0x18] - ldr r2,[r6,#0x1c] - rsb r3,r3,#0 - str r3,[r6,#0x18] - ldr r3,[r5,#0x20] - add r0,r3,r0 - rsb r0,r0,#0 - str r0,[r6,#0x1c] - ldr r3,[r5,#0x44] - ldr r0,[r6,#0x20] - add r3,r3,r1 - mov r1,r2 - ldr r10,[r7,#0x1c] - mov r2,r3,lsl #1 - smlal r12,r1,r10,r2 - str r1,[r5,#0x1c] - ldr r1,[r5,#0x20] - ldr r3,[r5,#0x24] - add r1,r1,r3 - rsb r1,r1,#0 - str r1,[r6,#0x20] - ldr r1,[r5,#0x44] - ldr r3,[r7,#0x20] - mov r1,r1,lsl #1 - smlal r12,r0,r3,r1 - ldr lr,[r7,#0x24] - ldr r3,[r6,#0x24] - str r0,[r5,#0x20] - smlal r1,r3,lr,r1 - ldr r0,[r6,#0x40] - ldr r12,[r6,#0x44] - str r3,[r5,#0x24] - ldr r1,[r5,#0x28] - ldr r3,[r7,#0x44] - mov r1,r1,lsl #1 - smlal r1,r12,r3,r1 - ldr r1,[r5,#0x40] - str r12,[r5,#0x44] - rsb r8,r1,#0 - str r8,[r5,#0x28] - ldr r1,[r5,#0x2c] - ldr r3,[r7,#0x40] - mov r1,r1,lsl #1 - smlal r1,r0,r3,r1 - str r0,[r5,#0x40] - ldr r0,[r5,#0x3c] - ldr r1,[r6,#0x38] - ldr r3,[r6,#0x3c] - rsb r9,r0,#0 - str r9,[r5,#0x2c] - ldr r0,[r5,#0x30] - ldr r12,[r7,#0x3c] - mov r0,r0,lsl #1 - smlal r0,r3,r12,r0 - str r3,[r5,#0x3c] - ldr r0,[r5,#0x38] - rsb r0,r0,#0 - str r0,[r5,#0x30] - ldr r3,[r5,#0x34] - ldr r12,[r7,#0x38] - mov r3,r3,lsl #1 - smlal r3,r1,r12,r3 - mov r0,r0,lsl #1 - str r1,[r5,#0x38] - ldr r4,[r7,#0x34] - ldr r1,[r6,#0x34] - ldr r3,[r6,#0x30] - smlal r0,r1,r4,r0 - ldr r12,[r6,#0x2c] - ldr lr,[r6,#0x28] - str r1,[r5,#0x34] - ldr r1,[r7,#0x30] - mov r0,r9,lsl #1 - smlal r0,r3,r1,r0 - mov r0,r8,lsl #1 - ldr r1,[r7,#0x2c] - str r3,[r5,#0x30] - smlal r0,r12,r1,r0 - ldr r0,[r7,#0x28] - str r12,[r5,#0x2c] - smlal r2,lr,r0,r2 - str lr,[r5,#0x28] - ldr r1,[r6,#4] - ldr r12,[r7,#0x48] - mov r2,r1,lsl #1 - ldr r1,[r6,#0x20] - ldr r0,[r6] - mov r1,r1,lsl #1 - smull r4,lr,r12,r1 - ldr r3,[r6,#0x1c] - str lr,[r6] - ldr r12,[r7,#0x4c] - mov r3,r3,lsl #1 - smull r4,lr,r12,r3 - mov r0,r0,lsl #1 - ldr r12,[r7,#0x64] - str lr,[r6,#4] - smull r4,lr,r12,r2 - ldr r12,[r7,#0x68] - str lr,[r6,#0x1c] - smull r4,lr,r12,r0 - ldr r12,[r7,#0x6c] - str lr,[r6,#0x20] - smull lr,r0,r12,r0 - ldr r12,[r7,#0x70] - str r0,[r6,#0x24] - smull r0,r2,r12,r2 - ldr r0,[r7,#0x88] - str r2,[r6,#0x28] - smull r3,r2,r0,r3 - ldr r0,[r7,#0x8c] - str r2,[r6,#0x40] - smull r2,r1,r0,r1 - str r1,[r6,#0x44] - ldr r0,[r6,#0x18] - ldr lr,[r7,#0x50] - mov r1,r0,lsl #1 - ldr r0,[r6,#0x14] - smull r5,r4,lr,r1 - ldr r12,[r6,#0x10] - mov r3,r0,lsl #1 - ldr r0,[r6,#0xc] - mov r12,r12,lsl #1 - mov r2,r0,lsl #1 - ldr r0,[r6,#8] - str r4,[r6,#8] - ldr lr,[r7,#0x54] - mov r0,r0,lsl #1 - smull r5,r4,lr,r3 - ldr lr,[r7,#0x58] - str r4,[r6,#0xc] - smull r5,r4,lr,r12 - ldr lr,[r7,#0x5c] - str r4,[r6,#0x10] - smull r5,r4,lr,r2 - ldr lr,[r7,#0x60] - str r4,[r6,#0x14] - smull r5,r4,lr,r0 - ldr lr,[r7,#0x74] - str r4,[r6,#0x18] - smull r4,r0,lr,r0 - ldr lr,[r7,#0x78] - str r0,[r6,#0x2c] - smull r0,r2,lr,r2 - ldr r0,[r7,#0x7c] - str r2,[r6,#0x30] - smull r12,r2,r0,r12 - ldr r0,[r7,#0x80] - str r2,[r6,#0x34] - smull r3,r2,r0,r3 - ldr r0,[r7,#0x84] - str r2,[r6,#0x38] - smull r2,r1,r0,r1 - str r1,[r6,#0x3c] - ldmfd sp!,{r4-r10,pc} -table - DCD ||.constdata$1|| - ENDP - -;------------------------------------------------------------------------------ - - AREA |.constdata|, DATA, READONLY, ALIGN=2 - -;------------------------------------------------------------------------------ - -||.constdata$1|| -cosTerms_dct18 - DCD 0x0807d2b0 - DCD 0x08483ee0 - DCD 0x08d3b7d0 - DCD 0x09c42570 - DCD 0x0b504f30 - DCD 0x0df29440 - DCD 0x12edfb20 - DCD 0x1ee8dd40 - DCD 0x5bca2a00 -cosTerms_1_ov_cos_phi - DCD 0x400f9c00 - DCD 0x408d6080 - DCD 0x418dcb80 - DCD 0x431b1a00 - DCD 0x4545ea00 - DCD 0x48270680 - DCD 0x4be25480 - DCD 0x50ab9480 - DCD 0x56ce4d80 - DCD 0x05ebb630 - DCD 0x06921a98 - DCD 0x0771d3a8 - DCD 0x08a9a830 - DCD 0x0a73d750 - DCD 0x0d4d5260 - DCD 0x127b1ca0 - DCD 0x1ea52b40 - DCD 0x5bb3cc80 - - - - END diff --git a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_mdct_18_wm.asm b/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_mdct_18_wm.asm deleted file mode 100644 index 5be75d4..0000000 --- a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_mdct_18_wm.asm +++ /dev/null @@ -1,366 +0,0 @@ -; ------------------------------------------------------------------ -; Copyright (C) 1998-2009 PacketVideo -; -; 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. -; ------------------------------------------------------------------- - -; -; -; Filename: pvmp3_dct_18.s -; -;------------------------------------------------------------------------------ -; REVISION HISTORY -; -; -; Who: Date: MM/DD/YYYY -; Description: -; -;------------------------------------------------------------------------------ - - EXPORT |pvmp3_mdct_18| - - IMPORT pvmp3_dct_9 - - -;------------------------------------------------------------------------------ - - AREA |.text|, CODE, READONLY, ALIGN=2 - - -;------------------------------------------------------------------------------ - -|pvmp3_mdct_18| PROC - stmfd sp!,{r4-r10,lr} - mov r7,r2 - ldr r2,table - mov r6,r1 - add r3,r2,#0x24 - add r12,r3,#0x44 - add r1,r0,#0x44 - mov r5,r0 - -; for ( i=9; i!=0; i--) -; { - - mov r4,#9 -Loop_1 - -; tmp = *(pt_vec); -; tmp1 = *(pt_vec_o); - - ldr lr,[r0] ;; tmp == lr - ldr r8,[r3],#4 ;; tmp1 == r8 - -; tmp = fxp_mul32_Q32( tmp<<1, *(pt_cos++ )); -; tmp1 = fxp_mul32_Q27( tmp1, *(pt_cos_x--)); - - mov lr,lr,lsl #1 - smull r10,lr,r8,lr - ldr r8,[r12],#-4 - ldr r9,[r1] - subs r4,r4,#1 - smull r9,r10,r8,r9 - mov r8,r9,lsr #27 - add r8,r8,r10,lsl #5 - -; *(pt_vec++) = tmp + tmp1 ; -; *(pt_vec_o--) = fxp_mul32_Q28( (tmp - tmp1), *(pt_cos_split++)); - - add r9,lr,r8 - sub r8,lr,r8 - ldr lr,[r2],#4 - str r9,[r0],#4 - smull r8,r9,lr,r8 - mov lr,r8,lsr #28 - add lr,lr,r9,lsl #4 - str lr,[r1],#-4 - bne Loop_1 - -; } - - mov r0,r5 ;; r0 = vec - bl pvmp3_dct_9 - add r0,r5,#0x24 ;; r0 = &vec[9] - bl pvmp3_dct_9 - - ldr r0,[r5,#0x20] - ldr r2,[r5,#0x40] - str r0,[r5,#0x40] - ldr r0,[r5,#0x1c] - ldr r3,[r5,#0x38] - str r0,[r5,#0x38] - ldr r1,[r5,#0x18] - ldr r0,[r5,#0x30] - str r1,[r5,#0x30] - ldr r12,[r5,#0x14] - ldr r1,[r5,#0x28] - str r12,[r5,#0x28] - ldr r12,[r5,#0x10] - str r12,[r5,#0x20] - ldr r12,[r5,#0xc] - str r12,[r5,#0x18] - ldr r12,[r5,#8] - str r12,[r5,#0x10] - ldr r12,[r5,#4] - str r12,[r5,#8] - ldr r12,[r5,#0x24] - sub r12,r12,r1 - str r12,[r5,#4] - ldr r12,[r5,#0x2c] - sub r1,r12,r1 - str r1,[r5,#0xc] - sub r1,r12,r0 - str r1,[r5,#0x14] - ldr r1,[r5,#0x34] - sub r0,r1,r0 - str r0,[r5,#0x1c] - sub r0,r1,r3 - str r0,[r5,#0x24] - ldr r1,[r5,#0x3c] - sub r3,r1,r3 - sub r1,r1,r2 - str r1,[r5,#0x34] - str r3,[r5,#0x2c] - ldr r1,[r5,#0x44] - sub r1,r1,r2 - str r1,[r5,#0x3c] - ldr r12,[r5,#0] - -Loop_2 - add r1,r5,r4,lsl #2 - ldr r2,[r1,#0x28] - ldr r3,[r6,r4,lsl #2] - add r0,r0,r2 - str r0,[r1,#0x28] - ldr lr,[r7,r4,lsl #2] - ldr r1,[r1,#4] - smlal r0,r3,lr,r0 - mov r0,r2 - add r2,r12,r1 - rsb r2,r2,#0 - str r3,[r5,r4,lsl #2] - str r2,[r6,r4,lsl #2] - add r4,r4,#1 - cmp r4,#6 - mov r12,r1 - - blt Loop_2 - - ldr r1,[r5,#0x40] - ldr r2,[r6,#0x18] - add r3,r0,r1 - str r3,[r5,#0x40] - ldr lr,[r7,r4,lsl #2] - mov r3,r3,lsl #1 - ldr r0,[r5,#0x1c] - smlal r3,r2,lr,r3 - add r3,r12,r0 - str r2,[r5,#0x18] - ldr r2,[r6,#0x1c] - rsb r3,r3,#0 - str r3,[r6,#0x18] - ldr r3,[r5,#0x20] - add r0,r3,r0 - rsb r0,r0,#0 - str r0,[r6,#0x1c] - ldr r3,[r5,#0x44] - ldr r0,[r6,#0x20] - add r3,r3,r1 - mov r1,r2 - ldr r10,[r7,#0x1c] - mov r2,r3,lsl #1 - smlal r12,r1,r10,r2 - str r1,[r5,#0x1c] - ldr r1,[r5,#0x20] - ldr r3,[r5,#0x24] - add r1,r1,r3 - rsb r1,r1,#0 - str r1,[r6,#0x20] - ldr r1,[r5,#0x44] - ldr r3,[r7,#0x20] - mov r1,r1,lsl #1 - smlal r12,r0,r3,r1 - ldr lr,[r7,#0x24] - ldr r3,[r6,#0x24] - str r0,[r5,#0x20] - smlal r1,r3,lr,r1 - ldr r0,[r6,#0x40] - ldr r12,[r6,#0x44] - str r3,[r5,#0x24] - ldr r1,[r5,#0x28] - ldr r3,[r7,#0x44] - mov r1,r1,lsl #1 - smlal r1,r12,r3,r1 - ldr r1,[r5,#0x40] - str r12,[r5,#0x44] - rsb r8,r1,#0 - str r8,[r5,#0x28] - ldr r1,[r5,#0x2c] - ldr r3,[r7,#0x40] - mov r1,r1,lsl #1 - smlal r1,r0,r3,r1 - str r0,[r5,#0x40] - ldr r0,[r5,#0x3c] - ldr r1,[r6,#0x38] - ldr r3,[r6,#0x3c] - rsb r9,r0,#0 - str r9,[r5,#0x2c] - ldr r0,[r5,#0x30] - ldr r12,[r7,#0x3c] - mov r0,r0,lsl #1 - smlal r0,r3,r12,r0 - str r3,[r5,#0x3c] - ldr r0,[r5,#0x38] - rsb r0,r0,#0 - str r0,[r5,#0x30] - ldr r3,[r5,#0x34] - ldr r12,[r7,#0x38] - mov r3,r3,lsl #1 - smlal r3,r1,r12,r3 - mov r0,r0,lsl #1 - str r1,[r5,#0x38] - ldr r4,[r7,#0x34] - ldr r1,[r6,#0x34] - ldr r3,[r6,#0x30] - smlal r0,r1,r4,r0 - ldr r12,[r6,#0x2c] - ldr lr,[r6,#0x28] - str r1,[r5,#0x34] - ldr r1,[r7,#0x30] - mov r0,r9,lsl #1 - smlal r0,r3,r1,r0 - mov r0,r8,lsl #1 - ldr r1,[r7,#0x2c] - str r3,[r5,#0x30] - smlal r0,r12,r1,r0 - ldr r0,[r7,#0x28] - str r12,[r5,#0x2c] - smlal r2,lr,r0,r2 - str lr,[r5,#0x28] - ldr r1,[r6,#4] - ldr r12,[r7,#0x48] - mov r2,r1,lsl #1 - ldr r1,[r6,#0x20] - ldr r0,[r6] - mov r1,r1,lsl #1 - smull r4,lr,r12,r1 - ldr r3,[r6,#0x1c] - str lr,[r6] - ldr r12,[r7,#0x4c] - mov r3,r3,lsl #1 - smull r4,lr,r12,r3 - mov r0,r0,lsl #1 - ldr r12,[r7,#0x64] - str lr,[r6,#4] - smull r4,lr,r12,r2 - ldr r12,[r7,#0x68] - str lr,[r6,#0x1c] - smull r4,lr,r12,r0 - ldr r12,[r7,#0x6c] - str lr,[r6,#0x20] - smull lr,r0,r12,r0 - ldr r12,[r7,#0x70] - str r0,[r6,#0x24] - smull r0,r2,r12,r2 - ldr r0,[r7,#0x88] - str r2,[r6,#0x28] - smull r3,r2,r0,r3 - ldr r0,[r7,#0x8c] - str r2,[r6,#0x40] - smull r2,r1,r0,r1 - str r1,[r6,#0x44] - ldr r0,[r6,#0x18] - ldr lr,[r7,#0x50] - mov r1,r0,lsl #1 - ldr r0,[r6,#0x14] - smull r5,r4,lr,r1 - ldr r12,[r6,#0x10] - mov r3,r0,lsl #1 - ldr r0,[r6,#0xc] - mov r12,r12,lsl #1 - mov r2,r0,lsl #1 - ldr r0,[r6,#8] - str r4,[r6,#8] - ldr lr,[r7,#0x54] - mov r0,r0,lsl #1 - smull r5,r4,lr,r3 - ldr lr,[r7,#0x58] - str r4,[r6,#0xc] - smull r5,r4,lr,r12 - ldr lr,[r7,#0x5c] - str r4,[r6,#0x10] - smull r5,r4,lr,r2 - ldr lr,[r7,#0x60] - str r4,[r6,#0x14] - smull r5,r4,lr,r0 - ldr lr,[r7,#0x74] - str r4,[r6,#0x18] - smull r4,r0,lr,r0 - ldr lr,[r7,#0x78] - str r0,[r6,#0x2c] - smull r0,r2,lr,r2 - ldr r0,[r7,#0x7c] - str r2,[r6,#0x30] - smull r12,r2,r0,r12 - ldr r0,[r7,#0x80] - str r2,[r6,#0x34] - smull r3,r2,r0,r3 - ldr r0,[r7,#0x84] - str r2,[r6,#0x38] - smull r2,r1,r0,r1 - str r1,[r6,#0x3c] - ldmfd sp!,{r4-r10,pc} -table - DCD cosTerms_dct18 - ENDP - -;------------------------------------------------------------------------------ - - AREA |.constdata|, DATA, READONLY, ALIGN=2 - -;------------------------------------------------------------------------------ - -cosTerms_dct18 - DCD 0x0807d2b0 - DCD 0x08483ee0 - DCD 0x08d3b7d0 - DCD 0x09c42570 - DCD 0x0b504f30 - DCD 0x0df29440 - DCD 0x12edfb20 - DCD 0x1ee8dd40 - DCD 0x5bca2a00 -cosTerms_1_ov_cos_phi - DCD 0x400f9c00 - DCD 0x408d6080 - DCD 0x418dcb80 - DCD 0x431b1a00 - DCD 0x4545ea00 - DCD 0x48270680 - DCD 0x4be25480 - DCD 0x50ab9480 - DCD 0x56ce4d80 - DCD 0x05ebb630 - DCD 0x06921a98 - DCD 0x0771d3a8 - DCD 0x08a9a830 - DCD 0x0a73d750 - DCD 0x0d4d5260 - DCD 0x127b1ca0 - DCD 0x1ea52b40 - DCD 0x5bb3cc80 - - - - END diff --git a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_polyphase_filter_window_arm.s b/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_polyphase_filter_window_arm.s deleted file mode 100644 index abec599..0000000 --- a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_polyphase_filter_window_arm.s +++ /dev/null @@ -1,237 +0,0 @@ -; ------------------------------------------------------------------ -; Copyright (C) 1998-2009 PacketVideo -; -; 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. -; ------------------------------------------------------------------- - -; -; -; Filename: pvmp3_polyphase_filter_window.s -; -;------------------------------------------------------------------------------ -; REVISION HISTORY -; -; -; Who: Date: MM/DD/YYYY -; Description: -; -;------------------------------------------------------------------------------ - - EXPORT pvmp3_polyphase_filter_window - - IMPORT ||Lib$$Request$$armlib|| [WEAK] - IMPORT ||Lib$$Request$$cpplib|| [WEAK] - IMPORT pqmfSynthWin - - - -;------------------------------------------------------------------------------ - - AREA |.text|, CODE, READONLY, ALIGN=2 - - -;------------------------------------------------------------------------------ - -|pvmp3_polyphase_filter_window| PROC - - stmfd sp!,{r0-r2,r4-r11,lr} - - sub sp,sp,#4 - ldr r2,[sp,#0xc] - ldr r1,PolyPh_filter_coeff - - sub r2,r2,#1 - mov r10,#1 - str r2,[sp] - -; Accumulators r9, r11::> Initialization - -Loop_j - mov r9, #0x20 - mov r11, #0x20 - mov r4, #0x10 -Loop_i - add r2,r4,r10 - add r3,r0,r2,lsl #2 - sub r2,r4,r10 - ldr r5,[r3] - ldr lr,[r1] - add r12,r0,r2,lsl #2 - ldr r6,[r12,#0x780] - smlal r2,r9,lr,r5 - smlal r2,r11,lr,r6 - ldr r2,[r1,#4] - ldr r7,[r12,#0x80] - smlal r5,r11,r2,r5 - smull r6,r5,r2,r6 - sub r9,r9,r5 - ldr r5,[r1,#8] - ldr r8,[r3,#0x700] - add r4,r4,#0x200 - smlal r6,r9,r5,r7 - smull r6,r2,r5,r8 - ldr r5,[r1,#0xc] - sub r11,r11,r2 - smlal r8,r9,r5,r8 - smlal r7,r11,r5,r7 - ldr r5,[r3,#0x100] - ldr r2,[r1,#0x10] - ldr r6,[r12,#0x680] - smlal lr,r9,r2,r5 - smlal lr,r11,r2,r6 - ldr r2,[r1,#0x14] - ldr r7,[r12,#0x180] - smlal r5,r11,r2,r5 - smull r6,r5,r2,r6 - ldr r6,[r1,#0x18] - ldr r8,[r3,#0x600] - sub r9,r9,r5 - smlal r5,r9,r6,r7 - smull r2,r5,r6,r8 - ldr r6,[r1,#0x1c] - sub r11,r11,r5 - smlal r8,r9,r6,r8 - ldr r2,[r1,#0x20] - ldr r5,[r3,#0x200] - smlal r7,r11,r6,r7 - ldr r6,[r12,#0x580] - smlal lr,r9,r2,r5 - smlal lr,r11,r2,r6 - ldr r2,[r1,#0x24] - ldr r7,[r12,#0x280] - smlal r5,r11,r2,r5 - smull r6,r5,r2,r6 - ldr r6,[r1,#0x28] - ldr r8,[r3,#0x500] - sub r9,r9,r5 - smlal r5,r9,r6,r7 - smull r2,r5,r6,r8 - ldr r6,[r1,#0x2c] - sub r11,r11,r5 - - smlal r8,r9,r6,r8 - smlal r7,r11,r6,r7 - ldr r5,[r3,#0x300] - ldr r8,[r1,#0x30] - ldr r6,[r12,#0x480] - smlal r7,r9,r8,r5 - smlal r7,r11,r8,r6 - ldr r8,[r1,#0x34] - ldr r12,[r12,#0x380] - smlal r5,r11,r8,r5 - smull r6,r5,r8,r6 - ldr r6,[r1,#0x38] - - - ldr r3,[r3,#0x400] - sub r9,r9,r5 - smlal r7,r9,r6,r12 - smull r8,r7,r6,r3 - cmp r4,#0x210 - sub r11,r11,r7 - - ldr r2,[r1,#0x3c] - add r1,r1,#0x40 - smlal r3,r9,r2,r3 - smlal r12,r11,r2,r12 - - blt Loop_i - - mov r3,r9, asr #6 - mov r4,r3, asr #15 - teq r4,r3, asr #31 - ldr r12,LOW_16BITS - ldr r2,[sp] - eorne r3,r12,r3,asr #31 - ldr r4,[sp,#8] - mov r2,r10,lsl r2 - add r4,r4,r2,lsl #1 - strh r3,[r4] - - mov r3,r11,asr #6 - mov r4,r3,asr #15 - teq r4,r3,asr #31 - eorne r3,r12,r3,asr #31 - ldr r12,[sp,#0xc] - ldr r11,[sp,#8] - rsb r2,r2,r12,lsl #5 - add r2,r11,r2,lsl #1 - strh r3,[r2] - - add r10,r10,#1 - cmp r10,#0x10 - blt Loop_j - -; Accumulators r4, r5 Initialization - - mov r4,#0x20 - mov r5,#0x20 - mov r3,#0x10 -PolyPh_filter_loop2 - add r2,r0,r3,lsl #2 - ldr r12,[r2] - ldr r8,[r1] - ldr r6,[r2,#0x80] - smlal r12,r4,r8,r12 - ldr r12,[r1,#4] - ldr r7,[r2,#0x40] - smlal r6,r4,r12,r6 - - ldr r12,[r1,#8] - ldr r6,[r2,#0x180] - smlal r7,r5,r12,r7 - ldr r12,[r2,#0x100] - ldr r7,[r1,#0xc] - ldr r2,[r2,#0x140] - smlal r12,r4,r7,r12 - ldr r12,[r1,#0x10] - add r3,r3,#0x80 - smlal r6,r4,r12,r6 - ldr r6,[r1,#0x14] - cmp r3,#0x210 - smlal r2,r5,r6,r2 - add r1,r1,#0x18 - - blt PolyPh_filter_loop2 - mov r0,r4,asr #6 - mov r2,r0,asr #15 - teq r2,r0,asr #31 - ldrne r12,LOW_16BITS - ldr r1,[sp,#8] - eorne r0,r12,r0,asr #31 - strh r0,[r1,#0] - mov r0,r5,asr #6 - mov r2,r0,asr #15 - teq r2,r0,asr #31 - ldrne r12,LOW_16BITS - ldr r2,[sp] - mov r1,#0x10 - eorne r0,r12,r0,asr #31 - ldr r12,[sp,#8] - mov r1,r1,lsl r2 - add r1,r12,r1,lsl #1 - strh r0,[r1] - add sp,sp,#0x10 - ldmfd sp!,{r4-r11,pc} - - -PolyPh_filter_coeff - DCD pqmfSynthWin -LOW_16BITS - DCD 0x00007fff - - ENDP - - - END diff --git a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_polyphase_filter_window_gcc.s b/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_polyphase_filter_window_gcc.s index b74c849..1140ed7 100644 --- a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_polyphase_filter_window_gcc.s +++ b/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_polyphase_filter_window_gcc.s @@ -35,6 +35,7 @@ .text .extern pqmfSynthWin +.hidden pqmfSynthWin diff --git a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_polyphase_filter_window_wm.asm b/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_polyphase_filter_window_wm.asm deleted file mode 100644 index f957267..0000000 --- a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_polyphase_filter_window_wm.asm +++ /dev/null @@ -1,231 +0,0 @@ -; ------------------------------------------------------------------ -; Copyright (C) 1998-2009 PacketVideo -; -; 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. -; ------------------------------------------------------------------- - -; -; -; Filename: pvmp3_polyphase_filter_window.s -; -;------------------------------------------------------------------------------ -; REVISION HISTORY -; -; -; Who: Date: MM/DD/YYYY -; Description: -; -;------------------------------------------------------------------------------ - - CODE32 - - AREA |.drectve|, DRECTVE - - EXPORT |pvmp3_polyphase_filter_window| - IMPORT |pqmfSynthWin| - - AREA |.pdata|, PDATA - - AREA |.text|, CODE, ARM - -|pvmp3_polyphase_filter_window| PROC - stmfd sp!,{r0-r2,r4-r11,lr} - - sub sp,sp,#4 - ldr r2,[sp,#0xc] - ldr r1,PolyPh_filter_coeff - - sub r2,r2,#1 - mov r10,#1 - str r2,[sp] - -; Accumulators r9, r11::> Initialization - -Loop_j - mov r9, #0x20 - mov r11, #0x20 - mov r4, #0x10 -Loop_i - add r2,r4,r10 - add r3,r0,r2,lsl #2 - sub r2,r4,r10 - ldr r5,[r3] - ldr lr,[r1] - add r12,r0,r2,lsl #2 - ldr r6,[r12,#0x780] - smlal r2,r9,lr,r5 - smlal r2,r11,lr,r6 - ldr r2,[r1,#4] - ldr r7,[r12,#0x80] - smlal r5,r11,r2,r5 - smull r6,r5,r2,r6 - sub r9,r9,r5 - ldr r5,[r1,#8] - ldr r8,[r3,#0x700] - add r4,r4,#0x200 - smlal r6,r9,r5,r7 - smull r6,r2,r5,r8 - ldr r5,[r1,#0xc] - sub r11,r11,r2 - smlal r8,r9,r5,r8 - smlal r7,r11,r5,r7 - ldr r5,[r3,#0x100] - ldr r2,[r1,#0x10] - ldr r6,[r12,#0x680] - smlal lr,r9,r2,r5 - smlal lr,r11,r2,r6 - ldr r2,[r1,#0x14] - ldr r7,[r12,#0x180] - smlal r5,r11,r2,r5 - smull r6,r5,r2,r6 - ldr r6,[r1,#0x18] - ldr r8,[r3,#0x600] - sub r9,r9,r5 - smlal r5,r9,r6,r7 - smull r2,r5,r6,r8 - ldr r6,[r1,#0x1c] - sub r11,r11,r5 - smlal r8,r9,r6,r8 - ldr r2,[r1,#0x20] - ldr r5,[r3,#0x200] - smlal r7,r11,r6,r7 - ldr r6,[r12,#0x580] - smlal lr,r9,r2,r5 - smlal lr,r11,r2,r6 - ldr r2,[r1,#0x24] - ldr r7,[r12,#0x280] - smlal r5,r11,r2,r5 - smull r6,r5,r2,r6 - ldr r6,[r1,#0x28] - ldr r8,[r3,#0x500] - sub r9,r9,r5 - smlal r5,r9,r6,r7 - smull r2,r5,r6,r8 - ldr r6,[r1,#0x2c] - sub r11,r11,r5 - - smlal r8,r9,r6,r8 - smlal r7,r11,r6,r7 - ldr r5,[r3,#0x300] - ldr r8,[r1,#0x30] - ldr r6,[r12,#0x480] - smlal r7,r9,r8,r5 - smlal r7,r11,r8,r6 - ldr r8,[r1,#0x34] - ldr r12,[r12,#0x380] - smlal r5,r11,r8,r5 - smull r6,r5,r8,r6 - ldr r6,[r1,#0x38] - - - ldr r3,[r3,#0x400] - sub r9,r9,r5 - smlal r7,r9,r6,r12 - smull r8,r7,r6,r3 - cmp r4,#0x210 - sub r11,r11,r7 - - ldr r2,[r1,#0x3c] - add r1,r1,#0x40 - smlal r3,r9,r2,r3 - smlal r12,r11,r2,r12 - - blt Loop_i - - mov r3,r9, asr #6 - mov r4,r3, asr #15 - teq r4,r3, asr #31 - ldr r12,LOW_16BITS - ldr r2,[sp] - eorne r3,r12,r3,asr #31 - ldr r4,[sp,#8] - mov r2,r10,lsl r2 - add r4,r4,r2,lsl #1 - strh r3,[r4] - - mov r3,r11,asr #6 - mov r4,r3,asr #15 - teq r4,r3,asr #31 - eorne r3,r12,r3,asr #31 - ldr r12,[sp,#0xc] - ldr r11,[sp,#8] - rsb r2,r2,r12,lsl #5 - add r2,r11,r2,lsl #1 - strh r3,[r2] - - add r10,r10,#1 - cmp r10,#0x10 - blt Loop_j - -; Accumulators r4, r5 Initialization - - mov r4,#0x20 - mov r5,#0x20 - mov r3,#0x10 -PolyPh_filter_loop2 - add r2,r0,r3,lsl #2 - ldr r12,[r2] - ldr r8,[r1] - ldr r6,[r2,#0x80] - smlal r12,r4,r8,r12 - ldr r12,[r1,#4] - ldr r7,[r2,#0x40] - smlal r6,r4,r12,r6 - - ldr r12,[r1,#8] - ldr r6,[r2,#0x180] - smlal r7,r5,r12,r7 - ldr r12,[r2,#0x100] - ldr r7,[r1,#0xc] - ldr r2,[r2,#0x140] - smlal r12,r4,r7,r12 - ldr r12,[r1,#0x10] - add r3,r3,#0x80 - smlal r6,r4,r12,r6 - ldr r6,[r1,#0x14] - cmp r3,#0x210 - smlal r2,r5,r6,r2 - add r1,r1,#0x18 - - blt PolyPh_filter_loop2 - mov r0,r4,asr #6 - mov r2,r0,asr #15 - teq r2,r0,asr #31 - ldrne r12,LOW_16BITS - ldr r1,[sp,#8] - eorne r0,r12,r0,asr #31 - strh r0,[r1,#0] - mov r0,r5,asr #6 - mov r2,r0,asr #15 - teq r2,r0,asr #31 - ldrne r12,LOW_16BITS - ldr r2,[sp] - mov r1,#0x10 - eorne r0,r12,r0,asr #31 - ldr r12,[sp,#8] - mov r1,r1,lsl r2 - add r1,r12,r1,lsl #1 - strh r0,[r1] - add sp,sp,#0x10 - ldmfd sp!,{r4-r11,pc} - - -PolyPh_filter_coeff - DCD pqmfSynthWin -LOW_16BITS - DCD 0x00007fff - - ENDP ; |pvmp3_polyphase_filter_window| - END - diff --git a/media/libstagefright/codecs/mp3dec/src/pvmp3_mpeg2_get_scale_data.cpp b/media/libstagefright/codecs/mp3dec/src/pvmp3_mpeg2_get_scale_data.cpp index ee42dc5..499672b 100644 --- a/media/libstagefright/codecs/mp3dec/src/pvmp3_mpeg2_get_scale_data.cpp +++ b/media/libstagefright/codecs/mp3dec/src/pvmp3_mpeg2_get_scale_data.cpp @@ -139,7 +139,7 @@ void pvmp3_mpeg2_get_scale_data(mp3SideInfo *si, int16 blocknumber = 0; granuleInfo *gr_info = &(si->ch[ch].gran[gr]); - uint32 scalefac_comp, int_scalefac_comp, new_slen[4]; + uint32 scalefac_comp, int_scalefac_comp, new_slen[4] = { 0,0,0,0 }; scalefac_comp = gr_info->scalefac_compress; |