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

Commit 7f76a81b authored by Lajos Molnar's avatar Lajos Molnar Committed by Android (Google) Code Review
Browse files

Merge "Check adaptive playback support via CodecCapabilities" into klp-dev

parents cd06d357 2ee14000
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -50,7 +50,8 @@ struct MediaCodecList {
    status_t getCodecCapabilities(
            size_t index, const char *type,
            Vector<ProfileLevel> *profileLevels,
            Vector<uint32_t> *colorFormats) const;
            Vector<uint32_t> *colorFormats,
            uint32_t *flags) const;

private:
    enum Section {
+5 −0
Original line number Diff line number Diff line
@@ -361,9 +361,14 @@ private:
};

struct CodecCapabilities {
    enum {
        kFlagSupportsAdaptivePlayback = 1 << 0,
    };

    String8 mComponentName;
    Vector<CodecProfileLevel> mProfileLevels;
    Vector<OMX_U32> mColorFormats;
    uint32_t mFlags;
};

// Return a vector of componentNames with supported profile/level pairs
+4 −1
Original line number Diff line number Diff line
@@ -509,7 +509,8 @@ status_t MediaCodecList::getSupportedTypes(
status_t MediaCodecList::getCodecCapabilities(
        size_t index, const char *type,
        Vector<ProfileLevel> *profileLevels,
        Vector<uint32_t> *colorFormats) const {
        Vector<uint32_t> *colorFormats,
        uint32_t *flags) const {
    profileLevels->clear();
    colorFormats->clear();

@@ -547,6 +548,8 @@ status_t MediaCodecList::getCodecCapabilities(
        colorFormats->push(caps.mColorFormats.itemAt(i));
    }

    *flags = caps.mFlags;

    return OK;
}

+8 −1
Original line number Diff line number Diff line
@@ -4567,7 +4567,7 @@ status_t QueryCodec(
        CodecCapabilities *caps) {
    if (strncmp(componentName, "OMX.", 4)) {
        // Not an OpenMax component but a software codec.

        caps->mFlags = 0;
        caps->mComponentName = componentName;
        return OK;
    }
@@ -4582,8 +4582,15 @@ status_t QueryCodec(

    OMXCodec::setComponentRole(omx, node, isEncoder, mime);

    caps->mFlags = 0;
    caps->mComponentName = componentName;

    if (!isEncoder && !strncmp(mime, "video/", 6) &&
            omx->storeMetaDataInBuffers(
                    node, 1 /* port index */, OMX_TRUE) == OK) {
        caps->mFlags |= CodecCapabilities::kFlagSupportsAdaptivePlayback;
    }

    OMX_VIDEO_PARAM_PROFILELEVELTYPE param;
    InitOMXParams(&param);