diff options
author | Andreas Huber <andih@google.com> | 2009-08-14 14:37:10 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2009-08-17 10:24:50 -0700 |
commit | 693d271e62a3726689ff68f4505ba49228eb94b2 (patch) | |
tree | dcc952183cfd766d385c25665571be967926cf89 /media/libstagefright/MPEG4Extractor.cpp | |
parent | 59ecb64c9629ab02329f8240c85b820ee0c98a2e (diff) | |
download | frameworks_av-693d271e62a3726689ff68f4505ba49228eb94b2.zip frameworks_av-693d271e62a3726689ff68f4505ba49228eb94b2.tar.gz frameworks_av-693d271e62a3726689ff68f4505ba49228eb94b2.tar.bz2 |
Squashed commit of the following:
commit 5bb012f0065f7ffaaeb4f569d71f0e3a8d6b19c3
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 14 10:40:08 2009 -0700
An attempt at fixing export using the qcom encoders. More quirks.
commit 0690e76bfa48118a68287ccf1bbfa82febaa620c
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 14 09:08:28 2009 -0700
Callbacks are now dispatched from a separate thread in OMX.
commit c6571a039526df29b6343f9a1971dbc019088c61
Author: Andreas Huber <andih@google.com>
Date: Thu Aug 13 15:42:25 2009 -0700
Massive API changes throughout stagefright, smart pointers everywhere.
commit 900612af6a0555664d9ba195112cd859491265f4
Author: Andreas Huber <andih@google.com>
Date: Thu Aug 13 13:33:12 2009 -0700
OMXCodecs now properly shutdown.
commit 96732f05e1b0603dcd1b11f16a23512592eeb4f5
Author: Andreas Huber <andih@google.com>
Date: Thu Aug 13 12:04:04 2009 -0700
More work on JPEG decoding using the hardware OMX component.
commit 63839a073ac393e3a130434ba467969053b694ad
Author: Andreas Huber <andih@google.com>
Date: Wed Aug 12 13:13:31 2009 -0700
An attempt to drive the JPEG decoder OMX node.
commit 3ac2fe5ab2926eda81b2123610b2434c645294ff
Author: Andreas Huber <andih@google.com>
Date: Tue Aug 11 16:38:21 2009 -0700
Renamed StateMachine to OMXCodec and put it in its proper place.
commit 247da75a96bf8881956413023dd49a84d5b4f5b2
Author: Andreas Huber <andih@google.com>
Date: Tue Aug 11 16:06:19 2009 -0700
Statemachine is now a full-fledged MediaSource.
commit 045244f6771fa0b9b329495c953afda900a84b71
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 7 09:16:54 2009 -0700
Properly setup the input format when exporting to AMR audio.
commit 271b984cb32c5cd9e46e3f90ae121f334e4b8da9
Author: Andreas Huber <andih@google.com>
Date: Thu Aug 6 09:59:38 2009 -0700
Added some code to test audio encoding to the OMX harness.
commit 79af4748e4af33bd66d3fbac606e332a69741cf4
Author: Andreas Huber <andih@google.com>
Date: Wed Aug 5 14:36:22 2009 -0700
Merge the old OMXDecoder and the new, shiny, StateMachine code.
commit 91cf5dd77a8762bc10a0b2ffce35e3bbeb262231
Author: Andreas Huber <andih@google.com>
Date: Tue Aug 4 17:41:43 2009 -0700
A new harness to test OMX node compliance (and quirks).
Diffstat (limited to 'media/libstagefright/MPEG4Extractor.cpp')
-rw-r--r-- | media/libstagefright/MPEG4Extractor.cpp | 60 |
1 files changed, 23 insertions, 37 deletions
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp index 4c883c6..662d5fb 100644 --- a/media/libstagefright/MPEG4Extractor.cpp +++ b/media/libstagefright/MPEG4Extractor.cpp @@ -42,10 +42,9 @@ namespace android { class MPEG4Source : public MediaSource { public: // Caller retains ownership of both "dataSource" and "sampleTable". - MPEG4Source(const sp<MetaData> &format, DataSource *dataSource, - SampleTable *sampleTable); - - virtual ~MPEG4Source(); + MPEG4Source(const sp<MetaData> &format, + const sp<DataSource> &dataSource, + const sp<SampleTable> &sampleTable); virtual status_t start(MetaData *params = NULL); virtual status_t stop(); @@ -55,11 +54,14 @@ public: virtual status_t read( MediaBuffer **buffer, const ReadOptions *options = NULL); +protected: + virtual ~MPEG4Source(); + private: sp<MetaData> mFormat; - DataSource *mDataSource; + sp<DataSource> mDataSource; int32_t mTimescale; - SampleTable *mSampleTable; + sp<SampleTable> mSampleTable; uint32_t mCurrentSampleIndex; bool mIsAVC; @@ -141,7 +143,7 @@ static const char *const FourCC2MIME(uint32_t fourcc) { } } -MPEG4Extractor::MPEG4Extractor(DataSource *source) +MPEG4Extractor::MPEG4Extractor(const sp<DataSource> &source) : mDataSource(source), mHaveMetadata(false), mFirstTrack(NULL), @@ -153,39 +155,29 @@ MPEG4Extractor::~MPEG4Extractor() { while (track) { Track *next = track->next; - delete track->sampleTable; - track->sampleTable = NULL; - delete track; track = next; } mFirstTrack = mLastTrack = NULL; - - delete mDataSource; - mDataSource = NULL; } -status_t MPEG4Extractor::countTracks(int *num_tracks) { +size_t MPEG4Extractor::countTracks() { status_t err; if ((err = readMetaData()) != OK) { - return err; + return 0; } - *num_tracks = 0; + size_t n = 0; Track *track = mFirstTrack; while (track) { - ++*num_tracks; + ++n; track = track->next; } - return OK; + return n; } -sp<MetaData> MPEG4Extractor::getTrackMetaData(int index) { - if (index < 0) { - return NULL; - } - +sp<MetaData> MPEG4Extractor::getTrackMetaData(size_t index) { status_t err; if ((err = readMetaData()) != OK) { return NULL; @@ -701,39 +693,32 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) { return OK; } -status_t MPEG4Extractor::getTrack(int index, MediaSource **source) { - *source = NULL; - - if (index < 0) { - return ERROR_OUT_OF_RANGE; - } - +sp<MediaSource> MPEG4Extractor::getTrack(size_t index) { status_t err; if ((err = readMetaData()) != OK) { - return err; + return NULL; } Track *track = mFirstTrack; while (index > 0) { if (track == NULL) { - return ERROR_OUT_OF_RANGE; + return NULL; } track = track->next; --index; } - *source = new MPEG4Source( + return new MPEG4Source( track->meta, mDataSource, track->sampleTable); - - return OK; } //////////////////////////////////////////////////////////////////////////////// MPEG4Source::MPEG4Source( const sp<MetaData> &format, - DataSource *dataSource, SampleTable *sampleTable) + const sp<DataSource> &dataSource, + const sp<SampleTable> &sampleTable) : mFormat(format), mDataSource(dataSource), mTimescale(0), @@ -935,7 +920,8 @@ status_t MPEG4Source::read( return OK; } -bool SniffMPEG4(DataSource *source, String8 *mimeType, float *confidence) { +bool SniffMPEG4( + const sp<DataSource> &source, String8 *mimeType, float *confidence) { uint8_t header[8]; ssize_t n = source->read_at(4, header, sizeof(header)); |