Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e075b43 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert "Move MediaBufferXXX from foundation to libmediaextractor""

parents 5f07c65a 4b780702
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -21,13 +21,15 @@
#include <media/MediaCodecBuffer.h>
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/foundation/MediaBufferBase.h>

namespace android {

MediaCodecBuffer::MediaCodecBuffer(const sp<AMessage> &format, const sp<ABuffer> &buffer)
    : mMeta(new AMessage),
      mFormat(format),
      mBuffer(buffer) {
      mBuffer(buffer),
      mMediaBufferBase(nullptr) {
}

// ABuffer-like interface
@@ -56,6 +58,20 @@ status_t MediaCodecBuffer::setRange(size_t offset, size_t size) {
    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() {
    return mMeta;
}
+4 −0
Original line number Diff line number Diff line
@@ -50,6 +50,9 @@ public:
    size_t offset() const;
    // Default implementation calls ABuffer::setRange() and returns OK.
    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.
    sp<AMessage> meta();
@@ -63,6 +66,7 @@ private:
    const sp<AMessage> mMeta;
    sp<AMessage> mFormat;
    const sp<ABuffer> mBuffer;
    MediaBufferBase *mMediaBufferBase;
};

}  // namespace android
+2 −2
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@
#include <binder/IServiceManager.h>
#include <cutils/properties.h>
#include <media/DataSource.h>
#include <media/MediaBufferHolder.h>
#include <media/IMediaExtractorService.h>
#include <media/MediaHTTPService.h>
#include <media/MediaExtractor.h>
@@ -1168,7 +1167,8 @@ sp<ABuffer> NuPlayer2::GenericSource::mediaBufferToABuffer(

        // data is already provided in the buffer
        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.
        // If ref>0, there must be an observer, or it'll crash at release().
+4 −6
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@
#include "NuPlayer2Source.h"

#include <cutils/properties.h>
#include <media/MediaBufferHolder.h>
#include <media/MediaCodecBuffer.h>
#include <media/NdkMediaCodec.h>
#include <media/NdkWrapper.h>
@@ -1082,17 +1081,16 @@ bool NuPlayer2::Decoder::onInputBufferFetched(const sp<AMessage> &msg) {
                memcpy(codecBuffer->data(), buffer->data(), buffer->size());
            } else { // No buffer->data()
                //Modular DRM
                sp<RefBase> holder;
                if (buffer->meta()->findObject("mediaBufferHolder", &holder)) {
                    mediaBuf = (holder != nullptr) ?
                        static_cast<MediaBufferHolder*>(holder.get())->mediaBuffer() : nullptr;
                }
                mediaBuf = (MediaBuffer*)buffer->getMediaBufferBase();
                if (mediaBuf != NULL) {
                    codecBuffer->setRange(0, mediaBuf->size());
                    memcpy(codecBuffer->data(), mediaBuf->data(), mediaBuf->size());

                    sp<MetaData> meta_data = mediaBuf->meta_data();
                    cryptInfo = AMediaCodecCryptoInfoWrapper::Create(meta_data);

                    // since getMediaBuffer() has incremented the refCount
                    mediaBuf->release();
                } else { // No mediaBuf
                    ALOGE("onInputBufferFetched: buffer->data()/mediaBuf are NULL for %p",
                            buffer.get());
+0 −3
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@ cc_library {
    ],

    shared_libs: [
        "libbinder",
        "libstagefright_foundation",
        "libutils",
        "libcutils",
@@ -24,8 +23,6 @@ cc_library {

    srcs: [
        "DataSource.cpp",
        "MediaBuffer.cpp",
        "MediaBufferGroup.cpp",
        "MediaSource.cpp",
        "MediaExtractor.cpp",
    ],
Loading