diff --git a/media/sfplugin/Codec2InfoBuilder.cpp b/media/sfplugin/Codec2InfoBuilder.cpp
index 9d4c109..93f5b91 100644
--- a/media/sfplugin/Codec2InfoBuilder.cpp
+++ b/media/sfplugin/Codec2InfoBuilder.cpp
@@ -56,8 +56,6 @@
 
 namespace /* unnamed */ {
 
-uint32_t kOmxRankOverride = 1;
-
 bool hasPrefix(const std::string& s, const char* prefix) {
     size_t prefixLen = strlen(prefix);
     return s.compare(0, prefixLen, prefix) == 0;
@@ -259,6 +257,8 @@
 
 void buildOmxInfo(const MediaCodecsXmlParser& parser,
                   MediaCodecListWriter* writer) {
+    uint32_t omxRank = ::android::base::GetUintProperty(
+            "debug.stagefright.omx_default_rank", uint32_t(0x100));
     for (const MediaCodecsXmlParser::Codec& codec : parser.getCodecMap()) {
         const std::string &name = codec.first;
         if (!hasPrefix(codec.first, "OMX.")) {
@@ -271,7 +271,7 @@
         info->setName(name.c_str());
         info->setOwner("default");
         info->setEncoder(encoder);
-        info->setRank(kOmxRankOverride);
+        info->setRank(omxRank);
         for (const MediaCodecsXmlParser::Type& type : properties.typeMap) {
             const std::string &mime = type.first;
             std::unique_ptr<MediaCodecInfo::CapabilitiesWriter> caps =
@@ -312,8 +312,8 @@
     //   0 - Only OMX components are available.
     //   1 - Audio decoders and encoders with prefix "c2.android." are available
     //       and ranked first.
-    //       All other components with prefix "c2.android." are available but
-    //       ranked last.
+    //       All other components with prefix "c2.android." are available with
+    //       their normal ranks.
     //       Components with prefix "c2.vda." are available with their normal
     //       ranks.
     //       All other components with suffix ".avc.decoder" or ".avc.encoder"
@@ -375,7 +375,6 @@
                     rank = 1;
                     break;
                 }
-                rank = std::numeric_limits<decltype(rank)>::max();
                 break;
             }
             if (hasSuffix(trait.name, ".avc.decoder") ||
