1d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant /* 2d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant * Copyright (C) 2012 The Android Open Source Project 3d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant * 4d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant * Licensed under the Apache License, Version 2.0 (the "License"); 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant * you may not use this file except in compliance with the License. 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant * You may obtain a copy of the License at 7d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant * 8d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant * http://www.apache.org/licenses/LICENSE-2.0 9d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant * 10d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant * Unless required by applicable law or agreed to in writing, software 11d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant * distributed under the License is distributed on an "AS IS" BASIS, 12d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant * See the License for the specific language governing permissions and 14d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant * limitations under the License. 15d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant */ 16d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant 17d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant//#define LOG_NDEBUG 0 18d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant#define LOG_TAG "TimedTextSource" 19d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant#include <utils/Log.h> 20d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant 21d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant#include <media/stagefright/foundation/ADebug.h> // CHECK_XX macro 22d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant#include <media/stagefright/DataSource.h> 23d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant#include <media/stagefright/MediaDefs.h> // for MEDIA_MIMETYPE_xxx 24d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant#include <media/stagefright/MediaSource.h> 25d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant#include <media/stagefright/MetaData.h> 26d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant 27d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant#include "TimedTextSource.h" 28d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant 29d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant#include "TimedText3GPPSource.h" 30d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant#include "TimedTextSRTSource.h" 31d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant 32d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnantnamespace android { 33d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant 34d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant// static 35d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnantsp<TimedTextSource> TimedTextSource::CreateTimedTextSource( 36d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant const sp<MediaSource>& mediaSource) { 37d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant const char *mime; 38d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant CHECK(mediaSource->getFormat()->findCString(kKeyMIMEType, &mime)); 39d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant if (strcasecmp(mime, MEDIA_MIMETYPE_TEXT_3GPP) == 0) { 40d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant return new TimedText3GPPSource(mediaSource); 41d7d01132954e05ba41137195f26a265e7e255e6aHoward Hinnant } 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