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