diff --git a/DEPS b/DEPS
index cbac7f09fed8d..da1e9eb8aa9ee 100644
--- a/DEPS
+++ b/DEPS
@@ -2075,7 +2075,7 @@ deps = {
     Var('chromium_git') + '/external/libaddressinput.git' + '@' + 'e8712e415627f22d0b00ebee8db99547077f39bd',
 
   'src/third_party/libaom/source/libaom':
-    Var('aomedia_git') + '/aom.git' + '@' +  'abb4bd836ea02f600208d863df04ca611c8065b7',
+    Var('aomedia_git') + '/aom.git' + '@' +  '455decf1c3a2030c1c4ff42a23513b4e6c56c91e',
 
   'src/third_party/libavif/src':
     Var('chromium_git') + '/external/github.com/AOMediaCodec/libavif.git' + '@' + Var('libavif_revision'),
diff --git a/media/gpu/vaapi/av1_vaapi_video_encoder_delegate.cc b/media/gpu/vaapi/av1_vaapi_video_encoder_delegate.cc
index f20144e87b299..00003492983ce 100644
--- a/media/gpu/vaapi/av1_vaapi_video_encoder_delegate.cc
+++ b/media/gpu/vaapi/av1_vaapi_video_encoder_delegate.cc
@@ -456,7 +456,7 @@ bool AV1VaapiVideoEncoderDelegate::UpdateRates(
   current_params_.bitrate_allocation = bitrate_allocation;
   current_params_.framerate = framerate;
 
-  AV1RateControlRtcConfig rc_config;
+  aom::AV1RateControlRtcConfig rc_config;
   rc_config.width = coded_size_.width();
   rc_config.height = coded_size_.height();
   // third_party/webrtc/modules/video_coding/codecs/av1/libaom_av1_encoder.cc
@@ -599,12 +599,13 @@ AV1VaapiVideoEncoderDelegate::PrepareEncodeJob(EncodeJob& encode_job) {
     }
   }
 
-  AV1FrameParamsRTC frame_params{
-      .frame_type = encode_job.IsKeyframeRequested() ? kKeyFrame : kInterFrame,
+  aom::AV1FrameParamsRTC frame_params{
+      .frame_type =
+          encode_job.IsKeyframeRequested() ? aom::kKeyFrame : aom::kInterFrame,
       .spatial_layer_id = 0,
       .temporal_layer_id = temporal_idx.value_or(0),
   };
-  if (rate_ctrl_->ComputeQP(frame_params) == FrameDropDecision::kDrop) {
+  if (rate_ctrl_->ComputeQP(frame_params) == aom::kFrameDropDecisionDrop) {
     CHECK(!encode_job.IsKeyframeRequested());
     DVLOGF(3) << "Drop frame";
     return PrepareEncodeJobResult::kDrop;
@@ -912,13 +913,13 @@ bool AV1VaapiVideoEncoderDelegate::FillPictureParam(
 
   pic_param.base_qindex = rate_ctrl_->GetQP();
 
-  AV1LoopfilterLevel loop_filter_level = rate_ctrl_->GetLoopfilterLevel();
+  aom::AV1LoopfilterLevel loop_filter_level = rate_ctrl_->GetLoopfilterLevel();
   pic_param.filter_level[0] = loop_filter_level.filter_level[0];
   pic_param.filter_level[1] = loop_filter_level.filter_level[1];
   pic_param.filter_level_u = loop_filter_level.filter_level_u;
   pic_param.filter_level_v = loop_filter_level.filter_level_v;
 
-  AV1SegmentationData seg_data;
+  aom::AV1SegmentationData seg_data;
   constexpr uint32_t kSegmentGranularity = 4;
   rate_ctrl_->GetSegmentationData(&seg_data);
   CHECK_EQ(seg_data.segmentation_map_size,
diff --git a/media/gpu/windows/av1_video_rate_control_wrapper.cc b/media/gpu/windows/av1_video_rate_control_wrapper.cc
index 574f16335e0f2..73fd7590ade6c 100644
--- a/media/gpu/windows/av1_video_rate_control_wrapper.cc
+++ b/media/gpu/windows/av1_video_rate_control_wrapper.cc
@@ -26,9 +26,9 @@ void AV1RateControl::PostEncodeUpdate(uint64_t encoded_frame_size,
 }
 
 template <>
-AV1RateControlRtcConfig AV1RateControl::ConvertControlConfig(
+aom::AV1RateControlRtcConfig AV1RateControl::ConvertControlConfig(
     const RateControlConfig& config) {
-  AV1RateControlRtcConfig rc_config;
+  aom::AV1RateControlRtcConfig rc_config;
   rc_config.width = config.width;
   rc_config.height = config.height;
   rc_config.target_bandwidth = config.target_bandwidth;
@@ -64,15 +64,15 @@ AV1RateControlRtcConfig AV1RateControl::ConvertControlConfig(
 }
 
 template <>
-AV1FrameParamsRTC AV1RateControl::ConvertFrameParams(
+aom::AV1FrameParamsRTC AV1RateControl::ConvertFrameParams(
     const FrameParams& frame_params) {
-  AV1FrameParamsRTC rc_params;
+  aom::AV1FrameParamsRTC rc_params;
   rc_params.spatial_layer_id = frame_params.spatial_layer_id;
   rc_params.temporal_layer_id = frame_params.temporal_layer_id;
   rc_params.frame_type =
       frame_params.frame_type == FrameParams::FrameType::kKeyFrame
-          ? kKeyFrame
-          : kInterFrame;
+          ? aom::kKeyFrame
+          : aom::kInterFrame;
   return rc_params;
 }
 
diff --git a/media/gpu/windows/av1_video_rate_control_wrapper.h b/media/gpu/windows/av1_video_rate_control_wrapper.h
index 6b7c5cdc6f6e3..e0422ed309d26 100644
--- a/media/gpu/windows/av1_video_rate_control_wrapper.h
+++ b/media/gpu/windows/av1_video_rate_control_wrapper.h
@@ -5,19 +5,15 @@
 #ifndef MEDIA_GPU_WINDOWS_AV1_VIDEO_RATE_CONTROL_WRAPPER_H_
 #define MEDIA_GPU_WINDOWS_AV1_VIDEO_RATE_CONTROL_WRAPPER_H_
 
+#include "third_party/libaom/source/libaom/av1/ratectrl_rtc.h"
 #include "video_rate_control_wrapper.h"
 
-struct AV1RateControlRtcConfig;
-struct AV1FrameParamsRTC;
-namespace aom {
-class AV1RateControlRTC;
-}
-
 namespace media {
 
-using AV1RateControl = VideoRateControlWrapperInternal<AV1RateControlRtcConfig,
-                                                       aom::AV1RateControlRTC,
-                                                       AV1FrameParamsRTC>;
+using AV1RateControl =
+    VideoRateControlWrapperInternal<aom::AV1RateControlRtcConfig,
+                                    aom::AV1RateControlRTC,
+                                    aom::AV1FrameParamsRTC>;
 template <>
 int AV1RateControl::GetLoopfilterLevel() const;
 
@@ -26,11 +22,11 @@ void AV1RateControl::PostEncodeUpdate(uint64_t encoded_frame_size,
                                       const FrameParams& frame_params);
 
 template <>
-AV1RateControlRtcConfig AV1RateControl::ConvertControlConfig(
+aom::AV1RateControlRtcConfig AV1RateControl::ConvertControlConfig(
     const RateControlConfig& config);
 
 template <>
-AV1FrameParamsRTC AV1RateControl::ConvertFrameParams(
+aom::AV1FrameParamsRTC AV1RateControl::ConvertFrameParams(
     const FrameParams& frame_params);
 
 }  // namespace media
diff --git a/third_party/libaom/README.chromium b/third_party/libaom/README.chromium
index ca5e989158f22..819620612b8ec 100644
--- a/third_party/libaom/README.chromium
+++ b/third_party/libaom/README.chromium
@@ -2,7 +2,7 @@ Name: Alliance for Open Media Video Codec
 Short Name: libaom
 URL: https://aomedia.googlesource.com/aom/
 Version: N/A
-Revision: abb4bd836ea02f600208d863df04ca611c8065b7
+Revision: 455decf1c3a2030c1c4ff42a23513b4e6c56c91e
 CPEPrefix: cpe:/a:aomedia:aomedia:3.11.0
 License: BSD-2-Clause, Patent
 License File: source/libaom/LICENSE, source/libaom/PATENTS
diff --git a/third_party/libaom/source/config/config/aom_version.h b/third_party/libaom/source/config/config/aom_version.h
index d77c353ccca82..725abd473472b 100644
--- a/third_party/libaom/source/config/config/aom_version.h
+++ b/third_party/libaom/source/config/config/aom_version.h
@@ -14,9 +14,9 @@
 #define VERSION_MAJOR 3
 #define VERSION_MINOR 11
 #define VERSION_PATCH 0
-#define VERSION_EXTRA "139-gabb4bd836e"
+#define VERSION_EXTRA "154-g455decf1c3"
 #define VERSION_PACKED \
   ((VERSION_MAJOR << 16) | (VERSION_MINOR << 8) | (VERSION_PATCH))
-#define VERSION_STRING_NOSP "3.11.0-139-gabb4bd836e"
-#define VERSION_STRING " 3.11.0-139-gabb4bd836e"
+#define VERSION_STRING_NOSP "3.11.0-154-g455decf1c3"
+#define VERSION_STRING " 3.11.0-154-g455decf1c3"
 #endif  // AOM_VERSION_H_
diff --git a/third_party/libaom/source/libaom b/third_party/libaom/source/libaom
index abb4bd836ea02..455decf1c3a20 160000
--- a/third_party/libaom/source/libaom
+++ b/third_party/libaom/source/libaom
@@ -1 +1 @@
-Subproject commit abb4bd836ea02f600208d863df04ca611c8065b7
+Subproject commit 455decf1c3a2030c1c4ff42a23513b4e6c56c91e