diff options
author | Lajos Molnar <lajos@google.com> | 2014-10-16 19:07:58 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-10-16 19:07:58 +0000 |
commit | 44a1fd38065d438038a75a0a1535571d492d3457 (patch) | |
tree | e69d64a193d98b2b8aa7f9ecb00fab7b2034e699 | |
parent | 2ea68aaa5efa765a81a33f077ba9da4322e5fd2e (diff) | |
parent | ea4053283f8b77bf650d91347f6e591685daa1fa (diff) | |
download | frameworks_av-44a1fd38065d438038a75a0a1535571d492d3457.zip frameworks_av-44a1fd38065d438038a75a0a1535571d492d3457.tar.gz frameworks_av-44a1fd38065d438038a75a0a1535571d492d3457.tar.bz2 |
am ea405328: am c40da54b: Merge "Fix freed memory references" into lmp-dev
* commit 'ea4053283f8b77bf650d91347f6e591685daa1fa':
Fix freed memory references
-rw-r--r-- | media/libstagefright/MPEG4Extractor.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp index 1729f93..d922dc0 100644 --- a/media/libstagefright/MPEG4Extractor.cpp +++ b/media/libstagefright/MPEG4Extractor.cpp @@ -48,7 +48,8 @@ namespace android { class MPEG4Source : public MediaSource { public: // Caller retains ownership of both "dataSource" and "sampleTable". - MPEG4Source(const sp<MetaData> &format, + MPEG4Source(const sp<MPEG4Extractor> &owner, + const sp<MetaData> &format, const sp<DataSource> &dataSource, int32_t timeScale, const sp<SampleTable> &sampleTable, @@ -70,6 +71,8 @@ protected: private: Mutex mLock; + // keep the MPEG4Extractor around, since we're referencing its data + sp<MPEG4Extractor> mOwner; sp<MetaData> mFormat; sp<DataSource> mDataSource; int32_t mTimescale; @@ -2593,7 +2596,7 @@ sp<MediaSource> MPEG4Extractor::getTrack(size_t index) { ALOGV("getTrack called, pssh: %zu", mPssh.size()); - return new MPEG4Source( + return new MPEG4Source(this, track->meta, mDataSource, track->timescale, track->sampleTable, mSidxEntries, trex, mMoofOffset); } @@ -2940,6 +2943,7 @@ status_t MPEG4Extractor::updateAudioTrackInfoFromESDS_MPEG4Audio( //////////////////////////////////////////////////////////////////////////////// MPEG4Source::MPEG4Source( + const sp<MPEG4Extractor> &owner, const sp<MetaData> &format, const sp<DataSource> &dataSource, int32_t timeScale, @@ -2947,7 +2951,8 @@ MPEG4Source::MPEG4Source( Vector<SidxEntry> &sidx, const Trex *trex, off64_t firstMoofOffset) - : mFormat(format), + : mOwner(owner), + mFormat(format), mDataSource(dataSource), mTimescale(timeScale), mSampleTable(sampleTable), |