1252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber/* 2252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * Copyright (C) 2012 The Android Open Source Project 3252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * 4252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * you may not use this file except in compliance with the License. 6252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * You may obtain a copy of the License at 7252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * 8252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * 10252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * Unless required by applicable law or agreed to in writing, software 11252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * See the License for the specific language governing permissions and 14252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber * limitations under the License. 15252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber */ 16252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 17252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber#ifndef SOFT_AMRNB_ENCODER_H_ 18252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 19252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber#define SOFT_AMRNB_ENCODER_H_ 20252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 21252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber#include "SimpleSoftOMXComponent.h" 22252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 23252353088a5ebf8508fbc01439ff417805ef1417Andreas Hubernamespace android { 24252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 25252353088a5ebf8508fbc01439ff417805ef1417Andreas Huberstruct SoftAMRNBEncoder : public SimpleSoftOMXComponent { 26252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber SoftAMRNBEncoder( 27252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber const char *name, 28252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber const OMX_CALLBACKTYPE *callbacks, 29252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber OMX_PTR appData, 30252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber OMX_COMPONENTTYPE **component); 31252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 32252353088a5ebf8508fbc01439ff417805ef1417Andreas Huberprotected: 33252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber virtual ~SoftAMRNBEncoder(); 34252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 35252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber virtual OMX_ERRORTYPE internalGetParameter( 36252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber OMX_INDEXTYPE index, OMX_PTR params); 37252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 38252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber virtual OMX_ERRORTYPE internalSetParameter( 39252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber OMX_INDEXTYPE index, const OMX_PTR params); 40252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 41252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber virtual void onQueueFilled(OMX_U32 portIndex); 42252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 43252353088a5ebf8508fbc01439ff417805ef1417Andreas Huberprivate: 44252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber enum { 45252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber kNumBuffers = 4, 46252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber kNumSamplesPerFrame = 160, 47252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber }; 48252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 49252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber void *mEncState; 50252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber void *mSidState; 51252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 52252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber OMX_U32 mBitRate; 53252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber int mMode; 54252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 55252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber size_t mInputSize; 56252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber int16_t mInputFrame[kNumSamplesPerFrame]; 57252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber int64_t mInputTimeUs; 58252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 59252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber bool mSawInputEOS; 60252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber bool mSignalledError; 61252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 62252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber void initPorts(); 63252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber status_t initEncoder(); 64252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 65252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber status_t setAudioParams(); 66252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 67252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(SoftAMRNBEncoder); 68252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber}; 69252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 70252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber} // namespace android 71252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber 72252353088a5ebf8508fbc01439ff417805ef1417Andreas Huber#endif // SOFT_AMRNB_ENCODER_H_ 73