summaryrefslogtreecommitdiffstats
path: root/media/libstagefright
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright')
-rw-r--r--media/libstagefright/NuMediaExtractor.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/media/libstagefright/NuMediaExtractor.cpp b/media/libstagefright/NuMediaExtractor.cpp
index 64e5403..bf833dc 100644
--- a/media/libstagefright/NuMediaExtractor.cpp
+++ b/media/libstagefright/NuMediaExtractor.cpp
@@ -134,18 +134,28 @@ status_t NuMediaExtractor::setDataSource(int fd, off64_t offset, off64_t size) {
sp<FileSource> fileSource = new FileSource(dup(fd), offset, size);
- status_t err = fileSource->initCheck();
+ return setDataSource(fileSource);
+}
+
+status_t NuMediaExtractor::setDataSource(const sp<DataSource> &source) {
+ Mutex::Autolock autoLock(mLock);
+
+ if (mImpl != NULL) {
+ return -EINVAL;
+ }
+
+ status_t err = source->initCheck();
if (err != OK) {
return err;
}
- mImpl = MediaExtractor::Create(fileSource);
+ mImpl = MediaExtractor::Create(source);
if (mImpl == NULL) {
return ERROR_UNSUPPORTED;
}
- mDataSource = fileSource;
+ mDataSource = source;
updateDurationAndBitrate();