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

Commit f56a02a5 authored by Marco Nelissen's avatar Marco Nelissen Committed by Android (Google) Code Review
Browse files

Merge "Fix StagefrightMetadataRetriever calling MediaSource::start twice" into nyc-dev

parents 9515aca0 e7d8e71e
Loading
Loading
Loading
Loading
+1 −16
Original line number Diff line number Diff line
@@ -18,8 +18,6 @@
#define LOG_TAG "BpMediaSource"
#include <utils/Log.h>

#include <utils/CallStack.h>

#include <inttypes.h>
#include <stdint.h>
#include <sys/types.h>
@@ -111,16 +109,9 @@ public:
    BpMediaSource(const sp<IBinder>& impl)
        : BpInterface<IMediaSource>(impl)
    {
        mStarted = false;
    }

    virtual status_t start(MetaData *params) {
        if (mStarted) {
            ALOGD("Source was started previously from:");
            mStartStack.log(LOG_TAG);
            ALOGD("Now from:");
            CallStack stack(LOG_TAG);
        }
        ALOGV("start");
        Parcel data, reply;
        data.writeInterfaceToken(BpMediaSource::getInterfaceDescriptor());
@@ -128,10 +119,6 @@ public:
            params->writeToParcel(data);
        }
        status_t ret = remote()->transact(START, data, &reply);
        if (ret == NO_ERROR) {
            mStarted = true;
            mStartStack.update();
        }
        if (ret == NO_ERROR && params) {
            ALOGW("ignoring potentially modified MetaData from start");
            ALOGW("input:");
@@ -144,7 +131,6 @@ public:
    }

    virtual status_t stop() {
        mStarted = false;
        ALOGV("stop");
        Parcel data, reply;
        data.writeInterfaceToken(BpMediaSource::getInterfaceDescriptor());
@@ -219,8 +205,7 @@ private:
    // NuPlayer passes pointers-to-metadata around, so we use this to keep the metadata alive
    // XXX: could we use this for caching, or does metadata change on the fly?
    sp<MetaData> mMetaData;
    bool mStarted;
    CallStack mStartStack;

};

IMPLEMENT_META_INTERFACE(MediaSource, "android.media.IMediaSource");
+2 −2
Original line number Diff line number Diff line
@@ -215,6 +215,7 @@ static VideoFrame *extractVideoFrame(
    if (err != OK) {
        ALOGW("failed to get input buffers: %d (%s)", err, asString(err));
        decoder->release();
        source->stop();
        return NULL;
    }

@@ -223,6 +224,7 @@ static VideoFrame *extractVideoFrame(
    if (err != OK) {
        ALOGW("failed to get output buffers: %d (%s)", err, asString(err));
        decoder->release();
        source->stop();
        return NULL;
    }

@@ -328,7 +330,6 @@ static VideoFrame *extractVideoFrame(
    if (err != OK || size <= 0 || outputFormat == NULL) {
        ALOGE("Failed to decode thumbnail frame");
        source->stop();
        decoder->stop();
        decoder->release();
        return NULL;
    }
@@ -401,7 +402,6 @@ static VideoFrame *extractVideoFrame(
    videoFrameBuffer.clear();
    source->stop();
    decoder->releaseOutputBuffer(index);
    decoder->stop();
    decoder->release();

    if (err != OK) {