diff --git a/aom/aom_encoder.h b/aom/aom_encoder.h
index 1f79c95..3b956bc 100644
--- a/aom/aom_encoder.h
+++ b/aom/aom_encoder.h
@@ -78,8 +78,8 @@
  */
 #define AOM_CODEC_USE_PSNR 0x10000         /**< Calculate PSNR on each frame */
 #define AOM_CODEC_USE_HIGHBITDEPTH 0x40000 /**< Use high bitdepth */
-// WARNING: Experimental feature. Not part of the stable API.
-#define AOM_CODEC_USE_PRESET 0x80000 /**< Use preset based on g_usage */
+// 0x80000 was used for the experimental feature AOM_CODEC_USE_PRESET during
+// libaom v3.11.0 development but was removed before the release.
 
 /*!\brief Generic fixed size buffer structure
  *
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index e88ad50..2de2cb4 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -2824,19 +2824,6 @@
   return update_extra_cfg(ctx, &extra_cfg);
 }
 
-// Returns the index of the default_extra_cfg array element for the specified
-// usage. Returns index 0 if not found. This means default_extra_cfg[0] is used
-// for any usage that doesn't have a dedicated element in the default_extra_cfg
-// array.
-static int find_default_extra_cfg_for_usage(unsigned int usage) {
-  for (int i = 0; i < NELEMENTS(default_extra_cfg); ++i) {
-    if (default_extra_cfg[i].usage == usage) {
-      return i;
-    }
-  }
-  return 0;
-}
-
 static aom_codec_err_t encoder_init(aom_codec_ctx_t *ctx) {
   aom_codec_err_t res = AOM_CODEC_OK;
 
@@ -2852,11 +2839,7 @@
     priv->cfg = *ctx->config.enc;
     ctx->config.enc = &priv->cfg;
 
-    int extra_cfg_idx = 0;
-    if (ctx->init_flags & AOM_CODEC_USE_PRESET) {
-      extra_cfg_idx = find_default_extra_cfg_for_usage(priv->cfg.g_usage);
-    }
-    priv->extra_cfg = default_extra_cfg[extra_cfg_idx];
+    priv->extra_cfg = default_extra_cfg[0];
     // Special handling:
     // By default, if omitted, --enable-cdef = 1.
     // Here we set its default value to 0 when --allintra is turned on.
diff --git a/test/encode_api_test.cc b/test/encode_api_test.cc
index 47ddcc1..4a71458 100644
--- a/test/encode_api_test.cc
+++ b/test/encode_api_test.cc
@@ -109,17 +109,6 @@
   EXPECT_EQ(AOM_CODEC_OK, aom_codec_destroy(&enc));
 }
 
-TEST(EncodeAPI, InitializeWithPreset) {
-  aom_codec_iface_t *iface = aom_codec_av1_cx();
-  aom_codec_ctx_t enc;
-  aom_codec_enc_cfg_t cfg;
-  EXPECT_EQ(AOM_CODEC_OK,
-            aom_codec_enc_config_default(iface, &cfg, AOM_USAGE_REALTIME));
-  EXPECT_EQ(AOM_CODEC_OK,
-            aom_codec_enc_init(&enc, iface, &cfg, AOM_CODEC_USE_PRESET));
-  EXPECT_EQ(AOM_CODEC_OK, aom_codec_destroy(&enc));
-}
-
 void EncodeSetSFrameOnFirstFrame(aom_img_fmt fmt, aom_codec_flags_t flag) {
   constexpr int kWidth = 2;
   constexpr int kHeight = 128;
