diff --git a/cmds/stagefright/SineSource.cpp b/cmds/stagefright/SineSource.cpp index cad8caff67..9e40a0fc26 100644 --- a/cmds/stagefright/SineSource.cpp +++ b/cmds/stagefright/SineSource.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include @@ -59,10 +60,10 @@ sp SineSource::getFormat() { } status_t SineSource::read( - MediaBuffer **out, const ReadOptions * /* options */) { + MediaBufferBase **out, const ReadOptions * /* options */) { *out = NULL; - MediaBuffer *buffer; + MediaBufferBase *buffer; status_t err = mGroup->acquire_buffer(&buffer); if (err != OK) { diff --git a/cmds/stagefright/SineSource.h b/cmds/stagefright/SineSource.h index f1fb96dcc8..1817291e8a 100644 --- a/cmds/stagefright/SineSource.h +++ b/cmds/stagefright/SineSource.h @@ -18,7 +18,7 @@ struct SineSource : public MediaSource { virtual sp getFormat(); virtual status_t read( - MediaBuffer **out, const ReadOptions *options = NULL); + MediaBufferBase **out, const ReadOptions *options = NULL); protected: virtual ~SineSource(); diff --git a/cmds/stagefright/audioloop.cpp b/cmds/stagefright/audioloop.cpp index fc246461ed..d4f2e8d8d4 100644 --- a/cmds/stagefright/audioloop.cpp +++ b/cmds/stagefright/audioloop.cpp @@ -169,7 +169,7 @@ ALOGI("Line: %d", __LINE__); ALOGI("Line: %d", __LINE__); } else { CHECK_EQ(decoder->start(), (status_t)OK); - MediaBuffer* buffer; + MediaBufferBase* buffer; while (decoder->read(&buffer) == OK) { // do something with buffer (save it eventually?) // need to stop after some count though... diff --git a/cmds/stagefright/record.cpp b/cmds/stagefright/record.cpp index 073ee6bf42..44b0015f0f 100644 --- a/cmds/stagefright/record.cpp +++ b/cmds/stagefright/record.cpp @@ -328,7 +328,7 @@ int main(int /* argc */, char ** /* argv */) { int32_t n = 0; status_t err; - MediaBuffer *buffer; + MediaBufferBase *buffer; while ((err = encoder->read(&buffer)) == OK) { printf("."); fflush(stdout); diff --git a/cmds/stagefright/recordvideo.cpp b/cmds/stagefright/recordvideo.cpp index af39d4624b..b7a5066c04 100644 --- a/cmds/stagefright/recordvideo.cpp +++ b/cmds/stagefright/recordvideo.cpp @@ -90,7 +90,7 @@ public: } virtual status_t read( - MediaBuffer **buffer, const MediaSource::ReadOptions *options __unused) { + MediaBufferBase **buffer, const MediaSource::ReadOptions *options __unused) { if (mNumFramesOutput % 10 == 0) { fprintf(stderr, "."); diff --git a/cmds/stagefright/stagefright.cpp b/cmds/stagefright/stagefright.cpp index bb517aae7d..5fa830461f 100644 --- a/cmds/stagefright/stagefright.cpp +++ b/cmds/stagefright/stagefright.cpp @@ -150,7 +150,7 @@ static void dumpSource(const sp &source, const String8 &filename) { status_t err; for (;;) { - MediaBuffer *mbuf; + MediaBufferBase *mbuf; err = source->read(&mbuf); if (err == INFO_FORMAT_CHANGED) { @@ -234,7 +234,7 @@ static void playSource(sp &source) { CHECK(meta->findInt64(kKeyDuration, &durationUs)); status_t err; - MediaBuffer *buffer; + MediaBufferBase *buffer; MediaSource::ReadOptions options; int64_t seekTimeUs = -1; for (;;) { @@ -321,7 +321,7 @@ static void playSource(sp &source) { while (numIterationsLeft-- > 0) { long numFrames = 0; - MediaBuffer *buffer; + MediaBufferBase *buffer; for (;;) { int64_t startDecodeUs = getNowUs(); @@ -416,7 +416,7 @@ struct DetectSyncSource : public MediaSource { virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options); + MediaBufferBase **buffer, const ReadOptions *options); private: enum StreamType { @@ -465,7 +465,7 @@ sp DetectSyncSource::getFormat() { return mSource->getFormat(); } -static bool isIDRFrame(MediaBuffer *buffer) { +static bool isIDRFrame(MediaBufferBase *buffer) { const uint8_t *data = (const uint8_t *)buffer->data() + buffer->range_offset(); size_t size = buffer->range_length(); @@ -482,7 +482,7 @@ static bool isIDRFrame(MediaBuffer *buffer) { } status_t DetectSyncSource::read( - MediaBuffer **buffer, const ReadOptions *options) { + MediaBufferBase **buffer, const ReadOptions *options) { for (;;) { status_t err = mSource->read(buffer, options); @@ -562,7 +562,7 @@ static void performSeekTest(const sp &source) { options.setSeekTo( seekTimeUs, MediaSource::ReadOptions::SEEK_PREVIOUS_SYNC); - MediaBuffer *buffer; + MediaBufferBase *buffer; status_t err; for (;;) { err = source->read(&buffer, &options); diff --git a/media/extractors/aac/AACExtractor.cpp b/media/extractors/aac/AACExtractor.cpp index 9df0aaadd2..f6c8664f11 100644 --- a/media/extractors/aac/AACExtractor.cpp +++ b/media/extractors/aac/AACExtractor.cpp @@ -46,7 +46,7 @@ public: virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); protected: virtual ~AACSource(); @@ -259,7 +259,7 @@ status_t AACSource::start(MetaData * /* params */) { mCurrentTimeUs = 0; mGroup = new MediaBufferGroup; - mGroup->add_buffer(new MediaBuffer(kMaxFrameSize)); + mGroup->add_buffer(MediaBufferBase::Create(kMaxFrameSize)); mStarted = true; return OK; @@ -280,7 +280,7 @@ sp AACSource::getFormat() { } status_t AACSource::read( - MediaBuffer **out, const ReadOptions *options) { + MediaBufferBase **out, const ReadOptions *options) { *out = NULL; int64_t seekTimeUs; @@ -303,7 +303,7 @@ status_t AACSource::read( return ERROR_END_OF_STREAM; } - MediaBuffer *buffer; + MediaBufferBase *buffer; status_t err = mGroup->acquire_buffer(&buffer); if (err != OK) { return err; diff --git a/media/extractors/amr/AMRExtractor.cpp b/media/extractors/amr/AMRExtractor.cpp index eec18b51f2..59d9ef123a 100644 --- a/media/extractors/amr/AMRExtractor.cpp +++ b/media/extractors/amr/AMRExtractor.cpp @@ -45,7 +45,7 @@ public: virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); protected: virtual ~AMRSource(); @@ -233,7 +233,7 @@ status_t AMRSource::start(MetaData * /* params */) { mOffset = mIsWide ? 9 : 6; mCurrentTimeUs = 0; mGroup = new MediaBufferGroup; - mGroup->add_buffer(new MediaBuffer(128)); + mGroup->add_buffer(MediaBufferBase::Create(128)); mStarted = true; return OK; @@ -254,7 +254,7 @@ sp AMRSource::getFormat() { } status_t AMRSource::read( - MediaBuffer **out, const ReadOptions *options) { + MediaBufferBase **out, const ReadOptions *options) { *out = NULL; int64_t seekTimeUs; @@ -303,7 +303,7 @@ status_t AMRSource::read( return ERROR_MALFORMED; } - MediaBuffer *buffer; + MediaBufferBase *buffer; status_t err = mGroup->acquire_buffer(&buffer); if (err != OK) { return err; diff --git a/media/extractors/flac/FLACExtractor.cpp b/media/extractors/flac/FLACExtractor.cpp index 2ce20db877..2c5e43e866 100644 --- a/media/extractors/flac/FLACExtractor.cpp +++ b/media/extractors/flac/FLACExtractor.cpp @@ -31,7 +31,7 @@ #include #include #include -#include +#include namespace android { @@ -173,7 +173,7 @@ public: virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); protected: virtual ~FLACSource(); @@ -232,10 +232,10 @@ public: // media buffers void allocateBuffers(); void releaseBuffers(); - MediaBuffer *readBuffer() { + MediaBufferBase *readBuffer() { return readBuffer(false, 0LL); } - MediaBuffer *readBuffer(FLAC__uint64 sample) { + MediaBufferBase *readBuffer(FLAC__uint64 sample) { return readBuffer(true, sample); } @@ -274,7 +274,7 @@ private: FLAC__StreamDecoderErrorStatus mErrorStatus; status_t init(); - MediaBuffer *readBuffer(bool doSeek, FLAC__uint64 sample); + MediaBufferBase *readBuffer(bool doSeek, FLAC__uint64 sample); // no copy constructor or assignment FLACParser(const FLACParser &); @@ -763,7 +763,7 @@ void FLACParser::allocateBuffers() CHECK(mGroup == NULL); mGroup = new MediaBufferGroup; mMaxBufferSize = getMaxBlockSize() * getChannels() * sizeof(short); - mGroup->add_buffer(new MediaBuffer(mMaxBufferSize)); + mGroup->add_buffer(MediaBufferBase::Create(mMaxBufferSize)); } void FLACParser::releaseBuffers() @@ -773,7 +773,7 @@ void FLACParser::releaseBuffers() mGroup = NULL; } -MediaBuffer *FLACParser::readBuffer(bool doSeek, FLAC__uint64 sample) +MediaBufferBase *FLACParser::readBuffer(bool doSeek, FLAC__uint64 sample) { mWriteRequested = true; mWriteCompleted = false; @@ -810,7 +810,7 @@ MediaBuffer *FLACParser::readBuffer(bool doSeek, FLAC__uint64 sample) } // acquire a media buffer CHECK(mGroup != NULL); - MediaBuffer *buffer; + MediaBufferBase *buffer; status_t err = mGroup->acquire_buffer(&buffer); if (err != OK) { return NULL; @@ -881,9 +881,9 @@ sp FLACSource::getFormat() } status_t FLACSource::read( - MediaBuffer **outBuffer, const ReadOptions *options) + MediaBufferBase **outBuffer, const ReadOptions *options) { - MediaBuffer *buffer; + MediaBufferBase *buffer; // process an optional seek request int64_t seekTimeUs; ReadOptions::SeekMode mode; diff --git a/media/extractors/midi/MidiExtractor.cpp b/media/extractors/midi/MidiExtractor.cpp index 1e38194988..cf446dbf04 100644 --- a/media/extractors/midi/MidiExtractor.cpp +++ b/media/extractors/midi/MidiExtractor.cpp @@ -30,7 +30,7 @@ namespace android { -// how many Sonivox output buffers to aggregate into one MediaBuffer +// how many Sonivox output buffers to aggregate into one MediaBufferBase static const int NUM_COMBINE_BUFFERS = 4; class MidiSource : public MediaSourceBase { @@ -45,7 +45,7 @@ public: virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); protected: virtual ~MidiSource(); @@ -114,10 +114,10 @@ sp MidiSource::getFormat() } status_t MidiSource::read( - MediaBuffer **outBuffer, const ReadOptions *options) + MediaBufferBase **outBuffer, const ReadOptions *options) { ALOGV("MidiSource::read"); - MediaBuffer *buffer; + MediaBufferBase *buffer; // process an optional seek request int64_t seekTimeUs; ReadOptions::SeekMode mode; @@ -207,7 +207,7 @@ status_t MidiEngine::allocateBuffers() { int bufsize = sizeof(EAS_PCM) * mEasConfig->mixBufferSize * mEasConfig->numChannels * NUM_COMBINE_BUFFERS; ALOGV("using %d byte buffer", bufsize); - mGroup->add_buffer(new MediaBuffer(bufsize)); + mGroup->add_buffer(MediaBufferBase::Create(bufsize)); return OK; } @@ -223,13 +223,13 @@ status_t MidiEngine::seekTo(int64_t positionUs) { return result == EAS_SUCCESS ? OK : UNKNOWN_ERROR; } -MediaBuffer* MidiEngine::readBuffer() { +MediaBufferBase* MidiEngine::readBuffer() { EAS_STATE state; EAS_State(mEasData, mEasHandle, &state); if ((state == EAS_STATE_STOPPED) || (state == EAS_STATE_ERROR)) { return NULL; } - MediaBuffer *buffer; + MediaBufferBase *buffer; status_t err = mGroup->acquire_buffer(&buffer); if (err != OK) { ALOGE("readBuffer: no buffer"); diff --git a/media/extractors/midi/MidiExtractor.h b/media/extractors/midi/MidiExtractor.h index 173a8146e3..427451344e 100644 --- a/media/extractors/midi/MidiExtractor.h +++ b/media/extractors/midi/MidiExtractor.h @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include #include @@ -39,7 +39,7 @@ public: status_t allocateBuffers(); status_t releaseBuffers(); status_t seekTo(int64_t positionUs); - MediaBuffer* readBuffer(); + MediaBufferBase* readBuffer(); private: sp mIoWrapper; MediaBufferGroup *mGroup; diff --git a/media/extractors/mkv/MatroskaExtractor.cpp b/media/extractors/mkv/MatroskaExtractor.cpp index 73961138a1..65988d3e53 100644 --- a/media/extractors/mkv/MatroskaExtractor.cpp +++ b/media/extractors/mkv/MatroskaExtractor.cpp @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include #include @@ -130,7 +130,7 @@ struct MatroskaSource : public MediaSourceBase { virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options); + MediaBufferBase **buffer, const ReadOptions *options); protected: virtual ~MatroskaSource(); @@ -150,11 +150,11 @@ private: BlockIterator mBlockIter; ssize_t mNALSizeLen; // for type AVC or HEVC - List mPendingFrames; + List mPendingFrames; status_t advance(); - status_t setWebmBlockCryptoInfo(MediaBuffer *mbuf); + status_t setWebmBlockCryptoInfo(MediaBufferBase *mbuf); status_t readBlock(); void clearPendingFrames(); @@ -568,7 +568,7 @@ static AString uriDebugString(const AString &uri) { void MatroskaSource::clearPendingFrames() { while (!mPendingFrames.empty()) { - MediaBuffer *frame = *mPendingFrames.begin(); + MediaBufferBase *frame = *mPendingFrames.begin(); mPendingFrames.erase(mPendingFrames.begin()); frame->release(); @@ -576,7 +576,7 @@ void MatroskaSource::clearPendingFrames() { } } -status_t MatroskaSource::setWebmBlockCryptoInfo(MediaBuffer *mbuf) { +status_t MatroskaSource::setWebmBlockCryptoInfo(MediaBufferBase *mbuf) { if (mbuf->range_length() < 1 || mbuf->range_length() - 1 > INT32_MAX) { // 1-byte signal return ERROR_MALFORMED; @@ -662,7 +662,7 @@ status_t MatroskaSource::readBlock() { } len += trackInfo->mHeaderLen; - MediaBuffer *mbuf = new MediaBuffer(len); + MediaBufferBase *mbuf = MediaBufferBase::Create(len); uint8_t *data = static_cast(mbuf->data()); if (trackInfo->mHeader) { memcpy(data, trackInfo->mHeader, trackInfo->mHeaderLen); @@ -695,7 +695,7 @@ status_t MatroskaSource::readBlock() { } status_t MatroskaSource::read( - MediaBuffer **out, const ReadOptions *options) { + MediaBufferBase **out, const ReadOptions *options) { *out = NULL; int64_t targetSampleTimeUs = -1ll; @@ -731,7 +731,7 @@ status_t MatroskaSource::read( } } - MediaBuffer *frame = *mPendingFrames.begin(); + MediaBufferBase *frame = *mPendingFrames.begin(); mPendingFrames.erase(mPendingFrames.begin()); if ((mType != AVC && mType != HEVC) || mNALSizeLen == 0) { @@ -760,7 +760,7 @@ status_t MatroskaSource::read( size_t srcSize = frame->range_length(); size_t dstSize = 0; - MediaBuffer *buffer = NULL; + MediaBufferBase *buffer = NULL; uint8_t *dstPtr = NULL; for (int32_t pass = 0; pass < 2; ++pass) { @@ -820,7 +820,7 @@ status_t MatroskaSource::read( // each 4-byte nal size with a 4-byte start code buffer = frame; } else { - buffer = new MediaBuffer(dstSize); + buffer = MediaBufferBase::Create(dstSize); } int64_t timeUs; diff --git a/media/extractors/mp3/MP3Extractor.cpp b/media/extractors/mp3/MP3Extractor.cpp index e55084e814..90ee653be8 100644 --- a/media/extractors/mp3/MP3Extractor.cpp +++ b/media/extractors/mp3/MP3Extractor.cpp @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include #include @@ -222,7 +222,7 @@ public: virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); protected: virtual ~MP3Source(); @@ -463,7 +463,7 @@ status_t MP3Source::start(MetaData *) { mGroup = new MediaBufferGroup; - mGroup->add_buffer(new MediaBuffer(kMaxFrameSize)); + mGroup->add_buffer(MediaBufferBase::Create(kMaxFrameSize)); mCurrentPos = mFirstFramePos; mCurrentTimeUs = 0; @@ -492,7 +492,7 @@ sp MP3Source::getFormat() { } status_t MP3Source::read( - MediaBuffer **out, const ReadOptions *options) { + MediaBufferBase **out, const ReadOptions *options) { *out = NULL; int64_t seekTimeUs; @@ -522,7 +522,7 @@ status_t MP3Source::read( mSamplesRead = 0; } - MediaBuffer *buffer; + MediaBufferBase *buffer; status_t err = mGroup->acquire_buffer(&buffer); if (err != OK) { return err; diff --git a/media/extractors/mp4/MPEG4Extractor.cpp b/media/extractors/mp4/MPEG4Extractor.cpp index 3d7e45ccdf..5e2908d64b 100644 --- a/media/extractors/mp4/MPEG4Extractor.cpp +++ b/media/extractors/mp4/MPEG4Extractor.cpp @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #include #include @@ -83,9 +83,9 @@ public: virtual sp getFormat(); - virtual status_t read(MediaBuffer **buffer, const ReadOptions *options = NULL); + virtual status_t read(MediaBufferBase **buffer, const ReadOptions *options = NULL); virtual bool supportNonblockingRead() { return true; } - virtual status_t fragmentedRead(MediaBuffer **buffer, const ReadOptions *options = NULL); + virtual status_t fragmentedRead(MediaBufferBase **buffer, const ReadOptions *options = NULL); virtual ~MPEG4Source(); @@ -128,7 +128,7 @@ private: MediaBufferGroup *mGroup; - MediaBuffer *mBuffer; + MediaBufferBase *mBuffer; bool mWantsNALFragments; @@ -4681,7 +4681,7 @@ size_t MPEG4Source::parseNALSize(const uint8_t *data) const { } status_t MPEG4Source::read( - MediaBuffer **out, const ReadOptions *options) { + MediaBufferBase **out, const ReadOptions *options) { Mutex::Autolock autoLock(mLock); CHECK(mStarted); @@ -4906,7 +4906,7 @@ status_t MPEG4Source::read( return ERROR_MALFORMED; } - MediaBuffer *clone = mBuffer->clone(); + MediaBufferBase *clone = mBuffer->clone(); CHECK(clone != NULL); clone->set_range(mBuffer->range_offset() + mNALLengthSize, nal_size); @@ -5026,7 +5026,7 @@ status_t MPEG4Source::read( } status_t MPEG4Source::fragmentedRead( - MediaBuffer **out, const ReadOptions *options) { + MediaBufferBase **out, const ReadOptions *options) { ALOGV("MPEG4Source::fragmentedRead"); @@ -5230,7 +5230,7 @@ status_t MPEG4Source::fragmentedRead( return ERROR_MALFORMED; } - MediaBuffer *clone = mBuffer->clone(); + MediaBufferBase *clone = mBuffer->clone(); CHECK(clone != NULL); clone->set_range(mBuffer->range_offset() + mNALLengthSize, nal_size); diff --git a/media/extractors/mpeg2/MPEG2PSExtractor.cpp b/media/extractors/mpeg2/MPEG2PSExtractor.cpp index b4d0ee5258..c2de6e7c0d 100644 --- a/media/extractors/mpeg2/MPEG2PSExtractor.cpp +++ b/media/extractors/mpeg2/MPEG2PSExtractor.cpp @@ -49,7 +49,7 @@ struct MPEG2PSExtractor::Track : public MediaSourceBase, public RefBase { virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options); + MediaBufferBase **buffer, const ReadOptions *options); protected: virtual ~Track(); @@ -80,7 +80,7 @@ struct MPEG2PSExtractor::WrappedTrack : public MediaSourceBase { virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options); + MediaBufferBase **buffer, const ReadOptions *options); protected: virtual ~WrappedTrack(); @@ -659,7 +659,7 @@ sp MPEG2PSExtractor::Track::getFormat() { } status_t MPEG2PSExtractor::Track::read( - MediaBuffer **buffer, const ReadOptions *options) { + MediaBufferBase **buffer, const ReadOptions *options) { if (mSource == NULL) { return NO_INIT; } @@ -744,7 +744,7 @@ sp MPEG2PSExtractor::WrappedTrack::getFormat() { } status_t MPEG2PSExtractor::WrappedTrack::read( - MediaBuffer **buffer, const ReadOptions *options) { + MediaBufferBase **buffer, const ReadOptions *options) { return mTrack->read(buffer, options); } diff --git a/media/extractors/mpeg2/MPEG2TSExtractor.cpp b/media/extractors/mpeg2/MPEG2TSExtractor.cpp index 31830648bd..7887a7cdba 100644 --- a/media/extractors/mpeg2/MPEG2TSExtractor.cpp +++ b/media/extractors/mpeg2/MPEG2TSExtractor.cpp @@ -61,7 +61,7 @@ struct MPEG2TSSource : public MediaSourceBase { virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); private: MPEG2TSExtractor *mExtractor; @@ -99,7 +99,7 @@ sp MPEG2TSSource::getFormat() { } status_t MPEG2TSSource::read( - MediaBuffer **out, const ReadOptions *options) { + MediaBufferBase **out, const ReadOptions *options) { *out = NULL; int64_t seekTimeUs; diff --git a/media/extractors/ogg/OggExtractor.cpp b/media/extractors/ogg/OggExtractor.cpp index ab51e5e6e5..6d7576f717 100644 --- a/media/extractors/ogg/OggExtractor.cpp +++ b/media/extractors/ogg/OggExtractor.cpp @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include #include #include @@ -54,7 +54,7 @@ struct OggSource : public MediaSourceBase { virtual status_t stop(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); protected: virtual ~OggSource(); @@ -82,7 +82,7 @@ struct MyOggExtractor { status_t seekToTime(int64_t timeUs); status_t seekToOffset(off64_t offset); - virtual status_t readNextPacket(MediaBuffer **buffer) = 0; + virtual status_t readNextPacket(MediaBufferBase **buffer) = 0; status_t init(); @@ -141,7 +141,7 @@ protected: // 1 - bitstream identification header // 3 - comment header // 5 - codec setup header (Vorbis only) - virtual status_t verifyHeader(MediaBuffer *buffer, uint8_t type) = 0; + virtual status_t verifyHeader(MediaBufferBase *buffer, uint8_t type) = 0; // Read the next ogg packet from the underlying data source; optionally // calculate the timestamp for the output packet whilst pretending @@ -149,9 +149,9 @@ protected: // // *buffer is NULL'ed out immediately upon entry, and if successful a new buffer is allocated; // clients are responsible for releasing the original buffer. - status_t _readNextPacket(MediaBuffer **buffer, bool calcVorbisTimestamp); + status_t _readNextPacket(MediaBufferBase **buffer, bool calcVorbisTimestamp); - int32_t getPacketBlockSize(MediaBuffer *buffer); + int32_t getPacketBlockSize(MediaBufferBase *buffer); void parseFileMetaData(); @@ -173,7 +173,7 @@ struct MyVorbisExtractor : public MyOggExtractor { virtual uint64_t approxBitrate() const; - virtual status_t readNextPacket(MediaBuffer **buffer) { + virtual status_t readNextPacket(MediaBufferBase **buffer) { return _readNextPacket(buffer, /* calcVorbisTimestamp = */ true); } @@ -185,7 +185,7 @@ protected: return granulePos * 1000000ll / mVi.rate; } - virtual status_t verifyHeader(MediaBuffer *buffer, uint8_t type); + virtual status_t verifyHeader(MediaBufferBase *buffer, uint8_t type); }; struct MyOpusExtractor : public MyOggExtractor { @@ -203,16 +203,16 @@ struct MyOpusExtractor : public MyOggExtractor { return 0; } - virtual status_t readNextPacket(MediaBuffer **buffer); + virtual status_t readNextPacket(MediaBufferBase **buffer); protected: virtual int64_t getTimeUsOfGranule(uint64_t granulePos) const; - virtual status_t verifyHeader(MediaBuffer *buffer, uint8_t type); + virtual status_t verifyHeader(MediaBufferBase *buffer, uint8_t type); private: - status_t verifyOpusHeader(MediaBuffer *buffer); - status_t verifyOpusComments(MediaBuffer *buffer); - uint32_t getNumSamplesInPacket(MediaBuffer *buffer) const; + status_t verifyOpusHeader(MediaBufferBase *buffer); + status_t verifyOpusComments(MediaBufferBase *buffer); + uint32_t getNumSamplesInPacket(MediaBufferBase *buffer) const; uint8_t mChannelCount; uint16_t mCodecDelay; @@ -256,7 +256,7 @@ status_t OggSource::stop() { } status_t OggSource::read( - MediaBuffer **out, const ReadOptions *options) { + MediaBufferBase **out, const ReadOptions *options) { *out = NULL; int64_t seekTimeUs; @@ -268,7 +268,7 @@ status_t OggSource::read( } } - MediaBuffer *packet; + MediaBufferBase *packet; status_t err = mExtractor->mImpl->readNextPacket(&packet); if (err != OK) { @@ -562,13 +562,13 @@ ssize_t MyOggExtractor::readPage(off64_t offset, Page *page) { return sizeof(header) + page->mNumSegments + totalSize; } -status_t MyOpusExtractor::readNextPacket(MediaBuffer **out) { +status_t MyOpusExtractor::readNextPacket(MediaBufferBase **out) { if (mOffset <= mFirstDataOffset && mStartGranulePosition < 0) { // The first sample might not start at time 0; find out where by subtracting // the number of samples on the first page from the granule position // (position of last complete sample) of the first page. This happens // the first time before we attempt to read a packet from the first page. - MediaBuffer *mBuf; + MediaBufferBase *mBuf; uint32_t numSamples = 0; uint64_t curGranulePosition = 0; while (true) { @@ -623,7 +623,7 @@ status_t MyOpusExtractor::readNextPacket(MediaBuffer **out) { return OK; } -uint32_t MyOpusExtractor::getNumSamplesInPacket(MediaBuffer *buffer) const { +uint32_t MyOpusExtractor::getNumSamplesInPacket(MediaBufferBase *buffer) const { if (buffer == NULL || buffer->range_length() < 1) { return 0; } @@ -669,10 +669,10 @@ uint32_t MyOpusExtractor::getNumSamplesInPacket(MediaBuffer *buffer) const { return numSamples; } -status_t MyOggExtractor::_readNextPacket(MediaBuffer **out, bool calcVorbisTimestamp) { +status_t MyOggExtractor::_readNextPacket(MediaBufferBase **out, bool calcVorbisTimestamp) { *out = NULL; - MediaBuffer *buffer = NULL; + MediaBufferBase *buffer = NULL; int64_t timeUs = -1; for (;;) { @@ -708,7 +708,7 @@ status_t MyOggExtractor::_readNextPacket(MediaBuffer **out, bool calcVorbisTimes ALOGE("b/36592202"); return ERROR_MALFORMED; } - MediaBuffer *tmp = new (std::nothrow) MediaBuffer(fullSize); + MediaBufferBase *tmp = MediaBufferBase::Create(fullSize); if (tmp == NULL) { if (buffer != NULL) { buffer->release(); @@ -833,7 +833,7 @@ status_t MyOggExtractor::init() { mMeta->setCString(kKeyMIMEType, mMimeType); status_t err; - MediaBuffer *packet; + MediaBufferBase *packet; for (size_t i = 0; i < mNumHeaders; ++i) { // ignore timestamp for configuration packets if ((err = _readNextPacket(&packet, /* calcVorbisTimestamp = */ false)) != OK) { @@ -910,7 +910,7 @@ void MyOggExtractor::buildTableOfContents() { } } -int32_t MyOggExtractor::getPacketBlockSize(MediaBuffer *buffer) { +int32_t MyOggExtractor::getPacketBlockSize(MediaBufferBase *buffer) { const uint8_t *data = (const uint8_t *)buffer->data() + buffer->range_offset(); @@ -950,7 +950,7 @@ int64_t MyOpusExtractor::getTimeUsOfGranule(uint64_t granulePos) const { return pcmSamplePosition * 1000000ll / kOpusSampleRate; } -status_t MyOpusExtractor::verifyHeader(MediaBuffer *buffer, uint8_t type) { +status_t MyOpusExtractor::verifyHeader(MediaBufferBase *buffer, uint8_t type) { switch (type) { // there are actually no header types defined in the Opus spec; we choose 1 and 3 to mean // header and comments such that we can share code with MyVorbisExtractor. @@ -963,7 +963,7 @@ status_t MyOpusExtractor::verifyHeader(MediaBuffer *buffer, uint8_t type) { } } -status_t MyOpusExtractor::verifyOpusHeader(MediaBuffer *buffer) { +status_t MyOpusExtractor::verifyOpusHeader(MediaBufferBase *buffer) { const size_t kOpusHeaderSize = 19; const uint8_t *data = (const uint8_t *)buffer->data() + buffer->range_offset(); @@ -989,7 +989,7 @@ status_t MyOpusExtractor::verifyOpusHeader(MediaBuffer *buffer) { return OK; } -status_t MyOpusExtractor::verifyOpusComments(MediaBuffer *buffer) { +status_t MyOpusExtractor::verifyOpusComments(MediaBufferBase *buffer) { // add artificial framing bit so we can reuse _vorbis_unpack_comment int32_t commentSize = buffer->range_length() + 1; sp aBuf = new ABuffer(commentSize); @@ -1081,7 +1081,7 @@ status_t MyOpusExtractor::verifyOpusComments(MediaBuffer *buffer) { } status_t MyVorbisExtractor::verifyHeader( - MediaBuffer *buffer, uint8_t type) { + MediaBufferBase *buffer, uint8_t type) { const uint8_t *data = (const uint8_t *)buffer->data() + buffer->range_offset(); diff --git a/media/extractors/wav/WAVExtractor.cpp b/media/extractors/wav/WAVExtractor.cpp index 2c991a76ed..a18cee58e1 100644 --- a/media/extractors/wav/WAVExtractor.cpp +++ b/media/extractors/wav/WAVExtractor.cpp @@ -68,7 +68,7 @@ struct WAVSource : public MediaSourceBase { virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); virtual bool supportNonblockingRead() { return true; } @@ -385,7 +385,7 @@ status_t WAVSource::start(MetaData * /* params */) { if (mBitsPerSample == 8) { // As a temporary buffer for 8->16 bit conversion. - mGroup->add_buffer(new MediaBuffer(kMaxFrameSize)); + mGroup->add_buffer(MediaBufferBase::Create(kMaxFrameSize)); } mCurrentPos = mOffset; @@ -415,7 +415,7 @@ sp WAVSource::getFormat() { } status_t WAVSource::read( - MediaBuffer **out, const ReadOptions *options) { + MediaBufferBase **out, const ReadOptions *options) { *out = NULL; if (options != nullptr && options->getNonBlocking() && !mGroup->has_buffers()) { @@ -441,7 +441,7 @@ status_t WAVSource::read( mCurrentPos = pos + mOffset; } - MediaBuffer *buffer; + MediaBufferBase *buffer; status_t err = mGroup->acquire_buffer(&buffer); if (err != OK) { return err; @@ -492,7 +492,7 @@ status_t WAVSource::read( // Convert 8-bit unsigned samples to 16-bit signed. // Create new buffer with 2 byte wide samples - MediaBuffer *tmp; + MediaBufferBase *tmp; CHECK_EQ(mGroup->acquire_buffer(&tmp), (status_t)OK); tmp->set_range(0, 2 * n); diff --git a/media/libmedia/IMediaSource.cpp b/media/libmedia/IMediaSource.cpp index 0d5127c51f..f6b925553b 100644 --- a/media/libmedia/IMediaSource.cpp +++ b/media/libmedia/IMediaSource.cpp @@ -113,9 +113,9 @@ public: return NULL; } - virtual status_t read(MediaBuffer **buffer, + virtual status_t read(MediaBufferBase **buffer, const MediaSource::ReadOptions *options) { - Vector buffers; + Vector buffers; status_t ret = readMultiple(&buffers, 1 /* maxNumBuffers */, options); *buffer = buffers.size() == 0 ? nullptr : buffers[0]; ALOGV("read status %d, bufferCount %u, sinceStop %u", @@ -124,7 +124,7 @@ public: } virtual status_t readMultiple( - Vector *buffers, uint32_t maxNumBuffers, + Vector *buffers, uint32_t maxNumBuffers, const MediaSource::ReadOptions *options) { ALOGV("readMultiple"); if (buffers == NULL || !buffers->isEmpty()) { @@ -341,7 +341,7 @@ status_t BnMediaSource::onTransact( uint32_t bufferCount = 0; for (; bufferCount < maxNumBuffers; ++bufferCount, ++mBuffersSinceStop) { MediaBuffer *buf = nullptr; - ret = read(&buf, useOptions ? &opts : nullptr); + ret = read((MediaBufferBase **)&buf, useOptions ? &opts : nullptr); opts.clearNonPersistent(); // Remove options that only apply to first buffer. if (ret != NO_ERROR || buf == nullptr) { break; @@ -364,7 +364,7 @@ status_t BnMediaSource::onTransact( } else { ALOGD("Large buffer %zu without IMemory!", length); ret = mGroup->acquire_buffer( - &transferBuf, false /* nonBlocking */, length); + (MediaBufferBase **)&transferBuf, false /* nonBlocking */, length); if (ret != OK || transferBuf == nullptr || transferBuf->mMemory == nullptr) { diff --git a/media/libmedia/include/media/IMediaSource.h b/media/libmedia/include/media/IMediaSource.h index dabe231d62..7a4b1b949e 100644 --- a/media/libmedia/include/media/IMediaSource.h +++ b/media/libmedia/include/media/IMediaSource.h @@ -64,7 +64,7 @@ public: // // TODO: consider removing read() in favor of readMultiple(). virtual status_t read( - MediaBuffer **buffer, + MediaBufferBase **buffer, const MediaSource::ReadOptions *options = NULL) = 0; // Returns a vector of new buffers of data, where the new buffers are added @@ -80,7 +80,7 @@ public: // ReadOptions may be specified. Persistent options apply to all reads; // non-persistent options (e.g. seek) apply only to the first read. virtual status_t readMultiple( - Vector *buffers, uint32_t maxNumBuffers = 1, + Vector *buffers, uint32_t maxNumBuffers = 1, const MediaSource::ReadOptions *options = nullptr) = 0; // Returns true if |readMultiple| is supported, otherwise false. @@ -110,7 +110,7 @@ public: // TODO: Implement this for local media sources. virtual status_t readMultiple( - Vector * /* buffers */, uint32_t /* maxNumBuffers = 1 */, + Vector * /* buffers */, uint32_t /* maxNumBuffers = 1 */, const MediaSource::ReadOptions * /* options = nullptr */) { return ERROR_UNSUPPORTED; } diff --git a/media/libmedia/include/media/MediaBufferHolder.h b/media/libmedia/include/media/MediaBufferHolder.h index e8e2c4b391..f9dfdf55b9 100644 --- a/media/libmedia/include/media/MediaBufferHolder.h +++ b/media/libmedia/include/media/MediaBufferHolder.h @@ -24,7 +24,7 @@ namespace android { struct MediaBufferHolder : public RefBase { - MediaBufferHolder(MediaBuffer* buffer) + MediaBufferHolder(MediaBufferBase* buffer) : mMediaBuffer(buffer) { if (mMediaBuffer != nullptr) { mMediaBuffer->add_ref(); @@ -37,10 +37,10 @@ struct MediaBufferHolder : public RefBase { } } - MediaBuffer* mediaBuffer() { return mMediaBuffer; } + MediaBufferBase* mediaBuffer() { return mMediaBuffer; } private: - MediaBuffer* const mMediaBuffer; + MediaBufferBase* const mMediaBuffer; }; } // android diff --git a/media/libmediaextractor/Android.bp b/media/libmediaextractor/Android.bp index 8f4ba70b5b..79af05816e 100644 --- a/media/libmediaextractor/Android.bp +++ b/media/libmediaextractor/Android.bp @@ -25,6 +25,7 @@ cc_library { srcs: [ "DataSourceBase.cpp", "MediaBuffer.cpp", + "MediaBufferBase.cpp", "MediaBufferGroup.cpp", "MediaSourceBase.cpp", "MediaSource.cpp", diff --git a/media/libmediaextractor/MediaBuffer.cpp b/media/libmediaextractor/MediaBuffer.cpp index 28fc760864..dac3d50b07 100644 --- a/media/libmediaextractor/MediaBuffer.cpp +++ b/media/libmediaextractor/MediaBuffer.cpp @@ -177,7 +177,7 @@ void MediaBuffer::setObserver(MediaBufferObserver *observer) { mObserver = observer; } -MediaBuffer *MediaBuffer::clone() { +MediaBufferBase *MediaBuffer::clone() { MediaBuffer *buffer = new MediaBuffer(mData, mSize); buffer->set_range(mRangeOffset, mRangeLength); buffer->mMetaData = new MetaData(*mMetaData.get()); diff --git a/media/libmediaextractor/MediaBufferBase.cpp b/media/libmediaextractor/MediaBufferBase.cpp new file mode 100644 index 0000000000..a5532892b9 --- /dev/null +++ b/media/libmediaextractor/MediaBufferBase.cpp @@ -0,0 +1,30 @@ +/* + * Copyright 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define LOG_TAG "MediaBufferBase" +#include + +#include +#include + +namespace android { + +//static +MediaBufferBase *MediaBufferBase::Create(size_t size) { + return new (std::nothrow) MediaBuffer(size); +} + +} // android diff --git a/media/libmediaextractor/MediaBufferGroup.cpp b/media/libmediaextractor/MediaBufferGroup.cpp index 22f01a5ed0..2a8dd41c06 100644 --- a/media/libmediaextractor/MediaBufferGroup.cpp +++ b/media/libmediaextractor/MediaBufferGroup.cpp @@ -40,7 +40,7 @@ struct MediaBufferGroup::InternalData { Mutex mLock; Condition mCondition; size_t mGrowthLimit; // Do not automatically grow group larger than this. - std::list mBuffers; + std::list mBuffers; }; MediaBufferGroup::MediaBufferGroup(size_t growthLimit) @@ -94,7 +94,7 @@ MediaBufferGroup::MediaBufferGroup(size_t buffers, size_t buffer_size, size_t gr } MediaBufferGroup::~MediaBufferGroup() { - for (MediaBuffer *buffer : mInternal->mBuffers) { + for (MediaBufferBase *buffer : mInternal->mBuffers) { if (buffer->refcount() != 0) { const int localRefcount = buffer->localRefcount(); const int remoteRefcount = buffer->remoteRefcount(); @@ -119,7 +119,7 @@ MediaBufferGroup::~MediaBufferGroup() { delete mInternal; } -void MediaBufferGroup::add_buffer(MediaBuffer *buffer) { +void MediaBufferGroup::add_buffer(MediaBufferBase *buffer) { Mutex::Autolock autoLock(mInternal->mLock); // if we're above our growth limit, release buffers if we can @@ -144,7 +144,7 @@ bool MediaBufferGroup::has_buffers() { if (mInternal->mBuffers.size() < mInternal->mGrowthLimit) { return true; // We can add more buffers internally. } - for (MediaBuffer *buffer : mInternal->mBuffers) { + for (MediaBufferBase *buffer : mInternal->mBuffers) { if (buffer->refcount() == 0) { return true; } @@ -153,11 +153,11 @@ bool MediaBufferGroup::has_buffers() { } status_t MediaBufferGroup::acquire_buffer( - MediaBuffer **out, bool nonBlocking, size_t requestedSize) { + MediaBufferBase **out, bool nonBlocking, size_t requestedSize) { Mutex::Autolock autoLock(mInternal->mLock); for (;;) { size_t smallest = requestedSize; - MediaBuffer *buffer = nullptr; + MediaBufferBase *buffer = nullptr; auto free = mInternal->mBuffers.end(); for (auto it = mInternal->mBuffers.begin(); it != mInternal->mBuffers.end(); ++it) { if ((*it)->refcount() == 0) { @@ -217,7 +217,7 @@ size_t MediaBufferGroup::buffers() const { return mInternal->mBuffers.size(); } -void MediaBufferGroup::signalBufferReturned(MediaBuffer *) { +void MediaBufferGroup::signalBufferReturned(MediaBufferBase *) { Mutex::Autolock autoLock(mInternal->mLock); mInternal->mCondition.signal(); } diff --git a/media/libmediaextractor/include/media/MediaSourceBase.h b/media/libmediaextractor/include/media/MediaSourceBase.h index 9db60990d5..ab56613f82 100644 --- a/media/libmediaextractor/include/media/MediaSourceBase.h +++ b/media/libmediaextractor/include/media/MediaSourceBase.h @@ -30,7 +30,7 @@ namespace android { -class MediaBuffer; +class MediaBufferBase; class SourceBaseAllocTracker { public: @@ -111,7 +111,7 @@ struct MediaSourceBase // MediaSource has changed mid-stream, the client can continue reading // but should be prepared for buffers of the new configuration. virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL) = 0; + MediaBufferBase **buffer, const ReadOptions *options = NULL) = 0; // Causes this source to suspend pulling data from its upstream source // until a subsequent read-with-seek. This is currently not supported diff --git a/media/libmediaextractor/include/media/stagefright/MediaBuffer.h b/media/libmediaextractor/include/media/stagefright/MediaBuffer.h index a8f8375c2a..85b45219f3 100644 --- a/media/libmediaextractor/include/media/stagefright/MediaBuffer.h +++ b/media/libmediaextractor/include/media/stagefright/MediaBuffer.h @@ -26,6 +26,7 @@ #include #include #include +#include namespace android { @@ -34,19 +35,7 @@ class MediaBuffer; class MediaBufferObserver; class MetaData; -class MediaBufferObserver { -public: - MediaBufferObserver() {} - virtual ~MediaBufferObserver() {} - - virtual void signalBufferReturned(MediaBuffer *buffer) = 0; - -private: - MediaBufferObserver(const MediaBufferObserver &); - MediaBufferObserver &operator=(const MediaBufferObserver &); -}; - -class MediaBuffer { +class MediaBuffer : public MediaBufferBase { public: // allocations larger than or equal to this will use shared memory. static const size_t kSharedMemThreshold = 64 * 1024; @@ -70,42 +59,42 @@ public: // // If no MediaBufferGroup is set, the local reference count must be zero // when called, whereupon the MediaBuffer is deleted. - void release(); + virtual void release(); // Increments the local reference count. // Use only when MediaBufferGroup is set. - void add_ref(); + virtual void add_ref(); - void *data() const; - size_t size() const; + virtual void *data() const; + virtual size_t size() const; - size_t range_offset() const; - size_t range_length() const; + virtual size_t range_offset() const; + virtual size_t range_length() const; - void set_range(size_t offset, size_t length); + virtual void set_range(size_t offset, size_t length); - sp meta_data(); + virtual sp meta_data(); // Clears meta data and resets the range to the full extent. - void reset(); + virtual void reset(); - void setObserver(MediaBufferObserver *group); + virtual void setObserver(MediaBufferObserver *group); // Returns a clone of this MediaBuffer increasing its reference count. // The clone references the same data but has its own range and // MetaData. - MediaBuffer *clone(); + virtual MediaBufferBase *clone(); // sum of localRefcount() and remoteRefcount() - int refcount() const { + virtual int refcount() const { return localRefcount() + remoteRefcount(); } - int localRefcount() const { + virtual int localRefcount() const { return mRefCount; } - int remoteRefcount() const { + virtual int remoteRefcount() const { if (mMemory.get() == nullptr || mMemory->pointer() == nullptr) return 0; int32_t remoteRefcount = reinterpret_cast(mMemory->pointer())->getRemoteRefcount(); diff --git a/media/libmediaextractor/include/media/stagefright/MediaBufferBase.h b/media/libmediaextractor/include/media/stagefright/MediaBufferBase.h new file mode 100644 index 0000000000..81dd7d931b --- /dev/null +++ b/media/libmediaextractor/include/media/stagefright/MediaBufferBase.h @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MEDIA_BUFFER_BASE_H_ + +#define MEDIA_BUFFER_BASE_H_ + +#include + +namespace android { + +class MediaBufferBase; +class MetaData; + +class MediaBufferObserver { +public: + MediaBufferObserver() {} + virtual ~MediaBufferObserver() {} + + virtual void signalBufferReturned(MediaBufferBase *buffer) = 0; + +private: + MediaBufferObserver(const MediaBufferObserver &); + MediaBufferObserver &operator=(const MediaBufferObserver &); +}; + +class MediaBufferBase { +public: + static MediaBufferBase *Create(size_t size); + + // If MediaBufferGroup is set, decrement the local reference count; + // if the local reference count drops to 0, return the buffer to the + // associated MediaBufferGroup. + // + // If no MediaBufferGroup is set, the local reference count must be zero + // when called, whereupon the MediaBuffer is deleted. + virtual void release() = 0; + + // Increments the local reference count. + // Use only when MediaBufferGroup is set. + virtual void add_ref() = 0; + + virtual void *data() const = 0; + virtual size_t size() const = 0; + + virtual size_t range_offset() const = 0; + virtual size_t range_length() const = 0; + + virtual void set_range(size_t offset, size_t length) = 0; + + virtual sp meta_data() = 0; + + // Clears meta data and resets the range to the full extent. + virtual void reset() = 0; + + virtual void setObserver(MediaBufferObserver *group) = 0; + + // Returns a clone of this MediaBufferBase increasing its reference + // count. The clone references the same data but has its own range and + // MetaData. + virtual MediaBufferBase *clone() = 0; + + virtual int refcount() const = 0; + + virtual int localRefcount() const = 0; + virtual int remoteRefcount() const = 0; + + virtual ~MediaBufferBase() {}; +}; + +} // namespace android + +#endif // MEDIA_BUFFER_BASE_H_ diff --git a/media/libmediaextractor/include/media/stagefright/MediaBufferGroup.h b/media/libmediaextractor/include/media/stagefright/MediaBufferGroup.h index 63d0a18b5b..75d5df746e 100644 --- a/media/libmediaextractor/include/media/stagefright/MediaBufferGroup.h +++ b/media/libmediaextractor/include/media/stagefright/MediaBufferGroup.h @@ -18,11 +18,15 @@ #define MEDIA_BUFFER_GROUP_H_ -#include +#include + +#include +#include +#include namespace android { -class MediaBuffer; +class MediaBufferBase; class MediaBufferGroup : public MediaBufferObserver { public: @@ -33,7 +37,7 @@ public: ~MediaBufferGroup(); - void add_buffer(MediaBuffer *buffer); + void add_buffer(MediaBufferBase *buffer); bool has_buffers(); @@ -46,16 +50,14 @@ public: // If requestedSize is > 0, the returned MediaBuffer should have buffer // size of at least requstedSize. status_t acquire_buffer( - MediaBuffer **buffer, bool nonBlocking = false, size_t requestedSize = 0); + MediaBufferBase **buffer, bool nonBlocking = false, size_t requestedSize = 0); size_t buffers() const; // If buffer is nullptr, have acquire_buffer() check for remote release. - virtual void signalBufferReturned(MediaBuffer *buffer); + virtual void signalBufferReturned(MediaBufferBase *buffer); private: - friend class MediaBuffer; - struct InternalData; InternalData *mInternal; diff --git a/media/libmediaplayer2/nuplayer2/GenericSource2.cpp b/media/libmediaplayer2/nuplayer2/GenericSource2.cpp index 4700660a04..c34aabb9ba 100644 --- a/media/libmediaplayer2/nuplayer2/GenericSource2.cpp +++ b/media/libmediaplayer2/nuplayer2/GenericSource2.cpp @@ -1149,7 +1149,7 @@ status_t NuPlayer2::GenericSource2::doSeek(int64_t seekTimeUs, MediaPlayer2SeekM } sp NuPlayer2::GenericSource2::mediaBufferToABuffer( - MediaBuffer* mb, + MediaBufferBase* mb, media_track_type trackType) { bool audio = trackType == MEDIA_TRACK_TYPE_AUDIO; size_t outLength = mb->range_length(); @@ -1333,7 +1333,7 @@ void NuPlayer2::GenericSource2::readBuffer( int32_t generation = getDataGeneration(trackType); for (size_t numBuffers = 0; numBuffers < maxBuffers; ) { - Vector mediaBuffers; + Vector mediaBuffers; status_t err = NO_ERROR; sp source = track->mSource; @@ -1342,7 +1342,7 @@ void NuPlayer2::GenericSource2::readBuffer( err = source->readMultiple( &mediaBuffers, maxBuffers - numBuffers, &options); } else { - MediaBuffer *mbuf = NULL; + MediaBufferBase *mbuf = NULL; err = source->read(&mbuf, &options); if (err == OK && mbuf != NULL) { mediaBuffers.push_back(mbuf); @@ -1365,7 +1365,7 @@ void NuPlayer2::GenericSource2::readBuffer( for (; id < count; ++id) { int64_t timeUs; - MediaBuffer *mbuf = mediaBuffers[id]; + MediaBufferBase *mbuf = mediaBuffers[id]; if (!mbuf->meta_data()->findInt64(kKeyTime, &timeUs)) { mbuf->meta_data()->dumpToLog(); track->mPackets->signalEOS(ERROR_MALFORMED); @@ -1659,7 +1659,7 @@ status_t NuPlayer2::GenericSource2::checkDrmInfo() return OK; } -void NuPlayer2::GenericSource2::signalBufferReturned(MediaBuffer *buffer) +void NuPlayer2::GenericSource2::signalBufferReturned(MediaBufferBase *buffer) { //ALOGV("signalBufferReturned %p refCount: %d", buffer, buffer->localRefcount()); diff --git a/media/libmediaplayer2/nuplayer2/GenericSource2.h b/media/libmediaplayer2/nuplayer2/GenericSource2.h index 1a5409a6b5..896c39786b 100644 --- a/media/libmediaplayer2/nuplayer2/GenericSource2.h +++ b/media/libmediaplayer2/nuplayer2/GenericSource2.h @@ -86,7 +86,7 @@ struct NuPlayer2::GenericSource2 : public NuPlayer2::Source, virtual bool isStreaming() const; // Modular DRM - virtual void signalBufferReturned(MediaBuffer *buffer); + virtual void signalBufferReturned(MediaBufferBase *buffer); virtual status_t prepareDrm( const uint8_t uuid[16], @@ -202,7 +202,7 @@ private: int32_t curGen, const sp& packets, const sp& msg); sp mediaBufferToABuffer( - MediaBuffer *mbuf, + MediaBufferBase *mbuf, media_track_type trackType); void postReadBuffer(media_track_type trackType); diff --git a/media/libmediaplayer2/nuplayer2/NuPlayer2Decoder.cpp b/media/libmediaplayer2/nuplayer2/NuPlayer2Decoder.cpp index a436592873..c49bccb60f 100644 --- a/media/libmediaplayer2/nuplayer2/NuPlayer2Decoder.cpp +++ b/media/libmediaplayer2/nuplayer2/NuPlayer2Decoder.cpp @@ -1066,7 +1066,7 @@ bool NuPlayer2::Decoder::onInputBufferFetched(const sp &msg) { } // Modular DRM - MediaBuffer *mediaBuf = NULL; + MediaBufferBase *mediaBuf = NULL; sp cryptInfo; // copy into codec buffer diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp index 511f46f456..b0c82f26c6 100644 --- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp +++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp @@ -1143,7 +1143,7 @@ status_t NuPlayer::GenericSource::doSeek(int64_t seekTimeUs, MediaPlayerSeekMode } sp NuPlayer::GenericSource::mediaBufferToABuffer( - MediaBuffer* mb, + MediaBufferBase* mb, media_track_type trackType) { bool audio = trackType == MEDIA_TRACK_TYPE_AUDIO; size_t outLength = mb->range_length(); @@ -1326,7 +1326,7 @@ void NuPlayer::GenericSource::readBuffer( int32_t generation = getDataGeneration(trackType); for (size_t numBuffers = 0; numBuffers < maxBuffers; ) { - Vector mediaBuffers; + Vector mediaBuffers; status_t err = NO_ERROR; sp source = track->mSource; @@ -1335,7 +1335,7 @@ void NuPlayer::GenericSource::readBuffer( err = source->readMultiple( &mediaBuffers, maxBuffers - numBuffers, &options); } else { - MediaBuffer *mbuf = NULL; + MediaBufferBase *mbuf = NULL; err = source->read(&mbuf, &options); if (err == OK && mbuf != NULL) { mediaBuffers.push_back(mbuf); @@ -1358,7 +1358,7 @@ void NuPlayer::GenericSource::readBuffer( for (; id < count; ++id) { int64_t timeUs; - MediaBuffer *mbuf = mediaBuffers[id]; + MediaBufferBase *mbuf = mediaBuffers[id]; if (!mbuf->meta_data()->findInt64(kKeyTime, &timeUs)) { mbuf->meta_data()->dumpToLog(); track->mPackets->signalEOS(ERROR_MALFORMED); @@ -1654,7 +1654,7 @@ status_t NuPlayer::GenericSource::checkDrmInfo() return OK; } -void NuPlayer::GenericSource::signalBufferReturned(MediaBuffer *buffer) +void NuPlayer::GenericSource::signalBufferReturned(MediaBufferBase *buffer) { //ALOGV("signalBufferReturned %p refCount: %d", buffer, buffer->localRefcount()); diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.h b/media/libmediaplayerservice/nuplayer/GenericSource.h index 2406665746..065cac1048 100644 --- a/media/libmediaplayerservice/nuplayer/GenericSource.h +++ b/media/libmediaplayerservice/nuplayer/GenericSource.h @@ -86,7 +86,7 @@ struct NuPlayer::GenericSource : public NuPlayer::Source, virtual bool isStreaming() const; // Modular DRM - virtual void signalBufferReturned(MediaBuffer *buffer); + virtual void signalBufferReturned(MediaBufferBase *buffer); virtual status_t prepareDrm( const uint8_t uuid[16], const Vector &drmSessionId, sp *outCrypto); @@ -201,7 +201,7 @@ private: int32_t curGen, const sp& packets, const sp& msg); sp mediaBufferToABuffer( - MediaBuffer *mbuf, + MediaBufferBase *mbuf, media_track_type trackType); void postReadBuffer(media_track_type trackType); diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp index 1aca96c511..88594d2024 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp @@ -1046,7 +1046,7 @@ bool NuPlayer::Decoder::onInputBufferFetched(const sp &msg) { } // Modular DRM - MediaBuffer *mediaBuf = NULL; + MediaBufferBase *mediaBuf = NULL; NuPlayerDrm::CryptoInfo *cryptInfo = NULL; // copy into codec buffer diff --git a/media/libstagefright/AACWriter.cpp b/media/libstagefright/AACWriter.cpp index 281af477ec..d64138ef0b 100644 --- a/media/libstagefright/AACWriter.cpp +++ b/media/libstagefright/AACWriter.cpp @@ -294,7 +294,7 @@ status_t AACWriter::threadFunc() { prctl(PR_SET_NAME, (unsigned long)"AACWriterThread", 0, 0, 0); while (!mDone && err == OK) { - MediaBuffer *buffer; + MediaBufferBase *buffer; err = mSource->read(&buffer); if (err != OK) { diff --git a/media/libstagefright/AMRWriter.cpp b/media/libstagefright/AMRWriter.cpp index 910abc642c..e33d3da812 100644 --- a/media/libstagefright/AMRWriter.cpp +++ b/media/libstagefright/AMRWriter.cpp @@ -193,7 +193,7 @@ status_t AMRWriter::threadFunc() { prctl(PR_SET_NAME, (unsigned long)"AMRWriter", 0, 0, 0); while (!mDone) { - MediaBuffer *buffer; + MediaBufferBase *buffer; err = mSource->read(&buffer); if (err != OK) { diff --git a/media/libstagefright/AudioSource.cpp b/media/libstagefright/AudioSource.cpp index 70ce38c629..d8545824dd 100644 --- a/media/libstagefright/AudioSource.cpp +++ b/media/libstagefright/AudioSource.cpp @@ -240,7 +240,7 @@ void AudioSource::rampVolume( } status_t AudioSource::read( - MediaBuffer **out, const ReadOptions * /* options */) { + MediaBufferBase **out, const ReadOptions * /* options */) { Mutex::Autolock autoLock(mLock); *out = NULL; @@ -311,7 +311,7 @@ status_t AudioSource::setStopTimeUs(int64_t stopTimeUs) { return OK; } -void AudioSource::signalBufferReturned(MediaBuffer *buffer) { +void AudioSource::signalBufferReturned(MediaBufferBase *buffer) { ALOGV("signalBufferReturned: %p", buffer->data()); Mutex::Autolock autoLock(mLock); --mNumClientOwnedBuffers; diff --git a/media/libstagefright/CallbackMediaSource.cpp b/media/libstagefright/CallbackMediaSource.cpp index 6811882db6..ea7392efc0 100644 --- a/media/libstagefright/CallbackMediaSource.cpp +++ b/media/libstagefright/CallbackMediaSource.cpp @@ -36,7 +36,7 @@ sp CallbackMediaSource::getFormat() { return mSource->getFormat(); } -status_t CallbackMediaSource::read(MediaBuffer **buffer, const ReadOptions *options) { +status_t CallbackMediaSource::read(MediaBufferBase **buffer, const ReadOptions *options) { return mSource->read(buffer, reinterpret_cast(options)); } diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/CameraSource.cpp index 6ed0d0eb43..4960418dd3 100644 --- a/media/libstagefright/CameraSource.cpp +++ b/media/libstagefright/CameraSource.cpp @@ -1040,7 +1040,7 @@ void CameraSource::releaseOneRecordingFrame(const sp& frame) { releaseRecordingFrame(frame); } -void CameraSource::signalBufferReturned(MediaBuffer *buffer) { +void CameraSource::signalBufferReturned(MediaBufferBase *buffer) { ALOGV("signalBufferReturned: %p", buffer->data()); Mutex::Autolock autoLock(mLock); for (List >::iterator it = mFramesBeingEncoded.begin(); @@ -1059,7 +1059,7 @@ void CameraSource::signalBufferReturned(MediaBuffer *buffer) { } status_t CameraSource::read( - MediaBuffer **buffer, const ReadOptions *options) { + MediaBufferBase **buffer, const ReadOptions *options) { ALOGV("read"); *buffer = NULL; diff --git a/media/libstagefright/CameraSourceTimeLapse.cpp b/media/libstagefright/CameraSourceTimeLapse.cpp index 970526af66..f3f06d8e92 100644 --- a/media/libstagefright/CameraSourceTimeLapse.cpp +++ b/media/libstagefright/CameraSourceTimeLapse.cpp @@ -168,7 +168,7 @@ bool CameraSourceTimeLapse::trySettingVideoSize( return isSuccessful; } -void CameraSourceTimeLapse::signalBufferReturned(MediaBuffer* buffer) { +void CameraSourceTimeLapse::signalBufferReturned(MediaBufferBase* buffer) { ALOGV("signalBufferReturned"); Mutex::Autolock autoLock(mQuickStopLock); if (mQuickStop && (buffer == mLastReadBufferCopy)) { @@ -180,9 +180,9 @@ void CameraSourceTimeLapse::signalBufferReturned(MediaBuffer* buffer) { } void createMediaBufferCopy( - const MediaBuffer& sourceBuffer, + const MediaBufferBase& sourceBuffer, int64_t frameTime, - MediaBuffer **newBuffer) { + MediaBufferBase **newBuffer) { ALOGV("createMediaBufferCopy"); size_t sourceSize = sourceBuffer.size(); @@ -194,7 +194,7 @@ void createMediaBufferCopy( (*newBuffer)->meta_data()->setInt64(kKeyTime, frameTime); } -void CameraSourceTimeLapse::fillLastReadBufferCopy(MediaBuffer& sourceBuffer) { +void CameraSourceTimeLapse::fillLastReadBufferCopy(MediaBufferBase& sourceBuffer) { ALOGV("fillLastReadBufferCopy"); int64_t frameTime; CHECK(sourceBuffer.meta_data()->findInt64(kKeyTime, &frameTime)); @@ -204,7 +204,7 @@ void CameraSourceTimeLapse::fillLastReadBufferCopy(MediaBuffer& sourceBuffer) { } status_t CameraSourceTimeLapse::read( - MediaBuffer **buffer, const ReadOptions *options) { + MediaBufferBase **buffer, const ReadOptions *options) { ALOGV("read"); if (mLastReadBufferCopy == NULL) { mLastReadStatus = CameraSource::read(buffer, options); diff --git a/media/libstagefright/FrameDecoder.cpp b/media/libstagefright/FrameDecoder.cpp index b529940f31..6f88c0ec93 100644 --- a/media/libstagefright/FrameDecoder.cpp +++ b/media/libstagefright/FrameDecoder.cpp @@ -230,7 +230,7 @@ status_t FrameDecoder::extractInternal( } codecBuffer = inputBuffers[inputIndex]; - MediaBuffer *mediaBuffer = NULL; + MediaBufferBase *mediaBuffer = NULL; err = mSource->read(&mediaBuffer, &options); options.clearSeekTo(); diff --git a/media/libstagefright/JPEGSource.cpp b/media/libstagefright/JPEGSource.cpp index ee3aedbf78..10eb2d26d0 100644 --- a/media/libstagefright/JPEGSource.cpp +++ b/media/libstagefright/JPEGSource.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -108,7 +109,7 @@ sp JPEGSource::getFormat() { } status_t JPEGSource::read( - MediaBuffer **out, const ReadOptions *options) { + MediaBufferBase **out, const ReadOptions *options) { *out = NULL; int64_t seekTimeUs; @@ -117,7 +118,7 @@ status_t JPEGSource::read( return UNKNOWN_ERROR; } - MediaBuffer *buffer; + MediaBufferBase *buffer; mGroup->acquire_buffer(&buffer); ssize_t n = mSource->readAt(mOffset, buffer->data(), mSize - mOffset); diff --git a/media/libstagefright/MPEG2TSWriter.cpp b/media/libstagefright/MPEG2TSWriter.cpp index 4c85b0d222..cdcd657bf0 100644 --- a/media/libstagefright/MPEG2TSWriter.cpp +++ b/media/libstagefright/MPEG2TSWriter.cpp @@ -85,8 +85,8 @@ private: void extractCodecSpecificData(); - void appendAACFrames(MediaBuffer *buffer); - void appendAVCFrame(MediaBuffer *buffer); + void appendAACFrames(MediaBufferBase *buffer); + void appendAVCFrame(MediaBufferBase *buffer); DISALLOW_EVIL_CONSTRUCTORS(SourceInfo); }; @@ -249,7 +249,7 @@ void MPEG2TSWriter::SourceInfo::extractCodecSpecificData() { notify->post(); } -void MPEG2TSWriter::SourceInfo::appendAVCFrame(MediaBuffer *buffer) { +void MPEG2TSWriter::SourceInfo::appendAVCFrame(MediaBufferBase *buffer) { sp notify = mNotify->dup(); notify->setInt32("what", kNotifyBuffer); @@ -279,7 +279,7 @@ void MPEG2TSWriter::SourceInfo::appendAVCFrame(MediaBuffer *buffer) { notify->post(); } -void MPEG2TSWriter::SourceInfo::appendAACFrames(MediaBuffer *buffer) { +void MPEG2TSWriter::SourceInfo::appendAACFrames(MediaBufferBase *buffer) { sp notify = mNotify->dup(); notify->setInt32("what", kNotifyBuffer); @@ -368,7 +368,7 @@ void MPEG2TSWriter::SourceInfo::onMessageReceived(const sp &msg) { case kWhatRead: { - MediaBuffer *buffer; + MediaBufferBase *buffer; status_t err = mSource->read(&buffer); if (err != OK && err != INFO_FORMAT_CHANGED) { diff --git a/media/libstagefright/MPEG4Writer.cpp b/media/libstagefright/MPEG4Writer.cpp index 8db00f08a7..387cb13df1 100644 --- a/media/libstagefright/MPEG4Writer.cpp +++ b/media/libstagefright/MPEG4Writer.cpp @@ -2809,7 +2809,7 @@ status_t MPEG4Writer::Track::threadEntry() { sp meta_data; status_t err = OK; - MediaBuffer *buffer; + MediaBufferBase *buffer; const char *trackName = getTrackType(); while (!mDone && (err = mSource->read(&buffer)) == OK) { if (buffer->range_length() == 0) { diff --git a/media/libstagefright/MediaAdapter.cpp b/media/libstagefright/MediaAdapter.cpp index 74eb1ffe4c..f1b6e8c36a 100644 --- a/media/libstagefright/MediaAdapter.cpp +++ b/media/libstagefright/MediaAdapter.cpp @@ -72,7 +72,7 @@ sp MediaAdapter::getFormat() { return mOutputFormat; } -void MediaAdapter::signalBufferReturned(MediaBuffer *buffer) { +void MediaAdapter::signalBufferReturned(MediaBufferBase *buffer) { Mutex::Autolock autoLock(mAdapterLock); CHECK(buffer != NULL); buffer->setObserver(0); @@ -82,7 +82,7 @@ void MediaAdapter::signalBufferReturned(MediaBuffer *buffer) { } status_t MediaAdapter::read( - MediaBuffer **buffer, const ReadOptions * /* options */) { + MediaBufferBase **buffer, const ReadOptions * /* options */) { Mutex::Autolock autoLock(mAdapterLock); if (!mStarted) { ALOGV("Read before even started!"); diff --git a/media/libstagefright/MediaCodecSource.cpp b/media/libstagefright/MediaCodecSource.cpp index 04d83af9fd..08331ad62e 100644 --- a/media/libstagefright/MediaCodecSource.cpp +++ b/media/libstagefright/MediaCodecSource.cpp @@ -59,7 +59,7 @@ struct MediaCodecSource::Puller : public AHandler { void pause(); void resume(); status_t setStopTimeUs(int64_t stopTimeUs); - bool readBuffer(MediaBuffer **buffer); + bool readBuffer(MediaBufferBase **buffer); protected: virtual void onMessageReceived(const sp &msg); @@ -86,14 +86,14 @@ private: int64_t mReadPendingSince; bool mPaused; bool mPulling; - Vector mReadBuffers; + Vector mReadBuffers; void flush(); // if queue is empty, return false and set *|buffer| to NULL . Otherwise, pop // buffer from front of the queue, place it into *|buffer| and return true. - bool readBuffer(MediaBuffer **buffer); + bool readBuffer(MediaBufferBase **buffer); // add a buffer to the back of the queue - void pushBuffer(MediaBuffer *mbuf); + void pushBuffer(MediaBufferBase *mbuf); }; Mutexed mQueue; @@ -123,11 +123,11 @@ MediaCodecSource::Puller::~Puller() { mLooper->stop(); } -void MediaCodecSource::Puller::Queue::pushBuffer(MediaBuffer *mbuf) { +void MediaCodecSource::Puller::Queue::pushBuffer(MediaBufferBase *mbuf) { mReadBuffers.push_back(mbuf); } -bool MediaCodecSource::Puller::Queue::readBuffer(MediaBuffer **mbuf) { +bool MediaCodecSource::Puller::Queue::readBuffer(MediaBufferBase **mbuf) { if (mReadBuffers.empty()) { *mbuf = NULL; return false; @@ -138,14 +138,14 @@ bool MediaCodecSource::Puller::Queue::readBuffer(MediaBuffer **mbuf) { } void MediaCodecSource::Puller::Queue::flush() { - MediaBuffer *mbuf; + MediaBufferBase *mbuf; while (readBuffer(&mbuf)) { // there are no null buffers in the queue mbuf->release(); } } -bool MediaCodecSource::Puller::readBuffer(MediaBuffer **mbuf) { +bool MediaCodecSource::Puller::readBuffer(MediaBufferBase **mbuf) { Mutexed::Locked queue(mQueue); return queue->readBuffer(mbuf); } @@ -298,7 +298,7 @@ void MediaCodecSource::Puller::onMessageReceived(const sp &msg) { } queue.unlock(); - MediaBuffer *mbuf = NULL; + MediaBufferBase *mbuf = NULL; status_t err = mSource->read(&mbuf); queue.lock(); @@ -413,7 +413,7 @@ sp MediaCodecSource::getGraphicBufferProducer() { } status_t MediaCodecSource::read( - MediaBuffer** buffer, const ReadOptions* /* options */) { + MediaBufferBase** buffer, const ReadOptions* /* options */) { Mutexed::Locked output(mOutput); *buffer = NULL; @@ -428,7 +428,7 @@ status_t MediaCodecSource::read( return output->mErrorCode; } -void MediaCodecSource::signalBufferReturned(MediaBuffer *buffer) { +void MediaCodecSource::signalBufferReturned(MediaBufferBase *buffer) { buffer->setObserver(0); buffer->release(); } @@ -636,7 +636,7 @@ void MediaCodecSource::signalEOS(status_t err) { if (!reachedEOS) { ALOGV("encoder (%s) reached EOS", mIsVideo ? "video" : "audio"); // release all unread media buffers - for (List::iterator it = output->mBufferQueue.begin(); + for (List::iterator it = output->mBufferQueue.begin(); it != output->mBufferQueue.end(); it++) { (*it)->release(); } @@ -682,7 +682,7 @@ void MediaCodecSource::resume(int64_t resumeStartTimeUs) { } status_t MediaCodecSource::feedEncoderInputBuffers() { - MediaBuffer* mbuf = NULL; + MediaBufferBase* mbuf = NULL; while (!mAvailEncoderInputIndices.empty() && mPuller->readBuffer(&mbuf)) { size_t bufferIndex = *mAvailEncoderInputIndices.begin(); mAvailEncoderInputIndices.erase(mAvailEncoderInputIndices.begin()); @@ -906,7 +906,7 @@ void MediaCodecSource::onMessageReceived(const sp &msg) { break; } - MediaBuffer *mbuf = new MediaBuffer(outbuf->size()); + MediaBufferBase *mbuf = new MediaBuffer(outbuf->size()); mbuf->setObserver(this); mbuf->add_ref(); diff --git a/media/libstagefright/NuMediaExtractor.cpp b/media/libstagefright/NuMediaExtractor.cpp index d96f7e010c..c6cbb2f085 100644 --- a/media/libstagefright/NuMediaExtractor.cpp +++ b/media/libstagefright/NuMediaExtractor.cpp @@ -45,7 +45,7 @@ NuMediaExtractor::Sample::Sample() mSampleTimeUs(-1ll) { } -NuMediaExtractor::Sample::Sample(MediaBuffer *buffer, int64_t timeUs) +NuMediaExtractor::Sample::Sample(MediaBufferBase *buffer, int64_t timeUs) : mBuffer(buffer), mSampleTimeUs(timeUs) { } @@ -488,12 +488,12 @@ void NuMediaExtractor::fetchTrackSamples(TrackInfo *info, } status_t err = OK; - Vector mediaBuffers; + Vector mediaBuffers; if (info->mSource->supportReadMultiple()) { options.setNonBlocking(); err = info->mSource->readMultiple(&mediaBuffers, info->mMaxFetchCount, &options); } else { - MediaBuffer *mbuf = NULL; + MediaBufferBase *mbuf = NULL; err = info->mSource->read(&mbuf, &options); if (err == OK && mbuf != NULL) { mediaBuffers.push_back(mbuf); @@ -505,7 +505,7 @@ void NuMediaExtractor::fetchTrackSamples(TrackInfo *info, ALOGW("read on track %zu failed with error %d", info->mTrackIndex, err); size_t count = mediaBuffers.size(); for (size_t id = 0; id < count; ++id) { - MediaBuffer *mbuf = mediaBuffers[id]; + MediaBufferBase *mbuf = mediaBuffers[id]; if (mbuf != NULL) { mbuf->release(); } @@ -517,7 +517,7 @@ void NuMediaExtractor::fetchTrackSamples(TrackInfo *info, bool releaseRemaining = false; for (size_t id = 0; id < count; ++id) { int64_t timeUs; - MediaBuffer *mbuf = mediaBuffers[id]; + MediaBufferBase *mbuf = mediaBuffers[id]; if (mbuf == NULL) { continue; } @@ -565,7 +565,8 @@ status_t NuMediaExtractor::advance() { return OK; } -status_t NuMediaExtractor::appendVorbisNumPageSamples(MediaBuffer *mbuf, const sp &buffer) { +status_t NuMediaExtractor::appendVorbisNumPageSamples( + MediaBufferBase *mbuf, const sp &buffer) { int32_t numPageSamples; if (!mbuf->meta_data()->findInt32( kKeyValidSamples, &numPageSamples)) { diff --git a/media/libstagefright/RemoteMediaSource.cpp b/media/libstagefright/RemoteMediaSource.cpp index 6b48ce8459..d038454426 100644 --- a/media/libstagefright/RemoteMediaSource.cpp +++ b/media/libstagefright/RemoteMediaSource.cpp @@ -45,7 +45,8 @@ sp RemoteMediaSource::getFormat() { return mSource->getFormat(); } -status_t RemoteMediaSource::read(MediaBuffer **buffer, const MediaSource::ReadOptions *options) { +status_t RemoteMediaSource::read( + MediaBufferBase **buffer, const MediaSource::ReadOptions *options) { return mSource->read(buffer, reinterpret_cast(options)); } diff --git a/media/libstagefright/SimpleDecodingSource.cpp b/media/libstagefright/SimpleDecodingSource.cpp index 9b2fb4ff16..f93a0b7ac1 100644 --- a/media/libstagefright/SimpleDecodingSource.cpp +++ b/media/libstagefright/SimpleDecodingSource.cpp @@ -200,7 +200,7 @@ SimpleDecodingSource::ProtectedState::ProtectedState(const sp &format) } status_t SimpleDecodingSource::read( - MediaBuffer **buffer, const ReadOptions *options) { + MediaBufferBase **buffer, const ReadOptions *options) { *buffer = NULL; Mutexed::Locked me(mProtectedState); @@ -221,7 +221,7 @@ status_t SimpleDecodingSource::read( } status_t SimpleDecodingSource::doRead( - Mutexed::Locked &me, MediaBuffer **buffer, const ReadOptions *options) { + Mutexed::Locked &me, MediaBufferBase **buffer, const ReadOptions *options) { // |me| is always locked on entry, but is allowed to be unlocked on exit CHECK_EQ(me->mState, STARTED); @@ -267,7 +267,7 @@ status_t SimpleDecodingSource::doRead( return UNKNOWN_ERROR; } - MediaBuffer *in_buf; + MediaBufferBase *in_buf; while (true) { in_buf = NULL; me.unlock(); diff --git a/media/libstagefright/SurfaceMediaSource.cpp b/media/libstagefright/SurfaceMediaSource.cpp index d14e86b1f2..4b3076a30d 100644 --- a/media/libstagefright/SurfaceMediaSource.cpp +++ b/media/libstagefright/SurfaceMediaSource.cpp @@ -251,7 +251,7 @@ sp SurfaceMediaSource::getFormat() // Pass the data to the MediaBuffer. Pass in only the metadata // Note: Call only when you have the lock -void SurfaceMediaSource::passMetadataBuffer_l(MediaBuffer **buffer, +void SurfaceMediaSource::passMetadataBuffer_l(MediaBufferBase **buffer, ANativeWindowBuffer *bufferHandle) const { *buffer = new MediaBuffer(sizeof(VideoNativeMetadata)); VideoNativeMetadata *data = (VideoNativeMetadata *)(*buffer)->data(); @@ -267,7 +267,7 @@ void SurfaceMediaSource::passMetadataBuffer_l(MediaBuffer **buffer, } status_t SurfaceMediaSource::read( - MediaBuffer **buffer, const ReadOptions * /* options */) { + MediaBufferBase **buffer, const ReadOptions * /* options */) { ALOGV("read"); Mutex::Autolock lock(mMutex); @@ -371,7 +371,7 @@ status_t SurfaceMediaSource::read( return OK; } -static buffer_handle_t getMediaBufferHandle(MediaBuffer *buffer) { +static buffer_handle_t getMediaBufferHandle(MediaBufferBase *buffer) { // need to convert to char* for pointer arithmetic and then // copy the byte stream into our handle buffer_handle_t bufferHandle; @@ -379,7 +379,7 @@ static buffer_handle_t getMediaBufferHandle(MediaBuffer *buffer) { return bufferHandle; } -void SurfaceMediaSource::signalBufferReturned(MediaBuffer *buffer) { +void SurfaceMediaSource::signalBufferReturned(MediaBufferBase *buffer) { ALOGV("signalBufferReturned"); bool foundBuffer = false; diff --git a/media/libstagefright/codecs/cmds/codec2.cpp b/media/libstagefright/codecs/cmds/codec2.cpp index d95bb075e5..8022b84ee1 100644 --- a/media/libstagefright/codecs/cmds/codec2.cpp +++ b/media/libstagefright/codecs/cmds/codec2.cpp @@ -295,7 +295,7 @@ void SimplePlayer::play(const sp &source) { size_t size = 0u; void *data = nullptr; int64_t timestamp = 0u; - MediaBuffer *buffer = nullptr; + MediaBufferBase *buffer = nullptr; sp csd; if (csd0 != nullptr) { csd = csd0; diff --git a/media/libstagefright/include/media/stagefright/AudioPlayer.h b/media/libstagefright/include/media/stagefright/AudioPlayer.h index e971762591..7c2c36fc0e 100644 --- a/media/libstagefright/include/media/stagefright/AudioPlayer.h +++ b/media/libstagefright/include/media/stagefright/AudioPlayer.h @@ -69,7 +69,7 @@ private: sp mSource; sp mAudioTrack; - MediaBuffer *mInputBuffer; + MediaBufferBase *mInputBuffer; int mSampleRate; int64_t mLatencyUs; @@ -91,7 +91,7 @@ private: bool mIsFirstBuffer; status_t mFirstBufferResult; - MediaBuffer *mFirstBuffer; + MediaBufferBase *mFirstBuffer; sp mAudioSink; diff --git a/media/libstagefright/include/media/stagefright/AudioSource.h b/media/libstagefright/include/media/stagefright/AudioSource.h index f66b92df9f..206d322661 100644 --- a/media/libstagefright/include/media/stagefright/AudioSource.h +++ b/media/libstagefright/include/media/stagefright/AudioSource.h @@ -56,11 +56,11 @@ struct AudioSource : public MediaSource, public MediaBufferObserver { int16_t getMaxAmplitude(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); virtual status_t setStopTimeUs(int64_t stopTimeUs); status_t dataCallback(const AudioRecord::Buffer& buffer); - virtual void signalBufferReturned(MediaBuffer *buffer); + virtual void signalBufferReturned(MediaBufferBase *buffer); status_t setInputDevice(audio_port_handle_t deviceId); status_t getRoutedDeviceId(audio_port_handle_t* deviceId); diff --git a/media/libstagefright/include/media/stagefright/CallbackMediaSource.h b/media/libstagefright/include/media/stagefright/CallbackMediaSource.h index 944d951788..33453faae6 100644 --- a/media/libstagefright/include/media/stagefright/CallbackMediaSource.h +++ b/media/libstagefright/include/media/stagefright/CallbackMediaSource.h @@ -33,7 +33,7 @@ public: virtual status_t stop(); virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); virtual status_t pause(); private: diff --git a/media/libstagefright/include/media/stagefright/CameraSource.h b/media/libstagefright/include/media/stagefright/CameraSource.h index 945e1be58b..475976b6eb 100644 --- a/media/libstagefright/include/media/stagefright/CameraSource.h +++ b/media/libstagefright/include/media/stagefright/CameraSource.h @@ -97,7 +97,7 @@ public: virtual status_t start(MetaData *params = NULL); virtual status_t stop() { return reset(); } virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); virtual status_t setStopTimeUs(int64_t stopTimeUs); /** @@ -127,7 +127,7 @@ public: */ MetadataBufferType metaDataStoredInVideoBuffers() const; - virtual void signalBufferReturned(MediaBuffer* buffer); + virtual void signalBufferReturned(MediaBufferBase* buffer); protected: diff --git a/media/libstagefright/include/media/stagefright/CameraSourceTimeLapse.h b/media/libstagefright/include/media/stagefright/CameraSourceTimeLapse.h index b066f9a463..533e33b4ce 100644 --- a/media/libstagefright/include/media/stagefright/CameraSourceTimeLapse.h +++ b/media/libstagefright/include/media/stagefright/CameraSourceTimeLapse.h @@ -107,7 +107,7 @@ private: // Stores a copy of the MediaBuffer read in the last read() call after // mQuickStop was true. - MediaBuffer* mLastReadBufferCopy; + MediaBufferBase* mLastReadBufferCopy; // Status code for last read. status_t mLastReadStatus; @@ -128,10 +128,10 @@ private: // Wrapper over CameraSource::signalBufferReturned() to implement quick stop. // It only handles the case when mLastReadBufferCopy is signalled. Otherwise // it calls the base class' function. - virtual void signalBufferReturned(MediaBuffer* buffer); + virtual void signalBufferReturned(MediaBufferBase* buffer); // Wrapper over CameraSource::read() to implement quick stop. - virtual status_t read(MediaBuffer **buffer, const ReadOptions *options = NULL); + virtual status_t read(MediaBufferBase **buffer, const ReadOptions *options = NULL); // mSkipCurrentFrame is set to true in dataCallbackTimestamp() if the current // frame needs to be skipped and this function just returns the value of mSkipCurrentFrame. @@ -170,7 +170,7 @@ private: // Convenience function to fill mLastReadBufferCopy from the just read // buffer. - void fillLastReadBufferCopy(MediaBuffer& sourceBuffer); + void fillLastReadBufferCopy(MediaBufferBase& sourceBuffer); // If the passed in size (width x height) is a supported video/preview size, // the function sets the camera's video/preview size to it and returns true. diff --git a/media/libstagefright/include/media/stagefright/JPEGSource.h b/media/libstagefright/include/media/stagefright/JPEGSource.h index 9fcbfc2bce..8ab3d11b84 100644 --- a/media/libstagefright/include/media/stagefright/JPEGSource.h +++ b/media/libstagefright/include/media/stagefright/JPEGSource.h @@ -33,7 +33,7 @@ struct JPEGSource : public MediaSource { virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); protected: virtual ~JPEGSource(); diff --git a/media/libstagefright/include/media/stagefright/MediaAdapter.h b/media/libstagefright/include/media/stagefright/MediaAdapter.h index 4b47160cb4..589c8275d2 100644 --- a/media/libstagefright/include/media/stagefright/MediaAdapter.h +++ b/media/libstagefright/include/media/stagefright/MediaAdapter.h @@ -40,13 +40,13 @@ public: virtual status_t stop(); virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); ///////////////////////////////////////////////// // Inherited functions from MediaBufferObserver ///////////////////////////////////////////////// - virtual void signalBufferReturned(MediaBuffer *buffer); + virtual void signalBufferReturned(MediaBufferBase *buffer); ///////////////////////////////////////////////// // Non-inherited functions: diff --git a/media/libstagefright/include/media/stagefright/MediaBufferBase.h b/media/libstagefright/include/media/stagefright/MediaBufferBase.h new file mode 120000 index 0000000000..80e49b019a --- /dev/null +++ b/media/libstagefright/include/media/stagefright/MediaBufferBase.h @@ -0,0 +1 @@ +../../../../libmediaextractor/include/media/stagefright/MediaBufferBase.h \ No newline at end of file diff --git a/media/libstagefright/include/media/stagefright/MediaCodecSource.h b/media/libstagefright/include/media/stagefright/MediaCodecSource.h index eec115e902..a68cc19864 100644 --- a/media/libstagefright/include/media/stagefright/MediaCodecSource.h +++ b/media/libstagefright/include/media/stagefright/MediaCodecSource.h @@ -57,13 +57,13 @@ struct MediaCodecSource : public MediaSource, virtual status_t pause(MetaData *params); virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, + MediaBufferBase **buffer, const ReadOptions *options = NULL); virtual status_t setStopTimeUs(int64_t stopTimeUs); // MediaBufferObserver - virtual void signalBufferReturned(MediaBuffer *buffer); + virtual void signalBufferReturned(MediaBufferBase *buffer); // for AHandlerReflector void onMessageReceived(const sp &msg); @@ -136,7 +136,7 @@ private: sp mEncoderActivityNotify; sp mGraphicBufferProducer; sp mPersistentSurface; - List mInputBufferQueue; + List mInputBufferQueue; List mAvailEncoderInputIndices; List mDecodingTimeQueue; // decoding time (us) for video int64_t mInputBufferTimeOffsetUs; @@ -149,7 +149,7 @@ private: struct Output { Output(); - List mBufferQueue; + List mBufferQueue; bool mEncoderReachedEOS; status_t mErrorCode; Condition mCond; diff --git a/media/libstagefright/include/media/stagefright/NuMediaExtractor.h b/media/libstagefright/include/media/stagefright/NuMediaExtractor.h index 6a2e39b6ad..5e5ef6e32d 100644 --- a/media/libstagefright/include/media/stagefright/NuMediaExtractor.h +++ b/media/libstagefright/include/media/stagefright/NuMediaExtractor.h @@ -107,8 +107,8 @@ private: struct Sample { Sample(); - Sample(MediaBuffer *buffer, int64_t timeUs); - MediaBuffer *mBuffer; + Sample(MediaBufferBase *buffer, int64_t timeUs); + MediaBufferBase *mBuffer; int64_t mSampleTimeUs; }; @@ -150,7 +150,7 @@ private: bool getTotalBitrate(int64_t *bitRate) const; status_t updateDurationAndBitrate(); - status_t appendVorbisNumPageSamples(MediaBuffer *mbuf, const sp &buffer); + status_t appendVorbisNumPageSamples(MediaBufferBase *mbuf, const sp &buffer); DISALLOW_EVIL_CONSTRUCTORS(NuMediaExtractor); }; diff --git a/media/libstagefright/include/media/stagefright/RemoteMediaSource.h b/media/libstagefright/include/media/stagefright/RemoteMediaSource.h index d1afa6a9b7..a9bf8206f5 100644 --- a/media/libstagefright/include/media/stagefright/RemoteMediaSource.h +++ b/media/libstagefright/include/media/stagefright/RemoteMediaSource.h @@ -35,7 +35,7 @@ public: virtual status_t stop(); virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, + MediaBufferBase **buffer, const MediaSource::ReadOptions *options = NULL); virtual status_t pause(); virtual status_t setStopTimeUs(int64_t stopTimeUs); diff --git a/media/libstagefright/include/media/stagefright/SimpleDecodingSource.h b/media/libstagefright/include/media/stagefright/SimpleDecodingSource.h index 3006b451c9..23defb4a29 100644 --- a/media/libstagefright/include/media/stagefright/SimpleDecodingSource.h +++ b/media/libstagefright/include/media/stagefright/SimpleDecodingSource.h @@ -65,7 +65,7 @@ public: virtual sp getFormat(); // reads from the source. This call always blocks. - virtual status_t read(MediaBuffer **buffer, const ReadOptions *options); + virtual status_t read(MediaBufferBase **buffer, const ReadOptions *options); // unsupported methods virtual status_t pause() { return INVALID_OPERATION; } @@ -104,7 +104,8 @@ private: // do the actual reading status_t doRead( - Mutexed::Locked &me, MediaBuffer **buffer, const ReadOptions *options); + Mutexed::Locked &me, MediaBufferBase **buffer, + const ReadOptions *options); }; } // namespace android diff --git a/media/libstagefright/include/media/stagefright/SurfaceMediaSource.h b/media/libstagefright/include/media/stagefright/SurfaceMediaSource.h index 2e495f9e8c..d49e44cd8a 100644 --- a/media/libstagefright/include/media/stagefright/SurfaceMediaSource.h +++ b/media/libstagefright/include/media/stagefright/SurfaceMediaSource.h @@ -79,7 +79,7 @@ public: // For the MediaSource interface for use by StageFrightRecorder: virtual status_t start(MetaData *params = NULL); virtual status_t stop(); - virtual status_t read(MediaBuffer **buffer, + virtual status_t read(MediaBufferBase **buffer, const ReadOptions *options = NULL); virtual sp getFormat(); @@ -90,7 +90,7 @@ public: // The call for the StageFrightRecorder to tell us that // it is done using the MediaBuffer data so that its state // can be set to FREE for dequeuing - virtual void signalBufferReturned(MediaBuffer* buffer); + virtual void signalBufferReturned(MediaBufferBase* buffer); // end of MediaSource interface // getTimestamp retrieves the timestamp associated with the image @@ -236,7 +236,7 @@ private: Condition mMediaBuffersAvailableCondition; // Allocate and return a new MediaBuffer and pass the ANW buffer as metadata into it. - void passMetadataBuffer_l(MediaBuffer **buffer, ANativeWindowBuffer *bufferHandle) const; + void passMetadataBuffer_l(MediaBufferBase **buffer, ANativeWindowBuffer *bufferHandle) const; // Avoid copying and equating and default constructor DISALLOW_EVIL_CONSTRUCTORS(SurfaceMediaSource); diff --git a/media/libstagefright/mpeg2ts/AnotherPacketSource.cpp b/media/libstagefright/mpeg2ts/AnotherPacketSource.cpp index 1dac1713cd..d0b17e09d2 100644 --- a/media/libstagefright/mpeg2ts/AnotherPacketSource.cpp +++ b/media/libstagefright/mpeg2ts/AnotherPacketSource.cpp @@ -163,7 +163,7 @@ void AnotherPacketSource::requeueAccessUnit(const sp &buffer) { } status_t AnotherPacketSource::read( - MediaBuffer **out, const ReadOptions *) { + MediaBufferBase **out, const ReadOptions *) { *out = NULL; Mutex::Autolock autoLock(mLock); @@ -202,7 +202,7 @@ status_t AnotherPacketSource::read( seg.mMaxDequeTimeUs = timeUs; } - MediaBuffer *mediaBuffer = new MediaBuffer(buffer); + MediaBufferBase *mediaBuffer = new MediaBuffer(buffer); sp bufmeta = mediaBuffer->meta_data(); bufmeta->setInt64(kKeyTime, timeUs); diff --git a/media/libstagefright/mpeg2ts/AnotherPacketSource.h b/media/libstagefright/mpeg2ts/AnotherPacketSource.h index 3abd57317e..f4a6acbe27 100644 --- a/media/libstagefright/mpeg2ts/AnotherPacketSource.h +++ b/media/libstagefright/mpeg2ts/AnotherPacketSource.h @@ -39,7 +39,7 @@ struct AnotherPacketSource : public MediaSource { virtual sp getFormat(); virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); + MediaBufferBase **buffer, const ReadOptions *options = NULL); void clear(); diff --git a/media/libstagefright/omx/tests/OMXHarness.cpp b/media/libstagefright/omx/tests/OMXHarness.cpp index 86c7211eed..3d9c791d56 100644 --- a/media/libstagefright/omx/tests/OMXHarness.cpp +++ b/media/libstagefright/omx/tests/OMXHarness.cpp @@ -658,7 +658,7 @@ status_t Harness::testSeek( requestedSeekTimeUs, requestedSeekTimeUs / 1E6); } - MediaBuffer *buffer = NULL; + MediaBufferBase *buffer = NULL; options.setSeekTo( requestedSeekTimeUs, MediaSource::ReadOptions::SEEK_NEXT_SYNC); @@ -679,7 +679,7 @@ status_t Harness::testSeek( } status_t err; - MediaBuffer *buffer; + MediaBufferBase *buffer; for (;;) { err = codec->read(&buffer, &options); options.clearSeekTo(); diff --git a/media/libstagefright/rtsp/ARTPWriter.cpp b/media/libstagefright/rtsp/ARTPWriter.cpp index 8604b693e0..4ce8a0c253 100644 --- a/media/libstagefright/rtsp/ARTPWriter.cpp +++ b/media/libstagefright/rtsp/ARTPWriter.cpp @@ -173,7 +173,7 @@ status_t ARTPWriter::pause() { return OK; } -static void StripStartcode(MediaBuffer *buffer) { +static void StripStartcode(MediaBufferBase *buffer) { if (buffer->range_length() < 4) { return; } @@ -195,7 +195,7 @@ void ARTPWriter::onMessageReceived(const sp &msg) { #if 0 if (mMode == H264) { - MediaBuffer *buffer; + MediaBufferBase *buffer; CHECK_EQ(mSource->read(&buffer), (status_t)OK); StripStartcode(buffer); @@ -265,7 +265,7 @@ void ARTPWriter::onMessageReceived(const sp &msg) { } void ARTPWriter::onRead(const sp &msg) { - MediaBuffer *mediaBuf; + MediaBufferBase *mediaBuf; status_t err = mSource->read(&mediaBuf); if (err != OK) { @@ -523,7 +523,7 @@ void ARTPWriter::dumpSessionDesc() { ALOGI("%s", sdp.c_str()); } -void ARTPWriter::makeH264SPropParamSets(MediaBuffer *buffer) { +void ARTPWriter::makeH264SPropParamSets(MediaBufferBase *buffer) { static const char kStartCode[] = "\x00\x00\x00\x01"; const uint8_t *data = @@ -567,7 +567,7 @@ void ARTPWriter::sendBye() { send(buffer, true /* isRTCP */); } -void ARTPWriter::sendAVCData(MediaBuffer *mediaBuf) { +void ARTPWriter::sendAVCData(MediaBufferBase *mediaBuf) { // 12 bytes RTP header + 2 bytes for the FU-indicator and FU-header. CHECK_GE(kMaxPacketSize, 12u + 2u); @@ -663,7 +663,7 @@ void ARTPWriter::sendAVCData(MediaBuffer *mediaBuf) { mLastNTPTime = GetNowNTP(); } -void ARTPWriter::sendH263Data(MediaBuffer *mediaBuf) { +void ARTPWriter::sendH263Data(MediaBufferBase *mediaBuf) { CHECK_GE(kMaxPacketSize, 12u + 2u); int64_t timeUs; @@ -741,7 +741,7 @@ static size_t getFrameSize(bool isWide, unsigned FT) { return frameSize; } -void ARTPWriter::sendAMRData(MediaBuffer *mediaBuf) { +void ARTPWriter::sendAMRData(MediaBufferBase *mediaBuf) { const uint8_t *mediaData = (const uint8_t *)mediaBuf->data() + mediaBuf->range_offset(); diff --git a/media/libstagefright/rtsp/ARTPWriter.h b/media/libstagefright/rtsp/ARTPWriter.h index 92a64f278d..2f134861bf 100644 --- a/media/libstagefright/rtsp/ARTPWriter.h +++ b/media/libstagefright/rtsp/ARTPWriter.h @@ -110,13 +110,13 @@ private: void addSR(const sp &buffer); void addSDES(const sp &buffer); - void makeH264SPropParamSets(MediaBuffer *buffer); + void makeH264SPropParamSets(MediaBufferBase *buffer); void dumpSessionDesc(); void sendBye(); - void sendAVCData(MediaBuffer *mediaBuf); - void sendH263Data(MediaBuffer *mediaBuf); - void sendAMRData(MediaBuffer *mediaBuf); + void sendAVCData(MediaBufferBase *mediaBuf); + void sendH263Data(MediaBufferBase *mediaBuf); + void sendAMRData(MediaBufferBase *mediaBuf); void send(const sp &buffer, bool isRTCP); diff --git a/media/libstagefright/tests/DummyRecorder.cpp b/media/libstagefright/tests/DummyRecorder.cpp index 4f560cb324..c79e6b1a9c 100644 --- a/media/libstagefright/tests/DummyRecorder.cpp +++ b/media/libstagefright/tests/DummyRecorder.cpp @@ -75,7 +75,7 @@ void DummyRecorder::readFromSource() { } status_t err = OK; - MediaBuffer *buffer; + MediaBufferBase *buffer; ALOGV("A fake writer accessing the frames"); while (mStarted && (err = mSource->read(&buffer)) == OK){ // if not getting a valid buffer from source, then exit diff --git a/media/libstagefright/tests/SurfaceMediaSource_test.cpp b/media/libstagefright/tests/SurfaceMediaSource_test.cpp index 051108f335..1b1c3b8cdb 100644 --- a/media/libstagefright/tests/SurfaceMediaSource_test.cpp +++ b/media/libstagefright/tests/SurfaceMediaSource_test.cpp @@ -601,7 +601,7 @@ struct SimpleDummyRecorder { // fakes reading from a media source status_t readFromSource() { - MediaBuffer *buffer; + MediaBufferBase *buffer; status_t err = mSource->read(&buffer); if (err != OK) { return err; diff --git a/media/libstagefright/webm/WebmFrame.cpp b/media/libstagefright/webm/WebmFrame.cpp index e5134ede61..4b0d47cd06 100644 --- a/media/libstagefright/webm/WebmFrame.cpp +++ b/media/libstagefright/webm/WebmFrame.cpp @@ -27,7 +27,7 @@ using namespace android; using namespace webm; namespace { -sp toABuffer(MediaBuffer *mbuf) { +sp toABuffer(MediaBufferBase *mbuf) { sp abuf = new ABuffer(mbuf->range_length()); memcpy(abuf->data(), (uint8_t*) mbuf->data() + mbuf->range_offset(), mbuf->range_length()); return abuf; @@ -46,7 +46,7 @@ WebmFrame::WebmFrame() mEos(true) { } -WebmFrame::WebmFrame(int type, bool key, uint64_t absTimecode, MediaBuffer *mbuf) +WebmFrame::WebmFrame(int type, bool key, uint64_t absTimecode, MediaBufferBase *mbuf) : mType(type), mKey(key), mAbsTimecode(absTimecode), diff --git a/media/libstagefright/webm/WebmFrame.h b/media/libstagefright/webm/WebmFrame.h index 4f0b055a9f..a410a87480 100644 --- a/media/libstagefright/webm/WebmFrame.h +++ b/media/libstagefright/webm/WebmFrame.h @@ -30,7 +30,7 @@ public: const bool mEos; WebmFrame(); - WebmFrame(int type, bool key, uint64_t absTimecode, MediaBuffer *buf); + WebmFrame(int type, bool key, uint64_t absTimecode, MediaBufferBase *buf); ~WebmFrame() {} sp SimpleBlock(uint64_t baseTimecode) const; diff --git a/media/libstagefright/webm/WebmFrameThread.cpp b/media/libstagefright/webm/WebmFrameThread.cpp index 420890b152..0d4c6998a0 100644 --- a/media/libstagefright/webm/WebmFrameThread.cpp +++ b/media/libstagefright/webm/WebmFrameThread.cpp @@ -337,7 +337,7 @@ void WebmFrameMediaSourceThread::run() { mStartTimeUs = kUninitialized; status_t err = OK; - MediaBuffer *buffer; + MediaBufferBase *buffer; while (!mDone && (err = mSource->read(&buffer, NULL)) == OK) { if (buffer->range_length() == 0) { buffer->release();