183f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber/* 283f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * Copyright (C) 2012 The Android Open Source Project 383f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * 483f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 583f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * you may not use this file except in compliance with the License. 683f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * You may obtain a copy of the License at 783f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * 883f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 983f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * 1083f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * Unless required by applicable law or agreed to in writing, software 1183f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 1283f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1383f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * See the License for the specific language governing permissions and 1483f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber * limitations under the License. 1583f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber */ 1683f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 1783f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber#ifndef SOFT_AMRWB_ENCODER_H_ 1883f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 1983f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber#define SOFT_AMRWB_ENCODER_H_ 2083f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 2183f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber#include "SimpleSoftOMXComponent.h" 2283f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 2383f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber#include "voAMRWB.h" 2483f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 2583f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huberstruct VO_AUDIO_CODECAPI; 2683f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huberstruct VO_MEM_OPERATOR; 2783f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 2883f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Hubernamespace android { 2983f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 3083f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huberstruct SoftAMRWBEncoder : public SimpleSoftOMXComponent { 3183f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber SoftAMRWBEncoder( 3283f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber const char *name, 3383f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber const OMX_CALLBACKTYPE *callbacks, 3483f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber OMX_PTR appData, 3583f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber OMX_COMPONENTTYPE **component); 3683f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 3783f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huberprotected: 3883f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber virtual ~SoftAMRWBEncoder(); 3983f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 4083f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber virtual OMX_ERRORTYPE internalGetParameter( 4183f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber OMX_INDEXTYPE index, OMX_PTR params); 4283f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 4383f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber virtual OMX_ERRORTYPE internalSetParameter( 4483f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber OMX_INDEXTYPE index, const OMX_PTR params); 4583f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 4683f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber virtual void onQueueFilled(OMX_U32 portIndex); 4783f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 4883f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huberprivate: 4983f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber enum { 5083f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber kNumBuffers = 4, 5183f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber kNumSamplesPerFrame = 320, 5283f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber }; 5383f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 5483f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber void *mEncoderHandle; 5583f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber VO_AUDIO_CODECAPI *mApiHandle; 5683f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber VO_MEM_OPERATOR *mMemOperator; 5783f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 5883f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber OMX_U32 mBitRate; 5983f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber VOAMRWBMODE mMode; 6083f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 6183f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber size_t mInputSize; 6283f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber int16_t mInputFrame[kNumSamplesPerFrame]; 6383f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber int64_t mInputTimeUs; 6483f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 6583f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber bool mSawInputEOS; 6683f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber bool mSignalledError; 6783f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 6883f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber void initPorts(); 6983f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber status_t initEncoder(); 7083f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 7183f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(SoftAMRWBEncoder); 7283f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber}; 7383f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 7483f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber} // namespace android 7583f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber 7683f70f4472e9b0cacc5d372eddfcef4b02662d10Andreas Huber#endif // SOFT_AMRWB_ENCODER_H_ 77