1 /* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17//#define LOG_NDEBUG 0 18#define LOG_TAG "TimedTextSource" 19#include <utils/Log.h> 20 21#include <media/stagefright/foundation/ADebug.h> // CHECK_XX macro 22#include <media/stagefright/DataSource.h> 23#include <media/stagefright/MediaDefs.h> // for MEDIA_MIMETYPE_xxx 24#include <media/stagefright/MediaSource.h> 25#include <media/stagefright/MetaData.h> 26 27#include "TimedTextSource.h" 28 29#include "TimedText3GPPSource.h" 30#include "TimedTextSRTSource.h" 31 32namespace android { 33 34// static 35sp<TimedTextSource> TimedTextSource::CreateTimedTextSource( 36 const sp<MediaSource>& mediaSource) { 37 const char *mime; 38 CHECK(mediaSource->getFormat()->findCString(kKeyMIMEType, &mime)); 39 if (strcasecmp(mime, MEDIA_MIMETYPE_TEXT_3GPP) == 0) { 40 return new TimedText3GPPSource(mediaSource); 41 } 42 ALOGE("Unsupported mime type for subtitle. : %s", mime); 43 return NULL; 44} 45 46// static 47sp<TimedTextSource> TimedTextSource::CreateTimedTextSource( 48 const sp<DataSource>& dataSource, FileType filetype) { 49 switch(filetype) { 50 case OUT_OF_BAND_FILE_SRT: 51 return new TimedTextSRTSource(dataSource); 52 case OUT_OF_BAND_FILE_SMI: 53 // TODO: Implement for SMI. 54 ALOGE("Supporting SMI is not implemented yet"); 55 break; 56 default: 57 ALOGE("Undefined subtitle format. : %d", filetype); 58 } 59 return NULL; 60} 61 62sp<MetaData> TimedTextSource::getFormat() { 63 return NULL; 64} 65 66} // namespace android 67