14c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh/* 24c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * Copyrightm (C) 2010 The Android Open Source Project 34c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * 44c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * Licensed under the Apache License, Version 2.0 (the "License"); 54c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * you may not use this file except in compliance with the License. 64c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * You may obtain a copy of the License at 74c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * 84c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * http://www.apache.org/licenses/LICENSE-2.0 94c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * 104c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * Unless required by applicable law or agreed to in writing, software 114c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * distributed under the License is distributed on an "AS IS" BASIS, 124c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * See the License for the specific language governing permissions and 144c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh * limitations under the License. 154c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh */ 164c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh 174c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh#include <stdint.h> 184c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh 194c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh#ifndef __AUDIO_CODEC_H__ 204c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh#define __AUDIO_CODEC_H__ 214c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh 224c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yehclass AudioCodec 234c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh{ 244c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yehpublic: 254033a67d0e99d422336574fc5c982d349632b117Chia-chi Yeh const char *name; 264033a67d0e99d422336574fc5c982d349632b117Chia-chi Yeh // Needed by destruction through base class pointers. 274c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh virtual ~AudioCodec() {} 284033a67d0e99d422336574fc5c982d349632b117Chia-chi Yeh // Returns sampleCount or non-positive value if unsupported. 294033a67d0e99d422336574fc5c982d349632b117Chia-chi Yeh virtual int set(int sampleRate, const char *fmtp) = 0; 304c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh // Returns the length of payload in bytes. 314c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh virtual int encode(void *payload, int16_t *samples) = 0; 324c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh // Returns the number of decoded samples. 3335d05dcba1e829782813b6ec21afceb5cffc22e6Chia-chi Yeh virtual int decode(int16_t *samples, int count, void *payload, int length) = 0; 344c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh}; 354c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh 364c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi YehAudioCodec *newAudioCodec(const char *codecName); 374c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh 384c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh#endif 39