1ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen/* 2ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * Copyright (C) 2012 The Android Open Source Project 3ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * 4ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * Licensed under the Apache License, Version 2.0 (the "License"); 5ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * you may not use this file except in compliance with the License. 6ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * You may obtain a copy of the License at 7ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * 8ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * http://www.apache.org/licenses/LICENSE-2.0 9ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * 10ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * Unless required by applicable law or agreed to in writing, software 11ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * distributed under the License is distributed on an "AS IS" BASIS, 12ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * See the License for the specific language governing permissions and 14ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen * limitations under the License. 15ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen */ 16ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 17ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen#ifndef SOFT_GSM_H_ 18ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 19ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen#define SOFT_GSM_H_ 20ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 21ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen#include "SimpleSoftOMXComponent.h" 22ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 23ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissenextern "C" { 24ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen#include "gsm.h" 25ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen} 26ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 27ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissennamespace android { 28ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 29ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissenstruct SoftGSM : public SimpleSoftOMXComponent { 30ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen SoftGSM(const char *name, 31ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen const OMX_CALLBACKTYPE *callbacks, 32ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen OMX_PTR appData, 33ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen OMX_COMPONENTTYPE **component); 34ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 35ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissenprotected: 36ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen virtual ~SoftGSM(); 37ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 38ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen virtual OMX_ERRORTYPE internalGetParameter( 39ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen OMX_INDEXTYPE index, OMX_PTR params); 40ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 41ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen virtual OMX_ERRORTYPE internalSetParameter( 42ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen OMX_INDEXTYPE index, const OMX_PTR params); 43ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 44ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen virtual void onQueueFilled(OMX_U32 portIndex); 45ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 46ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissenprivate: 47ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen enum { 48ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen kNumBuffers = 4, 49ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen kMaxNumSamplesPerFrame = 16384, 50ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen }; 51ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 52ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen bool mSignalledError; 53ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen gsm mGsm; 54ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 55ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen void initPorts(); 56ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 57ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen static int DecodeGSM(gsm handle, int16_t *out, uint8_t *in, size_t inSize); 58ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 59ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen DISALLOW_EVIL_CONSTRUCTORS(SoftGSM); 60ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen}; 61ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 62ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen} // namespace android 63ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 64ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen#endif // SOFT_GSM_H_ 65ba933df89521d63f75ca66af12ce9d7ae9496b9eMarco Nelissen 66