diff --git a/include/media/MediaExtractorPluginApi.h b/include/media/MediaExtractorPluginApi.h index 9caea3e7e8..b071a58f5f 100644 --- a/include/media/MediaExtractorPluginApi.h +++ b/include/media/MediaExtractorPluginApi.h @@ -51,7 +51,7 @@ struct CMediaTrack { void *data; void (*free)(void *data); - status_t (*start)(void *data, MetaDataBase *params); + status_t (*start)(void *data); status_t (*stop)(void *data); status_t (*getFormat)(void *data, MetaDataBase &format); status_t (*read)(void *data, MediaBufferBase **buffer, uint32_t options, int64_t seekPosUs); @@ -62,7 +62,7 @@ struct CMediaTrackV2 { void *data; void (*free)(void *data); - status_t (*start)(void *data, AMediaFormat *params); + status_t (*start)(void *data); status_t (*stop)(void *data); status_t (*getFormat)(void *data, AMediaFormat *format); status_t (*read)(void *data, MediaBufferBase **buffer, uint32_t options, int64_t seekPosUs); diff --git a/include/media/MediaExtractorPluginHelper.h b/include/media/MediaExtractorPluginHelper.h index 2acc2bf6fd..d76d5f8d21 100644 --- a/include/media/MediaExtractorPluginHelper.h +++ b/include/media/MediaExtractorPluginHelper.h @@ -37,7 +37,7 @@ struct MediaTrack; class MediaTrackHelper { public: virtual ~MediaTrackHelper() {}; - virtual status_t start(MetaDataBase *params = NULL) = 0; + virtual status_t start() = 0; virtual status_t stop() = 0; virtual status_t getFormat(MetaDataBase& format) = 0; @@ -82,8 +82,8 @@ inline CMediaTrack *wrap(MediaTrackHelper *track) { wrapper->free = [](void *data) -> void { delete (MediaTrackHelper*)(data); }; - wrapper->start = [](void *data, MetaDataBase *params) -> status_t { - return ((MediaTrackHelper*)data)->start(params); + wrapper->start = [](void *data) -> status_t { + return ((MediaTrackHelper*)data)->start(); }; wrapper->stop = [](void *data) -> status_t { return ((MediaTrackHelper*)data)->stop(); @@ -106,7 +106,7 @@ inline CMediaTrack *wrap(MediaTrackHelper *track) { class MediaTrackHelperV2 { public: virtual ~MediaTrackHelperV2() {}; - virtual status_t start(AMediaFormat *params = NULL) = 0; + virtual status_t start() = 0; virtual status_t stop() = 0; virtual status_t getFormat(AMediaFormat *format) = 0; @@ -151,8 +151,8 @@ inline CMediaTrackV2 *wrapV2(MediaTrackHelperV2 *track) { wrapper->free = [](void *data) -> void { delete (MediaTrackHelperV2*)(data); }; - wrapper->start = [](void *data, AMediaFormat *params) -> status_t { - return ((MediaTrackHelperV2*)data)->start(params); + wrapper->start = [](void *data) -> status_t { + return ((MediaTrackHelperV2*)data)->start(); }; wrapper->stop = [](void *data) -> status_t { return ((MediaTrackHelperV2*)data)->stop(); diff --git a/include/media/MediaTrack.h b/include/media/MediaTrack.h index 174f4cc562..ee3591e303 100644 --- a/include/media/MediaTrack.h +++ b/include/media/MediaTrack.h @@ -52,7 +52,7 @@ struct MediaTrack // To be called before any other methods on this object, except // getFormat(). - virtual status_t start(MetaDataBase *params = NULL) = 0; + virtual status_t start() = 0; // Any blocking read call returns immediately with a result of NO_INIT. // It is an error to call any methods other than start after this call @@ -143,7 +143,7 @@ class MediaTrackCUnwrapper : public MediaTrack { public: explicit MediaTrackCUnwrapper(CMediaTrack *wrapper); - virtual status_t start(MetaDataBase *params = NULL); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(MetaDataBase& format); virtual status_t read(MediaBufferBase **buffer, const ReadOptions *options = NULL); @@ -161,7 +161,7 @@ class MediaTrackCUnwrapperV2 : public MediaTrack { public: explicit MediaTrackCUnwrapperV2(CMediaTrackV2 *wrapper); - virtual status_t start(MetaDataBase *params = NULL); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(MetaDataBase& format); virtual status_t read(MediaBufferBase **buffer, const ReadOptions *options = NULL); diff --git a/media/extractors/aac/AACExtractor.cpp b/media/extractors/aac/AACExtractor.cpp index b52aec548e..1589131b18 100644 --- a/media/extractors/aac/AACExtractor.cpp +++ b/media/extractors/aac/AACExtractor.cpp @@ -40,7 +40,7 @@ public: const Vector &offset_vector, int64_t frame_duration_us); - virtual status_t start(MetaDataBase *params = NULL); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(MetaDataBase&); @@ -238,7 +238,7 @@ AACSource::~AACSource() { } } -status_t AACSource::start(MetaDataBase * /* params */) { +status_t AACSource::start() { CHECK(!mStarted); if (mOffsetVector.empty()) { diff --git a/media/extractors/amr/AMRExtractor.cpp b/media/extractors/amr/AMRExtractor.cpp index 8039f3a79a..0b5d310564 100644 --- a/media/extractors/amr/AMRExtractor.cpp +++ b/media/extractors/amr/AMRExtractor.cpp @@ -38,7 +38,7 @@ public: const off64_t *offset_table, size_t offset_table_length); - virtual status_t start(MetaDataBase *params = NULL); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(MetaDataBase &); @@ -249,7 +249,7 @@ AMRSource::~AMRSource() { } } -status_t AMRSource::start(MetaDataBase * /* params */) { +status_t AMRSource::start() { CHECK(!mStarted); mOffset = mIsWide ? 9 : 6; diff --git a/media/extractors/flac/FLACExtractor.cpp b/media/extractors/flac/FLACExtractor.cpp index debdcfc3b8..337ada55e9 100644 --- a/media/extractors/flac/FLACExtractor.cpp +++ b/media/extractors/flac/FLACExtractor.cpp @@ -46,7 +46,7 @@ public: DataSourceHelper *dataSource, MetaDataBase &meta); - virtual status_t start(MetaDataBase *params); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(MetaDataBase &meta); @@ -731,7 +731,7 @@ FLACSource::~FLACSource() delete mParser; } -status_t FLACSource::start(MetaDataBase * /* params */) +status_t FLACSource::start() { ALOGV("FLACSource::start"); diff --git a/media/extractors/midi/MidiExtractor.cpp b/media/extractors/midi/MidiExtractor.cpp index 9b0f4e7f04..9c2c863e13 100644 --- a/media/extractors/midi/MidiExtractor.cpp +++ b/media/extractors/midi/MidiExtractor.cpp @@ -40,7 +40,7 @@ public: MidiEngine &engine, AMediaFormat *trackMetadata); - virtual status_t start(AMediaFormat *params); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(AMediaFormat *); @@ -87,7 +87,7 @@ MidiSource::~MidiSource() } } -status_t MidiSource::start(AMediaFormat * /* params */) +status_t MidiSource::start() { ALOGV("MidiSource::start"); diff --git a/media/extractors/mkv/MatroskaExtractor.cpp b/media/extractors/mkv/MatroskaExtractor.cpp index 73c8d17dfc..20ff6e26b3 100644 --- a/media/extractors/mkv/MatroskaExtractor.cpp +++ b/media/extractors/mkv/MatroskaExtractor.cpp @@ -126,7 +126,7 @@ private: struct MatroskaSource : public MediaTrackHelper { MatroskaSource(MatroskaExtractor *extractor, size_t index); - virtual status_t start(MetaDataBase *params); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(MetaDataBase &); @@ -268,7 +268,7 @@ MatroskaSource::~MatroskaSource() { clearPendingFrames(); } -status_t MatroskaSource::start(MetaDataBase * /* params */) { +status_t MatroskaSource::start() { if (mType == AVC && mNALSizeLen < 0) { return ERROR_MALFORMED; } diff --git a/media/extractors/mp3/MP3Extractor.cpp b/media/extractors/mp3/MP3Extractor.cpp index e56a71bbd8..eca571186f 100644 --- a/media/extractors/mp3/MP3Extractor.cpp +++ b/media/extractors/mp3/MP3Extractor.cpp @@ -214,7 +214,7 @@ public: off64_t first_frame_pos, uint32_t fixed_header, MP3Seeker *seeker); - virtual status_t start(MetaDataBase *params = NULL); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(MetaDataBase &meta); @@ -462,7 +462,7 @@ MP3Source::~MP3Source() { } } -status_t MP3Source::start(MetaDataBase *) { +status_t MP3Source::start() { CHECK(!mStarted); mGroup = new MediaBufferGroup; diff --git a/media/extractors/mp4/MPEG4Extractor.cpp b/media/extractors/mp4/MPEG4Extractor.cpp index e3da6d89f4..e81e9b2a61 100644 --- a/media/extractors/mp4/MPEG4Extractor.cpp +++ b/media/extractors/mp4/MPEG4Extractor.cpp @@ -81,7 +81,7 @@ public: const sp &itemTable); virtual status_t init(); - virtual status_t start(MetaDataBase *params = NULL); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(MetaDataBase &); @@ -137,8 +137,6 @@ private: MediaBufferBase *mBuffer; - bool mWantsNALFragments; - uint8_t *mSrcBuffer; bool mIsHeif; @@ -4122,7 +4120,6 @@ MPEG4Source::MPEG4Source( mStarted(false), mGroup(NULL), mBuffer(NULL), - mWantsNALFragments(false), mSrcBuffer(NULL), mIsHeif(itemTable != NULL), mItemTable(itemTable) { @@ -4221,19 +4218,11 @@ MPEG4Source::~MPEG4Source() { free(mCurrentSampleInfoOffsets); } -status_t MPEG4Source::start(MetaDataBase *params) { +status_t MPEG4Source::start() { Mutex::Autolock autoLock(mLock); CHECK(!mStarted); - int32_t val; - if (params && params->findInt32(kKeyWantsNALFragments, &val) - && val != 0) { - mWantsNALFragments = true; - } else { - mWantsNALFragments = false; - } - int32_t tmp; CHECK(mFormat.findInt32(kKeyMaxInputSize, &tmp)); size_t max_size = tmp; @@ -5113,7 +5102,7 @@ status_t MPEG4Source::read( } } - if ((!mIsAVC && !mIsHEVC && !mIsAC4) || mWantsNALFragments) { + if ((!mIsAVC && !mIsHEVC && !mIsAC4)) { if (newBuffer) { if (mIsPcm) { // The twos' PCM block reader assumes that all samples has the same size. @@ -5541,7 +5530,7 @@ status_t MPEG4Source::fragmentedRead( } - if ((!mIsAVC && !mIsHEVC)|| mWantsNALFragments) { + if ((!mIsAVC && !mIsHEVC)) { if (newBuffer) { if (!isInRange((size_t)0u, mBuffer->size(), size)) { mBuffer->release(); diff --git a/media/extractors/mpeg2/MPEG2PSExtractor.cpp b/media/extractors/mpeg2/MPEG2PSExtractor.cpp index 577d1be7cd..fc13d2cc0c 100644 --- a/media/extractors/mpeg2/MPEG2PSExtractor.cpp +++ b/media/extractors/mpeg2/MPEG2PSExtractor.cpp @@ -43,7 +43,7 @@ struct MPEG2PSExtractor::Track : public MediaTrackHelper, public RefBase { Track(MPEG2PSExtractor *extractor, unsigned stream_id, unsigned stream_type); - virtual status_t start(MetaDataBase *params); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(MetaDataBase &); @@ -74,7 +74,7 @@ private: struct MPEG2PSExtractor::WrappedTrack : public MediaTrackHelper { WrappedTrack(MPEG2PSExtractor *extractor, const sp &track); - virtual status_t start(MetaDataBase *params); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(MetaDataBase &); @@ -635,7 +635,7 @@ MPEG2PSExtractor::Track::~Track() { mQueue = NULL; } -status_t MPEG2PSExtractor::Track::start(MetaDataBase *) { +status_t MPEG2PSExtractor::Track::start() { if (mSource == NULL) { return NO_INIT; } @@ -734,8 +734,8 @@ MPEG2PSExtractor::WrappedTrack::WrappedTrack( MPEG2PSExtractor::WrappedTrack::~WrappedTrack() { } -status_t MPEG2PSExtractor::WrappedTrack::start(MetaDataBase *params) { - return mTrack->start(params); +status_t MPEG2PSExtractor::WrappedTrack::start() { + return mTrack->start(); } status_t MPEG2PSExtractor::WrappedTrack::stop() { diff --git a/media/extractors/mpeg2/MPEG2TSExtractor.cpp b/media/extractors/mpeg2/MPEG2TSExtractor.cpp index c0826c90a0..a74ddaaa19 100644 --- a/media/extractors/mpeg2/MPEG2TSExtractor.cpp +++ b/media/extractors/mpeg2/MPEG2TSExtractor.cpp @@ -57,7 +57,7 @@ struct MPEG2TSSource : public MediaTrackHelper { bool doesSeek); virtual ~MPEG2TSSource(); - virtual status_t start(MetaDataBase *params = NULL); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(MetaDataBase &); @@ -87,7 +87,7 @@ MPEG2TSSource::MPEG2TSSource( MPEG2TSSource::~MPEG2TSSource() { } -status_t MPEG2TSSource::start(MetaDataBase *) { +status_t MPEG2TSSource::start() { return mImpl->start(NULL); // AnotherPacketSource::start() doesn't use its argument } diff --git a/media/extractors/ogg/OggExtractor.cpp b/media/extractors/ogg/OggExtractor.cpp index dc6b0b7176..123ac91379 100644 --- a/media/extractors/ogg/OggExtractor.cpp +++ b/media/extractors/ogg/OggExtractor.cpp @@ -52,7 +52,7 @@ struct OggSource : public MediaTrackHelper { virtual status_t getFormat(MetaDataBase &); - virtual status_t start(MetaDataBase *params = NULL); + virtual status_t start(); virtual status_t stop(); virtual status_t read( @@ -241,7 +241,7 @@ status_t OggSource::getFormat(MetaDataBase &meta) { return mExtractor->mImpl->getFormat(meta); } -status_t OggSource::start(MetaDataBase * /* params */) { +status_t OggSource::start() { if (mStarted) { return INVALID_OPERATION; } diff --git a/media/extractors/wav/WAVExtractor.cpp b/media/extractors/wav/WAVExtractor.cpp index 1b7c2e4df8..cc1a501f82 100644 --- a/media/extractors/wav/WAVExtractor.cpp +++ b/media/extractors/wav/WAVExtractor.cpp @@ -62,7 +62,7 @@ struct WAVSource : public MediaTrackHelperV2 { int32_t bitsPerSample, off64_t offset, size_t size); - virtual status_t start(AMediaFormat *params = NULL); + virtual status_t start(); virtual status_t stop(); virtual status_t getFormat(AMediaFormat *meta); @@ -377,7 +377,7 @@ WAVSource::~WAVSource() { } } -status_t WAVSource::start(AMediaFormat * /* params */) { +status_t WAVSource::start() { ALOGV("WAVSource::start"); CHECK(!mStarted); diff --git a/media/libmediaextractor/include/media/stagefright/MetaDataBase.h b/media/libmediaextractor/include/media/stagefright/MetaDataBase.h index 2e9aedecc4..c14669fdcf 100644 --- a/media/libmediaextractor/include/media/stagefright/MetaDataBase.h +++ b/media/libmediaextractor/include/media/stagefright/MetaDataBase.h @@ -68,7 +68,6 @@ enum { kKeyOpusSeekPreRoll = 'ospr', // uint64_t (seek preroll in ns) kKeyFlacMetadata = 'flMd', // raw data kKeyVp9CodecPrivate = 'vp9p', // raw data (vp9 csd information) - kKeyWantsNALFragments = 'NALf', kKeyIsSyncFrame = 'sync', // int32_t (bool) kKeyIsCodecConfig = 'conf', // int32_t (bool) kKeyIsMuxerData = 'muxd', // int32_t (bool) diff --git a/media/libstagefright/MediaTrack.cpp b/media/libstagefright/MediaTrack.cpp index 792b31736f..99f6a4571d 100644 --- a/media/libstagefright/MediaTrack.cpp +++ b/media/libstagefright/MediaTrack.cpp @@ -67,8 +67,8 @@ MediaTrackCUnwrapper::~MediaTrackCUnwrapper() { free(wrapper); } -status_t MediaTrackCUnwrapper::start(MetaDataBase *params) { - return wrapper->start(wrapper->data, params); +status_t MediaTrackCUnwrapper::start() { + return wrapper->start(wrapper->data); } status_t MediaTrackCUnwrapper::stop() { @@ -111,13 +111,8 @@ MediaTrackCUnwrapperV2::MediaTrackCUnwrapperV2(CMediaTrackV2 *cmediatrack2) { MediaTrackCUnwrapperV2::~MediaTrackCUnwrapperV2() { } -status_t MediaTrackCUnwrapperV2::start(MetaDataBase *meta) { - sp msg; - convertMetaDataToMessage(meta, &msg); - AMediaFormat *format = AMediaFormat_fromMsg(&msg); - status_t ret = wrapper->start(wrapper->data, format); - delete format; - return ret; +status_t MediaTrackCUnwrapperV2::start() { + return wrapper->start(wrapper->data); } status_t MediaTrackCUnwrapperV2::stop() { diff --git a/media/libstagefright/RemoteMediaSource.cpp b/media/libstagefright/RemoteMediaSource.cpp index e549fcfa0a..db31af2fba 100644 --- a/media/libstagefright/RemoteMediaSource.cpp +++ b/media/libstagefright/RemoteMediaSource.cpp @@ -25,25 +25,29 @@ RemoteMediaSource::RemoteMediaSource( MediaTrack *source, const sp &plugin) : mExtractor(extractor), - mSource(source), + mTrack(source), mExtractorPlugin(plugin) {} RemoteMediaSource::~RemoteMediaSource() { - delete mSource; + delete mTrack; mExtractorPlugin = nullptr; } status_t RemoteMediaSource::start(MetaData *params) { - return mSource->start(params); + if (params) { + ALOGW("dropping start parameters:"); + params->dumpToLog(); + } + return mTrack->start(); } status_t RemoteMediaSource::stop() { - return mSource->stop(); + return mTrack->stop(); } sp RemoteMediaSource::getFormat() { sp meta = new MetaData(); - if (mSource->getFormat(*meta.get()) == OK) { + if (mTrack->getFormat(*meta.get()) == OK) { return meta; } return nullptr; @@ -51,11 +55,11 @@ sp RemoteMediaSource::getFormat() { status_t RemoteMediaSource::read( MediaBufferBase **buffer, const MediaSource::ReadOptions *options) { - return mSource->read(buffer, reinterpret_cast(options)); + return mTrack->read(buffer, reinterpret_cast(options)); } bool RemoteMediaSource::supportNonblockingRead() { - return mSource->supportNonblockingRead(); + return mTrack->supportNonblockingRead(); } status_t RemoteMediaSource::pause() { diff --git a/media/libstagefright/include/media/stagefright/RemoteMediaSource.h b/media/libstagefright/include/media/stagefright/RemoteMediaSource.h index d1ec1ed472..03d3869ca6 100644 --- a/media/libstagefright/include/media/stagefright/RemoteMediaSource.h +++ b/media/libstagefright/include/media/stagefright/RemoteMediaSource.h @@ -43,7 +43,7 @@ public: private: sp mExtractor; - MediaTrack *mSource; + MediaTrack *mTrack; sp mExtractorPlugin; explicit RemoteMediaSource(