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

Commit ef2bdbc3 authored by Lajos Molnar's avatar Lajos Molnar
Browse files

stagefright: CodecCapabilities: fix missing capabilities

mCurrentCaps is a reference, so copy codec capabilities into it
vs. replacing it.

Bug: 27142863
Change-Id: I914bcc882d5f9049bc9eb8b31913b07ae572b441
parent 66092fdb
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -122,8 +122,8 @@ private:
    void addQuirk(const char *name);
    status_t addMime(const char *mime);
    status_t updateMime(const char *mime);
    // after this call Capabilities will be owned by MediaCodecInfo
    status_t setCapabilities(const sp<Capabilities> &caps);

    status_t initializeCapabilities(const sp<Capabilities> &caps);
    void addDetail(const AString &key, const AString &value);
    void addFeature(const AString &key, int32_t value);
    void addFeature(const AString &key, const char *value);
+9 −2
Original line number Diff line number Diff line
@@ -238,8 +238,15 @@ void MediaCodecInfo::removeMime(const char *mime) {
    }
}

status_t MediaCodecInfo::setCapabilities(const sp<Capabilities> &caps) {
    mCurrentCaps = caps;
status_t MediaCodecInfo::initializeCapabilities(const sp<Capabilities> &caps) {
    // TRICKY: copy data to mCurrentCaps as it is a reference to
    // an element of the capabilites map.
    mCurrentCaps->mColorFormats.clear();
    mCurrentCaps->mColorFormats.appendVector(caps->mColorFormats);
    mCurrentCaps->mProfileLevels.clear();
    mCurrentCaps->mProfileLevels.appendVector(caps->mProfileLevels);
    mCurrentCaps->mFlags = caps->mFlags;
    mCurrentCaps->mDetails = caps->mDetails;
    return OK;
}

+1 −1
Original line number Diff line number Diff line
@@ -767,7 +767,7 @@ status_t MediaCodecList::initializeCapabilities(const char *type) {
        return UNKNOWN_ERROR;
    }

    return mCurrentInfo->setCapabilities(caps);
    return mCurrentInfo->initializeCapabilities(caps);
}

status_t MediaCodecList::addQuirk(const char **attrs) {