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

Commit 211f5af3 authored by Jean-Michel Trivi's avatar Jean-Michel Trivi Committed by Android (Google) Code Review
Browse files

Merge "Add option to query hardware decoders only"

parents 55421aa8 56a37b05
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -805,6 +805,7 @@ int main(int argc, char **argv) {
            Vector<CodecCapabilities> results;
            CHECK_EQ(QueryCodecs(omx, kMimeTypes[k],
                                 true, // queryDecoders
                                 false, // hwCodecOnly
                                 &results), (status_t)OK);

            for (size_t i = 0; i < results.size(); ++i) {
@@ -844,7 +845,12 @@ int main(int argc, char **argv) {

        for (List<IOMX::ComponentInfo>::iterator it = list.begin();
             it != list.end(); ++it) {
            printf("%s\n", (*it).mName.string());
            printf("%s\t Roles: ", (*it).mName.string());
            for (List<String8>::iterator itRoles = (*it).mRoles.begin() ;
                    itRoles != (*it).mRoles.end() ; ++itRoles) {
                printf("%s\t", (*itRoles).string());
            }
            printf("\n");
        }
    }

+1 −1
Original line number Diff line number Diff line
@@ -355,7 +355,7 @@ struct CodecCapabilities {

status_t QueryCodecs(
        const sp<IOMX> &omx,
        const char *mimeType, bool queryDecoders,
        const char *mimeType, bool queryDecoders, bool hwCodecOnly,
        Vector<CodecCapabilities> *results);

}  // namespace android
+11 −16
Original line number Diff line number Diff line
@@ -4330,26 +4330,19 @@ status_t OMXCodec::pause() {

status_t QueryCodecs(
        const sp<IOMX> &omx,
        const char *mime, bool queryDecoders,
        const char *mime, bool queryDecoders, bool hwCodecOnly,
        Vector<CodecCapabilities> *results) {
    Vector<String8> matchingCodecs;
    results->clear();

    for (int index = 0;; ++index) {
        const char *componentName;
    OMXCodec::findMatchingCodecs(mime,
            !queryDecoders /*createEncoder*/,
            NULL /*matchComponentName*/,
            hwCodecOnly ? OMXCodec::kHardwareCodecsOnly : 0 /*flags*/,
            &matchingCodecs);

        if (!queryDecoders) {
            componentName = GetCodec(
                    kEncoderInfo, sizeof(kEncoderInfo) / sizeof(kEncoderInfo[0]),
                    mime, index);
        } else {
            componentName = GetCodec(
                    kDecoderInfo, sizeof(kDecoderInfo) / sizeof(kDecoderInfo[0]),
                    mime, index);
        }

        if (!componentName) {
            return OK;
        }
    for (size_t c = 0; c < matchingCodecs.size(); c++) {
        const char *componentName = matchingCodecs.itemAt(c).string();

        if (strncmp(componentName, "OMX.", 4)) {
            // Not an OpenMax component but a software codec.
@@ -4411,6 +4404,8 @@ status_t QueryCodecs(

        CHECK_EQ(omx->freeNode(node), (status_t)OK);
    }

    return OK;
}

void OMXCodec::restorePatchedDataPointer(BufferInfo *info) {