diff options
author | Marco Nelissen <marcone@google.com> | 2012-08-24 17:18:25 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-08-24 17:18:25 -0700 |
commit | 96272d57caa39566842795ba1f0605a5a5f72272 (patch) | |
tree | 1ca35139ef23f8758896eda687ac12882ec9f8d3 | |
parent | b0c1e303913f606dca15bfb75c029f3d4a1ab04c (diff) | |
parent | fd7ec80f3d0e30c8df61b86951d926ab9c8c6d25 (diff) | |
download | frameworks_av-96272d57caa39566842795ba1f0605a5a5f72272.zip frameworks_av-96272d57caa39566842795ba1f0605a5a5f72272.tar.gz frameworks_av-96272d57caa39566842795ba1f0605a5a5f72272.tar.bz2 |
Merge "Fix deadlock" into jb-mr1-dev
-rw-r--r-- | media/libstagefright/NuMediaExtractor.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/media/libstagefright/NuMediaExtractor.cpp b/media/libstagefright/NuMediaExtractor.cpp index bf833dc..404fa94 100644 --- a/media/libstagefright/NuMediaExtractor.cpp +++ b/media/libstagefright/NuMediaExtractor.cpp @@ -126,6 +126,7 @@ status_t NuMediaExtractor::setDataSource( } status_t NuMediaExtractor::setDataSource(int fd, off64_t offset, off64_t size) { + Mutex::Autolock autoLock(mLock); if (mImpl != NULL) { @@ -134,7 +135,22 @@ status_t NuMediaExtractor::setDataSource(int fd, off64_t offset, off64_t size) { sp<FileSource> fileSource = new FileSource(dup(fd), offset, size); - return setDataSource(fileSource); + status_t err = fileSource->initCheck(); + if (err != OK) { + return err; + } + + mImpl = MediaExtractor::Create(fileSource); + + if (mImpl == NULL) { + return ERROR_UNSUPPORTED; + } + + mDataSource = fileSource; + + updateDurationAndBitrate(); + + return OK; } status_t NuMediaExtractor::setDataSource(const sp<DataSource> &source) { |