summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-10-16 19:03:24 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-10-16 19:03:24 +0000
commit81a61194428d64215d80219a7a64ecf7fee8830d (patch)
tree4e1db0d0ebca672ff8814f4807d0a222ed4f3273 /media
parentcd4dd3aa83deaa061eddfc47ee1cbac6b3147681 (diff)
parentc40da54b34138856446e79245ac45600191962b5 (diff)
downloadframeworks_av-81a61194428d64215d80219a7a64ecf7fee8830d.zip
frameworks_av-81a61194428d64215d80219a7a64ecf7fee8830d.tar.gz
frameworks_av-81a61194428d64215d80219a7a64ecf7fee8830d.tar.bz2
am c40da54b: Merge "Fix freed memory references" into lmp-dev
* commit 'c40da54b34138856446e79245ac45600191962b5': Fix freed memory references
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/MPEG4Extractor.cpp11
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),