Loading media/libmedia/MediaCodecBuffer.cpp +17 −1 Original line number Original line Diff line number Diff line Loading @@ -21,13 +21,15 @@ #include <media/MediaCodecBuffer.h> #include <media/MediaCodecBuffer.h> #include <media/stagefright/foundation/ABuffer.h> #include <media/stagefright/foundation/ABuffer.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/foundation/MediaBufferBase.h> namespace android { namespace android { MediaCodecBuffer::MediaCodecBuffer(const sp<AMessage> &format, const sp<ABuffer> &buffer) MediaCodecBuffer::MediaCodecBuffer(const sp<AMessage> &format, const sp<ABuffer> &buffer) : mMeta(new AMessage), : mMeta(new AMessage), mFormat(format), mFormat(format), mBuffer(buffer) { mBuffer(buffer), mMediaBufferBase(nullptr) { } } // ABuffer-like interface // ABuffer-like interface Loading Loading @@ -56,6 +58,20 @@ status_t MediaCodecBuffer::setRange(size_t offset, size_t size) { return OK; return OK; } } MediaBufferBase *MediaCodecBuffer::getMediaBufferBase() { if (mMediaBufferBase != NULL) { mMediaBufferBase->add_ref(); } return mMediaBufferBase; } void MediaCodecBuffer::setMediaBufferBase(MediaBufferBase *mediaBuffer) { if (mMediaBufferBase != NULL) { mMediaBufferBase->release(); } mMediaBufferBase = mediaBuffer; } sp<AMessage> MediaCodecBuffer::meta() { sp<AMessage> MediaCodecBuffer::meta() { return mMeta; return mMeta; } } Loading media/libmedia/include/media/MediaCodecBuffer.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -50,6 +50,9 @@ public: size_t offset() const; size_t offset() const; // Default implementation calls ABuffer::setRange() and returns OK. // Default implementation calls ABuffer::setRange() and returns OK. virtual status_t setRange(size_t offset, size_t size); virtual status_t setRange(size_t offset, size_t size); // TODO: These can be removed if we finish replacing all MediaBuffer's. MediaBufferBase *getMediaBufferBase(); void setMediaBufferBase(MediaBufferBase *mediaBuffer); // TODO: Specify each field for meta/format. // TODO: Specify each field for meta/format. sp<AMessage> meta(); sp<AMessage> meta(); Loading @@ -63,6 +66,7 @@ private: const sp<AMessage> mMeta; const sp<AMessage> mMeta; sp<AMessage> mFormat; sp<AMessage> mFormat; const sp<ABuffer> mBuffer; const sp<ABuffer> mBuffer; MediaBufferBase *mMediaBufferBase; }; }; } // namespace android } // namespace android Loading media/libmedia/nuplayer2/GenericSource.cpp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -24,7 +24,6 @@ #include <binder/IServiceManager.h> #include <binder/IServiceManager.h> #include <cutils/properties.h> #include <cutils/properties.h> #include <media/DataSource.h> #include <media/DataSource.h> #include <media/MediaBufferHolder.h> #include <media/IMediaExtractorService.h> #include <media/IMediaExtractorService.h> #include <media/MediaHTTPService.h> #include <media/MediaHTTPService.h> #include <media/MediaExtractor.h> #include <media/MediaExtractor.h> Loading Loading @@ -1168,7 +1167,8 @@ sp<ABuffer> NuPlayer2::GenericSource::mediaBufferToABuffer( // data is already provided in the buffer // data is already provided in the buffer ab = new ABuffer(NULL, mb->range_length()); ab = new ABuffer(NULL, mb->range_length()); ab->meta()->setObject("mediaBufferHolder", new MediaBufferHolder(mb)); mb->add_ref(); ab->setMediaBufferBase(mb); // Modular DRM: Required b/c of the above add_ref. // Modular DRM: Required b/c of the above add_ref. // If ref>0, there must be an observer, or it'll crash at release(). // If ref>0, there must be an observer, or it'll crash at release(). Loading media/libmedia/nuplayer2/NuPlayer2Decoder.cpp +4 −6 Original line number Original line Diff line number Diff line Loading @@ -28,7 +28,6 @@ #include "NuPlayer2Source.h" #include "NuPlayer2Source.h" #include <cutils/properties.h> #include <cutils/properties.h> #include <media/MediaBufferHolder.h> #include <media/MediaCodecBuffer.h> #include <media/MediaCodecBuffer.h> #include <media/NdkMediaCodec.h> #include <media/NdkMediaCodec.h> #include <media/NdkWrapper.h> #include <media/NdkWrapper.h> Loading Loading @@ -1082,17 +1081,16 @@ bool NuPlayer2::Decoder::onInputBufferFetched(const sp<AMessage> &msg) { memcpy(codecBuffer->data(), buffer->data(), buffer->size()); memcpy(codecBuffer->data(), buffer->data(), buffer->size()); } else { // No buffer->data() } else { // No buffer->data() //Modular DRM //Modular DRM sp<RefBase> holder; mediaBuf = (MediaBuffer*)buffer->getMediaBufferBase(); if (buffer->meta()->findObject("mediaBufferHolder", &holder)) { mediaBuf = (holder != nullptr) ? static_cast<MediaBufferHolder*>(holder.get())->mediaBuffer() : nullptr; } if (mediaBuf != NULL) { if (mediaBuf != NULL) { codecBuffer->setRange(0, mediaBuf->size()); codecBuffer->setRange(0, mediaBuf->size()); memcpy(codecBuffer->data(), mediaBuf->data(), mediaBuf->size()); memcpy(codecBuffer->data(), mediaBuf->data(), mediaBuf->size()); sp<MetaData> meta_data = mediaBuf->meta_data(); sp<MetaData> meta_data = mediaBuf->meta_data(); cryptInfo = AMediaCodecCryptoInfoWrapper::Create(meta_data); cryptInfo = AMediaCodecCryptoInfoWrapper::Create(meta_data); // since getMediaBuffer() has incremented the refCount mediaBuf->release(); } else { // No mediaBuf } else { // No mediaBuf ALOGE("onInputBufferFetched: buffer->data()/mediaBuf are NULL for %p", ALOGE("onInputBufferFetched: buffer->data()/mediaBuf are NULL for %p", buffer.get()); buffer.get()); Loading media/libmediaextractor/Android.bp +0 −3 Original line number Original line Diff line number Diff line Loading @@ -15,7 +15,6 @@ cc_library { ], ], shared_libs: [ shared_libs: [ "libbinder", "libstagefright_foundation", "libstagefright_foundation", "libutils", "libutils", "libcutils", "libcutils", Loading @@ -24,8 +23,6 @@ cc_library { srcs: [ srcs: [ "DataSource.cpp", "DataSource.cpp", "MediaBuffer.cpp", "MediaBufferGroup.cpp", "MediaSource.cpp", "MediaSource.cpp", "MediaExtractor.cpp", "MediaExtractor.cpp", ], ], Loading Loading
media/libmedia/MediaCodecBuffer.cpp +17 −1 Original line number Original line Diff line number Diff line Loading @@ -21,13 +21,15 @@ #include <media/MediaCodecBuffer.h> #include <media/MediaCodecBuffer.h> #include <media/stagefright/foundation/ABuffer.h> #include <media/stagefright/foundation/ABuffer.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/foundation/MediaBufferBase.h> namespace android { namespace android { MediaCodecBuffer::MediaCodecBuffer(const sp<AMessage> &format, const sp<ABuffer> &buffer) MediaCodecBuffer::MediaCodecBuffer(const sp<AMessage> &format, const sp<ABuffer> &buffer) : mMeta(new AMessage), : mMeta(new AMessage), mFormat(format), mFormat(format), mBuffer(buffer) { mBuffer(buffer), mMediaBufferBase(nullptr) { } } // ABuffer-like interface // ABuffer-like interface Loading Loading @@ -56,6 +58,20 @@ status_t MediaCodecBuffer::setRange(size_t offset, size_t size) { return OK; return OK; } } MediaBufferBase *MediaCodecBuffer::getMediaBufferBase() { if (mMediaBufferBase != NULL) { mMediaBufferBase->add_ref(); } return mMediaBufferBase; } void MediaCodecBuffer::setMediaBufferBase(MediaBufferBase *mediaBuffer) { if (mMediaBufferBase != NULL) { mMediaBufferBase->release(); } mMediaBufferBase = mediaBuffer; } sp<AMessage> MediaCodecBuffer::meta() { sp<AMessage> MediaCodecBuffer::meta() { return mMeta; return mMeta; } } Loading
media/libmedia/include/media/MediaCodecBuffer.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -50,6 +50,9 @@ public: size_t offset() const; size_t offset() const; // Default implementation calls ABuffer::setRange() and returns OK. // Default implementation calls ABuffer::setRange() and returns OK. virtual status_t setRange(size_t offset, size_t size); virtual status_t setRange(size_t offset, size_t size); // TODO: These can be removed if we finish replacing all MediaBuffer's. MediaBufferBase *getMediaBufferBase(); void setMediaBufferBase(MediaBufferBase *mediaBuffer); // TODO: Specify each field for meta/format. // TODO: Specify each field for meta/format. sp<AMessage> meta(); sp<AMessage> meta(); Loading @@ -63,6 +66,7 @@ private: const sp<AMessage> mMeta; const sp<AMessage> mMeta; sp<AMessage> mFormat; sp<AMessage> mFormat; const sp<ABuffer> mBuffer; const sp<ABuffer> mBuffer; MediaBufferBase *mMediaBufferBase; }; }; } // namespace android } // namespace android Loading
media/libmedia/nuplayer2/GenericSource.cpp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -24,7 +24,6 @@ #include <binder/IServiceManager.h> #include <binder/IServiceManager.h> #include <cutils/properties.h> #include <cutils/properties.h> #include <media/DataSource.h> #include <media/DataSource.h> #include <media/MediaBufferHolder.h> #include <media/IMediaExtractorService.h> #include <media/IMediaExtractorService.h> #include <media/MediaHTTPService.h> #include <media/MediaHTTPService.h> #include <media/MediaExtractor.h> #include <media/MediaExtractor.h> Loading Loading @@ -1168,7 +1167,8 @@ sp<ABuffer> NuPlayer2::GenericSource::mediaBufferToABuffer( // data is already provided in the buffer // data is already provided in the buffer ab = new ABuffer(NULL, mb->range_length()); ab = new ABuffer(NULL, mb->range_length()); ab->meta()->setObject("mediaBufferHolder", new MediaBufferHolder(mb)); mb->add_ref(); ab->setMediaBufferBase(mb); // Modular DRM: Required b/c of the above add_ref. // Modular DRM: Required b/c of the above add_ref. // If ref>0, there must be an observer, or it'll crash at release(). // If ref>0, there must be an observer, or it'll crash at release(). Loading
media/libmedia/nuplayer2/NuPlayer2Decoder.cpp +4 −6 Original line number Original line Diff line number Diff line Loading @@ -28,7 +28,6 @@ #include "NuPlayer2Source.h" #include "NuPlayer2Source.h" #include <cutils/properties.h> #include <cutils/properties.h> #include <media/MediaBufferHolder.h> #include <media/MediaCodecBuffer.h> #include <media/MediaCodecBuffer.h> #include <media/NdkMediaCodec.h> #include <media/NdkMediaCodec.h> #include <media/NdkWrapper.h> #include <media/NdkWrapper.h> Loading Loading @@ -1082,17 +1081,16 @@ bool NuPlayer2::Decoder::onInputBufferFetched(const sp<AMessage> &msg) { memcpy(codecBuffer->data(), buffer->data(), buffer->size()); memcpy(codecBuffer->data(), buffer->data(), buffer->size()); } else { // No buffer->data() } else { // No buffer->data() //Modular DRM //Modular DRM sp<RefBase> holder; mediaBuf = (MediaBuffer*)buffer->getMediaBufferBase(); if (buffer->meta()->findObject("mediaBufferHolder", &holder)) { mediaBuf = (holder != nullptr) ? static_cast<MediaBufferHolder*>(holder.get())->mediaBuffer() : nullptr; } if (mediaBuf != NULL) { if (mediaBuf != NULL) { codecBuffer->setRange(0, mediaBuf->size()); codecBuffer->setRange(0, mediaBuf->size()); memcpy(codecBuffer->data(), mediaBuf->data(), mediaBuf->size()); memcpy(codecBuffer->data(), mediaBuf->data(), mediaBuf->size()); sp<MetaData> meta_data = mediaBuf->meta_data(); sp<MetaData> meta_data = mediaBuf->meta_data(); cryptInfo = AMediaCodecCryptoInfoWrapper::Create(meta_data); cryptInfo = AMediaCodecCryptoInfoWrapper::Create(meta_data); // since getMediaBuffer() has incremented the refCount mediaBuf->release(); } else { // No mediaBuf } else { // No mediaBuf ALOGE("onInputBufferFetched: buffer->data()/mediaBuf are NULL for %p", ALOGE("onInputBufferFetched: buffer->data()/mediaBuf are NULL for %p", buffer.get()); buffer.get()); Loading
media/libmediaextractor/Android.bp +0 −3 Original line number Original line Diff line number Diff line Loading @@ -15,7 +15,6 @@ cc_library { ], ], shared_libs: [ shared_libs: [ "libbinder", "libstagefright_foundation", "libstagefright_foundation", "libutils", "libutils", "libcutils", "libcutils", Loading @@ -24,8 +23,6 @@ cc_library { srcs: [ srcs: [ "DataSource.cpp", "DataSource.cpp", "MediaBuffer.cpp", "MediaBufferGroup.cpp", "MediaSource.cpp", "MediaSource.cpp", "MediaExtractor.cpp", "MediaExtractor.cpp", ], ], Loading