173f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh/* 273f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * Copyrightm (C) 2010 The Android Open Source Project 373f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * 473f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * Licensed under the Apache License, Version 2.0 (the "License"); 573f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * you may not use this file except in compliance with the License. 673f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * You may obtain a copy of the License at 773f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * 873f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * http://www.apache.org/licenses/LICENSE-2.0 973f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * 1073f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * Unless required by applicable law or agreed to in writing, software 1173f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * distributed under the License is distributed on an "AS IS" BASIS, 1273f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1373f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * See the License for the specific language governing permissions and 1473f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh * limitations under the License. 1573f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh */ 1673f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh 1773f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh#include <stdint.h> 1873f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh 1973f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh#ifndef __AUDIO_CODEC_H__ 2073f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh#define __AUDIO_CODEC_H__ 2173f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh 2273f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yehclass AudioCodec 2373f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh{ 2473f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yehpublic: 250d2c37c274f1db29f51f1d078f240be13b784bf2Chia-chi Yeh const char *name; 260d2c37c274f1db29f51f1d078f240be13b784bf2Chia-chi Yeh // Needed by destruction through base class pointers. 2773f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh virtual ~AudioCodec() {} 280d2c37c274f1db29f51f1d078f240be13b784bf2Chia-chi Yeh // Returns sampleCount or non-positive value if unsupported. 290d2c37c274f1db29f51f1d078f240be13b784bf2Chia-chi Yeh virtual int set(int sampleRate, const char *fmtp) = 0; 3073f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh // Returns the length of payload in bytes. 3173f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh virtual int encode(void *payload, int16_t *samples) = 0; 3273f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh // Returns the number of decoded samples. 33418b5f04c2eb3ceff046328ba23a16b89a5a3306Chia-chi Yeh virtual int decode(int16_t *samples, int count, void *payload, int length) = 0; 3473f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh}; 3573f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh 3673f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi YehAudioCodec *newAudioCodec(const char *codecName); 3773f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh 3873f6df1f0aac12c243e2110e30337ab01aa71598Chia-chi Yeh#endif 39