diff options
Diffstat (limited to 'media/libstagefright/DataSource.cpp')
-rw-r--r-- | media/libstagefright/DataSource.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/media/libstagefright/DataSource.cpp b/media/libstagefright/DataSource.cpp index 2a6dbc4..741e5e0 100644 --- a/media/libstagefright/DataSource.cpp +++ b/media/libstagefright/DataSource.cpp @@ -19,7 +19,10 @@ #include "include/MPEG4Extractor.h" #include "include/WAVExtractor.h" +#include <media/stagefright/CachingDataSource.h> #include <media/stagefright/DataSource.h> +#include <media/stagefright/FileSource.h> +#include <media/stagefright/HTTPDataSource.h> #include <media/stagefright/MediaErrors.h> #include <utils/String8.h> @@ -91,4 +94,24 @@ void DataSource::RegisterDefaultSniffers() { RegisterSniffer(SniffWAV); } +// static +sp<DataSource> DataSource::CreateFromURI(const char *uri) { + sp<DataSource> source; + if (!strncasecmp("file://", uri, 7)) { + source = new FileSource(uri + 7); + } else if (!strncasecmp("http://", uri, 7)) { + source = new HTTPDataSource(uri); + source = new CachingDataSource(source, 64 * 1024, 10); + } else { + // Assume it's a filename. + source = new FileSource(uri); + } + + if (source == NULL || source->initCheck() != OK) { + return NULL; + } + + return source; +} + } // namespace android |