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 173f9e08973f33a5640e52381431ef02aa184dd018Carl Shapiro#include <strings.h> 184c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh 194c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh#include "AudioCodec.h" 204c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh 2178c11b3cf170fdd35ff6984bc2a64c01e2457503Chia-chi Yehextern AudioCodec *newAlawCodec(); 2278c11b3cf170fdd35ff6984bc2a64c01e2457503Chia-chi Yehextern AudioCodec *newUlawCodec(); 23a6f950c9682ffffc00ca976aafeeedf391718b1dChia-chi Yehextern AudioCodec *newGsmCodec(); 24f88fc1fa907f720df4a3e915509e688e9e4cf1f8Chia-chi Yehextern AudioCodec *newAmrCodec(); 25f4ae94229d736c7dbd3c5c36d484213d51545702Chia-chi Yehextern AudioCodec *newGsmEfrCodec(); 264c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh 274c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yehstruct AudioCodecType { 284c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh const char *name; 294c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh AudioCodec *(*create)(); 304c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh} gAudioCodecTypes[] = { 314c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh {"PCMA", newAlawCodec}, 324c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh {"PCMU", newUlawCodec}, 33a6f950c9682ffffc00ca976aafeeedf391718b1dChia-chi Yeh {"GSM", newGsmCodec}, 34f88fc1fa907f720df4a3e915509e688e9e4cf1f8Chia-chi Yeh {"AMR", newAmrCodec}, 35f4ae94229d736c7dbd3c5c36d484213d51545702Chia-chi Yeh {"GSM-EFR", newGsmEfrCodec}, 364c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh {NULL, NULL}, 374c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh}; 384c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh 394c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi YehAudioCodec *newAudioCodec(const char *codecName) 404c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh{ 414c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh AudioCodecType *type = gAudioCodecTypes; 424c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh while (type->name != NULL) { 434033a67d0e99d422336574fc5c982d349632b117Chia-chi Yeh if (strcasecmp(codecName, type->name) == 0) { 444033a67d0e99d422336574fc5c982d349632b117Chia-chi Yeh AudioCodec *codec = type->create(); 454033a67d0e99d422336574fc5c982d349632b117Chia-chi Yeh codec->name = type->name; 464033a67d0e99d422336574fc5c982d349632b117Chia-chi Yeh return codec; 474c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh } 484c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh ++type; 494c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh } 504c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh return NULL; 514c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8Chia-chi Yeh} 52