[go: nahoru, domu]

Rename EncryptionMode to EncryptionScheme

The old EncryptionScheme is deprecated and replaced by EncryptionMode.
So rename EncryptionMode to EncryptionScheme.

Now Audio/VideoDecoderConfig only carries EncryptionScheme.
EncryptionPattern is passed to Renderer in DecryptConfig/DecoderBuffer.

Bug: 825041
Test: CQ, build, media_unittests
Change-Id: Iecf8720a20141939460f150d2b6abf092e621117
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1885501
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
Reviewed-by: Sergey Ulanov <sergeyu@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: John Rummell <jrummell@chromium.org>
Commit-Queue: Yuchen Liu <yucliu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#713930}
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 8dc95a1..b31c1b5 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -3987,7 +3987,7 @@
     const std::string& key_system,
     const base::flat_set<media::CdmProxy::Protocol>& cdm_proxy_protocols,
     base::flat_set<media::VideoCodec>* video_codecs,
-    base::flat_set<media::EncryptionMode>* encryption_schemes) {
+    base::flat_set<media::EncryptionScheme>* encryption_schemes) {
 #if defined(OS_WIN) && BUILDFLAG(ENABLE_LIBRARY_CDMS) && \
     BUILDFLAG(ENABLE_WIDEVINE)
   if (key_system == kWidevineKeySystem) {
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h
index f0e1c292..64826f0 100644
--- a/chrome/browser/chrome_content_browser_client.h
+++ b/chrome/browser/chrome_content_browser_client.h
@@ -445,7 +445,7 @@
       const std::string& key_system,
       const base::flat_set<media::CdmProxy::Protocol>& cdm_proxy_protocols,
       base::flat_set<media::VideoCodec>* video_codecs,
-      base::flat_set<media::EncryptionMode>* encryption_schemes) override;
+      base::flat_set<media::EncryptionScheme>* encryption_schemes) override;
   ::rappor::RapporService* GetRapporService() override;
 #if BUILDFLAG(ENABLE_MEDIA_REMOTING)
   void CreateMediaRemoter(
diff --git a/chrome/browser/media/widevine_hardware_caps_win.cc b/chrome/browser/media/widevine_hardware_caps_win.cc
index eadfcc1..357cb82 100644
--- a/chrome/browser/media/widevine_hardware_caps_win.cc
+++ b/chrome/browser/media/widevine_hardware_caps_win.cc
@@ -110,7 +110,7 @@
 void GetWidevineHardwareCaps(
     const base::flat_set<media::CdmProxy::Protocol>& cdm_proxy_protocols,
     base::flat_set<media::VideoCodec>* video_codecs,
-    base::flat_set<media::EncryptionMode>* encryption_schemes) {
+    base::flat_set<media::EncryptionScheme>* encryption_schemes) {
   DCHECK(!cdm_proxy_protocols.empty());
   DCHECK(video_codecs->empty());
   DCHECK(encryption_schemes->empty());
@@ -155,5 +155,5 @@
   }
 
   if (!video_codecs->empty())
-    encryption_schemes->insert(media::EncryptionMode::kCenc);
+    encryption_schemes->insert(media::EncryptionScheme::kCenc);
 }
diff --git a/chrome/browser/media/widevine_hardware_caps_win.h b/chrome/browser/media/widevine_hardware_caps_win.h
index 0bd4118..fe159a6 100644
--- a/chrome/browser/media/widevine_hardware_caps_win.h
+++ b/chrome/browser/media/widevine_hardware_caps_win.h
@@ -10,7 +10,7 @@
 #include "media/cdm/cdm_proxy.h"
 
 namespace media {
-enum class EncryptionMode;
+enum class EncryptionScheme;
 }
 
 // Get supported Widevine hardware capabilities, including supported
@@ -18,6 +18,6 @@
 void GetWidevineHardwareCaps(
     const base::flat_set<media::CdmProxy::Protocol>& cdm_proxy_protocols,
     base::flat_set<media::VideoCodec>* video_codecs,
-    base::flat_set<media::EncryptionMode>* encryption_schemes);
+    base::flat_set<media::EncryptionScheme>* encryption_schemes);
 
 #endif  // CHROME_BROWSER_MEDIA_WIDEVINE_HARDWARE_CAPS_WIN_H_
diff --git a/chrome/browser/media/widevine_hardware_caps_win_unittest.cc b/chrome/browser/media/widevine_hardware_caps_win_unittest.cc
index 7475e04..7468826 100644
--- a/chrome/browser/media/widevine_hardware_caps_win_unittest.cc
+++ b/chrome/browser/media/widevine_hardware_caps_win_unittest.cc
@@ -13,7 +13,7 @@
   base::flat_set<media::CdmProxy::Protocol> cdm_proxy_protocols = {
       media::CdmProxy::Protocol::kIntel};
   base::flat_set<media::VideoCodec> video_codecs;
-  base::flat_set<media::EncryptionMode> encryption_schemes;
+  base::flat_set<media::EncryptionScheme> encryption_schemes;
 
   // Not checking the results since it's hardware dependent.
   GetWidevineHardwareCaps(cdm_proxy_protocols, &video_codecs,
diff --git a/chrome/common/chrome_content_client.cc b/chrome/common/chrome_content_client.cc
index a5c5055..8978e11 100644
--- a/chrome/common/chrome_content_client.cc
+++ b/chrome/common/chrome_content_client.cc
@@ -417,8 +417,8 @@
 #endif  // BUILDFLAG(USE_PROPRIETARY_CODECS)
 
   // Both encryption schemes are supported on ChromeOS.
-  capability.encryption_schemes.insert(media::EncryptionMode::kCenc);
-  capability.encryption_schemes.insert(media::EncryptionMode::kCbcs);
+  capability.encryption_schemes.insert(media::EncryptionScheme::kCenc);
+  capability.encryption_schemes.insert(media::EncryptionScheme::kCbcs);
 
   // Both temporary and persistent sessions are supported on ChromeOS.
   capability.session_types.insert(media::CdmSessionType::kTemporary);
@@ -656,7 +656,7 @@
 
       // Supported codecs are hard-coded in ExternalClearKeyProperties.
       content::CdmCapability capability(
-          {}, {media::EncryptionMode::kCenc, media::EncryptionMode::kCbcs},
+          {}, {media::EncryptionScheme::kCenc, media::EncryptionScheme::kCbcs},
           {media::CdmSessionType::kTemporary,
            media::CdmSessionType::kPersistentLicense,
            media::CdmSessionType::kPersistentUsageRecord},
diff --git a/chrome/common/media/cdm_manifest.cc b/chrome/common/media/cdm_manifest.cc
index e7147156..a35b5e9 100644
--- a/chrome/common/media/cdm_manifest.cc
+++ b/chrome/common/media/cdm_manifest.cc
@@ -218,7 +218,7 @@
 // fail. Unrecognized values will be reported but otherwise ignored.
 bool GetEncryptionSchemes(
     const base::Value& manifest,
-    base::flat_set<media::EncryptionMode>* encryption_schemes) {
+    base::flat_set<media::EncryptionScheme>* encryption_schemes) {
   DCHECK(manifest.is_dict());
   DCHECK(encryption_schemes);
 
@@ -227,7 +227,7 @@
   if (!value) {
     // No manifest entry found, so assume only 'cenc' supported for backwards
     // compatibility.
-    encryption_schemes->insert(media::EncryptionMode::kCenc);
+    encryption_schemes->insert(media::EncryptionScheme::kCenc);
     return true;
   }
 
@@ -238,7 +238,7 @@
   }
 
   base::span<const base::Value> list = value->GetList();
-  base::flat_set<media::EncryptionMode> result;
+  base::flat_set<media::EncryptionScheme> result;
   for (const auto& item : list) {
     if (!item.is_string()) {
       DLOG(ERROR) << "Unrecognized item type in CDM manifest entry "
@@ -248,9 +248,9 @@
 
     const std::string& scheme = item.GetString();
     if (scheme == kCdmSupportedEncryptionSchemeCenc) {
-      result.insert(media::EncryptionMode::kCenc);
+      result.insert(media::EncryptionScheme::kCenc);
     } else if (scheme == kCdmSupportedEncryptionSchemeCbcs) {
-      result.insert(media::EncryptionMode::kCbcs);
+      result.insert(media::EncryptionScheme::kCbcs);
     } else {
       DLOG(WARNING) << "Unrecognized encryption scheme '" << scheme
                     << "' in CDM manifest entry "
diff --git a/chrome/common/media/cdm_manifest_unittest.cc b/chrome/common/media/cdm_manifest_unittest.cc
index b12ee87..df99ccdd 100644
--- a/chrome/common/media/cdm_manifest_unittest.cc
+++ b/chrome/common/media/cdm_manifest_unittest.cc
@@ -107,8 +107,8 @@
 }
 
 void CheckEncryptionSchemes(
-    const base::flat_set<media::EncryptionMode>& actual,
-    const std::vector<media::EncryptionMode>& expected) {
+    const base::flat_set<media::EncryptionScheme>& actual,
+    const std::vector<media::EncryptionScheme>& expected) {
   EXPECT_EQ(expected.size(), actual.size());
   for (const auto& encryption_scheme : expected) {
     EXPECT_TRUE(base::Contains(actual, encryption_scheme));
@@ -198,7 +198,7 @@
                media::VideoCodec::kCodecAV1});
   CheckEncryptionSchemes(
       capability.encryption_schemes,
-      {media::EncryptionMode::kCenc, media::EncryptionMode::kCbcs});
+      {media::EncryptionScheme::kCenc, media::EncryptionScheme::kCbcs});
   CheckSessionTypes(capability.session_types,
                     {media::CdmSessionType::kTemporary,
                      media::CdmSessionType::kPersistentLicense});
@@ -212,7 +212,7 @@
   EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
   CheckCodecs(capability.video_codecs, {});
   CheckEncryptionSchemes(capability.encryption_schemes,
-                         {media::EncryptionMode::kCenc});
+                         {media::EncryptionScheme::kCenc});
   CheckSessionTypes(capability.session_types,
                     {media::CdmSessionType::kTemporary});
   CheckProxyProtocols(capability.cdm_proxy_protocols, {});
@@ -298,14 +298,14 @@
     manifest.SetKey(kCdmSupportedEncryptionSchemesName, MakeListValue("cenc"));
     EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
     CheckEncryptionSchemes(capability.encryption_schemes,
-                           {media::EncryptionMode::kCenc});
+                           {media::EncryptionScheme::kCenc});
   }
   {
     CdmCapability capability;
     manifest.SetKey(kCdmSupportedEncryptionSchemesName, MakeListValue("cbcs"));
     EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
     CheckEncryptionSchemes(capability.encryption_schemes,
-                           {media::EncryptionMode::kCbcs});
+                           {media::EncryptionScheme::kCbcs});
   }
   {
     // Try multiple valid entries.
@@ -315,7 +315,7 @@
     EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
     CheckEncryptionSchemes(
         capability.encryption_schemes,
-        {media::EncryptionMode::kCenc, media::EncryptionMode::kCbcs});
+        {media::EncryptionScheme::kCenc, media::EncryptionScheme::kCbcs});
   }
   {
     // Invalid encryption schemes are ignored. However, if value specified then
@@ -331,7 +331,7 @@
                     MakeListValue("invalid", "cenc"));
     EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
     CheckEncryptionSchemes(capability.encryption_schemes,
-                           {media::EncryptionMode::kCenc});
+                           {media::EncryptionScheme::kCenc});
   }
   {
     // Wrong types are an error.
@@ -345,7 +345,7 @@
     EXPECT_TRUE(manifest.RemoveKey(kCdmSupportedEncryptionSchemesName));
     EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
     CheckEncryptionSchemes(capability.encryption_schemes,
-                           {media::EncryptionMode::kCenc});
+                           {media::EncryptionScheme::kCenc});
   }
 }
 
@@ -442,7 +442,7 @@
                media::VideoCodec::kCodecAV1});
   CheckEncryptionSchemes(
       capability.encryption_schemes,
-      {media::EncryptionMode::kCenc, media::EncryptionMode::kCbcs});
+      {media::EncryptionScheme::kCenc, media::EncryptionScheme::kCbcs});
   CheckSessionTypes(capability.session_types,
                     {media::CdmSessionType::kTemporary,
                      media::CdmSessionType::kPersistentLicense});
@@ -522,7 +522,7 @@
   EXPECT_TRUE(ParseCdmManifestFromPath(manifest_path, &version, &capability));
   CheckCodecs(capability.video_codecs, {});
   CheckEncryptionSchemes(capability.encryption_schemes,
-                         {media::EncryptionMode::kCenc});
+                         {media::EncryptionScheme::kCenc});
   CheckSessionTypes(capability.session_types,
                     {media::CdmSessionType::kTemporary});
   CheckProxyProtocols(capability.cdm_proxy_protocols, {});
diff --git a/chrome/renderer/media/chrome_key_systems_provider_unittest.cc b/chrome/renderer/media/chrome_key_systems_provider_unittest.cc
index a57a4ab..31c21b1 100644
--- a/chrome/renderer/media/chrome_key_systems_provider_unittest.cc
+++ b/chrome/renderer/media/chrome_key_systems_provider_unittest.cc
@@ -29,7 +29,7 @@
   }
 
   media::EmeConfigRule GetEncryptionSchemeConfigRule(
-      media::EncryptionMode encryption_scheme) const override {
+      media::EncryptionScheme encryption_scheme) const override {
     return media::EmeConfigRule::NOT_SUPPORTED;
   }
 
diff --git a/chromecast/media/cma/base/decoder_config_adapter.cc b/chromecast/media/cma/base/decoder_config_adapter.cc
index fad7a9f..2b60efc 100644
--- a/chromecast/media/cma/base/decoder_config_adapter.cc
+++ b/chromecast/media/cma/base/decoder_config_adapter.cc
@@ -130,28 +130,13 @@
   }
 }
 
-::media::EncryptionScheme::CipherMode ToMediaCipherMode(
-    EncryptionScheme scheme) {
+EncryptionScheme ToEncryptionScheme(::media::EncryptionScheme scheme) {
   switch (scheme) {
-    case EncryptionScheme::kUnencrypted:
-      return ::media::EncryptionScheme::CIPHER_MODE_UNENCRYPTED;
-    case EncryptionScheme::kAesCtr:
-      return ::media::EncryptionScheme::CIPHER_MODE_AES_CTR;
-    case EncryptionScheme::kAesCbc:
-      return ::media::EncryptionScheme::CIPHER_MODE_AES_CBC;
-    default:
-      NOTREACHED();
-      return ::media::EncryptionScheme::CIPHER_MODE_UNENCRYPTED;
-  }
-}
-
-EncryptionScheme ToEncryptionScheme(const ::media::EncryptionScheme& scheme) {
-  switch (scheme.mode()) {
-    case ::media::EncryptionScheme::CIPHER_MODE_UNENCRYPTED:
+    case ::media::EncryptionScheme::kUnencrypted:
       return EncryptionScheme::kUnencrypted;
-    case ::media::EncryptionScheme::CIPHER_MODE_AES_CTR:
+    case ::media::EncryptionScheme::kCenc:
       return EncryptionScheme::kAesCtr;
-    case ::media::EncryptionScheme::CIPHER_MODE_AES_CBC:
+    case ::media::EncryptionScheme::kCbcs:
       return EncryptionScheme::kAesCbc;
     default:
       NOTREACHED();
@@ -159,10 +144,18 @@
   }
 }
 
-// TODO(yucliu): Remove pattern after update ::media::Audio/VideoDecoderConfig.
 ::media::EncryptionScheme ToMediaEncryptionScheme(EncryptionScheme scheme) {
-  return ::media::EncryptionScheme(ToMediaCipherMode(scheme),
-                                   ::media::EncryptionPattern());
+  switch (scheme) {
+    case EncryptionScheme::kUnencrypted:
+      return ::media::EncryptionScheme::kUnencrypted;
+    case EncryptionScheme::kAesCtr:
+      return ::media::EncryptionScheme::kCenc;
+    case EncryptionScheme::kAesCbc:
+      return ::media::EncryptionScheme::kCbcs;
+    default:
+      NOTREACHED();
+      return ::media::EncryptionScheme::kUnencrypted;
+  }
 }
 
 }  // namespace
diff --git a/chromecast/media/cma/base/demuxer_stream_for_test.cc b/chromecast/media/cma/base/demuxer_stream_for_test.cc
index 99d79204..f1c11a720 100644
--- a/chromecast/media/cma/base/demuxer_stream_for_test.cc
+++ b/chromecast/media/cma/base/demuxer_stream_for_test.cc
@@ -61,7 +61,7 @@
       ::media::VideoDecoderConfig::AlphaMode::kIsOpaque,
       ::media::VideoColorSpace(), ::media::kNoTransformation, coded_size,
       visible_rect, natural_size, ::media::EmptyExtraData(),
-      ::media::Unencrypted());
+      ::media::EncryptionScheme::kUnencrypted);
 }
 
 ::media::DemuxerStream::Type DemuxerStreamForTest::type() const {
diff --git a/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc b/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc
index 3eb5c38..e20fdf1a 100644
--- a/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc
+++ b/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc
@@ -137,7 +137,7 @@
       ::media::AudioDecoderConfig audio_config(
           ::media::kCodecMP3, ::media::kSampleFormatS16,
           ::media::CHANNEL_LAYOUT_STEREO, 44100, ::media::EmptyExtraData(),
-          ::media::Unencrypted());
+          ::media::EncryptionScheme::kUnencrypted);
       AvPipelineClient client;
       client.eos_cb = base::Bind(&PipelineHelper::OnEos, base::Unretained(this),
                                  STREAM_AUDIO);
diff --git a/chromecast/media/cma/test/mock_frame_provider.cc b/chromecast/media/cma/test/mock_frame_provider.cc
index 6b4e19b9..b7c5568 100644
--- a/chromecast/media/cma/test/mock_frame_provider.cc
+++ b/chromecast/media/cma/test/mock_frame_provider.cc
@@ -84,15 +84,12 @@
         ::media::VideoDecoderConfig::AlphaMode::kIsOpaque,
         ::media::VideoColorSpace(), ::media::kNoTransformation, coded_size,
         visible_rect, natural_size, ::media::EmptyExtraData(),
-        ::media::Unencrypted());
+        ::media::EncryptionScheme::kUnencrypted);
 
     audio_config = ::media::AudioDecoderConfig(
-      ::media::kCodecAAC,
-      ::media::kSampleFormatS16,
-      ::media::CHANNEL_LAYOUT_STEREO,
-      44100,
-      ::media::EmptyExtraData(),
-      ::media::Unencrypted());
+        ::media::kCodecAAC, ::media::kSampleFormatS16,
+        ::media::CHANNEL_LAYOUT_STEREO, 44100, ::media::EmptyExtraData(),
+        ::media::EncryptionScheme::kUnencrypted);
   }
 
   read_cb.Run(buffer, audio_config, video_config);
diff --git a/chromecast/renderer/media/key_systems_cast.cc b/chromecast/renderer/media/key_systems_cast.cc
index 21166af..b06c086 100644
--- a/chromecast/renderer/media/key_systems_cast.cc
+++ b/chromecast/renderer/media/key_systems_cast.cc
@@ -97,8 +97,8 @@
   }
 
   EmeConfigRule GetEncryptionSchemeConfigRule(
-      ::media::EncryptionMode encryption_mode) const override {
-    if (encryption_mode == ::media::EncryptionMode::kCenc)
+      ::media::EncryptionScheme encryption_scheme) const override {
+    if (encryption_scheme == ::media::EncryptionScheme::kCenc)
       return EmeConfigRule::SUPPORTED;
     return EmeConfigRule::NOT_SUPPORTED;
   }
@@ -162,8 +162,8 @@
 #if BUILDFLAG(ENABLE_WIDEVINE)
   using Robustness = cdm::WidevineKeySystemProperties::Robustness;
 
-  base::flat_set<::media::EncryptionMode> encryption_schemes = {
-      ::media::EncryptionMode::kCenc, ::media::EncryptionMode::kCbcs};
+  base::flat_set<::media::EncryptionScheme> encryption_schemes = {
+      ::media::EncryptionScheme::kCenc, ::media::EncryptionScheme::kCbcs};
 
   key_systems_properties->emplace_back(new cdm::WidevineKeySystemProperties(
       codecs,                            // Regular codecs.
diff --git a/components/cdm/renderer/android_key_systems.cc b/components/cdm/renderer/android_key_systems.cc
index ccfcca0..4065088b 100644
--- a/components/cdm/renderer/android_key_systems.cc
+++ b/components/cdm/renderer/android_key_systems.cc
@@ -61,8 +61,8 @@
   }
 
   EmeConfigRule GetEncryptionSchemeConfigRule(
-      media::EncryptionMode encryption_scheme) const override {
-    return encryption_scheme == media::EncryptionMode::kCenc
+      media::EncryptionScheme encryption_scheme) const override {
+    return encryption_scheme == media::EncryptionScheme::kCenc
                ? EmeConfigRule::SUPPORTED
                : EmeConfigRule::NOT_SUPPORTED;
   }
@@ -140,10 +140,10 @@
   if (codecs != media::EME_CODEC_NONE) {
     DVLOG(3) << __func__ << " Widevine supported.";
 
-    base::flat_set<media::EncryptionMode> encryption_schemes = {
-        media::EncryptionMode::kCenc};
+    base::flat_set<media::EncryptionScheme> encryption_schemes = {
+        media::EncryptionScheme::kCenc};
     if (response.is_cbcs_encryption_supported) {
-      encryption_schemes.insert(media::EncryptionMode::kCbcs);
+      encryption_schemes.insert(media::EncryptionScheme::kCbcs);
     }
 
     concrete_key_systems->emplace_back(new WidevineKeySystemProperties(
diff --git a/components/cdm/renderer/external_clear_key_key_system_properties.cc b/components/cdm/renderer/external_clear_key_key_system_properties.cc
index 3a38719..0998dd5 100644
--- a/components/cdm/renderer/external_clear_key_key_system_properties.cc
+++ b/components/cdm/renderer/external_clear_key_key_system_properties.cc
@@ -35,12 +35,12 @@
 }
 
 media::EmeConfigRule ExternalClearKeyProperties::GetEncryptionSchemeConfigRule(
-    media::EncryptionMode encryption_scheme) const {
+    media::EncryptionScheme encryption_scheme) const {
   switch (encryption_scheme) {
-    case media::EncryptionMode::kCenc:
-    case media::EncryptionMode::kCbcs:
+    case media::EncryptionScheme::kCenc:
+    case media::EncryptionScheme::kCbcs:
       return media::EmeConfigRule::SUPPORTED;
-    case media::EncryptionMode::kUnencrypted:
+    case media::EncryptionScheme::kUnencrypted:
       break;
   }
   NOTREACHED();
diff --git a/components/cdm/renderer/external_clear_key_key_system_properties.h b/components/cdm/renderer/external_clear_key_key_system_properties.h
index 6fe015f..4e6389c 100644
--- a/components/cdm/renderer/external_clear_key_key_system_properties.h
+++ b/components/cdm/renderer/external_clear_key_key_system_properties.h
@@ -23,7 +23,7 @@
   bool IsSupportedInitDataType(
       media::EmeInitDataType init_data_type) const override;
   media::EmeConfigRule GetEncryptionSchemeConfigRule(
-      media::EncryptionMode encryption_scheme) const override;
+      media::EncryptionScheme encryption_scheme) const override;
   media::SupportedCodecs GetSupportedCodecs() const override;
   media::EmeConfigRule GetRobustnessConfigRule(
       media::EmeMediaType media_type,
diff --git a/components/cdm/renderer/widevine_key_system_properties.cc b/components/cdm/renderer/widevine_key_system_properties.cc
index f316475..553ac49 100644
--- a/components/cdm/renderer/widevine_key_system_properties.cc
+++ b/components/cdm/renderer/widevine_key_system_properties.cc
@@ -44,9 +44,9 @@
 
 WidevineKeySystemProperties::WidevineKeySystemProperties(
     media::SupportedCodecs codecs,
-    base::flat_set<media::EncryptionMode> encryption_schemes,
+    base::flat_set<media::EncryptionScheme> encryption_schemes,
     media::SupportedCodecs hw_secure_codecs,
-    base::flat_set<media::EncryptionMode> hw_secure_encryption_schemes,
+    base::flat_set<media::EncryptionScheme> hw_secure_encryption_schemes,
     Robustness max_audio_robustness,
     Robustness max_video_robustness,
     media::EmeSessionTypeSupport persistent_license_support,
@@ -84,7 +84,7 @@
 }
 
 EmeConfigRule WidevineKeySystemProperties::GetEncryptionSchemeConfigRule(
-    media::EncryptionMode encryption_scheme) const {
+    media::EncryptionScheme encryption_scheme) const {
   bool is_supported = encryption_schemes_.count(encryption_scheme);
   bool is_hw_secure_supported =
       hw_secure_encryption_schemes_.count(encryption_scheme);
diff --git a/components/cdm/renderer/widevine_key_system_properties.h b/components/cdm/renderer/widevine_key_system_properties.h
index fa51638..cc29ee9 100644
--- a/components/cdm/renderer/widevine_key_system_properties.h
+++ b/components/cdm/renderer/widevine_key_system_properties.h
@@ -30,9 +30,9 @@
 
   WidevineKeySystemProperties(
       media::SupportedCodecs codecs,
-      base::flat_set<media::EncryptionMode> encryption_schemes,
+      base::flat_set<media::EncryptionScheme> encryption_schemes,
       media::SupportedCodecs hw_secure_codecs,
-      base::flat_set<media::EncryptionMode> hw_secure_encryption_schemes,
+      base::flat_set<media::EncryptionScheme> hw_secure_encryption_schemes,
       Robustness max_audio_robustness,
       Robustness max_video_robustness,
       media::EmeSessionTypeSupport persistent_license_support,
@@ -45,7 +45,7 @@
   bool IsSupportedInitDataType(
       media::EmeInitDataType init_data_type) const override;
   media::EmeConfigRule GetEncryptionSchemeConfigRule(
-      media::EncryptionMode encryption_scheme) const override;
+      media::EncryptionScheme encryption_scheme) const override;
   media::SupportedCodecs GetSupportedCodecs() const override;
   media::SupportedCodecs GetSupportedHwSecureCodecs() const override;
   media::EmeConfigRule GetRobustnessConfigRule(
@@ -60,9 +60,9 @@
 
  private:
   const media::SupportedCodecs codecs_;
-  const base::flat_set<media::EncryptionMode> encryption_schemes_;
+  const base::flat_set<media::EncryptionScheme> encryption_schemes_;
   const media::SupportedCodecs hw_secure_codecs_;
-  const base::flat_set<media::EncryptionMode> hw_secure_encryption_schemes_;
+  const base::flat_set<media::EncryptionScheme> hw_secure_encryption_schemes_;
   const Robustness max_audio_robustness_;
   const Robustness max_video_robustness_;
   const media::EmeSessionTypeSupport persistent_license_support_;
diff --git a/content/browser/media/cdm_registry_impl_unittest.cc b/content/browser/media/cdm_registry_impl_unittest.cc
index e3e197b..e919de1 100644
--- a/content/browser/media/cdm_registry_impl_unittest.cc
+++ b/content/browser/media/cdm_registry_impl_unittest.cc
@@ -25,7 +25,7 @@
 namespace {
 
 using VideoCodec = media::VideoCodec;
-using EncryptionMode = media::EncryptionMode;
+using EncryptionScheme = media::EncryptionScheme;
 using CdmSessionType = media::CdmSessionType;
 using CdmProxy = media::CdmProxy;
 
@@ -76,7 +76,7 @@
         kTestCdmName, kTestCdmGuid, base::Version(kVersion1),
         base::FilePath::FromUTF8Unsafe(kTestPath), kTestFileSystemId,
         CdmCapability(
-            {media::kCodecVP8, media::kCodecVP9}, {EncryptionMode::kCenc},
+            {media::kCodecVP8, media::kCodecVP9}, {EncryptionScheme::kCenc},
             {CdmSessionType::kTemporary, CdmSessionType::kPersistentLicense},
             {CdmProxy::Protocol::kIntel}),
         kTestKeySystem, /*supports_sub_key_systems=*/true);
@@ -118,7 +118,7 @@
   EXPECT_EQ(kTestPath, cdm.path.MaybeAsASCII());
   EXPECT_EQ(kTestFileSystemId, cdm.file_system_id);
   EXPECT_VIDEO_CODECS(VideoCodec::kCodecVP8, VideoCodec::kCodecVP9);
-  EXPECT_ENCRYPTION_SCHEMES(EncryptionMode::kCenc);
+  EXPECT_ENCRYPTION_SCHEMES(EncryptionScheme::kCenc);
   EXPECT_SESSION_TYPES(CdmSessionType::kTemporary,
                        CdmSessionType::kPersistentLicense);
   EXPECT_CDM_PROXY_PROTOCOLS(CdmProxy::Protocol::kIntel);
@@ -172,14 +172,14 @@
 
 TEST_F(CdmRegistryImplTest, SupportedEncryptionSchemes) {
   auto cdm_info = GetTestCdmInfo();
-  cdm_info.capability.encryption_schemes = {EncryptionMode::kCenc,
-                                            EncryptionMode::kCbcs};
+  cdm_info.capability.encryption_schemes = {EncryptionScheme::kCenc,
+                                            EncryptionScheme::kCbcs};
   Register(cdm_info);
 
   std::vector<CdmInfo> cdms = cdm_registry_.GetAllRegisteredCdms();
   ASSERT_EQ(1u, cdms.size());
   const CdmInfo& cdm = cdms[0];
-  EXPECT_ENCRYPTION_SCHEMES(EncryptionMode::kCenc, EncryptionMode::kCbcs);
+  EXPECT_ENCRYPTION_SCHEMES(EncryptionScheme::kCenc, EncryptionScheme::kCbcs);
 }
 
 }  // namespace content
diff --git a/content/browser/media/key_system_support_impl.cc b/content/browser/media/key_system_support_impl.cc
index 854ddd9c..93de83d 100644
--- a/content/browser/media/key_system_support_impl.cc
+++ b/content/browser/media/key_system_support_impl.cc
@@ -45,7 +45,7 @@
 // be modified.
 bool IsHardwareSecureCodecsOverriddenFromCommandLine(
     std::vector<media::VideoCodec>* video_codecs,
-    std::vector<media::EncryptionMode>* encryption_schemes) {
+    std::vector<media::EncryptionScheme>* encryption_schemes) {
   DCHECK(video_codecs->empty());
   DCHECK(encryption_schemes->empty());
 
@@ -73,7 +73,7 @@
 
   // Codecs enabled from command line assumes CENC support.
   if (!video_codecs->empty())
-    encryption_schemes->push_back(media::EncryptionMode::kCenc);
+    encryption_schemes->push_back(media::EncryptionScheme::kCenc);
 
   return true;
 }
@@ -82,7 +82,7 @@
     const std::string& key_system,
     const base::flat_set<media::CdmProxy::Protocol>& cdm_proxy_protocols,
     std::vector<media::VideoCodec>* video_codecs,
-    std::vector<media::EncryptionMode>* encryption_schemes) {
+    std::vector<media::EncryptionScheme>* encryption_schemes) {
   DCHECK(video_codecs->empty());
   DCHECK(encryption_schemes->empty());
 
@@ -122,7 +122,7 @@
 #endif
 
   base::flat_set<media::VideoCodec> video_codec_set;
-  base::flat_set<media::EncryptionMode> encryption_scheme_set;
+  base::flat_set<media::EncryptionScheme> encryption_scheme_set;
 
   GetContentClient()->browser()->GetHardwareSecureDecryptionCaps(
       key_system, cdm_proxy_protocols, &video_codec_set,
diff --git a/content/browser/media/key_system_support_impl_unittest.cc b/content/browser/media/key_system_support_impl_unittest.cc
index 660f21a..e687ae1 100644
--- a/content/browser/media/key_system_support_impl_unittest.cc
+++ b/content/browser/media/key_system_support_impl_unittest.cc
@@ -25,7 +25,7 @@
 namespace {
 
 using VideoCodec = media::VideoCodec;
-using EncryptionMode = media::EncryptionMode;
+using EncryptionScheme = media::EncryptionScheme;
 using CdmSessionType = media::CdmSessionType;
 
 const base::Token kTestCdmGuid{1234, 5678};
@@ -68,7 +68,7 @@
   CdmCapability GetTestCdmCapability() {
     return CdmCapability(
         {VideoCodec::kCodecVP8, VideoCodec::kCodecVP9},
-        {EncryptionMode::kCenc, EncryptionMode::kCbcs},
+        {EncryptionScheme::kCenc, EncryptionScheme::kCbcs},
         {CdmSessionType::kTemporary, CdmSessionType::kPersistentLicense}, {});
   }
 
@@ -114,7 +114,7 @@
 
   EXPECT_TRUE(IsSupported("KeySystem2"));
   EXPECT_VIDEO_CODECS(VideoCodec::kCodecVP8, VideoCodec::kCodecVP9);
-  EXPECT_ENCRYPTION_SCHEMES(EncryptionMode::kCenc, EncryptionMode::kCbcs);
+  EXPECT_ENCRYPTION_SCHEMES(EncryptionScheme::kCenc, EncryptionScheme::kCbcs);
   EXPECT_SESSION_TYPES(CdmSessionType::kTemporary,
                        CdmSessionType::kPersistentLicense);
 }
diff --git a/content/common/media/cdm_info.cc b/content/common/media/cdm_info.cc
index b1844062..c5480ec 100644
--- a/content/common/media/cdm_info.cc
+++ b/content/common/media/cdm_info.cc
@@ -12,7 +12,7 @@
 
 CdmCapability::CdmCapability(
     std::vector<media::VideoCodec> video_codecs,
-    base::flat_set<media::EncryptionMode> encryption_schemes,
+    base::flat_set<media::EncryptionScheme> encryption_schemes,
     base::flat_set<media::CdmSessionType> session_types,
     base::flat_set<media::CdmProxy::Protocol> cdm_proxy_protocols)
     : video_codecs(std::move(video_codecs)),
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
index b50b87e4..227d4d91 100644
--- a/content/public/browser/content_browser_client.cc
+++ b/content/public/browser/content_browser_client.cc
@@ -230,7 +230,7 @@
     const std::string& key_system,
     const base::flat_set<media::CdmProxy::Protocol>& cdm_proxy_protocols,
     base::flat_set<media::VideoCodec>* video_codecs,
-    base::flat_set<media::EncryptionMode>* encryption_schemes) {}
+    base::flat_set<media::EncryptionScheme>* encryption_schemes) {}
 
 bool ContentBrowserClient::ShouldAssignSiteForURL(const GURL& url) {
   return true;
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index 3ff6710..f1c1cacb 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -87,7 +87,7 @@
 namespace media {
 class AudioLogFactory;
 class AudioManager;
-enum class EncryptionMode;
+enum class EncryptionScheme;
 }  // namespace media
 
 namespace network {
@@ -1130,7 +1130,7 @@
       const std::string& key_system,
       const base::flat_set<media::CdmProxy::Protocol>& cdm_proxy_protocols,
       base::flat_set<media::VideoCodec>* video_codecs,
-      base::flat_set<media::EncryptionMode>* encryption_schemes);
+      base::flat_set<media::EncryptionScheme>* encryption_schemes);
 
   // Populates |mappings| with all files that need to be mapped before launching
   // a child process.
diff --git a/content/public/common/cdm_info.h b/content/public/common/cdm_info.h
index 39b8da2..f8bcf527 100644
--- a/content/public/common/cdm_info.h
+++ b/content/public/common/cdm_info.h
@@ -14,9 +14,7 @@
 #include "base/version.h"
 #include "content/common/content_export.h"
 #include "media/base/content_decryption_module.h"
-// TODO(crbug.com/825041): Move EncryptionMode out of decrypt_config and
-// rename it to EncryptionScheme.
-#include "media/base/decrypt_config.h"
+#include "media/base/encryption_scheme.h"
 #include "media/base/video_codecs.h"
 #include "media/cdm/cdm_proxy.h"
 
@@ -26,7 +24,7 @@
 struct CONTENT_EXPORT CdmCapability {
   CdmCapability();
   CdmCapability(std::vector<media::VideoCodec> video_codecs,
-                base::flat_set<media::EncryptionMode> encryption_schemes,
+                base::flat_set<media::EncryptionScheme> encryption_schemes,
                 base::flat_set<media::CdmSessionType> session_types,
                 base::flat_set<media::CdmProxy::Protocol> cdm_proxy_protocols);
   CdmCapability(const CdmCapability& other);
@@ -46,7 +44,7 @@
   bool supports_vp9_profile2 = false;
 
   // List of encryption schemes supported by the CDM (e.g. cenc).
-  base::flat_set<media::EncryptionMode> encryption_schemes;
+  base::flat_set<media::EncryptionScheme> encryption_schemes;
 
   // List of session types supported by the CDM.
   base::flat_set<media::CdmSessionType> session_types;
diff --git a/content/renderer/pepper/video_decoder_shim.cc b/content/renderer/pepper/video_decoder_shim.cc
index 55886b2..48f1829 100644
--- a/content/renderer/pepper/video_decoder_shim.cc
+++ b/content/renderer/pepper/video_decoder_shim.cc
@@ -895,7 +895,7 @@
       gfx::Size(32, 24),  // Small sizes that won't fail.
       gfx::Rect(32, 24), gfx::Size(32, 24),
       // TODO(bbudge): Verify extra data isn't needed.
-      media::EmptyExtraData(), media::Unencrypted());
+      media::EmptyExtraData(), media::EncryptionScheme::kUnencrypted);
 
   media_task_runner_->PostTask(
       FROM_HERE, base::BindOnce(&VideoDecoderShim::DecoderImpl::Initialize,
diff --git a/fuchsia/engine/renderer/web_engine_content_renderer_client.cc b/fuchsia/engine/renderer/web_engine_content_renderer_client.cc
index c7a044b7..615b95a 100644
--- a/fuchsia/engine/renderer/web_engine_content_renderer_client.cc
+++ b/fuchsia/engine/renderer/web_engine_content_renderer_client.cc
@@ -89,8 +89,8 @@
   }
 
   media::EmeConfigRule GetEncryptionSchemeConfigRule(
-      media::EncryptionMode encryption_mode) const override {
-    if (encryption_mode == ::media::EncryptionMode::kCenc) {
+      media::EncryptionScheme encryption_mode) const override {
+    if (encryption_mode == ::media::EncryptionScheme::kCenc) {
       return media::EmeConfigRule::SUPPORTED;
     }
 
@@ -179,8 +179,8 @@
 
   if (base::CommandLine::ForCurrentProcess()->HasSwitch(
           switches::kEnableWidevine)) {
-    base::flat_set<media::EncryptionMode> encryption_schemes{
-        media::EncryptionMode::kCenc, media::EncryptionMode::kCbcs};
+    base::flat_set<media::EncryptionScheme> encryption_schemes{
+        media::EncryptionScheme::kCenc, media::EncryptionScheme::kCbcs};
 
     // Fuchsia always decrypts audio into clear buffers and return them back to
     // Chromium. Hardware secured decoders are only available for supported
diff --git a/media/base/BUILD.gn b/media/base/BUILD.gn
index 247f0f8..a4733e86 100644
--- a/media/base/BUILD.gn
+++ b/media/base/BUILD.gn
@@ -414,7 +414,7 @@
 if (is_android) {
   java_cpp_enum("java_enums") {
     sources = [
-      "decrypt_config.h",
+      "encryption_scheme.h",
       "video_codecs.h",
     ]
   }
diff --git a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
index 9d87a7599f2..54386a7 100644
--- a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
+++ b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
@@ -556,16 +556,16 @@
         }
     }
 
-    // Incoming |native| values are as defined in media/base/decrypt_config.h. Translated values
+    // Incoming |native| values are as defined in media/base/encryption_scheme.h. Translated values
     // are from MediaCodec. At present, these values are in sync. Returns
     // MEDIA_CODEC_UNKNOWN_CIPHER_MODE in the case of unknown incoming value.
-    private int translateEncryptionModeValue(int nativeValue) {
+    private int translateEncryptionSchemeValue(int nativeValue) {
         switch (nativeValue) {
-            case EncryptionMode.UNENCRYPTED:
+            case EncryptionScheme.UNENCRYPTED:
                 return MediaCodec.CRYPTO_MODE_UNENCRYPTED;
-            case EncryptionMode.CENC:
+            case EncryptionScheme.CENC:
                 return MediaCodec.CRYPTO_MODE_AES_CTR;
-            case EncryptionMode.CBCS:
+            case EncryptionScheme.CBCS:
                 return MediaCodec.CRYPTO_MODE_AES_CBC;
             default:
                 Log.e(TAG, "Unsupported cipher mode: " + nativeValue);
@@ -579,7 +579,7 @@
             int[] numBytesOfClearData, int[] numBytesOfEncryptedData, int numSubSamples,
             int cipherMode, int patternEncrypt, int patternSkip, long presentationTimeUs) {
         try {
-            cipherMode = translateEncryptionModeValue(cipherMode);
+            cipherMode = translateEncryptionSchemeValue(cipherMode);
             if (cipherMode == MEDIA_CODEC_UNKNOWN_CIPHER_MODE) {
                 return MediaCodecStatus.ERROR;
             }
diff --git a/media/base/android/media_codec_bridge.h b/media/base/android/media_codec_bridge.h
index 86b02cb..f9cb49f 100644
--- a/media/base/android/media_codec_bridge.h
+++ b/media/base/android/media_codec_bridge.h
@@ -14,9 +14,10 @@
 #include "base/android/jni_android.h"
 #include "base/android/scoped_java_ref.h"
 #include "base/macros.h"
+#include "base/optional.h"
 #include "base/time/time.h"
-#include "media/base/decrypt_config.h"
 #include "media/base/encryption_pattern.h"
+#include "media/base/encryption_scheme.h"
 #include "media/base/media_export.h"
 #include "ui/gfx/geometry/size.h"
 
@@ -93,7 +94,7 @@
       const std::string& key_id,
       const std::string& iv,
       const std::vector<SubsampleEntry>& subsamples,
-      EncryptionMode encryption_scheme,
+      EncryptionScheme encryption_scheme,
       base::Optional<EncryptionPattern> encryption_pattern,
       base::TimeDelta presentation_time) = 0;
 
diff --git a/media/base/android/media_codec_bridge_impl.cc b/media/base/android/media_codec_bridge_impl.cc
index a5aa079..48350424 100644
--- a/media/base/android/media_codec_bridge_impl.cc
+++ b/media/base/android/media_codec_bridge_impl.cc
@@ -416,7 +416,7 @@
     const std::string& key_id,
     const std::string& iv,
     const std::vector<SubsampleEntry>& subsamples,
-    EncryptionMode encryption_scheme,
+    EncryptionScheme encryption_scheme,
     base::Optional<EncryptionPattern> encryption_pattern,
     base::TimeDelta presentation_time) {
   DVLOG(3) << __func__ << " " << index << ": " << data_size;
diff --git a/media/base/android/media_codec_bridge_impl.h b/media/base/android/media_codec_bridge_impl.h
index ae44336..35c224c7 100644
--- a/media/base/android/media_codec_bridge_impl.h
+++ b/media/base/android/media_codec_bridge_impl.h
@@ -121,7 +121,7 @@
       const std::string& key_id,
       const std::string& iv,
       const std::vector<SubsampleEntry>& subsamples,
-      EncryptionMode encryption_scheme,
+      EncryptionScheme encryption_scheme,
       base::Optional<EncryptionPattern> encryption_pattern,
       base::TimeDelta presentation_time) override;
   void QueueEOS(int input_buffer_index) override;
diff --git a/media/base/android/media_codec_bridge_impl_unittest.cc b/media/base/android/media_codec_bridge_impl_unittest.cc
index 8278cf1..60328e5 100644
--- a/media/base/android/media_codec_bridge_impl_unittest.cc
+++ b/media/base/android/media_codec_bridge_impl_unittest.cc
@@ -281,7 +281,8 @@
     int64_t codec_delay = 0) {
   AudioDecoderConfig config;
   config.Initialize(codec, kSampleFormatPlanarF32, CHANNEL_LAYOUT_STEREO, 44100,
-                    extra_data, Unencrypted(), seek_preroll, codec_delay);
+                    extra_data, EncryptionScheme::kUnencrypted, seek_preroll,
+                    codec_delay);
   return config;
 }
 
diff --git a/media/base/android/media_codec_loop.cc b/media/base/android/media_codec_loop.cc
index 61b9a996..5722736 100644
--- a/media/base/android/media_codec_loop.cc
+++ b/media/base/android/media_codec_loop.cc
@@ -197,7 +197,7 @@
 
   media::MediaCodecStatus status = MEDIA_CODEC_OK;
 
-  if (input_data.encryption_scheme != EncryptionMode::kUnencrypted) {
+  if (input_data.encryption_scheme != EncryptionScheme::kUnencrypted) {
     // Note that input_data might not have a valid memory ptr if this is a
     // re-send of a buffer that was sent before decryption keys arrived.
 
diff --git a/media/base/android/media_codec_loop.h b/media/base/android/media_codec_loop.h
index ebb8106..3eb0d81 100644
--- a/media/base/android/media_codec_loop.h
+++ b/media/base/android/media_codec_loop.h
@@ -127,7 +127,7 @@
     base::TimeDelta presentation_time;
 
     bool is_eos = false;
-    EncryptionMode encryption_scheme = EncryptionMode::kUnencrypted;
+    EncryptionScheme encryption_scheme = EncryptionScheme::kUnencrypted;
     base::Optional<EncryptionPattern> encryption_pattern;
   };
 
diff --git a/media/base/android/mock_media_codec_bridge.h b/media/base/android/mock_media_codec_bridge.h
index a2e03978..85325f5 100644
--- a/media/base/android/mock_media_codec_bridge.h
+++ b/media/base/android/mock_media_codec_bridge.h
@@ -43,7 +43,7 @@
                        const std::string& key_id,
                        const std::string& iv,
                        const std::vector<SubsampleEntry>& subsamples,
-                       EncryptionMode encryption_scheme,
+                       EncryptionScheme encryption_scheme,
                        base::Optional<EncryptionPattern> encryption_pattern,
                        base::TimeDelta presentation_time));
   MOCK_METHOD1(QueueEOS, void(int input_buffer_index));
diff --git a/media/base/audio_decoder_config.cc b/media/base/audio_decoder_config.cc
index f499bc5..27351dc2 100644
--- a/media/base/audio_decoder_config.cc
+++ b/media/base/audio_decoder_config.cc
@@ -12,13 +12,12 @@
 
 AudioDecoderConfig::AudioDecoderConfig() {}
 
-AudioDecoderConfig::AudioDecoderConfig(
-    AudioCodec codec,
-    SampleFormat sample_format,
-    ChannelLayout channel_layout,
-    int samples_per_second,
-    const std::vector<uint8_t>& extra_data,
-    const EncryptionScheme& encryption_scheme) {
+AudioDecoderConfig::AudioDecoderConfig(AudioCodec codec,
+                                       SampleFormat sample_format,
+                                       ChannelLayout channel_layout,
+                                       int samples_per_second,
+                                       const std::vector<uint8_t>& extra_data,
+                                       EncryptionScheme encryption_scheme) {
   Initialize(codec, sample_format, channel_layout, samples_per_second,
              extra_data, encryption_scheme, base::TimeDelta(), 0);
 }
@@ -31,7 +30,7 @@
                                     ChannelLayout channel_layout,
                                     int samples_per_second,
                                     const std::vector<uint8_t>& extra_data,
-                                    const EncryptionScheme& encryption_scheme,
+                                    EncryptionScheme encryption_scheme,
                                     base::TimeDelta seek_preroll,
                                     int codec_delay) {
   codec_ = codec;
@@ -71,7 +70,7 @@
           (channel_layout() == config.channel_layout()) &&
           (samples_per_second() == config.samples_per_second()) &&
           (extra_data() == config.extra_data()) &&
-          (encryption_scheme().Matches(config.encryption_scheme())) &&
+          (encryption_scheme() == config.encryption_scheme()) &&
           (sample_format() == config.sample_format()) &&
           (seek_preroll() == config.seek_preroll()) &&
           (codec_delay() == config.codec_delay()) &&
@@ -109,16 +108,17 @@
 
 void AudioDecoderConfig::SetIsEncrypted(bool is_encrypted) {
   if (!is_encrypted) {
-    DCHECK(encryption_scheme_.is_encrypted()) << "Config is already clear.";
-    encryption_scheme_ = Unencrypted();
+    DCHECK_NE(encryption_scheme_, EncryptionScheme::kUnencrypted)
+        << "Config is already clear.";
+    encryption_scheme_ = EncryptionScheme::kUnencrypted;
   } else {
-    DCHECK(!encryption_scheme_.is_encrypted())
+    DCHECK_EQ(encryption_scheme_, EncryptionScheme::kUnencrypted)
         << "Config is already encrypted.";
     // TODO(xhwang): This is only used to guide decoder selection, so set
     // a common encryption scheme that should be supported by all decrypting
     // decoders. We should be able to remove this when we support switching
     // decoders at run time. See http://crbug.com/695595
-    encryption_scheme_ = AesCtrEncryptionScheme();
+    encryption_scheme_ = EncryptionScheme::kCenc;
   }
 }
 
diff --git a/media/base/audio_decoder_config.h b/media/base/audio_decoder_config.h
index b251bf7..a7f294d 100644
--- a/media/base/audio_decoder_config.h
+++ b/media/base/audio_decoder_config.h
@@ -35,7 +35,7 @@
                      ChannelLayout channel_layout,
                      int samples_per_second,
                      const std::vector<uint8_t>& extra_data,
-                     const EncryptionScheme& encryption_scheme);
+                     EncryptionScheme encryption_scheme);
 
   AudioDecoderConfig(const AudioDecoderConfig& other);
 
@@ -47,7 +47,7 @@
                   ChannelLayout channel_layout,
                   int samples_per_second,
                   const std::vector<uint8_t>& extra_data,
-                  const EncryptionScheme& encryption_scheme,
+                  EncryptionScheme encryption_scheme,
                   base::TimeDelta seek_preroll,
                   int codec_delay);
 
@@ -83,12 +83,12 @@
   // Whether the audio stream is potentially encrypted.
   // Note that in a potentially encrypted audio stream, individual buffers
   // can be encrypted or not encrypted.
-  bool is_encrypted() const { return encryption_scheme_.is_encrypted(); }
+  bool is_encrypted() const {
+    return encryption_scheme_ != EncryptionScheme::kUnencrypted;
+  }
 
   // Encryption scheme used for encrypted buffers.
-  const EncryptionScheme& encryption_scheme() const {
-    return encryption_scheme_;
-  }
+  EncryptionScheme encryption_scheme() const { return encryption_scheme_; }
 
   // Sets the config to be encrypted or not encrypted manually. This can be
   // useful for decryptors that decrypts an encrypted stream to a clear stream.
@@ -119,7 +119,7 @@
   int samples_per_second_ = 0;
   int bytes_per_frame_ = 0;
   std::vector<uint8_t> extra_data_;
-  EncryptionScheme encryption_scheme_;
+  EncryptionScheme encryption_scheme_ = EncryptionScheme::kUnencrypted;
 
   // Layout and count of the *stream* being decoded.
   ChannelLayout channel_layout_ = CHANNEL_LAYOUT_UNSUPPORTED;
diff --git a/media/base/bitstream_buffer.h b/media/base/bitstream_buffer.h
index ca5333a6..9280c80 100644
--- a/media/base/bitstream_buffer.h
+++ b/media/base/bitstream_buffer.h
@@ -76,7 +76,7 @@
   scoped_refptr<DecoderBuffer> ToDecoderBuffer();
 
   // TODO(crbug.com/813845): As this is only used by Android, include
-  // EncryptionMode and optional EncryptionPattern when updating for Android.
+  // EncryptionScheme and optional EncryptionPattern when updating for Android.
   void SetDecryptionSettings(const std::string& key_id,
                              const std::string& iv,
                              const std::vector<SubsampleEntry>& subsamples);
diff --git a/media/base/decrypt_config.cc b/media/base/decrypt_config.cc
index 385e159..ce994949 100644
--- a/media/base/decrypt_config.cc
+++ b/media/base/decrypt_config.cc
@@ -13,29 +13,12 @@
 
 namespace media {
 
-namespace {
-
-const char* EncryptionModeAsString(EncryptionMode mode) {
-  switch (mode) {
-    case EncryptionMode::kUnencrypted:
-      return "Unencrypted";
-    case EncryptionMode::kCenc:
-      return "CENC";
-    case EncryptionMode::kCbcs:
-      return "CBCS";
-    default:
-      return "Unknown";
-  }
-}
-
-}  // namespace
-
 // static
 std::unique_ptr<DecryptConfig> DecryptConfig::CreateCencConfig(
     const std::string& key_id,
     const std::string& iv,
     const std::vector<SubsampleEntry>& subsamples) {
-  return std::make_unique<DecryptConfig>(EncryptionMode::kCenc, key_id, iv,
+  return std::make_unique<DecryptConfig>(EncryptionScheme::kCenc, key_id, iv,
                                          subsamples, base::nullopt);
 }
 
@@ -45,29 +28,29 @@
     const std::string& iv,
     const std::vector<SubsampleEntry>& subsamples,
     base::Optional<EncryptionPattern> encryption_pattern) {
-  return std::make_unique<DecryptConfig>(EncryptionMode::kCbcs, key_id, iv,
+  return std::make_unique<DecryptConfig>(EncryptionScheme::kCbcs, key_id, iv,
                                          subsamples,
                                          std::move(encryption_pattern));
 }
 
 DecryptConfig::DecryptConfig(
-    const EncryptionMode& encryption_mode,
+    EncryptionScheme encryption_scheme,
     const std::string& key_id,
     const std::string& iv,
     const std::vector<SubsampleEntry>& subsamples,
     base::Optional<EncryptionPattern> encryption_pattern)
-    : encryption_mode_(encryption_mode),
+    : encryption_scheme_(encryption_scheme),
       key_id_(key_id),
       iv_(iv),
       subsamples_(subsamples),
       encryption_pattern_(std::move(encryption_pattern)) {
   // Unencrypted blocks should not have a DecryptConfig.
-  DCHECK_NE(encryption_mode_, EncryptionMode::kUnencrypted);
+  DCHECK_NE(encryption_scheme_, EncryptionScheme::kUnencrypted);
   CHECK_GT(key_id_.size(), 0u);
   CHECK_EQ(iv_.size(), static_cast<size_t>(DecryptConfig::kDecryptionKeySize));
 
-  // Pattern not allowed for non-'cbcs' modes.
-  DCHECK(encryption_mode_ == EncryptionMode::kCbcs || !encryption_pattern_);
+  // Pattern not allowed for non-'cbcs' schemes.
+  DCHECK(encryption_scheme_ == EncryptionScheme::kCbcs || !encryption_pattern_);
 }
 
 DecryptConfig::~DecryptConfig() = default;
@@ -79,7 +62,7 @@
 std::unique_ptr<DecryptConfig> DecryptConfig::CopyNewSubsamplesIV(
     const std::vector<SubsampleEntry>& subsamples,
     const std::string& iv) {
-  return std::make_unique<DecryptConfig>(encryption_mode_, key_id_, iv,
+  return std::make_unique<DecryptConfig>(encryption_scheme_, key_id_, iv,
                                          subsamples, encryption_pattern_);
 }
 
@@ -90,7 +73,7 @@
 bool DecryptConfig::Matches(const DecryptConfig& config) const {
   if (key_id() != config.key_id() || iv() != config.iv() ||
       subsamples().size() != config.subsamples().size() ||
-      encryption_mode_ != config.encryption_mode_ ||
+      encryption_scheme_ != config.encryption_scheme_ ||
       encryption_pattern_ != config.encryption_pattern_) {
     return false;
   }
@@ -108,7 +91,7 @@
 std::ostream& DecryptConfig::Print(std::ostream& os) const {
   os << "key_id:'" << base::HexEncode(key_id_.data(), key_id_.size()) << "'"
      << " iv:'" << base::HexEncode(iv_.data(), iv_.size()) << "'"
-     << " mode:" << EncryptionModeAsString(encryption_mode_);
+     << " scheme:" << encryption_scheme_;
 
   if (encryption_pattern_) {
     os << " pattern:" << encryption_pattern_->crypt_byte_block() << ":"
diff --git a/media/base/decrypt_config.h b/media/base/decrypt_config.h
index cdc4c21..7990541 100644
--- a/media/base/decrypt_config.h
+++ b/media/base/decrypt_config.h
@@ -15,21 +15,12 @@
 #include "base/macros.h"
 #include "base/optional.h"
 #include "media/base/encryption_pattern.h"
+#include "media/base/encryption_scheme.h"
 #include "media/base/media_export.h"
 #include "media/base/subsample_entry.h"
 
 namespace media {
 
-// The encryption mode. The definitions are from ISO/IEC 23001-7:2016.
-// TODO(crbug.com/825041): Merge this with existing media::EncryptionScheme.
-// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.media
-enum class EncryptionMode {
-  kUnencrypted = 0,
-  kCenc,  // 'cenc' subsample encryption using AES-CTR mode.
-  kCbcs,  // 'cbcs' pattern encryption using AES-CBC mode.
-  kMaxValue = kCbcs
-};
-
 // Contains all information that a decryptor needs to decrypt a media sample.
 class MEDIA_EXPORT DecryptConfig {
  public:
@@ -58,7 +49,7 @@
       const std::vector<SubsampleEntry>& subsamples,
       base::Optional<EncryptionPattern> encryption_pattern);
 
-  DecryptConfig(const EncryptionMode& encryption_mode,
+  DecryptConfig(EncryptionScheme encryption_scheme,
                 const std::string& key_id,
                 const std::string& iv,
                 const std::vector<SubsampleEntry>& subsamples,
@@ -68,7 +59,7 @@
   const std::string& key_id() const { return key_id_; }
   const std::string& iv() const { return iv_; }
   const std::vector<SubsampleEntry>& subsamples() const { return subsamples_; }
-  const EncryptionMode& encryption_mode() const { return encryption_mode_; }
+  EncryptionScheme encryption_scheme() const { return encryption_scheme_; }
   const base::Optional<EncryptionPattern>& encryption_pattern() const {
     return encryption_pattern_;
   }
@@ -93,7 +84,7 @@
  private:
   DecryptConfig(const DecryptConfig& other);
 
-  const EncryptionMode encryption_mode_;
+  const EncryptionScheme encryption_scheme_;
   const std::string key_id_;
 
   // Initialization vector.
diff --git a/media/base/decrypt_config_unittest.cc b/media/base/decrypt_config_unittest.cc
index a42266d..e39d7a7 100644
--- a/media/base/decrypt_config_unittest.cc
+++ b/media/base/decrypt_config_unittest.cc
@@ -26,7 +26,7 @@
   EXPECT_EQ(config->key_id(), kDefaultKeyId);
   EXPECT_EQ(config->iv(), kDefaultIV);
   EXPECT_EQ(config->subsamples().size(), 0u);
-  EXPECT_EQ(config->encryption_mode(), EncryptionMode::kCenc);
+  EXPECT_EQ(config->encryption_scheme(), EncryptionScheme::kCenc);
 
   // Now with single subsample entry.
   config =
@@ -36,7 +36,7 @@
   EXPECT_EQ(config->subsamples().size(), 1u);
   EXPECT_EQ(config->subsamples()[0].clear_bytes, 1u);
   EXPECT_EQ(config->subsamples()[0].cypher_bytes, 2u);
-  EXPECT_EQ(config->encryption_mode(), EncryptionMode::kCenc);
+  EXPECT_EQ(config->encryption_scheme(), EncryptionScheme::kCenc);
 
   // Now with multiple subsample entries.
   config = DecryptConfig::CreateCencConfig(kDefaultKeyId, kAlternateIV,
@@ -46,7 +46,7 @@
   EXPECT_EQ(config->subsamples().size(), 4u);
   EXPECT_EQ(config->subsamples()[1].clear_bytes, 3u);
   EXPECT_EQ(config->subsamples()[3].cypher_bytes, 8u);
-  EXPECT_EQ(config->encryption_mode(), EncryptionMode::kCenc);
+  EXPECT_EQ(config->encryption_scheme(), EncryptionScheme::kCenc);
 }
 
 TEST(DecryptConfigTest, CbcsConstruction) {
@@ -55,7 +55,7 @@
   EXPECT_EQ(config->key_id(), kDefaultKeyId);
   EXPECT_EQ(config->iv(), kDefaultIV);
   EXPECT_EQ(config->subsamples().size(), 0u);
-  EXPECT_EQ(config->encryption_mode(), EncryptionMode::kCbcs);
+  EXPECT_EQ(config->encryption_scheme(), EncryptionScheme::kCbcs);
   EXPECT_TRUE(config->HasPattern());
   EXPECT_EQ(config->encryption_pattern()->crypt_byte_block(), 1u);
   EXPECT_EQ(config->encryption_pattern()->skip_byte_block(), 2u);
@@ -71,7 +71,7 @@
   EXPECT_EQ(config->subsamples()[0].cypher_bytes, 2u);
   EXPECT_EQ(config->subsamples()[3].clear_bytes, 7u);
   EXPECT_EQ(config->subsamples()[3].cypher_bytes, 8u);
-  EXPECT_EQ(config->encryption_mode(), EncryptionMode::kCbcs);
+  EXPECT_EQ(config->encryption_scheme(), EncryptionScheme::kCbcs);
   EXPECT_TRUE(config->HasPattern());
   EXPECT_EQ(config->encryption_pattern()->crypt_byte_block(), 1u);
   EXPECT_EQ(config->encryption_pattern()->skip_byte_block(), 0u);
@@ -84,7 +84,7 @@
   EXPECT_EQ(config->subsamples().size(), 1u);
   EXPECT_EQ(config->subsamples()[0].clear_bytes, 1u);
   EXPECT_EQ(config->subsamples()[0].cypher_bytes, 2u);
-  EXPECT_EQ(config->encryption_mode(), EncryptionMode::kCbcs);
+  EXPECT_EQ(config->encryption_scheme(), EncryptionScheme::kCbcs);
   EXPECT_FALSE(config->HasPattern());
 }
 
diff --git a/media/base/encryption_scheme.cc b/media/base/encryption_scheme.cc
index d20fbf4..40de184 100644
--- a/media/base/encryption_scheme.cc
+++ b/media/base/encryption_scheme.cc
@@ -10,46 +10,17 @@
 
 namespace media {
 
-EncryptionScheme::EncryptionScheme() = default;
-
-EncryptionScheme::EncryptionScheme(CipherMode mode,
-                                   const EncryptionPattern& pattern)
-    : mode_(mode), pattern_(pattern) {}
-
-EncryptionScheme::~EncryptionScheme() = default;
-
-bool EncryptionScheme::is_encrypted() const {
-  return mode_ != CIPHER_MODE_UNENCRYPTED;
-}
-
-EncryptionScheme::CipherMode EncryptionScheme::mode() const {
-  return mode_;
-}
-
-const EncryptionPattern& EncryptionScheme::pattern() const {
-  return pattern_;
-}
-
-bool EncryptionScheme::Matches(const EncryptionScheme& other) const {
-  return mode_ == other.mode_ && pattern_ == other.pattern_;
-}
-
-std::ostream& operator<<(std::ostream& os,
-                         const EncryptionScheme& encryption_scheme) {
-  if (!encryption_scheme.is_encrypted())
-    return os << "Unencrypted";
-
-  if (encryption_scheme.mode() == EncryptionScheme::CIPHER_MODE_AES_CTR)
-    return os << "CENC";
-
-  if (encryption_scheme.mode() == EncryptionScheme::CIPHER_MODE_AES_CBC) {
-    return os << "CBCS with pattern ("
-              << encryption_scheme.pattern().crypt_byte_block() << ","
-              << encryption_scheme.pattern().skip_byte_block() << ")";
+std::ostream& operator<<(std::ostream& os, EncryptionScheme scheme) {
+  switch (scheme) {
+    case EncryptionScheme::kUnencrypted:
+      return os << "Unencrypted";
+    case EncryptionScheme::kCenc:
+      return os << "CENC";
+    case EncryptionScheme::kCbcs:
+      return os << "CBCS";
+    default:
+      return os << "Unknown";
   }
-
-  NOTREACHED();
-  return os << "Unknown EncryptionScheme, mode = " << encryption_scheme.mode();
 }
 
 }  // namespace media
diff --git a/media/base/encryption_scheme.h b/media/base/encryption_scheme.h
index 420f4e7..00bd931 100644
--- a/media/base/encryption_scheme.h
+++ b/media/base/encryption_scheme.h
@@ -5,51 +5,24 @@
 #ifndef MEDIA_BASE_ENCRYPTION_SCHEME_H_
 #define MEDIA_BASE_ENCRYPTION_SCHEME_H_
 
-#include <stdint.h>
-
 #include <iosfwd>
 
-#include "media/base/encryption_pattern.h"
 #include "media/base/media_export.h"
 
 namespace media {
 
-// Specification of whether and how the stream is encrypted (in whole or part).
-class MEDIA_EXPORT EncryptionScheme {
- public:
-  // Algorithm and mode used for encryption. CIPHER_MODE_UNENCRYPTED indicates
-  // no encryption.
-  enum CipherMode {
-    CIPHER_MODE_UNENCRYPTED,
-    CIPHER_MODE_AES_CTR,
-    CIPHER_MODE_AES_CBC,
-    CIPHER_MODE_MAX = CIPHER_MODE_AES_CBC
-  };
-
-  // The default constructor makes an instance that indicates no encryption.
-  EncryptionScheme();
-
-  // This constructor allows specification of the cipher mode and the pattern.
-  EncryptionScheme(CipherMode mode, const EncryptionPattern& pattern);
-  ~EncryptionScheme();
-
-  bool Matches(const EncryptionScheme& other) const;
-
-  bool is_encrypted() const;
-  CipherMode mode() const;
-  const EncryptionPattern& pattern() const;
-
- private:
-  CipherMode mode_ = CIPHER_MODE_UNENCRYPTED;
-  EncryptionPattern pattern_;
-
-  // Allow copy and assignment.
+// The encryption mode. The definitions are from ISO/IEC 23001-7:2016.
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.media
+enum class EncryptionScheme {
+  kUnencrypted = 0,
+  kCenc,  // 'cenc' subsample encryption using AES-CTR mode.
+  kCbcs,  // 'cbcs' pattern encryption using AES-CBC mode.
+  kMaxValue = kCbcs
 };
 
 // For logging use only.
-MEDIA_EXPORT std::ostream& operator<<(
-    std::ostream& os,
-    const EncryptionScheme& encryption_scheme);
+MEDIA_EXPORT std::ostream& operator<<(std::ostream& os,
+                                      EncryptionScheme encryption_scheme);
 
 }  // namespace media
 
diff --git a/media/base/fake_demuxer_stream.cc b/media/base/fake_demuxer_stream.cc
index 5a6526a..dac0819 100644
--- a/media/base/fake_demuxer_stream.cc
+++ b/media/base/fake_demuxer_stream.cc
@@ -165,7 +165,7 @@
       VideoDecoderConfig::AlphaMode::kIsOpaque, VideoColorSpace(),
       kNoTransformation, next_coded_size_, kVisibleRect, next_coded_size_,
       EmptyExtraData(),
-      is_encrypted_ ? AesCtrEncryptionScheme() : Unencrypted());
+      is_encrypted_ ? EncryptionScheme::kCenc : EncryptionScheme::kUnencrypted);
   next_coded_size_.Enlarge(kWidthDelta, kHeightDelta);
 }
 
diff --git a/media/base/ipc/media_param_traits.cc b/media/base/ipc/media_param_traits.cc
index 64db44e7..46c977a7 100644
--- a/media/base/ipc/media_param_traits.cc
+++ b/media/base/ipc/media_param_traits.cc
@@ -113,28 +113,6 @@
   static void Log(const param_type& p, std::string* l);
 };
 
-void ParamTraits<media::EncryptionScheme>::Write(base::Pickle* m,
-                                                 const param_type& p) {
-  WriteParam(m, p.mode());
-  WriteParam(m, p.pattern());
-}
-
-bool ParamTraits<media::EncryptionScheme>::Read(const base::Pickle* m,
-                                                base::PickleIterator* iter,
-                                                param_type* r) {
-  media::EncryptionScheme::CipherMode mode;
-  media::EncryptionPattern pattern;
-  if (!ReadParam(m, iter, &mode) || !ReadParam(m, iter, &pattern))
-    return false;
-  *r = media::EncryptionScheme(mode, pattern);
-  return true;
-}
-
-void ParamTraits<media::EncryptionScheme>::Log(const param_type& p,
-                                               std::string* l) {
-  l->append(base::StringPrintf("<EncryptionScheme>"));
-}
-
 void ParamTraits<media::EncryptionPattern>::Write(base::Pickle* m,
                                                   const param_type& p) {
   WriteParam(m, p.crypt_byte_block());
diff --git a/media/base/ipc/media_param_traits.h b/media/base/ipc/media_param_traits.h
index b4205f5..4771d463 100644
--- a/media/base/ipc/media_param_traits.h
+++ b/media/base/ipc/media_param_traits.h
@@ -11,7 +11,6 @@
 
 namespace media {
 class AudioParameters;
-class EncryptionScheme;
 }
 
 namespace IPC {
@@ -36,16 +35,6 @@
   static void Log(const param_type& p, std::string* l);
 };
 
-template <>
-struct ParamTraits<media::EncryptionScheme> {
-  typedef media::EncryptionScheme param_type;
-  static void Write(base::Pickle* m, const param_type& p);
-  static bool Read(const base::Pickle* m,
-                   base::PickleIterator* iter,
-                   param_type* r);
-  static void Log(const param_type& p, std::string* l);
-};
-
 }  // namespace IPC
 
 #endif  // MEDIA_BASE_IPC_MEDIA_PARAM_TRAITS_H_
diff --git a/media/base/ipc/media_param_traits_macros.h b/media/base/ipc/media_param_traits_macros.h
index 966177e..805726b 100644
--- a/media/base/ipc/media_param_traits_macros.h
+++ b/media/base/ipc/media_param_traits_macros.h
@@ -104,11 +104,8 @@
 
 IPC_ENUM_TRAITS_MAX_VALUE(media::EmeInitDataType, media::EmeInitDataType::MAX)
 
-IPC_ENUM_TRAITS_MAX_VALUE(media::EncryptionMode,
-                          media::EncryptionMode::kMaxValue)
-
-IPC_ENUM_TRAITS_MAX_VALUE(media::EncryptionScheme::CipherMode,
-                          media::EncryptionScheme::CipherMode::CIPHER_MODE_MAX)
+IPC_ENUM_TRAITS_MAX_VALUE(media::EncryptionScheme,
+                          media::EncryptionScheme::kMaxValue)
 
 IPC_ENUM_TRAITS_MAX_VALUE(media::HdcpVersion,
                           media::HdcpVersion::kHdcpVersionMax)
diff --git a/media/base/key_system_properties.h b/media/base/key_system_properties.h
index c61b903..b8f1695 100644
--- a/media/base/key_system_properties.h
+++ b/media/base/key_system_properties.h
@@ -28,7 +28,7 @@
 
   // Returns the configuration rule for supporting |encryption_scheme|.
   virtual EmeConfigRule GetEncryptionSchemeConfigRule(
-      EncryptionMode encryption_scheme) const = 0;
+      EncryptionScheme encryption_scheme) const = 0;
 
   // Returns the codecs supported by this key system.
   virtual SupportedCodecs GetSupportedCodecs() const = 0;
diff --git a/media/base/key_systems.cc b/media/base/key_systems.cc
index 82c00b09..88cb98d 100644
--- a/media/base/key_systems.cc
+++ b/media/base/key_systems.cc
@@ -134,12 +134,12 @@
   }
 
   media::EmeConfigRule GetEncryptionSchemeConfigRule(
-      media::EncryptionMode encryption_scheme) const override {
+      media::EncryptionScheme encryption_scheme) const override {
     switch (encryption_scheme) {
-      case media::EncryptionMode::kCenc:
-      case media::EncryptionMode::kCbcs:
+      case media::EncryptionScheme::kCenc:
+      case media::EncryptionScheme::kCbcs:
         return media::EmeConfigRule::SUPPORTED;
-      case media::EncryptionMode::kUnencrypted:
+      case media::EncryptionScheme::kUnencrypted:
         break;
     }
     NOTREACHED();
@@ -251,7 +251,7 @@
 
   EmeConfigRule GetEncryptionSchemeConfigRule(
       const std::string& key_system,
-      EncryptionMode encryption_scheme) const override;
+      EncryptionScheme encryption_scheme) const override;
 
   EmeConfigRule GetContentTypeConfigRule(
       const std::string& key_system,
@@ -565,7 +565,7 @@
 
 EmeConfigRule KeySystemsImpl::GetEncryptionSchemeConfigRule(
     const std::string& key_system,
-    EncryptionMode encryption_scheme) const {
+    EncryptionScheme encryption_scheme) const {
   DCHECK(thread_checker_.CalledOnValidThread());
 
   auto key_system_iter = key_system_properties_map_.find(key_system);
diff --git a/media/base/key_systems.h b/media/base/key_systems.h
index 645f434..c912c1bb 100644
--- a/media/base/key_systems.h
+++ b/media/base/key_systems.h
@@ -42,7 +42,7 @@
   // Returns the configuration rule for supporting |encryption_scheme|.
   virtual EmeConfigRule GetEncryptionSchemeConfigRule(
       const std::string& key_system,
-      EncryptionMode encryption_scheme) const = 0;
+      EncryptionScheme encryption_scheme) const = 0;
 
   // Returns the configuration rule for supporting a container and a list of
   // codecs.
diff --git a/media/base/key_systems_unittest.cc b/media/base/key_systems_unittest.cc
index 3782240..29c042a 100644
--- a/media/base/key_systems_unittest.cc
+++ b/media/base/key_systems_unittest.cc
@@ -93,9 +93,9 @@
   std::string GetKeySystemName() const override { return name_; }
 
   EmeConfigRule GetEncryptionSchemeConfigRule(
-      EncryptionMode encryption_scheme) const override {
-    return (encryption_scheme == EncryptionMode::kUnencrypted ||
-            encryption_scheme == EncryptionMode::kCenc)
+      EncryptionScheme encryption_scheme) const override {
+    return (encryption_scheme == EncryptionScheme::kUnencrypted ||
+            encryption_scheme == EncryptionScheme::kCenc)
                ? EmeConfigRule::SUPPORTED
                : EmeConfigRule::NOT_SUPPORTED;
   }
@@ -125,12 +125,12 @@
   // Pretend clear (unencrypted) and 'cenc' content are always supported. But
   // 'cbcs' is not supported by hardware secure codecs.
   EmeConfigRule GetEncryptionSchemeConfigRule(
-      EncryptionMode encryption_scheme) const override {
+      EncryptionScheme encryption_scheme) const override {
     switch (encryption_scheme) {
-      case media::EncryptionMode::kUnencrypted:
-      case media::EncryptionMode::kCenc:
+      case media::EncryptionScheme::kUnencrypted:
+      case media::EncryptionScheme::kCenc:
         return media::EmeConfigRule::SUPPORTED;
-      case media::EncryptionMode::kCbcs:
+      case media::EncryptionScheme::kCbcs:
         return media::EmeConfigRule::HW_SECURE_CODECS_NOT_ALLOWED;
     }
     NOTREACHED();
@@ -170,7 +170,7 @@
 };
 
 void ExpectEncryptionSchemeConfigRule(const std::string& key_system,
-                                      EncryptionMode encryption_scheme,
+                                      EncryptionScheme encryption_scheme,
                                       EmeConfigRule expected_rule) {
   EXPECT_EQ(expected_rule,
             KeySystems::GetInstance()->GetEncryptionSchemeConfigRule(
@@ -626,11 +626,11 @@
 
 TEST_F(KeySystemsTest,
        IsSupportedKeySystem_UsesAesDecryptor_EncryptionSchemes) {
-  ExpectEncryptionSchemeConfigRule(kUsesAes, EncryptionMode::kUnencrypted,
+  ExpectEncryptionSchemeConfigRule(kUsesAes, EncryptionScheme::kUnencrypted,
                                    EmeConfigRule::SUPPORTED);
-  ExpectEncryptionSchemeConfigRule(kUsesAes, EncryptionMode::kCenc,
+  ExpectEncryptionSchemeConfigRule(kUsesAes, EncryptionScheme::kCenc,
                                    EmeConfigRule::SUPPORTED);
-  ExpectEncryptionSchemeConfigRule(kUsesAes, EncryptionMode::kCbcs,
+  ExpectEncryptionSchemeConfigRule(kUsesAes, EncryptionScheme::kCbcs,
                                    EmeConfigRule::NOT_SUPPORTED);
 }
 
@@ -760,11 +760,11 @@
   if (!CanRunExternalKeySystemTests())
     return;
 
-  ExpectEncryptionSchemeConfigRule(kExternal, EncryptionMode::kUnencrypted,
+  ExpectEncryptionSchemeConfigRule(kExternal, EncryptionScheme::kUnencrypted,
                                    EmeConfigRule::SUPPORTED);
-  ExpectEncryptionSchemeConfigRule(kExternal, EncryptionMode::kCenc,
+  ExpectEncryptionSchemeConfigRule(kExternal, EncryptionScheme::kCenc,
                                    EmeConfigRule::SUPPORTED);
-  ExpectEncryptionSchemeConfigRule(kExternal, EncryptionMode::kCbcs,
+  ExpectEncryptionSchemeConfigRule(kExternal, EncryptionScheme::kCbcs,
                                    EmeConfigRule::HW_SECURE_CODECS_NOT_ALLOWED);
 }
 
diff --git a/media/base/media_util.cc b/media/base/media_util.cc
index 501574d..66f23be 100644
--- a/media/base/media_util.cc
+++ b/media/base/media_util.cc
@@ -5,7 +5,6 @@
 #include "media/base/media_util.h"
 
 #include "base/metrics/histogram_macros.h"
-#include "media/base/encryption_pattern.h"
 
 namespace media {
 
@@ -42,15 +41,6 @@
   return std::vector<uint8_t>();
 }
 
-EncryptionScheme Unencrypted() {
-  return EncryptionScheme();
-}
-
-EncryptionScheme AesCtrEncryptionScheme() {
-  return EncryptionScheme(EncryptionScheme::CIPHER_MODE_AES_CTR,
-                          EncryptionPattern());
-}
-
 void ReportPepperVideoDecoderOutputPictureCountHW(int height) {
   UMA_HISTOGRAM_ENUMERATION("Media.PepperVideoDecoderOutputPictureCount.HW",
                             GetMediaVideoHeight(height));
diff --git a/media/base/media_util.h b/media/base/media_util.h
index d5f2600..65aee57e 100644
--- a/media/base/media_util.h
+++ b/media/base/media_util.h
@@ -9,7 +9,6 @@
 #include <vector>
 
 #include "base/macros.h"
-#include "media/base/encryption_scheme.h"
 #include "media/base/media_export.h"
 #include "media/base/media_log.h"
 
@@ -19,11 +18,6 @@
 // constructed with empty extra data.
 MEDIA_EXPORT std::vector<uint8_t> EmptyExtraData();
 
-// The following helper functions return new instances of EncryptionScheme that
-// indicate widely used settings.
-MEDIA_EXPORT EncryptionScheme Unencrypted();
-MEDIA_EXPORT EncryptionScheme AesCtrEncryptionScheme();
-
 // Helpers for PPAPI UMAs. There wasn't an obvious place to put them in
 // //content/renderer/pepper.
 MEDIA_EXPORT void ReportPepperVideoDecoderOutputPictureCountHW(int height);
diff --git a/media/base/test_helpers.cc b/media/base/test_helpers.cc
index 0bc65a0..97bca27 100644
--- a/media/base/test_helpers.cc
+++ b/media/base/test_helpers.cc
@@ -139,7 +139,7 @@
       codec, profile, VideoDecoderConfig::AlphaMode::kIsOpaque, color_space,
       VideoTransformation(rotation), coded_size, visible_rect, natural_size,
       EmptyExtraData(),
-      is_encrypted ? AesCtrEncryptionScheme() : Unencrypted());
+      is_encrypted ? EncryptionScheme::kCenc : EncryptionScheme::kUnencrypted);
 }
 
 static VideoCodecProfile MinProfile(VideoCodec codec) {
@@ -243,13 +243,13 @@
 AudioDecoderConfig TestAudioConfig::Normal() {
   return AudioDecoderConfig(kCodecVorbis, kSampleFormatPlanarF32,
                             CHANNEL_LAYOUT_STEREO, 44100, EmptyExtraData(),
-                            Unencrypted());
+                            EncryptionScheme::kUnencrypted);
 }
 
 AudioDecoderConfig TestAudioConfig::NormalEncrypted() {
   return AudioDecoderConfig(kCodecVorbis, kSampleFormatPlanarF32,
                             CHANNEL_LAYOUT_STEREO, 44100, EmptyExtraData(),
-                            AesCtrEncryptionScheme());
+                            EncryptionScheme::kCenc);
 }
 
 // static
diff --git a/media/base/video_decoder_config.cc b/media/base/video_decoder_config.cc
index c98ad08..dfe1f75 100644
--- a/media/base/video_decoder_config.cc
+++ b/media/base/video_decoder_config.cc
@@ -73,17 +73,16 @@
       alpha_mode_(AlphaMode::kIsOpaque),
       transformation_(kNoTransformation) {}
 
-VideoDecoderConfig::VideoDecoderConfig(
-    VideoCodec codec,
-    VideoCodecProfile profile,
-    AlphaMode alpha_mode,
-    const VideoColorSpace& color_space,
-    VideoTransformation rotation,
-    const gfx::Size& coded_size,
-    const gfx::Rect& visible_rect,
-    const gfx::Size& natural_size,
-    const std::vector<uint8_t>& extra_data,
-    const EncryptionScheme& encryption_scheme) {
+VideoDecoderConfig::VideoDecoderConfig(VideoCodec codec,
+                                       VideoCodecProfile profile,
+                                       AlphaMode alpha_mode,
+                                       const VideoColorSpace& color_space,
+                                       VideoTransformation rotation,
+                                       const gfx::Size& coded_size,
+                                       const gfx::Rect& visible_rect,
+                                       const gfx::Size& natural_size,
+                                       const std::vector<uint8_t>& extra_data,
+                                       EncryptionScheme encryption_scheme) {
   Initialize(codec, profile, alpha_mode, color_space, rotation, coded_size,
              visible_rect, natural_size, extra_data, encryption_scheme);
 }
@@ -119,7 +118,7 @@
                                     const gfx::Rect& visible_rect,
                                     const gfx::Size& natural_size,
                                     const std::vector<uint8_t>& extra_data,
-                                    const EncryptionScheme& encryption_scheme) {
+                                    EncryptionScheme encryption_scheme) {
   codec_ = codec;
   profile_ = profile;
   alpha_mode_ = alpha_mode;
@@ -146,7 +145,7 @@
          visible_rect() == config.visible_rect() &&
          natural_size() == config.natural_size() &&
          extra_data() == config.extra_data() &&
-         encryption_scheme().Matches(config.encryption_scheme()) &&
+         encryption_scheme() == config.encryption_scheme() &&
          color_space_info() == config.color_space_info() &&
          hdr_metadata() == config.hdr_metadata();
 }
@@ -197,16 +196,17 @@
 
 void VideoDecoderConfig::SetIsEncrypted(bool is_encrypted) {
   if (!is_encrypted) {
-    DCHECK(encryption_scheme_.is_encrypted()) << "Config is already clear.";
-    encryption_scheme_ = Unencrypted();
+    DCHECK_NE(encryption_scheme_, EncryptionScheme::kUnencrypted)
+        << "Config is already clear.";
+    encryption_scheme_ = EncryptionScheme::kUnencrypted;
   } else {
-    DCHECK(!encryption_scheme_.is_encrypted())
+    DCHECK_EQ(encryption_scheme_, EncryptionScheme::kUnencrypted)
         << "Config is already encrypted.";
     // TODO(xhwang): This is only used to guide decoder selection, so set
     // a common encryption scheme that should be supported by all decrypting
     // decoders. We should be able to remove this when we support switching
     // decoders at run time. See http://crbug.com/695595
-    encryption_scheme_ = AesCtrEncryptionScheme();
+    encryption_scheme_ = EncryptionScheme::kCenc;
   }
 }
 
diff --git a/media/base/video_decoder_config.h b/media/base/video_decoder_config.h
index afe139a..e9ca279 100644
--- a/media/base/video_decoder_config.h
+++ b/media/base/video_decoder_config.h
@@ -48,7 +48,7 @@
                      const gfx::Rect& visible_rect,
                      const gfx::Size& natural_size,
                      const std::vector<uint8_t>& extra_data,
-                     const EncryptionScheme& encryption_scheme);
+                     EncryptionScheme encryption_scheme);
   VideoDecoderConfig(const VideoDecoderConfig& other);
 
   ~VideoDecoderConfig();
@@ -63,7 +63,7 @@
                   const gfx::Rect& visible_rect,
                   const gfx::Size& natural_size,
                   const std::vector<uint8_t>& extra_data,
-                  const EncryptionScheme& encryption_scheme);
+                  EncryptionScheme encryption_scheme);
 
   // Returns true if this object has appropriate configuration values, false
   // otherwise.
@@ -140,12 +140,12 @@
   // Whether the video stream is potentially encrypted.
   // Note that in a potentially encrypted video stream, individual buffers
   // can be encrypted or not encrypted.
-  bool is_encrypted() const { return encryption_scheme_.is_encrypted(); }
+  bool is_encrypted() const {
+    return encryption_scheme_ != EncryptionScheme::kUnencrypted;
+  }
 
   // Encryption scheme used for encrypted buffers.
-  const EncryptionScheme& encryption_scheme() const {
-    return encryption_scheme_;
-  }
+  EncryptionScheme encryption_scheme() const { return encryption_scheme_; }
 
   // Color space of the image data.
   void set_color_space_info(const VideoColorSpace& color_space);
@@ -175,7 +175,7 @@
 
   std::vector<uint8_t> extra_data_;
 
-  EncryptionScheme encryption_scheme_;
+  EncryptionScheme encryption_scheme_ = EncryptionScheme::kUnencrypted;
 
   VideoColorSpace color_space_info_;
   base::Optional<HDRMetadata> hdr_metadata_;
diff --git a/media/base/video_decoder_config_unittest.cc b/media/base/video_decoder_config_unittest.cc
index 636e7a4..6c083a0 100644
--- a/media/base/video_decoder_config_unittest.cc
+++ b/media/base/video_decoder_config_unittest.cc
@@ -19,14 +19,14 @@
                             VideoDecoderConfig::AlphaMode::kIsOpaque,
                             VideoColorSpace(), kNoTransformation, kCodedSize,
                             kVisibleRect, kNaturalSize, EmptyExtraData(),
-                            Unencrypted());
+                            EncryptionScheme::kUnencrypted);
   EXPECT_TRUE(config.IsValidConfig());
   EXPECT_EQ(config.alpha_mode(), VideoDecoderConfig::AlphaMode::kIsOpaque);
 
   config.Initialize(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN,
                     VideoDecoderConfig::AlphaMode::kHasAlpha, VideoColorSpace(),
                     kNoTransformation, kCodedSize, kVisibleRect, kNaturalSize,
-                    EmptyExtraData(), Unencrypted());
+                    EmptyExtraData(), EncryptionScheme::kUnencrypted);
   EXPECT_EQ(config.alpha_mode(), VideoDecoderConfig::AlphaMode::kHasAlpha);
 }
 
@@ -35,7 +35,7 @@
   VideoDecoderConfig config(
       kCodecVP8, VP8PROFILE_ANY, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace(), kNoTransformation, kCodedSize, kVisibleRect,
-      natural_size, EmptyExtraData(), Unencrypted());
+      natural_size, EmptyExtraData(), EncryptionScheme::kUnencrypted);
   EXPECT_FALSE(config.IsValidConfig());
 }
 
@@ -44,7 +44,7 @@
   VideoDecoderConfig config(
       kCodecVP8, VP8PROFILE_ANY, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace(), kNoTransformation, kCodedSize, kVisibleRect,
-      natural_size, EmptyExtraData(), Unencrypted());
+      natural_size, EmptyExtraData(), EncryptionScheme::kUnencrypted);
   EXPECT_FALSE(config.IsValidConfig());
 }
 
@@ -53,7 +53,7 @@
   VideoDecoderConfig config(
       kCodecVP8, VP8PROFILE_ANY, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace(), kNoTransformation, kCodedSize, kVisibleRect,
-      natural_size, EmptyExtraData(), Unencrypted());
+      natural_size, EmptyExtraData(), EncryptionScheme::kUnencrypted);
   EXPECT_FALSE(config.IsValidConfig());
 }
 
@@ -62,7 +62,7 @@
   VideoDecoderConfig config(
       kCodecVP8, VP8PROFILE_ANY, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace(), kNoTransformation, kCodedSize, kVisibleRect,
-      natural_size, EmptyExtraData(), Unencrypted());
+      natural_size, EmptyExtraData(), EncryptionScheme::kUnencrypted);
   EXPECT_FALSE(config.IsValidConfig());
 }
 
@@ -73,7 +73,7 @@
   VideoDecoderConfig config(
       kCodecVP8, VP8PROFILE_ANY, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace(), kNoTransformation, kCodedSize, kVisibleRect,
-      natural_size, EmptyExtraData(), Unencrypted());
+      natural_size, EmptyExtraData(), EncryptionScheme::kUnencrypted);
   EXPECT_FALSE(config.IsValidConfig());
 }
 
@@ -87,7 +87,7 @@
   VideoDecoderConfig config(
       kCodecVP8, VP8PROFILE_ANY, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace(), kNoTransformation, kCodedSize, kVisibleRect,
-      natural_size, EmptyExtraData(), Unencrypted());
+      natural_size, EmptyExtraData(), EncryptionScheme::kUnencrypted);
   EXPECT_FALSE(config.IsValidConfig());
 }
 
diff --git a/media/base/video_thumbnail_decoder_unittest.cc b/media/base/video_thumbnail_decoder_unittest.cc
index 5cdf459..57550ae1 100644
--- a/media/base/video_thumbnail_decoder_unittest.cc
+++ b/media/base/video_thumbnail_decoder_unittest.cc
@@ -38,7 +38,7 @@
     VideoDecoderConfig valid_config(
         kCodecVP8, VP8PROFILE_ANY, VideoDecoderConfig::AlphaMode::kIsOpaque,
         VideoColorSpace(), kNoTransformation, gfx::Size(1, 1), gfx::Rect(1, 1),
-        gfx::Size(1, 1), EmptyExtraData(), Unencrypted());
+        gfx::Size(1, 1), EmptyExtraData(), EncryptionScheme::kUnencrypted);
 
     thumbnail_decoder_ = std::make_unique<VideoThumbnailDecoder>(
         std::move(mock_video_decoder), valid_config, std::vector<uint8_t>{0u});
diff --git a/media/blink/key_system_config_selector.cc b/media/blink/key_system_config_selector.cc
index faed6ec7f..6a98a4f1 100644
--- a/media/blink/key_system_config_selector.cc
+++ b/media/blink/key_system_config_selector.cc
@@ -378,11 +378,11 @@
     // compatibility and simplicity, we treat kNotSpecified the same as kCenc.
     case EmeEncryptionScheme::kNotSpecified:
     case EmeEncryptionScheme::kCenc:
-      return key_systems_->GetEncryptionSchemeConfigRule(key_system,
-                                                         EncryptionMode::kCenc);
+      return key_systems_->GetEncryptionSchemeConfigRule(
+          key_system, EncryptionScheme::kCenc);
     case EmeEncryptionScheme::kCbcs:
-      return key_systems_->GetEncryptionSchemeConfigRule(key_system,
-                                                         EncryptionMode::kCbcs);
+      return key_systems_->GetEncryptionSchemeConfigRule(
+          key_system, EncryptionScheme::kCbcs);
   }
 
   NOTREACHED();
diff --git a/media/blink/key_system_config_selector_unittest.cc b/media/blink/key_system_config_selector_unittest.cc
index 2299401..f484498 100644
--- a/media/blink/key_system_config_selector_unittest.cc
+++ b/media/blink/key_system_config_selector_unittest.cc
@@ -77,17 +77,18 @@
 constexpr EncryptionScheme kDisallowHwSecureCodecEncryptionScheme =
     EncryptionScheme::kCbcs;
 
-EncryptionMode ConvertEncryptionScheme(EncryptionScheme encryption_scheme) {
+media::EncryptionScheme ConvertEncryptionScheme(
+    EncryptionScheme encryption_scheme) {
   switch (encryption_scheme) {
     case EncryptionScheme::kNotSpecified:
     case EncryptionScheme::kCenc:
-      return EncryptionMode::kCenc;
+      return media::EncryptionScheme::kCenc;
     case EncryptionScheme::kCbcs:
-      return EncryptionMode::kCbcs;
+      return media::EncryptionScheme::kCbcs;
   }
 
   NOTREACHED();
-  return EncryptionMode::kUnencrypted;
+  return media::EncryptionScheme::kUnencrypted;
 }
 
 WebString MakeCodecs(const std::string& a, const std::string& b) {
@@ -215,7 +216,7 @@
 
   EmeConfigRule GetEncryptionSchemeConfigRule(
       const std::string& key_system,
-      EncryptionMode encryption_scheme) const override {
+      media::EncryptionScheme encryption_scheme) const override {
     if (encryption_scheme ==
         ConvertEncryptionScheme(kSupportedEncryptionScheme)) {
       return EmeConfigRule::SUPPORTED;
diff --git a/media/blink/video_decode_stats_reporter_unittest.cc b/media/blink/video_decode_stats_reporter_unittest.cc
index 7ce60a1..1dfba937 100644
--- a/media/blink/video_decode_stats_reporter_unittest.cc
+++ b/media/blink/video_decode_stats_reporter_unittest.cc
@@ -52,7 +52,7 @@
   return VideoDecoderConfig(
       codec, profile, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace::JPEG(), kNoTransformation, coded_size, visible_rect,
-      natural_size, EmptyExtraData(), Unencrypted());
+      natural_size, EmptyExtraData(), EncryptionScheme::kUnencrypted);
 }
 
 PipelineStatistics MakeStats(int frames_decoded,
diff --git a/media/blink/watch_time_reporter_unittest.cc b/media/blink/watch_time_reporter_unittest.cc
index 0a12e04..4cb4b2d 100644
--- a/media/blink/watch_time_reporter_unittest.cc
+++ b/media/blink/watch_time_reporter_unittest.cc
@@ -1102,8 +1102,8 @@
       has_video_ ? H264PROFILE_MAIN : VIDEO_CODEC_PROFILE_UNKNOWN,
       has_audio_ ? "FirstAudioDecoder" : "",
       has_video_ ? "FirstVideoDecoder" : "",
-      has_audio_ ? EncryptionMode::kCenc : EncryptionMode::kUnencrypted,
-      has_video_ ? EncryptionMode::kCbcs : EncryptionMode::kUnencrypted,
+      has_audio_ ? EncryptionScheme::kCenc : EncryptionScheme::kUnencrypted,
+      has_video_ ? EncryptionScheme::kCbcs : EncryptionScheme::kUnencrypted,
       has_video_ ? gfx::Size(800, 600) : gfx::Size());
 
   // Get a pointer to our original properties since we're not allowed to use
@@ -1137,7 +1137,7 @@
       .Times((has_audio_ && has_video_) ? 3 : 2);
   wtr_->UpdateSecondaryProperties(mojom::SecondaryPlaybackProperties::New(
       kUnknownAudioCodec, kUnknownVideoCodec, VIDEO_CODEC_PROFILE_UNKNOWN, "",
-      "", EncryptionMode::kUnencrypted, EncryptionMode::kUnencrypted,
+      "", EncryptionScheme::kUnencrypted, EncryptionScheme::kUnencrypted,
       kSizeJustRight));
   EXPECT_TRUE(IsMonitoring());
 
@@ -1159,7 +1159,7 @@
       .Times((has_audio_ && has_video_) ? 3 : 2);
   wtr_->UpdateSecondaryProperties(mojom::SecondaryPlaybackProperties::New(
       kUnknownAudioCodec, kUnknownVideoCodec, VIDEO_CODEC_PROFILE_UNKNOWN, "",
-      "", EncryptionMode::kUnencrypted, EncryptionMode::kUnencrypted,
+      "", EncryptionScheme::kUnencrypted, EncryptionScheme::kUnencrypted,
       kSizeTooSmall));
   EXPECT_WATCH_TIME_FINALIZED();
   CycleReportingTimer();
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index c6c8b77..657890d0 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -172,31 +172,19 @@
 
 // These values are persisted to UMA. Entries should not be renumbered and
 // numeric values should never be reused.
-// TODO(crbug.com/825041): This should use EncryptionMode when kUnencrypted
+// TODO(crbug.com/825041): This should use EncryptionScheme when kUnencrypted
 // removed.
 enum class EncryptionSchemeUMA { kCenc = 0, kCbcs = 1, kCount };
 
 EncryptionSchemeUMA DetermineEncryptionSchemeUMAValue(
-    const EncryptionScheme& encryption_scheme) {
-  if (encryption_scheme.mode() == EncryptionScheme::CIPHER_MODE_AES_CBC)
+    EncryptionScheme encryption_scheme) {
+  if (encryption_scheme == EncryptionScheme::kCbcs)
     return EncryptionSchemeUMA::kCbcs;
 
-  DCHECK_EQ(encryption_scheme.mode(), EncryptionScheme::CIPHER_MODE_AES_CTR);
+  DCHECK_EQ(encryption_scheme, EncryptionScheme::kCenc);
   return EncryptionSchemeUMA::kCenc;
 }
 
-EncryptionMode DetermineEncryptionMode(
-    const EncryptionScheme& encryption_scheme) {
-  switch (encryption_scheme.mode()) {
-    case EncryptionScheme::CIPHER_MODE_UNENCRYPTED:
-      return EncryptionMode::kUnencrypted;
-    case EncryptionScheme::CIPHER_MODE_AES_CTR:
-      return EncryptionMode::kCenc;
-    case EncryptionScheme::CIPHER_MODE_AES_CBC:
-      return EncryptionMode::kCbcs;
-  }
-}
-
 #if BUILDFLAG(ENABLE_FFMPEG)
 // Returns true if |url| represents (or is likely to) a local file.
 bool IsLocalFile(const GURL& url) {
@@ -3206,10 +3194,8 @@
           pipeline_metadata_.video_decoder_config.codec(),
           pipeline_metadata_.video_decoder_config.profile(),
           audio_decoder_name_, video_decoder_name_,
-          DetermineEncryptionMode(
-              pipeline_metadata_.audio_decoder_config.encryption_scheme()),
-          DetermineEncryptionMode(
-              pipeline_metadata_.video_decoder_config.encryption_scheme()),
+          pipeline_metadata_.audio_decoder_config.encryption_scheme(),
+          pipeline_metadata_.video_decoder_config.encryption_scheme(),
           pipeline_metadata_.natural_size));
 }
 
@@ -3585,11 +3571,11 @@
 
 void WebMediaPlayerImpl::RecordEncryptionScheme(
     const std::string& stream_name,
-    const EncryptionScheme& encryption_scheme) {
+    EncryptionScheme encryption_scheme) {
   DCHECK(stream_name == "Audio" || stream_name == "Video");
 
   // If the stream is not encrypted, don't record it.
-  if (encryption_scheme.mode() == EncryptionScheme::CIPHER_MODE_UNENCRYPTED)
+  if (encryption_scheme == EncryptionScheme::kUnencrypted)
     return;
 
   base::UmaHistogramEnumeration(
diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h
index 14ebb86c..2fba773 100644
--- a/media/blink/webmediaplayer_impl.h
+++ b/media/blink/webmediaplayer_impl.h
@@ -27,6 +27,7 @@
 #include "cc/layers/surface_layer.h"
 #include "components/viz/common/gpu/context_provider.h"
 #include "media/base/cdm_config.h"
+#include "media/base/encryption_scheme.h"
 #include "media/base/media_observer.h"
 #include "media/base/media_tracks.h"
 #include "media/base/overlay_info.h"
@@ -77,7 +78,6 @@
 namespace media {
 class CdmContextRef;
 class ChunkDemuxer;
-class EncryptionScheme;
 class VideoDecodeStatsReporter;
 class MediaLog;
 class UrlIndex;
@@ -594,7 +594,7 @@
   // Records the encryption scheme used by the stream |stream_name|. This is
   // only recorded when metadata is available.
   void RecordEncryptionScheme(const std::string& stream_name,
-                              const EncryptionScheme& encryption_scheme);
+                              EncryptionScheme encryption_scheme);
 
   // Returns whether the player is currently displayed in Picture-in-Picture.
   // It will return true even if the player is in AutoPIP mode.
diff --git a/media/cast/sender/h264_vt_encoder_unittest.cc b/media/cast/sender/h264_vt_encoder_unittest.cc
index 3c1c7b7..5c95e614 100644
--- a/media/cast/sender/h264_vt_encoder_unittest.cc
+++ b/media/cast/sender/h264_vt_encoder_unittest.cc
@@ -305,7 +305,7 @@
   VideoDecoderConfig config(
       kCodecH264, H264PROFILE_MAIN, alpha_mode, VideoColorSpace(),
       kNoTransformation, frame_->coded_size(), frame_->visible_rect(),
-      frame_->natural_size(), EmptyExtraData(), Unencrypted());
+      frame_->natural_size(), EmptyExtraData(), EncryptionScheme::kUnencrypted);
   scoped_refptr<EndToEndFrameChecker> checker(new EndToEndFrameChecker(config));
 
   VideoEncoder::FrameEncodedCallback cb =
diff --git a/media/cdm/aes_decryptor.cc b/media/cdm/aes_decryptor.cc
index 176050a..4abcdfa7 100644
--- a/media/cdm/aes_decryptor.cc
+++ b/media/cdm/aes_decryptor.cc
@@ -155,10 +155,10 @@
   CHECK(input.data_size());
   CHECK(input.decrypt_config());
 
-  if (input.decrypt_config()->encryption_mode() == EncryptionMode::kCenc)
+  if (input.decrypt_config()->encryption_scheme() == EncryptionScheme::kCenc)
     return DecryptCencBuffer(input, key);
 
-  if (input.decrypt_config()->encryption_mode() == EncryptionMode::kCbcs)
+  if (input.decrypt_config()->encryption_scheme() == EncryptionScheme::kCbcs)
     return DecryptCbcsBuffer(input, key);
 
   DVLOG(1) << "Only 'cenc' and 'cbcs' modes supported.";
diff --git a/media/cdm/cbcs_decryptor.cc b/media/cdm/cbcs_decryptor.cc
index 94c18ad..10f4dfd 100644
--- a/media/cdm/cbcs_decryptor.cc
+++ b/media/cdm/cbcs_decryptor.cc
@@ -126,7 +126,7 @@
 
   const DecryptConfig* decrypt_config = input.decrypt_config();
   DCHECK(decrypt_config) << "No need to call Decrypt() on unencrypted buffer.";
-  DCHECK_EQ(EncryptionMode::kCbcs, decrypt_config->encryption_mode());
+  DCHECK_EQ(EncryptionScheme::kCbcs, decrypt_config->encryption_scheme());
 
   DCHECK(decrypt_config->HasPattern());
   const EncryptionPattern pattern =
diff --git a/media/cdm/cdm_type_conversion.cc b/media/cdm/cdm_type_conversion.cc
index 159d63d2..e786316 100644
--- a/media/cdm/cdm_type_conversion.cc
+++ b/media/cdm/cdm_type_conversion.cc
@@ -203,31 +203,17 @@
   return cdm::kInternalError;
 }
 
-cdm::EncryptionScheme ToCdmEncryptionScheme(const EncryptionScheme& scheme) {
-  switch (scheme.mode()) {
-    case EncryptionScheme::CIPHER_MODE_UNENCRYPTED:
+cdm::EncryptionScheme ToCdmEncryptionScheme(EncryptionScheme scheme) {
+  switch (scheme) {
+    case EncryptionScheme::kUnencrypted:
       return cdm::EncryptionScheme::kUnencrypted;
-    case EncryptionScheme::CIPHER_MODE_AES_CTR:
+    case EncryptionScheme::kCenc:
       return cdm::EncryptionScheme::kCenc;
-    case EncryptionScheme::CIPHER_MODE_AES_CBC:
+    case EncryptionScheme::kCbcs:
       return cdm::EncryptionScheme::kCbcs;
   }
 
-  NOTREACHED() << "Unexpected EncryptionScheme mode " << scheme.mode();
-  return cdm::EncryptionScheme::kUnencrypted;
-}
-
-cdm::EncryptionScheme ToCdmEncryptionScheme(const EncryptionMode& mode) {
-  switch (mode) {
-    case EncryptionMode::kUnencrypted:
-      return cdm::EncryptionScheme::kUnencrypted;
-    case EncryptionMode::kCenc:
-      return cdm::EncryptionScheme::kCenc;
-    case EncryptionMode::kCbcs:
-      return cdm::EncryptionScheme::kCbcs;
-  }
-
-  NOTREACHED() << "Unexpected EncryptionMode";
+  NOTREACHED() << "Unexpected EncryptionScheme";
   return cdm::EncryptionScheme::kUnencrypted;
 }
 
@@ -626,7 +612,7 @@
   input_buffer->num_subsamples = num_subsamples;
 
   input_buffer->encryption_scheme =
-      ToCdmEncryptionScheme(decrypt_config->encryption_mode());
+      ToCdmEncryptionScheme(decrypt_config->encryption_scheme());
   if (decrypt_config->HasPattern()) {
     input_buffer->pattern = {
         decrypt_config->encryption_pattern()->crypt_byte_block(),
diff --git a/media/cdm/cdm_type_conversion.h b/media/cdm/cdm_type_conversion.h
index 2d9e670..d7b303a 100644
--- a/media/cdm/cdm_type_conversion.h
+++ b/media/cdm/cdm_type_conversion.h
@@ -51,9 +51,7 @@
 MEDIA_EXPORT cdm::KeyStatus ToCdmKeyStatus(CdmKeyInformation::KeyStatus status);
 
 MEDIA_EXPORT cdm::EncryptionScheme ToCdmEncryptionScheme(
-    const EncryptionScheme& scheme);
-MEDIA_EXPORT cdm::EncryptionScheme ToCdmEncryptionScheme(
-    const EncryptionMode& mode);
+    EncryptionScheme scheme);
 
 MEDIA_EXPORT CdmPromise::Exception ToMediaCdmPromiseException(
     cdm::Exception exception);
diff --git a/media/cdm/cenc_decryptor.cc b/media/cdm/cenc_decryptor.cc
index ae0442f..647362e 100644
--- a/media/cdm/cenc_decryptor.cc
+++ b/media/cdm/cenc_decryptor.cc
@@ -68,7 +68,7 @@
 
   const DecryptConfig* decrypt_config = input.decrypt_config();
   DCHECK(decrypt_config) << "No need to call Decrypt() on unencrypted buffer.";
-  DCHECK_EQ(EncryptionMode::kCenc, decrypt_config->encryption_mode());
+  DCHECK_EQ(EncryptionScheme::kCenc, decrypt_config->encryption_scheme());
 
   const std::string& iv = decrypt_config->iv();
   DCHECK_EQ(iv.size(), static_cast<size_t>(DecryptConfig::kDecryptionKeySize));
diff --git a/media/cdm/library_cdm/clear_key_cdm/cdm_video_decoder.cc b/media/cdm/library_cdm/clear_key_cdm/cdm_video_decoder.cc
index 7e62ba0..0321d2d 100644
--- a/media/cdm/library_cdm/clear_key_cdm/cdm_video_decoder.cc
+++ b/media/cdm/library_cdm/clear_key_cdm/cdm_video_decoder.cc
@@ -59,7 +59,7 @@
       gfx::Rect(coded_size), coded_size,
       std::vector<uint8_t>(config.extra_data,
                            config.extra_data + config.extra_data_size),
-      Unencrypted());
+      EncryptionScheme::kUnencrypted);
 
   return media_config;
 }
diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
index 72dc400..ddce138 100644
--- a/media/ffmpeg/ffmpeg_common.cc
+++ b/media/ffmpeg/ffmpeg_common.cc
@@ -26,7 +26,7 @@
 EncryptionScheme GetEncryptionScheme(const AVStream* stream) {
   AVDictionaryEntry* key =
       av_dict_get(stream->metadata, "enc_key_id", nullptr, 0);
-  return key ? AesCtrEncryptionScheme() : Unencrypted();
+  return key ? EncryptionScheme::kCenc : EncryptionScheme::kUnencrypted;
 }
 
 }  // namespace
@@ -318,10 +318,9 @@
   return AV_SAMPLE_FMT_NONE;
 }
 
-bool AVCodecContextToAudioDecoderConfig(
-    const AVCodecContext* codec_context,
-    const EncryptionScheme& encryption_scheme,
-    AudioDecoderConfig* config) {
+bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
+                                        EncryptionScheme encryption_scheme,
+                                        AudioDecoderConfig* config) {
   DCHECK_EQ(codec_context->codec_type, AVMEDIA_TYPE_AUDIO);
 
   AudioCodec codec = CodecIDToAudioCodec(codec_context->codec_id);
diff --git a/media/ffmpeg/ffmpeg_common.h b/media/ffmpeg/ffmpeg_common.h
index 3c6c62b..fbcfa14 100644
--- a/media/ffmpeg/ffmpeg_common.h
+++ b/media/ffmpeg/ffmpeg_common.h
@@ -15,6 +15,7 @@
 #include "base/time/time.h"
 #include "media/base/audio_codecs.h"
 #include "media/base/channel_layout.h"
+#include "media/base/encryption_scheme.h"
 #include "media/base/media_export.h"
 #include "media/base/sample_format.h"
 #include "media/base/video_codecs.h"
@@ -43,7 +44,6 @@
 constexpr int64_t kNoFFmpegTimestamp = static_cast<int64_t>(AV_NOPTS_VALUE);
 
 class AudioDecoderConfig;
-class EncryptionScheme;
 class VideoDecoderConfig;
 
 // The following implement the deleters declared in ffmpeg_deleters.h (which
@@ -114,7 +114,7 @@
 // is not modified.
 MEDIA_EXPORT bool AVCodecContextToAudioDecoderConfig(
     const AVCodecContext* codec_context,
-    const EncryptionScheme& encryption_scheme,
+    EncryptionScheme encryption_scheme,
     AudioDecoderConfig* config);
 
 // Converts FFmpeg's channel layout to chrome's ChannelLayout.  |channels| can
diff --git a/media/filters/android/media_codec_audio_decoder.cc b/media/filters/android/media_codec_audio_decoder.cc
index 209d799..c88bcab 100644
--- a/media/filters/android/media_codec_audio_decoder.cc
+++ b/media/filters/android/media_codec_audio_decoder.cc
@@ -314,7 +314,7 @@
       input_data.key_id = decrypt_config->key_id();
       input_data.iv = decrypt_config->iv();
       input_data.subsamples = decrypt_config->subsamples();
-      input_data.encryption_scheme = decrypt_config->encryption_mode();
+      input_data.encryption_scheme = decrypt_config->encryption_scheme();
       input_data.encryption_pattern = decrypt_config->encryption_pattern();
     }
     input_data.presentation_time = decoder_buffer->timestamp();
diff --git a/media/filters/audio_decoder_unittest.cc b/media/filters/audio_decoder_unittest.cc
index 62315337..ddac5fd0 100644
--- a/media/filters/audio_decoder_unittest.cc
+++ b/media/filters/audio_decoder_unittest.cc
@@ -209,7 +209,8 @@
 
     AudioDecoderConfig config;
     ASSERT_TRUE(AVCodecContextToAudioDecoderConfig(
-        reader_->codec_context_for_testing(), Unencrypted(), &config));
+        reader_->codec_context_for_testing(), EncryptionScheme::kUnencrypted,
+        &config));
 
 #if defined(OS_ANDROID) && BUILDFLAG(USE_PROPRIETARY_CODECS)
     // MEDIA_CODEC type requires config->extra_data() for AAC codec. For ADTS
@@ -224,7 +225,7 @@
                     &channel_layout, nullptr, nullptr, &extra_data),
                 0);
       config.Initialize(kCodecAAC, kSampleFormatS16, channel_layout,
-                        sample_rate, extra_data, Unencrypted(),
+                        sample_rate, extra_data, EncryptionScheme::kUnencrypted,
                         base::TimeDelta(), 0);
       ASSERT_FALSE(config.extra_data().empty());
     }
diff --git a/media/filters/audio_timestamp_validator_unittest.cc b/media/filters/audio_timestamp_validator_unittest.cc
index 2424091..f21e28c 100644
--- a/media/filters/audio_timestamp_validator_unittest.cc
+++ b/media/filters/audio_timestamp_validator_unittest.cc
@@ -63,8 +63,9 @@
 TEST_P(AudioTimestampValidatorTest, WarnForEraticTimes) {
   AudioDecoderConfig decoder_config;
   decoder_config.Initialize(kCodec, kSampleFormat, kChannelLayout,
-                            kSamplesPerSecond, EmptyExtraData(), Unencrypted(),
-                            kSeekPreroll, codec_delay_);
+                            kSamplesPerSecond, EmptyExtraData(),
+                            EncryptionScheme::kUnencrypted, kSeekPreroll,
+                            codec_delay_);
 
   // Validator should fail to stabilize pattern for timestamp expectations.
   EXPECT_MEDIA_LOG(
@@ -112,8 +113,9 @@
 TEST_P(AudioTimestampValidatorTest, NoWarningForValidTimes) {
   AudioDecoderConfig decoder_config;
   decoder_config.Initialize(kCodec, kSampleFormat, kChannelLayout,
-                            kSamplesPerSecond, EmptyExtraData(), Unencrypted(),
-                            kSeekPreroll, codec_delay_);
+                            kSamplesPerSecond, EmptyExtraData(),
+                            EncryptionScheme::kUnencrypted, kSeekPreroll,
+                            codec_delay_);
 
   // Validator should quickly stabilize pattern for timestamp expectations.
   EXPECT_MEDIA_LOG(HasSubstr("Failed to reconcile encoded audio times "
@@ -151,8 +153,9 @@
 TEST_P(AudioTimestampValidatorTest, SingleWarnForSingleLargeGap) {
   AudioDecoderConfig decoder_config;
   decoder_config.Initialize(kCodec, kSampleFormat, kChannelLayout,
-                            kSamplesPerSecond, EmptyExtraData(), Unencrypted(),
-                            kSeekPreroll, codec_delay_);
+                            kSamplesPerSecond, EmptyExtraData(),
+                            EncryptionScheme::kUnencrypted, kSeekPreroll,
+                            codec_delay_);
 
   AudioTimestampValidator validator(decoder_config, &media_log_);
 
@@ -196,8 +199,9 @@
 TEST_P(AudioTimestampValidatorTest, RepeatedWarnForSlowAccumulatingDrift) {
   AudioDecoderConfig decoder_config;
   decoder_config.Initialize(kCodec, kSampleFormat, kChannelLayout,
-                            kSamplesPerSecond, EmptyExtraData(), Unencrypted(),
-                            kSeekPreroll, codec_delay_);
+                            kSamplesPerSecond, EmptyExtraData(),
+                            EncryptionScheme::kUnencrypted, kSeekPreroll,
+                            codec_delay_);
 
   AudioTimestampValidator validator(decoder_config, &media_log_);
 
diff --git a/media/filters/decrypting_audio_decoder_unittest.cc b/media/filters/decrypting_audio_decoder_unittest.cc
index 1932020..acb150e 100644
--- a/media/filters/decrypting_audio_decoder_unittest.cc
+++ b/media/filters/decrypting_audio_decoder_unittest.cc
@@ -108,7 +108,7 @@
 
     config_.Initialize(kCodecVorbis, kSampleFormatPlanarF32,
                        CHANNEL_LAYOUT_STEREO, kSampleRate, EmptyExtraData(),
-                       AesCtrEncryptionScheme(), base::TimeDelta(), 0);
+                       EncryptionScheme::kCenc, base::TimeDelta(), 0);
     InitializeAndExpectResult(config_, true);
   }
 
@@ -276,7 +276,7 @@
 TEST_F(DecryptingAudioDecoderTest, Initialize_InvalidAudioConfig) {
   AudioDecoderConfig config(kUnknownAudioCodec, kUnknownSampleFormat,
                             CHANNEL_LAYOUT_STEREO, 0, EmptyExtraData(),
-                            AesCtrEncryptionScheme());
+                            EncryptionScheme::kCenc);
 
   InitializeAndExpectResult(config, false);
 }
@@ -289,7 +289,7 @@
 
   AudioDecoderConfig config(kCodecVorbis, kSampleFormatPlanarF32,
                             CHANNEL_LAYOUT_STEREO, kSampleRate,
-                            EmptyExtraData(), AesCtrEncryptionScheme());
+                            EmptyExtraData(), EncryptionScheme::kCenc);
   InitializeAndExpectResult(config, false);
 }
 
@@ -297,7 +297,7 @@
   SetCdmType(CDM_WITHOUT_DECRYPTOR);
   AudioDecoderConfig config(kCodecVorbis, kSampleFormatPlanarF32,
                             CHANNEL_LAYOUT_STEREO, kSampleRate,
-                            EmptyExtraData(), AesCtrEncryptionScheme());
+                            EmptyExtraData(), EncryptionScheme::kCenc);
   InitializeAndExpectResult(config, false);
 }
 
@@ -362,7 +362,7 @@
   // channel layout and samples_per_second.
   AudioDecoderConfig new_config(kCodecVorbis, kSampleFormatPlanarS16,
                                 CHANNEL_LAYOUT_5_1, 88200, EmptyExtraData(),
-                                AesCtrEncryptionScheme());
+                                EncryptionScheme::kCenc);
   EXPECT_NE(new_config.bits_per_channel(), config_.bits_per_channel());
   EXPECT_NE(new_config.channel_layout(), config_.channel_layout());
   EXPECT_NE(new_config.samples_per_second(), config_.samples_per_second());
@@ -384,7 +384,7 @@
   // channel layout and samples_per_second.
   AudioDecoderConfig new_config(kCodecVorbis, kSampleFormatPlanarS16,
                                 CHANNEL_LAYOUT_5_1, 88200, EmptyExtraData(),
-                                Unencrypted());
+                                EncryptionScheme::kUnencrypted);
   EXPECT_NE(new_config.bits_per_channel(), config_.bits_per_channel());
   EXPECT_NE(new_config.channel_layout(), config_.channel_layout());
   EXPECT_NE(new_config.samples_per_second(), config_.samples_per_second());
diff --git a/media/filters/decrypting_demuxer_stream_unittest.cc b/media/filters/decrypting_demuxer_stream_unittest.cc
index b927aa1..2d4f6931 100644
--- a/media/filters/decrypting_demuxer_stream_unittest.cc
+++ b/media/filters/decrypting_demuxer_stream_unittest.cc
@@ -145,7 +145,7 @@
 
     AudioDecoderConfig input_config(kCodecVorbis, kSampleFormatPlanarF32,
                                     CHANNEL_LAYOUT_STEREO, 44100,
-                                    EmptyExtraData(), AesCtrEncryptionScheme());
+                                    EmptyExtraData(), EncryptionScheme::kCenc);
     InitializeAudioAndExpectStatus(input_config, PIPELINE_OK);
 
     const AudioDecoderConfig& output_config =
@@ -326,7 +326,7 @@
   SetCdmType(CDM_WITHOUT_DECRYPTOR);
   AudioDecoderConfig input_config(kCodecVorbis, kSampleFormatPlanarF32,
                                   CHANNEL_LAYOUT_STEREO, 44100,
-                                  EmptyExtraData(), AesCtrEncryptionScheme());
+                                  EmptyExtraData(), EncryptionScheme::kCenc);
   InitializeAudioAndExpectStatus(input_config, DECODER_ERROR_NOT_SUPPORTED);
 }
 
@@ -502,7 +502,7 @@
 
   AudioDecoderConfig new_config(kCodecVorbis, kSampleFormatPlanarF32,
                                 CHANNEL_LAYOUT_STEREO, 88200, EmptyExtraData(),
-                                AesCtrEncryptionScheme());
+                                EncryptionScheme::kCenc);
   input_audio_stream_->set_audio_decoder_config(new_config);
 
   EXPECT_CALL(*input_audio_stream_, OnRead(_))
diff --git a/media/filters/ffmpeg_video_decoder_unittest.cc b/media/filters/ffmpeg_video_decoder_unittest.cc
index 24fe18f..5fdf779ea 100644
--- a/media/filters/ffmpeg_video_decoder_unittest.cc
+++ b/media/filters/ffmpeg_video_decoder_unittest.cc
@@ -225,7 +225,7 @@
                             VideoDecoderConfig::AlphaMode::kIsOpaque,
                             VideoColorSpace(), kNoTransformation, kCodedSize,
                             kVisibleRect, kNaturalSize, EmptyExtraData(),
-                            Unencrypted());
+                            EncryptionScheme::kUnencrypted);
   InitializeWithConfigWithResult(config, false);
 }
 
diff --git a/media/filters/frame_processor_unittest.cc b/media/filters/frame_processor_unittest.cc
index a907c1d..ee4dec0 100644
--- a/media/filters/frame_processor_unittest.cc
+++ b/media/filters/frame_processor_unittest.cc
@@ -345,9 +345,9 @@
         ASSERT_FALSE(audio_);
         audio_.reset(
             new ChunkDemuxerStream(DemuxerStream::AUDIO, MediaTrack::Id("1")));
-        AudioDecoderConfig decoder_config(kCodecVorbis, kSampleFormatPlanarF32,
-                                          CHANNEL_LAYOUT_STEREO, 1000,
-                                          EmptyExtraData(), Unencrypted());
+        AudioDecoderConfig decoder_config(
+            kCodecVorbis, kSampleFormatPlanarF32, CHANNEL_LAYOUT_STEREO, 1000,
+            EmptyExtraData(), EncryptionScheme::kUnencrypted);
         frame_processor_->OnPossibleAudioConfigUpdate(decoder_config);
         ASSERT_TRUE(
             audio_->UpdateAudioConfig(decoder_config, false, &media_log_));
diff --git a/media/filters/source_buffer_state_unittest.cc b/media/filters/source_buffer_state_unittest.cc
index c0b0dba..9221b928 100644
--- a/media/filters/source_buffer_state_unittest.cc
+++ b/media/filters/source_buffer_state_unittest.cc
@@ -29,7 +29,7 @@
 AudioDecoderConfig CreateAudioConfig(AudioCodec codec) {
   return AudioDecoderConfig(codec, kSampleFormatPlanarF32,
                             CHANNEL_LAYOUT_STEREO, 1000, EmptyExtraData(),
-                            Unencrypted());
+                            EncryptionScheme::kUnencrypted);
 }
 
 VideoDecoderConfig CreateVideoConfig(VideoCodec codec, int w, int h) {
@@ -39,7 +39,7 @@
                             VideoDecoderConfig::AlphaMode::kIsOpaque,
                             VideoColorSpace::REC709(), kNoTransformation, size,
                             visible_rect, size, EmptyExtraData(),
-                            Unencrypted());
+                            EncryptionScheme::kUnencrypted);
 }
 
 void AddAudioTrack(std::unique_ptr<MediaTracks>& t, AudioCodec codec, int id) {
diff --git a/media/filters/source_buffer_stream_unittest.cc b/media/filters/source_buffer_stream_unittest.cc
index 8364ab7d..0fd3b26 100644
--- a/media/filters/source_buffer_stream_unittest.cc
+++ b/media/filters/source_buffer_stream_unittest.cc
@@ -96,9 +96,9 @@
 
   void SetAudioStream() {
     video_config_ = TestVideoConfig::Invalid();
-    audio_config_.Initialize(kCodecVorbis, kSampleFormatPlanarF32,
-                             CHANNEL_LAYOUT_STEREO, 1000, EmptyExtraData(),
-                             Unencrypted(), base::TimeDelta(), 0);
+    audio_config_.Initialize(
+        kCodecVorbis, kSampleFormatPlanarF32, CHANNEL_LAYOUT_STEREO, 1000,
+        EmptyExtraData(), EncryptionScheme::kUnencrypted, base::TimeDelta(), 0);
     ResetStream<>(audio_config_);
 
     // Equivalent to 2ms per frame.
@@ -3892,7 +3892,8 @@
 // Test all the valid same timestamp cases for audio.
 TEST_F(SourceBufferStreamTest, SameTimestamp_Audio) {
   AudioDecoderConfig config(kCodecMP3, kSampleFormatF32, CHANNEL_LAYOUT_STEREO,
-                            44100, EmptyExtraData(), Unencrypted());
+                            44100, EmptyExtraData(),
+                            EncryptionScheme::kUnencrypted);
   ResetStream<>(config);
   Seek(0);
   NewCodedFrameGroupAppend("0K 0K 30K 30K");
@@ -4518,9 +4519,9 @@
   EXPECT_MEDIA_LOG(SkippingSpliceTooLittleOverlap(1250, 250));
 
   video_config_ = TestVideoConfig::Invalid();
-  audio_config_.Initialize(kCodecVorbis, kSampleFormatPlanarF32,
-                           CHANNEL_LAYOUT_STEREO, 4000, EmptyExtraData(),
-                           Unencrypted(), base::TimeDelta(), 0);
+  audio_config_.Initialize(
+      kCodecVorbis, kSampleFormatPlanarF32, CHANNEL_LAYOUT_STEREO, 4000,
+      EmptyExtraData(), EncryptionScheme::kUnencrypted, base::TimeDelta(), 0);
   ResetStream<>(audio_config_);
   // Equivalent to 0.5ms per frame.
   SetStreamInfo(2000, 2000);
@@ -4553,7 +4554,7 @@
 TEST_F(SourceBufferStreamTest, Audio_ConfigChangeWithPreroll) {
   AudioDecoderConfig new_config(kCodecVorbis, kSampleFormatPlanarF32,
                                 CHANNEL_LAYOUT_MONO, 2000, EmptyExtraData(),
-                                Unencrypted());
+                                EncryptionScheme::kUnencrypted);
   SetAudioStream();
   Seek(0);
 
@@ -4598,8 +4599,8 @@
   video_config_ = TestVideoConfig::Invalid();
   audio_config_.Initialize(kCodecOpus, kSampleFormatPlanarF32,
                            CHANNEL_LAYOUT_STEREO, 1000, EmptyExtraData(),
-                           Unencrypted(), base::TimeDelta::FromMilliseconds(10),
-                           0);
+                           EncryptionScheme::kUnencrypted,
+                           base::TimeDelta::FromMilliseconds(10), 0);
   ResetStream<>(audio_config_);
 
   // Equivalent to 1s per frame.
diff --git a/media/filters/vpx_video_decoder_fuzzertest.cc b/media/filters/vpx_video_decoder_fuzzertest.cc
index b501176..d7e6b835 100644
--- a/media/filters/vpx_video_decoder_fuzzertest.cc
+++ b/media/filters/vpx_video_decoder_fuzzertest.cc
@@ -92,7 +92,7 @@
                 : media::VideoDecoderConfig::AlphaMode::kIsOpaque,
       color_space, media::VideoTransformation(rotation, reflection), coded_size,
       visible_rect, natural_size, media::EmptyExtraData(),
-      media::Unencrypted());
+      media::EncryptionScheme::kUnencrypted);
 
   if (!config.IsValidConfig())
     return 0;
diff --git a/media/formats/mp2t/descriptors.cc b/media/formats/mp2t/descriptors.cc
index a0a771e..7d06dc97 100644
--- a/media/formats/mp2t/descriptors.cc
+++ b/media/formats/mp2t/descriptors.cc
@@ -114,7 +114,7 @@
 
 bool Descriptors::HasCADescriptorCenc(int* ca_pid,
                                       int* pssh_pid,
-                                      EncryptionMode* mode) const {
+                                      EncryptionScheme* scheme) const {
   DCHECK(ca_pid);
   DCHECK(pssh_pid);
   int system_id;
@@ -145,7 +145,7 @@
   RCHECK(reader.ReadBits(13, pssh_pid));
   // The pattern is actually set differently for audio and video, so OK not to
   // set it here. Important thing is to set the cipher mode.
-  *mode = EncryptionMode::kCbcs;
+  *scheme = EncryptionScheme::kCbcs;
 
   return true;
 }
diff --git a/media/formats/mp2t/descriptors.h b/media/formats/mp2t/descriptors.h
index 8e444f8..ad55322 100644
--- a/media/formats/mp2t/descriptors.h
+++ b/media/formats/mp2t/descriptors.h
@@ -52,7 +52,7 @@
   // |pssh_pid| and |mode| are populated with the contents of the descriptor.
   bool HasCADescriptorCenc(int* ca_pid,
                            int* pssh_pid,
-                           EncryptionMode* mode) const;
+                           EncryptionScheme* scheme) const;
 
   // Indicates whether a Private Data Indicator descriptor is present with a
   // particular |value|.
diff --git a/media/formats/mp2t/es_adapter_video_unittest.cc b/media/formats/mp2t/es_adapter_video_unittest.cc
index 228a969..00cacb21 100644
--- a/media/formats/mp2t/es_adapter_video_unittest.cc
+++ b/media/formats/mp2t/es_adapter_video_unittest.cc
@@ -35,7 +35,7 @@
   return VideoDecoderConfig(
       kCodecH264, H264PROFILE_MAIN, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace(), kNoTransformation, coded_size, visible_rect,
-      natural_size, EmptyExtraData(), Unencrypted());
+      natural_size, EmptyExtraData(), EncryptionScheme::kUnencrypted);
 }
 
 BufferQueue GenerateFakeBuffers(const int* frame_pts_ms,
diff --git a/media/formats/mp2t/es_parser_adts.cc b/media/formats/mp2t/es_parser_adts.cc
index 1834049..63aa3acd 100644
--- a/media/formats/mp2t/es_parser_adts.cc
+++ b/media/formats/mp2t/es_parser_adts.cc
@@ -217,7 +217,7 @@
         CalculateSubsamplesForAdtsFrame(adts_frame, &subsamples);
         stream_parser_buffer->set_decrypt_config(
             std::make_unique<DecryptConfig>(
-                base_decrypt_config->encryption_mode(),
+                base_decrypt_config->encryption_scheme(),
                 base_decrypt_config->key_id(), base_decrypt_config->iv(),
                 subsamples, EncryptionPattern()));
       }
@@ -260,11 +260,10 @@
   const int extended_samples_per_second =
       sbr_in_mimetype_ ? std::min(2 * orig_sample_rate, 48000)
                        : orig_sample_rate;
-  EncryptionScheme scheme = Unencrypted();
+  EncryptionScheme scheme = EncryptionScheme::kUnencrypted;
 #if BUILDFLAG(ENABLE_HLS_SAMPLE_AES)
   if (use_hls_sample_aes_) {
-    scheme = EncryptionScheme(EncryptionScheme::CIPHER_MODE_AES_CBC,
-                              EncryptionPattern());
+    scheme = EncryptionScheme::kCbcs;
   }
 #endif
   AudioDecoderConfig audio_decoder_config(
diff --git a/media/formats/mp2t/es_parser_h264.cc b/media/formats/mp2t/es_parser_h264.cc
index f48337d..fe03ac6 100644
--- a/media/formats/mp2t/es_parser_h264.cc
+++ b/media/formats/mp2t/es_parser_h264.cc
@@ -418,13 +418,11 @@
     const H264SPS* sps = h264_parser_->GetSPS(pps->seq_parameter_set_id);
     if (!sps)
       return false;
-    EncryptionScheme scheme = Unencrypted();
+    EncryptionScheme scheme = EncryptionScheme::kUnencrypted;
 #if BUILDFLAG(ENABLE_HLS_SAMPLE_AES)
     if (use_hls_sample_aes_) {
       // Note that for SampleAES the (encrypt,skip) pattern is constant.
-      scheme = EncryptionScheme(
-          EncryptionScheme::CIPHER_MODE_AES_CBC,
-          EncryptionPattern(kSampleAESEncryptBlocks, kSampleAESSkipBlocks));
+      scheme = EncryptionScheme::kCbcs;
     }
 #endif
     RCHECK(UpdateVideoDecoderConfig(sps, scheme));
@@ -465,19 +463,19 @@
   stream_parser_buffer->set_timestamp(current_timing_desc.pts);
 #if BUILDFLAG(ENABLE_HLS_SAMPLE_AES)
   if (use_hls_sample_aes_ && base_decrypt_config) {
-    switch (base_decrypt_config->encryption_mode()) {
-      case EncryptionMode::kUnencrypted:
+    switch (base_decrypt_config->encryption_scheme()) {
+      case EncryptionScheme::kUnencrypted:
         // As |base_decrypt_config| is specified, the stream is encrypted,
         // so this shouldn't happen.
         NOTREACHED();
         break;
-      case EncryptionMode::kCenc:
+      case EncryptionScheme::kCenc:
         stream_parser_buffer->set_decrypt_config(
             DecryptConfig::CreateCencConfig(base_decrypt_config->key_id(),
                                             base_decrypt_config->iv(),
                                             subsamples));
         break;
-      case EncryptionMode::kCbcs:
+      case EncryptionScheme::kCbcs:
         // Note that for SampleAES the (encrypt,skip) pattern is constant.
         // If not specified in |base_decrypt_config|, use default values.
         stream_parser_buffer->set_decrypt_config(
@@ -494,7 +492,7 @@
 }
 
 bool EsParserH264::UpdateVideoDecoderConfig(const H264SPS* sps,
-                                            const EncryptionScheme& scheme) {
+                                            EncryptionScheme scheme) {
   // Set the SAR to 1 when not specified in the H264 stream.
   int sar_width = (sps->sar_width == 0) ? 1 : sps->sar_width;
   int sar_height = (sps->sar_height == 0) ? 1 : sps->sar_height;
diff --git a/media/formats/mp2t/es_parser_h264.h b/media/formats/mp2t/es_parser_h264.h
index 5e22635..98e6ff0 100644
--- a/media/formats/mp2t/es_parser_h264.h
+++ b/media/formats/mp2t/es_parser_h264.h
@@ -22,7 +22,6 @@
 #include "media/media_buildflags.h"
 
 namespace media {
-class EncryptionScheme;
 class H264Parser;
 struct H264SPS;
 }
@@ -77,8 +76,7 @@
 
   // Update the video decoder config based on an H264 SPS.
   // Return true if successful.
-  bool UpdateVideoDecoderConfig(const H264SPS* sps,
-                                const EncryptionScheme& scheme);
+  bool UpdateVideoDecoderConfig(const H264SPS* sps, EncryptionScheme scheme);
 
   EsAdapterVideo es_adapter_;
 
diff --git a/media/formats/mp2t/es_parser_mpeg1audio.cc b/media/formats/mp2t/es_parser_mpeg1audio.cc
index 1e1cb06..efcd7a1 100644
--- a/media/formats/mp2t/es_parser_mpeg1audio.cc
+++ b/media/formats/mp2t/es_parser_mpeg1audio.cc
@@ -169,7 +169,7 @@
   // field for Mpeg1 audio. If yes, we should generate this field.
   AudioDecoderConfig audio_decoder_config(
       kCodecMP3, kSampleFormatS16, header.channel_layout, header.sample_rate,
-      EmptyExtraData(), Unencrypted());
+      EmptyExtraData(), EncryptionScheme::kUnencrypted);
 
   if (!audio_decoder_config.IsValidConfig()) {
     DVLOG(1) << "Invalid config: "
diff --git a/media/formats/mp2t/mp2t_stream_parser.cc b/media/formats/mp2t/mp2t_stream_parser.cc
index 41621a21..1d55087 100644
--- a/media/formats/mp2t/mp2t_stream_parser.cc
+++ b/media/formats/mp2t/mp2t_stream_parser.cc
@@ -429,7 +429,7 @@
   // use of the encrypted parser variant so that the initial configuration
   // reflects the intended encryption mode (even if the initial segment itself
   // is not encrypted).
-  return initial_encryption_mode_ != EncryptionMode::kUnencrypted;
+  return initial_encryption_scheme_ != EncryptionScheme::kUnencrypted;
 }
 
 std::unique_ptr<EsParser> Mp2tStreamParser::CreateEncryptedH264Parser(
@@ -833,7 +833,7 @@
   std::unique_ptr<TsSection> cat_section_parser(new TsSectionCat(
       base::BindRepeating(&Mp2tStreamParser::RegisterCencPids,
                           base::Unretained(this)),
-      base::BindRepeating(&Mp2tStreamParser::RegisterEncryptionMode,
+      base::BindRepeating(&Mp2tStreamParser::RegisterEncryptionScheme,
                           base::Unretained(this))));
   std::unique_ptr<PidState> cat_pid_state(new PidState(
       TsSection::kPidCat, PidState::kPidCat, std::move(cat_section_parser)));
@@ -883,10 +883,10 @@
   }
 }
 
-void Mp2tStreamParser::RegisterEncryptionMode(EncryptionMode mode) {
+void Mp2tStreamParser::RegisterEncryptionScheme(EncryptionScheme scheme) {
   // We only need to record this for the initial decoder config.
   if (!is_initialized_) {
-    initial_encryption_mode_ = mode;
+    initial_encryption_scheme_ = scheme;
   }
   // Reset the DecryptConfig, so that unless and until a CENC-ECM (containing
   // key id and IV) is seen, media data will be considered unencrypted. This is
@@ -897,14 +897,14 @@
 void Mp2tStreamParser::RegisterNewKeyIdAndIv(const std::string& key_id,
                                              const std::string& iv) {
   if (!iv.empty()) {
-    switch (initial_encryption_mode_) {
-      case EncryptionMode::kUnencrypted:
+    switch (initial_encryption_scheme_) {
+      case EncryptionScheme::kUnencrypted:
         decrypt_config_.reset();
         break;
-      case EncryptionMode::kCenc:
+      case EncryptionScheme::kCenc:
         decrypt_config_ = DecryptConfig::CreateCencConfig(key_id, iv, {});
         break;
-      case EncryptionMode::kCbcs:
+      case EncryptionScheme::kCbcs:
         decrypt_config_ =
             DecryptConfig::CreateCbcsConfig(key_id, iv, {}, base::nullopt);
         break;
diff --git a/media/formats/mp2t/mp2t_stream_parser.h b/media/formats/mp2t/mp2t_stream_parser.h
index ffa5ab16a..81f127f 100644
--- a/media/formats/mp2t/mp2t_stream_parser.h
+++ b/media/formats/mp2t/mp2t_stream_parser.h
@@ -122,7 +122,7 @@
   // Register a default encryption mode to be used for decoder configs. This
   // value is only used in the absence of explicit encryption metadata, as might
   // be the case during an unencrypted portion of a live stream.
-  void RegisterEncryptionMode(EncryptionMode mode);
+  void RegisterEncryptionScheme(EncryptionScheme scheme);
 
   // Register the new KeyID and IV (parsed from CENC-ECM).
   void RegisterNewKeyIdAndIv(const std::string& key_id, const std::string& iv);
@@ -171,7 +171,7 @@
   TimestampUnroller timestamp_unroller_;
 
 #if BUILDFLAG(ENABLE_HLS_SAMPLE_AES)
-  EncryptionMode initial_encryption_mode_ = EncryptionMode::kUnencrypted;
+  EncryptionScheme initial_encryption_scheme_ = EncryptionScheme::kUnencrypted;
 
   // TODO(jrummell): Rather than store the key_id and iv in a DecryptConfig,
   // provide a better way to access the last values seen in a ECM packet.
diff --git a/media/formats/mp2t/mp2t_stream_parser_unittest.cc b/media/formats/mp2t/mp2t_stream_parser_unittest.cc
index bd1590a..3119e4f 100644
--- a/media/formats/mp2t/mp2t_stream_parser_unittest.cc
+++ b/media/formats/mp2t/mp2t_stream_parser_unittest.cc
@@ -124,15 +124,15 @@
 // We only support AES-CBC at this time.
 // For the purpose of these tests, the key id is also used as the actual key.
 std::string DecryptBuffer(const StreamParserBuffer& buffer,
-                          const EncryptionScheme& scheme) {
-  EXPECT_TRUE(scheme.is_encrypted());
-  EXPECT_TRUE(scheme.mode() == EncryptionScheme::CIPHER_MODE_AES_CBC);
+                          EncryptionScheme scheme) {
+  EXPECT_EQ(scheme, EncryptionScheme::kCbcs);
 
   // Audio streams use whole block full sample encryption (so pattern = {0,0}),
   // so only the video stream uses pattern decryption. |has_pattern| is only
   // used by DecryptSampleAES(), which assumes a {1,9} pattern if
   // |has_pattern| = true.
-  bool has_pattern = scheme.pattern() == EncryptionPattern(1, 9);
+  bool has_pattern =
+      buffer.decrypt_config()->encryption_pattern() == EncryptionPattern(1, 9);
 
   std::string key;
   EXPECT_TRUE(
@@ -472,7 +472,7 @@
   parser_->Flush();
   EncryptionScheme video_encryption_scheme =
       current_video_config_.encryption_scheme();
-  EXPECT_TRUE(video_encryption_scheme.is_encrypted());
+  EXPECT_NE(video_encryption_scheme, EncryptionScheme::kUnencrypted);
   for (const auto& buffer : video_buffer_capture_) {
     std::string decrypted_video_buffer =
         DecryptBuffer(*buffer.get(), video_encryption_scheme);
@@ -480,7 +480,7 @@
   }
   EncryptionScheme audio_encryption_scheme =
       current_audio_config_.encryption_scheme();
-  EXPECT_TRUE(audio_encryption_scheme.is_encrypted());
+  EXPECT_NE(audio_encryption_scheme, EncryptionScheme::kUnencrypted);
   for (const auto& buffer : audio_buffer_capture_) {
     std::string decrypted_audio_buffer =
         DecryptBuffer(*buffer.get(), audio_encryption_scheme);
@@ -495,7 +495,7 @@
   ParseMpeg2TsFile("bear-1280x720-hls.ts", 2048);
   parser_->Flush();
   video_encryption_scheme = current_video_config_.encryption_scheme();
-  EXPECT_FALSE(video_encryption_scheme.is_encrypted());
+  EXPECT_EQ(video_encryption_scheme, EncryptionScheme::kUnencrypted);
   // Skip the last buffer, which may be truncated.
   for (size_t i = 0; i + 1 < video_buffer_capture_.size(); i++) {
     const auto& buffer = video_buffer_capture_[i];
@@ -504,7 +504,7 @@
     EXPECT_EQ(decrypted_video_buffers[i], unencrypted_video_buffer);
   }
   audio_encryption_scheme = current_audio_config_.encryption_scheme();
-  EXPECT_FALSE(audio_encryption_scheme.is_encrypted());
+  EXPECT_EQ(audio_encryption_scheme, EncryptionScheme::kUnencrypted);
   for (size_t i = 0; i + 1 < audio_buffer_capture_.size(); i++) {
     const auto& buffer = audio_buffer_capture_[i];
     std::string unencrypted_audio_buffer(
@@ -519,10 +519,10 @@
   parser_->Flush();
   EncryptionScheme video_encryption_scheme =
       current_video_config_.encryption_scheme();
-  EXPECT_TRUE(video_encryption_scheme.is_encrypted());
+  EXPECT_NE(video_encryption_scheme, EncryptionScheme::kUnencrypted);
   EncryptionScheme audio_encryption_scheme =
       current_audio_config_.encryption_scheme();
-  EXPECT_TRUE(audio_encryption_scheme.is_encrypted());
+  EXPECT_NE(audio_encryption_scheme, EncryptionScheme::kUnencrypted);
 }
 
 #endif
diff --git a/media/formats/mp2t/ts_section_cat.cc b/media/formats/mp2t/ts_section_cat.cc
index a9239fbd..507a789 100644
--- a/media/formats/mp2t/ts_section_cat.cc
+++ b/media/formats/mp2t/ts_section_cat.cc
@@ -16,9 +16,9 @@
 
 TsSectionCat::TsSectionCat(
     const RegisterCencPidsCb& register_cenc_ids_cb,
-    const RegisterEncryptionModeCb& register_encryption_mode_cb)
+    const RegisterEncryptionSchemeCb& register_encryption_scheme_cb)
     : register_cenc_ids_cb_(register_cenc_ids_cb),
-      register_encryption_mode_cb_(register_encryption_mode_cb),
+      register_encryption_scheme_cb_(register_encryption_scheme_cb),
       version_number_(-1) {}
 
 TsSectionCat::~TsSectionCat() {}
@@ -58,9 +58,9 @@
 
   Descriptors descriptors;
   int ca_pid, pssh_pid;
-  EncryptionMode mode;
+  EncryptionScheme scheme;
   RCHECK(descriptors.Read(bit_reader, section_length - 4));
-  RCHECK(descriptors.HasCADescriptorCenc(&ca_pid, &pssh_pid, &mode));
+  RCHECK(descriptors.HasCADescriptorCenc(&ca_pid, &pssh_pid, &scheme));
   int crc32;
   RCHECK(bit_reader->ReadBits(32, &crc32));
 
@@ -76,7 +76,7 @@
 
   // Can now register the PIDs and scheme.
   register_cenc_ids_cb_.Run(ca_pid, pssh_pid);
-  register_encryption_mode_cb_.Run(mode);
+  register_encryption_scheme_cb_.Run(scheme);
 
   version_number_ = version_number;
 
diff --git a/media/formats/mp2t/ts_section_cat.h b/media/formats/mp2t/ts_section_cat.h
index 637aec8..c929fad 100644
--- a/media/formats/mp2t/ts_section_cat.h
+++ b/media/formats/mp2t/ts_section_cat.h
@@ -7,7 +7,7 @@
 
 #include "base/callback.h"
 #include "base/macros.h"
-#include "media/base/decrypt_config.h"
+#include "media/base/encryption_scheme.h"
 #include "media/formats/mp2t/ts_section_psi.h"
 
 namespace media {
@@ -17,11 +17,11 @@
  public:
   // RegisterCencPidsCb::Run(int ca_pid, int pssh_pid);
   using RegisterCencPidsCb = base::RepeatingCallback<void(int, int)>;
-  // RegisterEncryptionMode::Run(EncryptionMode mode);
-  using RegisterEncryptionModeCb =
-      base::RepeatingCallback<void(EncryptionMode)>;
+  // RegisterEncryptionScheme::Run(EncryptionScheme scheme);
+  using RegisterEncryptionSchemeCb =
+      base::RepeatingCallback<void(EncryptionScheme)>;
   TsSectionCat(const RegisterCencPidsCb& register_cenc_ids_cb,
-               const RegisterEncryptionModeCb& register_encryption_mode_cb);
+               const RegisterEncryptionSchemeCb& register_encryption_scheme_cb);
   ~TsSectionCat() override;
 
   // TsSectionPsi implementation.
@@ -30,7 +30,7 @@
 
  private:
   RegisterCencPidsCb register_cenc_ids_cb_;
-  RegisterEncryptionModeCb register_encryption_mode_cb_;
+  RegisterEncryptionSchemeCb register_encryption_scheme_cb_;
 
   // Parameters from the CAT.
   int version_number_;
diff --git a/media/formats/mp4/mp4_stream_parser.cc b/media/formats/mp4/mp4_stream_parser.cc
index 60fc993..550b2e9 100644
--- a/media/formats/mp4/mp4_stream_parser.cc
+++ b/media/formats/mp4/mp4_stream_parser.cc
@@ -42,33 +42,22 @@
 const int kMaxInvalidConversionLogs = 20;
 const int kMaxVideoKeyframeMismatchLogs = 10;
 
-// Caller should be prepared to handle return of Unencrypted() in case of
-// unsupported scheme.
-// TODO(crbug.com/825041): Remove pattern from this function.
+// Caller should be prepared to handle return of EncryptionScheme::kUnencrypted
+// in case of unsupported scheme.
 EncryptionScheme GetEncryptionScheme(const ProtectionSchemeInfo& sinf) {
   if (!sinf.HasSupportedScheme())
-    return Unencrypted();
+    return EncryptionScheme::kUnencrypted;
   FourCC fourcc = sinf.type.type;
-  EncryptionScheme::CipherMode mode = EncryptionScheme::CIPHER_MODE_UNENCRYPTED;
-  EncryptionPattern pattern;
-  bool uses_pattern_encryption = false;
   switch (fourcc) {
     case FOURCC_CENC:
-      mode = EncryptionScheme::CIPHER_MODE_AES_CTR;
-      break;
+      return EncryptionScheme::kCenc;
     case FOURCC_CBCS:
-      mode = EncryptionScheme::CIPHER_MODE_AES_CBC;
-      uses_pattern_encryption = true;
-      break;
+      return EncryptionScheme::kCbcs;
     default:
       NOTREACHED();
       break;
   }
-  if (uses_pattern_encryption) {
-    pattern = {sinf.info.track_encryption.default_crypt_byte_block,
-               sinf.info.track_encryption.default_skip_byte_block};
-  }
-  return EncryptionScheme(mode, pattern);
+  return EncryptionScheme::kUnencrypted;
 }
 }  // namespace
 
@@ -442,10 +431,10 @@
         return false;
       }
       bool is_track_encrypted = entry.sinf.info.track_encryption.is_encrypted;
-      EncryptionScheme scheme = Unencrypted();
+      EncryptionScheme scheme = EncryptionScheme::kUnencrypted;
       if (is_track_encrypted) {
         scheme = GetEncryptionScheme(entry.sinf);
-        if (!scheme.is_encrypted())
+        if (scheme == EncryptionScheme::kUnencrypted)
           return false;
       }
       audio_config.Initialize(codec, sample_format, channel_layout,
@@ -511,10 +500,10 @@
         return false;
       }
       bool is_track_encrypted = entry.sinf.info.track_encryption.is_encrypted;
-      EncryptionScheme scheme = Unencrypted();
+      EncryptionScheme scheme = EncryptionScheme::kUnencrypted;
       if (is_track_encrypted) {
         scheme = GetEncryptionScheme(entry.sinf);
-        if (!scheme.is_encrypted())
+        if (scheme == EncryptionScheme::kUnencrypted)
           return false;
       }
       video_config.Initialize(entry.video_codec, entry.video_codec_profile,
@@ -838,7 +827,7 @@
     if (!subsamples.empty()) {
       // Create a new config with the updated subsamples.
       decrypt_config.reset(
-          new DecryptConfig(decrypt_config->encryption_mode(),
+          new DecryptConfig(decrypt_config->encryption_scheme(),
                             decrypt_config->key_id(), decrypt_config->iv(),
                             subsamples, decrypt_config->encryption_pattern()));
     }
diff --git a/media/formats/mp4/track_run_iterator.cc b/media/formats/mp4/track_run_iterator.cc
index 91e0f822d..cda6de3 100644
--- a/media/formats/mp4/track_run_iterator.cc
+++ b/media/formats/mp4/track_run_iterator.cc
@@ -16,6 +16,7 @@
 #include "media/base/decrypt_config.h"
 #include "media/base/demuxer_memory_limit.h"
 #include "media/base/encryption_pattern.h"
+#include "media/base/encryption_scheme.h"
 #include "media/base/media_util.h"
 #include "media/base/timestamp_constants.h"
 #include "media/formats/mp4/rcheck.h"
@@ -56,7 +57,7 @@
   std::vector<uint8_t> aux_info_sizes;  // Populated if default_size == 0.
   int aux_info_total_size;
 
-  EncryptionMode encryption_mode;
+  EncryptionScheme encryption_scheme = EncryptionScheme::kUnencrypted;
   EncryptionPattern encryption_pattern;
 
   std::vector<CencSampleEncryptionInfoEntry> fragment_sample_encryption_info;
@@ -372,11 +373,11 @@
       }
 
       if (!sinf->HasSupportedScheme()) {
-        tri.encryption_mode = EncryptionMode::kUnencrypted;
+        tri.encryption_scheme = EncryptionScheme::kUnencrypted;
       } else {
-        tri.encryption_mode = sinf->IsCbcsEncryptionScheme()
-                                  ? EncryptionMode::kCbcs
-                                  : EncryptionMode::kCenc;
+        tri.encryption_scheme = sinf->IsCbcsEncryptionScheme()
+                                    ? EncryptionScheme::kCbcs
+                                    : EncryptionScheme::kCenc;
         tri.encryption_pattern =
             EncryptionPattern(track_encryption->default_crypt_byte_block,
                               track_encryption->default_skip_byte_block);
@@ -747,13 +748,13 @@
       std::string iv(reinterpret_cast<const char*>(
                          sample_encryption_entry.initialization_vector),
                      base::size(sample_encryption_entry.initialization_vector));
-      switch (run_itr_->encryption_mode) {
-        case EncryptionMode::kUnencrypted:
+      switch (run_itr_->encryption_scheme) {
+        case EncryptionScheme::kUnencrypted:
           return nullptr;
-        case EncryptionMode::kCenc:
+        case EncryptionScheme::kCenc:
           return DecryptConfig::CreateCencConfig(
               key_id, iv, sample_encryption_entry.subsamples);
-        case EncryptionMode::kCbcs:
+        case EncryptionScheme::kCbcs:
           return DecryptConfig::CreateCbcsConfig(
               key_id, iv, sample_encryption_entry.subsamples,
               run_itr_->encryption_pattern);
diff --git a/media/formats/mpeg/mpeg_audio_stream_parser_base.cc b/media/formats/mpeg/mpeg_audio_stream_parser_base.cc
index 137bfa4..b5fed3d 100644
--- a/media/formats/mpeg/mpeg_audio_stream_parser_base.cc
+++ b/media/formats/mpeg/mpeg_audio_stream_parser_base.cc
@@ -211,7 +211,7 @@
 
   if (!config_.IsValidConfig()) {
     config_.Initialize(audio_codec_, kSampleFormatF32, channel_layout,
-                       sample_rate, extra_data, Unencrypted(),
+                       sample_rate, extra_data, EncryptionScheme::kUnencrypted,
                        base::TimeDelta(), codec_delay_);
     if (audio_codec_ == kCodecAAC)
       config_.disable_discard_decoder_delay();
diff --git a/media/formats/webm/webm_audio_client.cc b/media/formats/webm/webm_audio_client.cc
index 6eff0dd..5ac98e8e 100644
--- a/media/formats/webm/webm_audio_client.cc
+++ b/media/formats/webm/webm_audio_client.cc
@@ -27,7 +27,7 @@
     const std::vector<uint8_t>& codec_private,
     int64_t seek_preroll,
     int64_t codec_delay,
-    const EncryptionScheme& encryption_scheme,
+    EncryptionScheme encryption_scheme,
     AudioDecoderConfig* config) {
   DCHECK(config);
   SampleFormat sample_format = kSampleFormatPlanarF32;
diff --git a/media/formats/webm/webm_audio_client.h b/media/formats/webm/webm_audio_client.h
index 5b3357da..ab65867 100644
--- a/media/formats/webm/webm_audio_client.h
+++ b/media/formats/webm/webm_audio_client.h
@@ -11,12 +11,12 @@
 #include <vector>
 
 #include "base/macros.h"
+#include "media/base/encryption_scheme.h"
 #include "media/base/media_log.h"
 #include "media/formats/webm/webm_parser.h"
 
 namespace media {
 class AudioDecoderConfig;
-class EncryptionScheme;
 
 // Helper class used to parse an Audio element inside a TrackEntry element.
 class WebMAudioClient : public WebMParserClient {
@@ -37,7 +37,7 @@
                         const std::vector<uint8_t>& codec_private,
                         const int64_t seek_preroll,
                         const int64_t codec_delay,
-                        const EncryptionScheme& encryption_scheme,
+                        EncryptionScheme encryption_scheme,
                         AudioDecoderConfig* config);
 
  private:
diff --git a/media/formats/webm/webm_tracks_parser.cc b/media/formats/webm/webm_tracks_parser.cc
index 6ae7ce8..b9a1179 100644
--- a/media/formats/webm/webm_tracks_parser.cc
+++ b/media/formats/webm/webm_tracks_parser.cc
@@ -205,8 +205,9 @@
           content_encodings()[0]->encryption_key_id();
     }
 
-    EncryptionScheme encryption_scheme =
-        encryption_key_id.empty() ? Unencrypted() : AesCtrEncryptionScheme();
+    EncryptionScheme encryption_scheme = encryption_key_id.empty()
+                                             ? EncryptionScheme::kUnencrypted
+                                             : EncryptionScheme::kCenc;
 
     if (track_type_ == kWebMTrackTypeAudio) {
       detected_audio_track_count_++;
diff --git a/media/formats/webm/webm_video_client.cc b/media/formats/webm/webm_video_client.cc
index 1500ff5..9eba79d 100644
--- a/media/formats/webm/webm_video_client.cc
+++ b/media/formats/webm/webm_video_client.cc
@@ -53,7 +53,7 @@
 bool WebMVideoClient::InitializeConfig(
     const std::string& codec_id,
     const std::vector<uint8_t>& codec_private,
-    const EncryptionScheme& encryption_scheme,
+    EncryptionScheme encryption_scheme,
     VideoDecoderConfig* config) {
   DCHECK(config);
 
diff --git a/media/formats/webm/webm_video_client.h b/media/formats/webm/webm_video_client.h
index f245ff9..3c15c463 100644
--- a/media/formats/webm/webm_video_client.h
+++ b/media/formats/webm/webm_video_client.h
@@ -11,13 +11,13 @@
 #include <vector>
 
 #include "base/macros.h"
+#include "media/base/encryption_scheme.h"
 #include "media/base/media_export.h"
 #include "media/base/media_log.h"
 #include "media/formats/webm/webm_colour_parser.h"
 #include "media/formats/webm/webm_parser.h"
 
 namespace media {
-class EncryptionScheme;
 class VideoDecoderConfig;
 
 // Helper class used to parse a Video element inside a TrackEntry element.
@@ -38,7 +38,7 @@
   // case and should not be relied upon.
   bool InitializeConfig(const std::string& codec_id,
                         const std::vector<uint8_t>& codec_private,
-                        const EncryptionScheme& encryption_scheme,
+                        EncryptionScheme encryption_scheme,
                         VideoDecoderConfig* config);
 
  private:
diff --git a/media/formats/webm/webm_video_client_unittest.cc b/media/formats/webm/webm_video_client_unittest.cc
index 4cc41190..cfc73ccc 100644
--- a/media/formats/webm/webm_video_client_unittest.cc
+++ b/media/formats/webm/webm_video_client_unittest.cc
@@ -140,7 +140,8 @@
   VideoDecoderConfig expected_config(
       kCodecVP9, profile, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace::REC709(), kNoTransformation, kCodedSize,
-      gfx::Rect(kCodedSize), kCodedSize, codec_private, Unencrypted());
+      gfx::Rect(kCodedSize), kCodedSize, codec_private,
+      EncryptionScheme::kUnencrypted);
 
   EXPECT_TRUE(config.Matches(expected_config))
       << "Config (" << config.AsHumanReadableString()
diff --git a/media/fuchsia/cdm/fuchsia_stream_decryptor.cc b/media/fuchsia/cdm/fuchsia_stream_decryptor.cc
index 1281e589..9c3ebb1 100644
--- a/media/fuchsia/cdm/fuchsia_stream_decryptor.cc
+++ b/media/fuchsia/cdm/fuchsia_stream_decryptor.cc
@@ -25,11 +25,11 @@
 // available, so it doesn't need more than one output buffer.
 const size_t kMinClearStreamOutputFrames = 1;
 
-std::string GetEncryptionScheme(EncryptionMode mode) {
+std::string GetEncryptionScheme(EncryptionScheme mode) {
   switch (mode) {
-    case EncryptionMode::kCenc:
+    case EncryptionScheme::kCenc:
       return fuchsia::media::ENCRYPTION_SCHEME_CENC;
-    case EncryptionMode::kCbcs:
+    case EncryptionScheme::kCbcs:
       return fuchsia::media::ENCRYPTION_SCHEME_CBCS;
     default:
       NOTREACHED() << "unknown encryption mode " << static_cast<int>(mode);
@@ -89,13 +89,13 @@
   DCHECK(config);
 
   fuchsia::media::EncryptedFormat encrypted_format;
-  encrypted_format.set_scheme(GetEncryptionScheme(config->encryption_mode()))
+  encrypted_format.set_scheme(GetEncryptionScheme(config->encryption_scheme()))
       .set_key_id(std::vector<uint8_t>(config->key_id().begin(),
                                        config->key_id().end()))
       .set_init_vector(
           std::vector<uint8_t>(config->iv().begin(), config->iv().end()))
       .set_subsamples(GetSubsamples(config->subsamples()));
-  if (config->encryption_mode() == EncryptionMode::kCbcs) {
+  if (config->encryption_scheme() == EncryptionScheme::kCbcs) {
     DCHECK(config->encryption_pattern().has_value());
     encrypted_format.set_pattern(
         GetEncryptionPattern(config->encryption_pattern().value()));
diff --git a/media/gpu/android/codec_wrapper.cc b/media/gpu/android/codec_wrapper.cc
index dc0037ff..a89cc16 100644
--- a/media/gpu/android/codec_wrapper.cc
+++ b/media/gpu/android/codec_wrapper.cc
@@ -262,7 +262,7 @@
     status = codec_->QueueSecureInputBuffer(
         input_buffer, buffer.data(), buffer.data_size(),
         decrypt_config->key_id(), decrypt_config->iv(),
-        decrypt_config->subsamples(), decrypt_config->encryption_mode(),
+        decrypt_config->subsamples(), decrypt_config->encryption_scheme(),
         decrypt_config->encryption_pattern(), buffer.timestamp());
   } else {
     status = codec_->QueueInputBuffer(input_buffer, buffer.data(),
diff --git a/media/gpu/ipc/service/vda_video_decoder_unittest.cc b/media/gpu/ipc/service/vda_video_decoder_unittest.cc
index b81c1c35..335f0653 100644
--- a/media/gpu/ipc/service/vda_video_decoder_unittest.cc
+++ b/media/gpu/ipc/service/vda_video_decoder_unittest.cc
@@ -144,7 +144,8 @@
         kCodecVP9, VP9PROFILE_PROFILE0,
         VideoDecoderConfig::AlphaMode::kIsOpaque, VideoColorSpace::REC709(),
         kNoTransformation, gfx::Size(1920, 1088), gfx::Rect(1920, 1080),
-        gfx::Size(1920, 1080), EmptyExtraData(), Unencrypted()));
+        gfx::Size(1920, 1080), EmptyExtraData(),
+        EncryptionScheme::kUnencrypted));
     RunUntilIdle();
   }
 
@@ -321,7 +322,7 @@
       kCodecVP9, VP9PROFILE_PROFILE0, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace::REC601(), kNoTransformation, gfx::Size(320, 240),
       gfx::Rect(320, 240), gfx::Size(320, 240), EmptyExtraData(),
-      Unencrypted()));
+      EncryptionScheme::kUnencrypted));
   EXPECT_CALL(init_cb_, Run(false));
   RunUntilIdle();
 }
@@ -331,7 +332,7 @@
       kCodecH264, H264PROFILE_BASELINE,
       VideoDecoderConfig::AlphaMode::kIsOpaque, VideoColorSpace::REC709(),
       kNoTransformation, gfx::Size(1920, 1088), gfx::Rect(1920, 1080),
-      gfx::Size(1920, 1080), EmptyExtraData(), Unencrypted()));
+      gfx::Size(1920, 1080), EmptyExtraData(), EncryptionScheme::kUnencrypted));
   EXPECT_CALL(init_cb_, Run(false));
   RunUntilIdle();
 }
@@ -342,7 +343,7 @@
       kCodecVP9, VP9PROFILE_PROFILE0, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace::REC709(), kNoTransformation, gfx::Size(1920, 1088),
       gfx::Rect(1920, 1080), gfx::Size(1920, 1080), EmptyExtraData(),
-      Unencrypted()));
+      EncryptionScheme::kUnencrypted));
   EXPECT_CALL(init_cb_, Run(false));
   RunUntilIdle();
 }
@@ -425,7 +426,7 @@
       kCodecVP9, VP9PROFILE_PROFILE0, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace::REC709(), kNoTransformation, gfx::Size(640, 480),
       gfx::Rect(640, 480), gfx::Size(1280, 480), EmptyExtraData(),
-      Unencrypted()));
+      EncryptionScheme::kUnencrypted));
   EXPECT_CALL(init_cb_, Run(true));
   RunUntilIdle();
 
diff --git a/media/gpu/video_encode_accelerator_unittest.cc b/media/gpu/video_encode_accelerator_unittest.cc
index b69c904..7834f03 100644
--- a/media/gpu/video_encode_accelerator_unittest.cc
+++ b/media/gpu/video_encode_accelerator_unittest.cc
@@ -1170,17 +1170,17 @@
   if (IsVP8(profile_)) {
     config.Initialize(kCodecVP8, VP8PROFILE_ANY, alpha_mode, VideoColorSpace(),
                       kNoTransformation, coded_size, visible_size, natural_size,
-                      EmptyExtraData(), Unencrypted());
+                      EmptyExtraData(), EncryptionScheme::kUnencrypted);
   } else if (IsVP9(profile_)) {
     config.Initialize(kCodecVP9, VP9PROFILE_PROFILE0, alpha_mode,
                       VideoColorSpace(), kNoTransformation, coded_size,
                       visible_size, natural_size, EmptyExtraData(),
-                      Unencrypted());
+                      EncryptionScheme::kUnencrypted);
   } else if (IsH264(profile_)) {
     config.Initialize(kCodecH264, H264PROFILE_MAIN, alpha_mode,
                       VideoColorSpace(), kNoTransformation, coded_size,
                       visible_size, natural_size, EmptyExtraData(),
-                      Unencrypted());
+                      EncryptionScheme::kUnencrypted);
   } else {
     LOG_ASSERT(0) << "Invalid profile " << GetProfileName(profile_);
   }
diff --git a/media/gpu/windows/d3d11_texture_selector_unittest.cc b/media/gpu/windows/d3d11_texture_selector_unittest.cc
index b24a372..84748886 100644
--- a/media/gpu/windows/d3d11_texture_selector_unittest.cc
+++ b/media/gpu/windows/d3d11_texture_selector_unittest.cc
@@ -25,14 +25,11 @@
                                          gfx::Size size,
                                          bool encrypted) {
     VideoDecoderConfig result;
-    EncryptionPattern pattern;
     result.Initialize(
         kUnknownVideoCodec,  // It doesn't matter because it won't be used.
         profile, VideoDecoderConfig::AlphaMode::kIsOpaque, VideoColorSpace(),
         kNoTransformation, size, {}, {}, {},
-        EncryptionScheme(encrypted ? EncryptionScheme::CIPHER_MODE_AES_CTR
-                                   : EncryptionScheme::CIPHER_MODE_UNENCRYPTED,
-                         pattern));
+        encrypted ? EncryptionScheme::kCenc : EncryptionScheme::kUnencrypted);
     return result;
   }
 
diff --git a/media/mojo/clients/mojo_audio_decoder_unittest.cc b/media/mojo/clients/mojo_audio_decoder_unittest.cc
index 22efe050..6946df7 100644
--- a/media/mojo/clients/mojo_audio_decoder_unittest.cc
+++ b/media/mojo/clients/mojo_audio_decoder_unittest.cc
@@ -142,7 +142,7 @@
 
     AudioDecoderConfig audio_config(kCodecVorbis, kSampleFormat, kChannelLayout,
                                     kDefaultSampleRate, EmptyExtraData(),
-                                    Unencrypted());
+                                    EncryptionScheme::kUnencrypted);
 
     mojo_audio_decoder_->Initialize(
         audio_config, nullptr,
diff --git a/media/mojo/common/media_type_converters.cc b/media/mojo/common/media_type_converters.cc
index 012d818..9337748 100644
--- a/media/mojo/common/media_type_converters.cc
+++ b/media/mojo/common/media_type_converters.cc
@@ -29,7 +29,7 @@
   mojo_decrypt_config->key_id = input.key_id();
   mojo_decrypt_config->iv = input.iv();
   mojo_decrypt_config->subsamples = input.subsamples();
-  mojo_decrypt_config->encryption_mode = input.encryption_mode();
+  mojo_decrypt_config->encryption_scheme = input.encryption_scheme();
   mojo_decrypt_config->encryption_pattern = input.encryption_pattern();
 
   return mojo_decrypt_config;
@@ -41,7 +41,7 @@
               media::mojom::DecryptConfigPtr>::
     Convert(const media::mojom::DecryptConfigPtr& input) {
   return std::make_unique<media::DecryptConfig>(
-      input->encryption_mode, input->key_id, input->iv, input->subsamples,
+      input->encryption_scheme, input->key_id, input->iv, input->subsamples,
       input->encryption_pattern);
 }
 
diff --git a/media/mojo/mojom/BUILD.gn b/media/mojo/mojom/BUILD.gn
index 6ff84fb..bf42227 100644
--- a/media/mojo/mojom/BUILD.gn
+++ b/media/mojo/mojom/BUILD.gn
@@ -131,7 +131,6 @@
   sources = [
     "audio_decoder_config_mojom_traits_unittest.cc",
     "cdm_key_information_mojom_traits_unittest.cc",
-    "encryption_scheme_mojom_traits_unittest.cc",
     "video_decoder_config_mojom_traits_unittest.cc",
     "video_frame_mojom_traits_unittest.cc",
   ]
diff --git a/media/mojo/mojom/audio_decoder_config_mojom_traits.h b/media/mojo/mojom/audio_decoder_config_mojom_traits.h
index a786d24..c95d33a 100644
--- a/media/mojo/mojom/audio_decoder_config_mojom_traits.h
+++ b/media/mojo/mojom/audio_decoder_config_mojom_traits.h
@@ -7,7 +7,6 @@
 
 #include "media/base/audio_decoder_config.h"
 #include "media/base/ipc/media_param_traits.h"
-#include "media/mojo/mojom/encryption_scheme_mojom_traits.h"
 #include "media/mojo/mojom/media_types.mojom.h"
 
 namespace mojo {
@@ -46,7 +45,7 @@
     return input.codec_delay();
   }
 
-  static const media::EncryptionScheme& encryption_scheme(
+  static media::EncryptionScheme encryption_scheme(
       const media::AudioDecoderConfig& input) {
     return input.encryption_scheme();
   }
diff --git a/media/mojo/mojom/audio_decoder_config_mojom_traits_unittest.cc b/media/mojo/mojom/audio_decoder_config_mojom_traits_unittest.cc
index f04e0cb3..16ea462 100644
--- a/media/mojo/mojom/audio_decoder_config_mojom_traits_unittest.cc
+++ b/media/mojo/mojom/audio_decoder_config_mojom_traits_unittest.cc
@@ -21,7 +21,8 @@
 
   AudioDecoderConfig input;
   input.Initialize(kCodecAAC, kSampleFormatU8, CHANNEL_LAYOUT_SURROUND, 48000,
-                   kExtraDataVector, Unencrypted(), base::TimeDelta(), 0);
+                   kExtraDataVector, EncryptionScheme::kUnencrypted,
+                   base::TimeDelta(), 0);
   std::vector<uint8_t> data =
       media::mojom::AudioDecoderConfig::Serialize(&input);
   AudioDecoderConfig output;
@@ -34,7 +35,8 @@
      ConvertAudioDecoderConfig_EmptyExtraData) {
   AudioDecoderConfig input;
   input.Initialize(kCodecAAC, kSampleFormatU8, CHANNEL_LAYOUT_SURROUND, 48000,
-                   EmptyExtraData(), Unencrypted(), base::TimeDelta(), 0);
+                   EmptyExtraData(), EncryptionScheme::kUnencrypted,
+                   base::TimeDelta(), 0);
   std::vector<uint8_t> data =
       media::mojom::AudioDecoderConfig::Serialize(&input);
   AudioDecoderConfig output;
@@ -46,8 +48,8 @@
 TEST(AudioDecoderConfigStructTraitsTest, ConvertAudioDecoderConfig_Encrypted) {
   AudioDecoderConfig input;
   input.Initialize(kCodecAAC, kSampleFormatU8, CHANNEL_LAYOUT_SURROUND, 48000,
-                   EmptyExtraData(), AesCtrEncryptionScheme(),
-                   base::TimeDelta(), 0);
+                   EmptyExtraData(), EncryptionScheme::kCenc, base::TimeDelta(),
+                   0);
   std::vector<uint8_t> data =
       media::mojom::AudioDecoderConfig::Serialize(&input);
   AudioDecoderConfig output;
diff --git a/media/mojo/mojom/encryption_pattern.typemap b/media/mojo/mojom/encryption_pattern.typemap
new file mode 100644
index 0000000..06e07e9
--- /dev/null
+++ b/media/mojo/mojom/encryption_pattern.typemap
@@ -0,0 +1,24 @@
+# Copyright 2017 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+mojom = "//media/mojo/mojom/media_types.mojom"
+
+public_headers = [ "//media/base/encryption_pattern.h" ]
+
+traits_headers = [ "//media/mojo/mojom/encryption_pattern_mojom_traits.h" ]
+
+sources = [
+  "//media/mojo/mojom/encryption_pattern_mojom_traits.cc",
+]
+
+public_deps = [
+  "//media",
+]
+
+deps = [
+  "//media/base/ipc",
+]
+
+# See media_types.typemap for enum mappings.
+type_mappings = [ "media.mojom.EncryptionPattern=::media::EncryptionPattern" ]
diff --git a/media/mojo/mojom/encryption_pattern_mojom_traits.cc b/media/mojo/mojom/encryption_pattern_mojom_traits.cc
new file mode 100644
index 0000000..d463132
--- /dev/null
+++ b/media/mojo/mojom/encryption_pattern_mojom_traits.cc
@@ -0,0 +1,19 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "media/mojo/mojom/encryption_pattern_mojom_traits.h"
+
+namespace mojo {
+
+// static
+bool StructTraits<media::mojom::EncryptionPatternDataView,
+                  media::EncryptionPattern>::
+    Read(media::mojom::EncryptionPatternDataView input,
+         media::EncryptionPattern* output) {
+  *output = media::EncryptionPattern(input.crypt_byte_block(),
+                                     input.skip_byte_block());
+  return true;
+}
+
+}  // namespace mojo
diff --git a/media/mojo/mojom/encryption_pattern_mojom_traits.h b/media/mojo/mojom/encryption_pattern_mojom_traits.h
new file mode 100644
index 0000000..8694a4d
--- /dev/null
+++ b/media/mojo/mojom/encryption_pattern_mojom_traits.h
@@ -0,0 +1,31 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MEDIA_MOJO_MOJOM_ENCRYPTION_PATTERN_MOJOM_TRAITS_H_
+#define MEDIA_MOJO_MOJOM_ENCRYPTION_PATTERN_MOJOM_TRAITS_H_
+
+#include "media/base/encryption_pattern.h"
+#include "media/base/ipc/media_param_traits.h"
+#include "media/mojo/mojom/media_types.mojom.h"
+
+namespace mojo {
+
+template <>
+struct StructTraits<media::mojom::EncryptionPatternDataView,
+                    media::EncryptionPattern> {
+  static uint32_t crypt_byte_block(const media::EncryptionPattern& input) {
+    return input.crypt_byte_block();
+  }
+
+  static uint32_t skip_byte_block(const media::EncryptionPattern& input) {
+    return input.skip_byte_block();
+  }
+
+  static bool Read(media::mojom::EncryptionPatternDataView input,
+                   media::EncryptionPattern* output);
+};
+
+}  // namespace mojo
+
+#endif  // MEDIA_MOJO_MOJOM_ENCRYPTION_PATTERN_MOJOM_TRAITS_H_
diff --git a/media/mojo/mojom/encryption_scheme.typemap b/media/mojo/mojom/encryption_scheme.typemap
deleted file mode 100644
index f942f83..0000000
--- a/media/mojo/mojom/encryption_scheme.typemap
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2017 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-mojom = "//media/mojo/mojom/media_types.mojom"
-
-public_headers = [
-  "//media/base/encryption_scheme.h",
-  "//media/base/encryption_pattern.h",
-]
-
-traits_headers = [ "//media/mojo/mojom/encryption_scheme_mojom_traits.h" ]
-
-sources = [
-  "//media/mojo/mojom/encryption_scheme_mojom_traits.cc",
-]
-
-public_deps = [
-  "//media",
-]
-
-deps = [
-  "//media/base/ipc",
-]
-
-# See media_types.typemap for enum mappings.
-type_mappings = [
-  "media.mojom.EncryptionPattern=::media::EncryptionPattern",
-  "media.mojom.EncryptionScheme=::media::EncryptionScheme",
-]
diff --git a/media/mojo/mojom/encryption_scheme_mojom_traits.cc b/media/mojo/mojom/encryption_scheme_mojom_traits.cc
deleted file mode 100644
index a379269..0000000
--- a/media/mojo/mojom/encryption_scheme_mojom_traits.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "media/mojo/mojom/encryption_scheme_mojom_traits.h"
-
-namespace mojo {
-
-// static
-bool StructTraits<media::mojom::EncryptionPatternDataView,
-                  media::EncryptionPattern>::
-    Read(media::mojom::EncryptionPatternDataView input,
-         media::EncryptionPattern* output) {
-  *output = media::EncryptionPattern(input.crypt_byte_block(),
-                                     input.skip_byte_block());
-  return true;
-}
-
-// static
-bool StructTraits<
-    media::mojom::EncryptionSchemeDataView,
-    media::EncryptionScheme>::Read(media::mojom::EncryptionSchemeDataView input,
-                                   media::EncryptionScheme* output) {
-  media::EncryptionScheme::CipherMode mode;
-  if (!input.ReadMode(&mode))
-    return false;
-
-  media::EncryptionPattern pattern;
-  if (!input.ReadPattern(&pattern))
-    return false;
-
-  *output = media::EncryptionScheme(mode, pattern);
-
-  return true;
-}
-
-}  // namespace mojo
\ No newline at end of file
diff --git a/media/mojo/mojom/encryption_scheme_mojom_traits.h b/media/mojo/mojom/encryption_scheme_mojom_traits.h
deleted file mode 100644
index c5166e5..0000000
--- a/media/mojo/mojom/encryption_scheme_mojom_traits.h
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef MEDIA_MOJO_MOJOM_ENCRYPTION_SCHEME_MOJOM_TRAITS_H_
-#define MEDIA_MOJO_MOJOM_ENCRYPTION_SCHEME_MOJOM_TRAITS_H_
-
-#include "media/base/encryption_pattern.h"
-#include "media/base/encryption_scheme.h"
-#include "media/base/ipc/media_param_traits.h"
-#include "media/mojo/mojom/media_types.mojom.h"
-
-namespace mojo {
-
-template <>
-struct StructTraits<media::mojom::EncryptionPatternDataView,
-                    media::EncryptionPattern> {
-  static uint32_t crypt_byte_block(const media::EncryptionPattern& input) {
-    return input.crypt_byte_block();
-  }
-
-  static uint32_t skip_byte_block(const media::EncryptionPattern& input) {
-    return input.skip_byte_block();
-  }
-
-  static bool Read(media::mojom::EncryptionPatternDataView input,
-                   media::EncryptionPattern* output);
-};
-
-template <>
-struct StructTraits<media::mojom::EncryptionSchemeDataView,
-                    media::EncryptionScheme> {
-  static media::EncryptionScheme::CipherMode mode(
-      const media::EncryptionScheme& input) {
-    return input.mode();
-  }
-
-  static media::EncryptionPattern pattern(
-      const media::EncryptionScheme& input) {
-    return input.pattern();
-  }
-
-  static bool Read(media::mojom::EncryptionSchemeDataView input,
-                   media::EncryptionScheme* output);
-};
-
-}  // namespace mojo
-
-#endif  // MEDIA_MOJO_MOJOM_ENCRYPTION_SCHEME_MOJOM_TRAITS_H_
diff --git a/media/mojo/mojom/encryption_scheme_mojom_traits_unittest.cc b/media/mojo/mojom/encryption_scheme_mojom_traits_unittest.cc
deleted file mode 100644
index 99cce07..0000000
--- a/media/mojo/mojom/encryption_scheme_mojom_traits_unittest.cc
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "media/mojo/mojom/encryption_scheme_mojom_traits.h"
-
-#include <utility>
-
-#include "media/base/encryption_scheme.h"
-#include "media/base/media_util.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace media {
-
-TEST(EncryptionSchemeStructTraitsTest,
-     ConvertEncryptionSchemeAesCbcWithPattern) {
-  EncryptionScheme input(EncryptionScheme::CIPHER_MODE_AES_CBC,
-                         EncryptionPattern(1, 9));
-  std::vector<uint8_t> data = media::mojom::EncryptionScheme::Serialize(&input);
-
-  EncryptionScheme output;
-  EXPECT_TRUE(
-      media::mojom::EncryptionScheme::Deserialize(std::move(data), &output));
-  EXPECT_TRUE(output.Matches(input));
-
-  // Verify a couple of negative cases.
-  EXPECT_FALSE(output.Matches(Unencrypted()));
-  EXPECT_FALSE(output.Matches(AesCtrEncryptionScheme()));
-}
-
-}  // namespace media
diff --git a/media/mojo/mojom/key_system_support.mojom b/media/mojo/mojom/key_system_support.mojom
index 99a807d..06ede1b 100644
--- a/media/mojo/mojom/key_system_support.mojom
+++ b/media/mojo/mojom/key_system_support.mojom
@@ -14,12 +14,12 @@
   // Software secure codecs and encryption schemes supported by the CDM.
   array<VideoCodec> video_codecs;
   bool supports_vp9_profile2;
-  array<EncryptionMode> encryption_schemes;
+  array<EncryptionScheme> encryption_schemes;
 
   // Hardware secure codecs and encryption schemes supported by the CDM,
   // directly or indirectly through CdmProxy.
   array<VideoCodec> hw_secure_video_codecs;
-  array<EncryptionMode> hw_secure_encryption_schemes;
+  array<EncryptionScheme> hw_secure_encryption_schemes;
 
   // Session types supported in software secure mode if no
   // |hw_secure_video_codecs| is supported, or in both modes otherwise.
diff --git a/media/mojo/mojom/media_types.mojom b/media/mojo/mojom/media_types.mojom
index 1068f46..93fb25c 100644
--- a/media/mojo/mojom/media_types.mojom
+++ b/media/mojo/mojom/media_types.mojom
@@ -80,10 +80,6 @@
 [Native]
 enum WatchTimeKey;
 
-// See media/base/decrypt_config.h for descriptions.
-[Native]
-enum EncryptionMode;
-
 // See media/base/container_names.h for descriptions.
 [Native]
 enum MediaContainerName;
@@ -99,15 +95,9 @@
   uint32 skip_byte_block;
 };
 
-// This defines a mojo transport format for media::EncryptionScheme.
 // See media/base/encryption_scheme.h for description.
-struct EncryptionScheme {
-  [Native]
-  enum CipherMode;
-
-  CipherMode mode;
-  EncryptionPattern pattern;
-};
+[Native]
+enum EncryptionScheme;
 
 // This defines a mojo transport format for media::VideoColorSpace.
 // See media/base/video_color_space.h for description.
@@ -183,7 +173,7 @@
 // This defines a mojo transport format for media::DecryptConfig.
 // See media/base/decrypt_config.h for descriptions.
 struct DecryptConfig {
-  EncryptionMode encryption_mode;
+  EncryptionScheme encryption_scheme;
   string key_id;
   string iv;
   array<SubsampleEntry> subsamples;
diff --git a/media/mojo/mojom/media_types.typemap b/media/mojo/mojom/media_types.typemap
index 02aaa323..a24f592 100644
--- a/media/mojo/mojom/media_types.typemap
+++ b/media/mojo/mojom/media_types.typemap
@@ -49,8 +49,7 @@
   "media.mojom.ChannelLayout=::media::ChannelLayout",
   "media.mojom.ColorSpace=::media::ColorSpace",
   "media.mojom.DecodeStatus=::media::DecodeStatus",
-  "media.mojom.EncryptionMode=::media::EncryptionMode",
-  "media.mojom.EncryptionScheme.CipherMode=::media::EncryptionScheme::CipherMode",
+  "media.mojom.EncryptionScheme=::media::EncryptionScheme",
   "media.mojom.MediaContainerName=::media::container_names::MediaContainerName",
   "media.mojom.MediaLogEvent=::media::MediaLogEvent",
   "media.mojom.OutputDeviceStatus=::media::OutputDeviceStatus",
@@ -64,6 +63,5 @@
   "media.mojom.VideoTransformation=::media::VideoTransformation",
   "media.mojom.WaitingReason=::media::WaitingReason",
   "media.mojom.WatchTimeKey=::media::WatchTimeKey",
-  "media.mojom.EncryptionPattern=::media::EncryptionPattern",
   "media.mojom.MediaStatusState=::media::MediaStatus::State",
 ]
diff --git a/media/mojo/mojom/typemaps.gni b/media/mojo/mojom/typemaps.gni
index 8dc9420..987ebfc 100644
--- a/media/mojo/mojom/typemaps.gni
+++ b/media/mojo/mojom/typemaps.gni
@@ -11,7 +11,7 @@
   "//media/mojo/mojom/content_decryption_module.typemap",
   "//media/mojo/mojom/decryptor.typemap",
   "//media/mojo/mojom/demuxer_stream.typemap",
-  "//media/mojo/mojom/encryption_scheme.typemap",
+  "//media/mojo/mojom/encryption_pattern.typemap",
   "//media/mojo/mojom/hdr_metadata.typemap",
   "//media/mojo/mojom/media_drm_storage.typemap",
   "//media/mojo/mojom/media_types.typemap",
diff --git a/media/mojo/mojom/video_decoder_config_mojom_traits.h b/media/mojo/mojom/video_decoder_config_mojom_traits.h
index 05fffca..0d3f4e1 100644
--- a/media/mojo/mojom/video_decoder_config_mojom_traits.h
+++ b/media/mojo/mojom/video_decoder_config_mojom_traits.h
@@ -7,7 +7,6 @@
 
 #include "media/base/ipc/media_param_traits.h"
 #include "media/base/video_decoder_config.h"
-#include "media/mojo/mojom/encryption_scheme_mojom_traits.h"
 #include "media/mojo/mojom/hdr_metadata_mojom_traits.h"
 #include "media/mojo/mojom/media_types.mojom.h"
 #include "media/mojo/mojom/video_color_space_mojom_traits.h"
@@ -50,7 +49,7 @@
     return input.extra_data();
   }
 
-  static const media::EncryptionScheme& encryption_scheme(
+  static media::EncryptionScheme encryption_scheme(
       const media::VideoDecoderConfig& input) {
     return input.encryption_scheme();
   }
diff --git a/media/mojo/mojom/video_decoder_config_mojom_traits_unittest.cc b/media/mojo/mojom/video_decoder_config_mojom_traits_unittest.cc
index 002306a8e..2be014f 100644
--- a/media/mojo/mojom/video_decoder_config_mojom_traits_unittest.cc
+++ b/media/mojo/mojom/video_decoder_config_mojom_traits_unittest.cc
@@ -28,7 +28,7 @@
   VideoDecoderConfig input(
       kCodecVP8, VP8PROFILE_ANY, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace(), kNoTransformation, kCodedSize, kVisibleRect,
-      kNaturalSize, kExtraDataVector, Unencrypted());
+      kNaturalSize, kExtraDataVector, EncryptionScheme::kUnencrypted);
   std::vector<uint8_t> data =
       media::mojom::VideoDecoderConfig::Serialize(&input);
   VideoDecoderConfig output;
@@ -42,7 +42,7 @@
   VideoDecoderConfig input(
       kCodecVP8, VP8PROFILE_ANY, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace(), kNoTransformation, kCodedSize, kVisibleRect,
-      kNaturalSize, EmptyExtraData(), Unencrypted());
+      kNaturalSize, EmptyExtraData(), EncryptionScheme::kUnencrypted);
   std::vector<uint8_t> data =
       media::mojom::VideoDecoderConfig::Serialize(&input);
   VideoDecoderConfig output;
@@ -55,7 +55,7 @@
   VideoDecoderConfig input(
       kCodecVP8, VP8PROFILE_ANY, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace(), kNoTransformation, kCodedSize, kVisibleRect,
-      kNaturalSize, EmptyExtraData(), AesCtrEncryptionScheme());
+      kNaturalSize, EmptyExtraData(), EncryptionScheme::kCenc);
   std::vector<uint8_t> data =
       media::mojom::VideoDecoderConfig::Serialize(&input);
   VideoDecoderConfig output;
@@ -73,7 +73,7 @@
                       VideoColorSpace::MatrixID::BT2020_CL,
                       gfx::ColorSpace::RangeID::LIMITED),
       kNoTransformation, kCodedSize, kVisibleRect, kNaturalSize,
-      EmptyExtraData(), Unencrypted());
+      EmptyExtraData(), EncryptionScheme::kUnencrypted);
   std::vector<uint8_t> data =
       media::mojom::VideoDecoderConfig::Serialize(&input);
   VideoDecoderConfig output;
@@ -87,7 +87,7 @@
   VideoDecoderConfig input(
       kCodecVP8, VP8PROFILE_ANY, VideoDecoderConfig::AlphaMode::kIsOpaque,
       VideoColorSpace(), kNoTransformation, kCodedSize, kVisibleRect,
-      kNaturalSize, EmptyExtraData(), Unencrypted());
+      kNaturalSize, EmptyExtraData(), EncryptionScheme::kUnencrypted);
   HDRMetadata hdr_metadata;
   hdr_metadata.max_frame_average_light_level = 123;
   hdr_metadata.max_content_light_level = 456;
@@ -126,10 +126,10 @@
 
   // Next try an non-empty invalid config. Natural size must not be zero.
   const gfx::Size kInvalidNaturalSize(0, 0);
-  input.Initialize(kCodecVP8, VP8PROFILE_ANY,
-                   VideoDecoderConfig::AlphaMode::kIsOpaque, VideoColorSpace(),
-                   kNoTransformation, kCodedSize, kVisibleRect,
-                   kInvalidNaturalSize, EmptyExtraData(), Unencrypted());
+  input.Initialize(
+      kCodecVP8, VP8PROFILE_ANY, VideoDecoderConfig::AlphaMode::kIsOpaque,
+      VideoColorSpace(), kNoTransformation, kCodedSize, kVisibleRect,
+      kInvalidNaturalSize, EmptyExtraData(), EncryptionScheme::kUnencrypted);
   EXPECT_FALSE(input.IsValidConfig());
 
   // Deserialize should again fail due to invalid config.
diff --git a/media/mojo/mojom/watch_time_recorder.mojom b/media/mojo/mojom/watch_time_recorder.mojom
index 8374b82..ff6737ee 100644
--- a/media/mojo/mojom/watch_time_recorder.mojom
+++ b/media/mojo/mojom/watch_time_recorder.mojom
@@ -30,8 +30,8 @@
   VideoCodecProfile video_codec_profile;
   string audio_decoder_name;
   string video_decoder_name;
-  EncryptionMode audio_encryption_scheme;
-  EncryptionMode video_encryption_scheme;
+  EncryptionScheme audio_encryption_scheme;
+  EncryptionScheme video_encryption_scheme;
   gfx.mojom.Size natural_size;  // Size of video frame; (0, 0) if audio only.
 };
 
diff --git a/media/mojo/services/watch_time_recorder_unittest.cc b/media/mojo/services/watch_time_recorder_unittest.cc
index 0fcdea77..1d60279 100644
--- a/media/mojo/services/watch_time_recorder_unittest.cc
+++ b/media/mojo/services/watch_time_recorder_unittest.cc
@@ -170,7 +170,7 @@
   mojom::SecondaryPlaybackPropertiesPtr CreateSecondaryProperties() {
     return mojom::SecondaryPlaybackProperties::New(
         kCodecAAC, kCodecH264, H264PROFILE_MAIN, "", "",
-        EncryptionMode::kUnencrypted, EncryptionMode::kUnencrypted,
+        EncryptionScheme::kUnencrypted, EncryptionScheme::kUnencrypted,
         gfx::Size(800, 600));
   }
 
@@ -590,7 +590,8 @@
   mojom::SecondaryPlaybackPropertiesPtr secondary_properties =
       mojom::SecondaryPlaybackProperties::New(
           kCodecAAC, kCodecH264, H264PROFILE_MAIN, "", "",
-          EncryptionMode::kCenc, EncryptionMode::kCbcs, gfx::Size(800, 600));
+          EncryptionScheme::kCenc, EncryptionScheme::kCbcs,
+          gfx::Size(800, 600));
   Initialize(properties.Clone());
   wtr_->UpdateSecondaryProperties(secondary_properties.Clone());
 
@@ -651,7 +652,7 @@
   mojom::SecondaryPlaybackPropertiesPtr secondary_properties =
       mojom::SecondaryPlaybackProperties::New(
           kCodecOpus, kCodecVP9, VP9PROFILE_PROFILE0, "", "",
-          EncryptionMode::kUnencrypted, EncryptionMode::kUnencrypted,
+          EncryptionScheme::kUnencrypted, EncryptionScheme::kUnencrypted,
           gfx::Size(800, 600));
   Initialize(properties.Clone());
   wtr_->UpdateSecondaryProperties(secondary_properties.Clone());
@@ -952,8 +953,8 @@
   mojom::SecondaryPlaybackPropertiesPtr secondary_properties1 =
       mojom::SecondaryPlaybackProperties::New(
           kUnknownAudioCodec, kUnknownVideoCodec, VIDEO_CODEC_PROFILE_UNKNOWN,
-          "", "", EncryptionMode::kUnencrypted, EncryptionMode::kUnencrypted,
-          gfx::Size(800, 600));
+          "", "", EncryptionScheme::kUnencrypted,
+          EncryptionScheme::kUnencrypted, gfx::Size(800, 600));
   Initialize(properties.Clone());
   wtr_->UpdateSecondaryProperties(secondary_properties1.Clone());
 
@@ -963,8 +964,8 @@
   mojom::SecondaryPlaybackPropertiesPtr secondary_properties2 =
       mojom::SecondaryPlaybackProperties::New(
           kCodecAAC, kCodecH264, H264PROFILE_MAIN, "FFmpegAudioDecoder",
-          "FFmpegVideoDecoder", EncryptionMode::kUnencrypted,
-          EncryptionMode::kUnencrypted, gfx::Size(800, 600));
+          "FFmpegVideoDecoder", EncryptionScheme::kUnencrypted,
+          EncryptionScheme::kUnencrypted, gfx::Size(800, 600));
   wtr_->UpdateSecondaryProperties(secondary_properties2.Clone());
 
   wtr_.reset();
@@ -1015,8 +1016,8 @@
   mojom::SecondaryPlaybackPropertiesPtr secondary_properties1 =
       mojom::SecondaryPlaybackProperties::New(
           kCodecOpus, kCodecVP9, VP9PROFILE_PROFILE0, "MojoAudioDecoder",
-          "MojoVideoDecoder", EncryptionMode::kUnencrypted,
-          EncryptionMode::kUnencrypted, gfx::Size(400, 300));
+          "MojoVideoDecoder", EncryptionScheme::kUnencrypted,
+          EncryptionScheme::kUnencrypted, gfx::Size(400, 300));
   Initialize(properties.Clone());
   wtr_->UpdateSecondaryProperties(secondary_properties1.Clone());
 
@@ -1035,8 +1036,8 @@
   mojom::SecondaryPlaybackPropertiesPtr secondary_properties2 =
       mojom::SecondaryPlaybackProperties::New(
           kCodecAAC, kCodecH264, H264PROFILE_MAIN, "FFmpegAudioDecoder",
-          "FFmpegVideoDecoder", EncryptionMode::kCenc, EncryptionMode::kCenc,
-          gfx::Size(800, 600));
+          "FFmpegVideoDecoder", EncryptionScheme::kCenc,
+          EncryptionScheme::kCenc, gfx::Size(800, 600));
   wtr_->UpdateSecondaryProperties(secondary_properties2.Clone());
 
   constexpr base::TimeDelta kWatchTime2 = base::TimeDelta::FromSeconds(25);
@@ -1140,8 +1141,8 @@
   mojom::SecondaryPlaybackPropertiesPtr secondary_properties1 =
       mojom::SecondaryPlaybackProperties::New(
           kCodecOpus, kCodecVP9, VP9PROFILE_PROFILE0, "MojoAudioDecoder",
-          "MojoVideoDecoder", EncryptionMode::kUnencrypted,
-          EncryptionMode::kUnencrypted, gfx::Size(400, 300));
+          "MojoVideoDecoder", EncryptionScheme::kUnencrypted,
+          EncryptionScheme::kUnencrypted, gfx::Size(400, 300));
   Initialize(properties.Clone());
   wtr_->UpdateSecondaryProperties(secondary_properties1.Clone());
 
@@ -1160,8 +1161,8 @@
   mojom::SecondaryPlaybackPropertiesPtr secondary_properties2 =
       mojom::SecondaryPlaybackProperties::New(
           kCodecAAC, kCodecH264, H264PROFILE_MAIN, "FFmpegAudioDecoder",
-          "FFmpegVideoDecoder", EncryptionMode::kUnencrypted,
-          EncryptionMode::kUnencrypted, gfx::Size(800, 600));
+          "FFmpegVideoDecoder", EncryptionScheme::kUnencrypted,
+          EncryptionScheme::kUnencrypted, gfx::Size(800, 600));
   wtr_->UpdateSecondaryProperties(secondary_properties2.Clone());
 
   // Don't record any watch time to the new record, it should report zero watch
@@ -1247,7 +1248,7 @@
   mojom::SecondaryPlaybackPropertiesPtr secondary_properties1 =
       mojom::SecondaryPlaybackProperties::New(
           kCodecOpus, kCodecVP9, VP9PROFILE_PROFILE0, "MojoAudioDecoder",
-          "MojoVideoDecoder", EncryptionMode::kCbcs, EncryptionMode::kCbcs,
+          "MojoVideoDecoder", EncryptionScheme::kCbcs, EncryptionScheme::kCbcs,
           gfx::Size(400, 300));
   Initialize(properties.Clone());
   wtr_->UpdateSecondaryProperties(secondary_properties1.Clone());
@@ -1271,8 +1272,8 @@
   mojom::SecondaryPlaybackPropertiesPtr secondary_properties2 =
       mojom::SecondaryPlaybackProperties::New(
           kCodecAAC, kCodecH264, H264PROFILE_MAIN, "FFmpegAudioDecoder",
-          "FFmpegVideoDecoder", EncryptionMode::kUnencrypted,
-          EncryptionMode::kUnencrypted, gfx::Size(800, 600));
+          "FFmpegVideoDecoder", EncryptionScheme::kUnencrypted,
+          EncryptionScheme::kUnencrypted, gfx::Size(800, 600));
   wtr_->UpdateSecondaryProperties(secondary_properties2.Clone());
 
   constexpr base::TimeDelta kWatchTime2 = base::TimeDelta::FromSeconds(25);
@@ -1366,7 +1367,7 @@
   mojom::SecondaryPlaybackPropertiesPtr secondary_properties1 =
       mojom::SecondaryPlaybackProperties::New(
           kCodecOpus, kCodecVP9, VP9PROFILE_PROFILE0, "MojoAudioDecoder",
-          "MojoVideoDecoder", EncryptionMode::kCbcs, EncryptionMode::kCbcs,
+          "MojoVideoDecoder", EncryptionScheme::kCbcs, EncryptionScheme::kCbcs,
           gfx::Size(400, 300));
   Initialize(properties.Clone());
   wtr_->UpdateSecondaryProperties(secondary_properties1.Clone());
@@ -1384,8 +1385,8 @@
   mojom::SecondaryPlaybackPropertiesPtr secondary_properties2 =
       mojom::SecondaryPlaybackProperties::New(
           kCodecAAC, kCodecH264, H264PROFILE_MAIN, "FFmpegAudioDecoder",
-          "FFmpegVideoDecoder", EncryptionMode::kUnencrypted,
-          EncryptionMode::kUnencrypted, gfx::Size(800, 600));
+          "FFmpegVideoDecoder", EncryptionScheme::kUnencrypted,
+          EncryptionScheme::kUnencrypted, gfx::Size(800, 600));
   wtr_->UpdateSecondaryProperties(secondary_properties2.Clone());
 
   constexpr base::TimeDelta kWatchTime2 = base::TimeDelta::FromSeconds(25);
diff --git a/media/remoting/courier_renderer_unittest.cc b/media/remoting/courier_renderer_unittest.cc
index de6ed68..9f637bbb4 100644
--- a/media/remoting/courier_renderer_unittest.cc
+++ b/media/remoting/courier_renderer_unittest.cc
@@ -558,9 +558,9 @@
 }
 
 TEST_F(CourierRendererTest, OnAudioConfigChange) {
-  const AudioDecoderConfig kNewAudioConfig(kCodecVorbis, kSampleFormatPlanarF32,
-                                           CHANNEL_LAYOUT_STEREO, 44100,
-                                           EmptyExtraData(), Unencrypted());
+  const AudioDecoderConfig kNewAudioConfig(
+      kCodecVorbis, kSampleFormatPlanarF32, CHANNEL_LAYOUT_STEREO, 44100,
+      EmptyExtraData(), EncryptionScheme::kUnencrypted);
   InitializeRenderer();
   // Make sure initial audio config does not match the one we intend to send.
   ASSERT_FALSE(render_client_->audio_decoder_config().Matches(kNewAudioConfig));
diff --git a/media/remoting/fake_media_resource.cc b/media/remoting/fake_media_resource.cc
index 7381d167..e77cf87 100644
--- a/media/remoting/fake_media_resource.cc
+++ b/media/remoting/fake_media_resource.cc
@@ -22,15 +22,17 @@
   type_ = is_audio ? DemuxerStream::AUDIO : DemuxerStream::VIDEO;
   if (is_audio) {
     audio_config_.Initialize(kCodecAAC, kSampleFormatS16, CHANNEL_LAYOUT_STEREO,
-                             38400, std::vector<uint8_t>(), Unencrypted(),
-                             base::TimeDelta(), 0);
+                             38400, std::vector<uint8_t>(),
+                             EncryptionScheme::kUnencrypted, base::TimeDelta(),
+                             0);
   } else {
     gfx::Size size(640, 480);
     gfx::Rect rect(0, 0, 640, 480);
     video_config_.Initialize(kCodecH264, H264PROFILE_BASELINE,
                              VideoDecoderConfig::AlphaMode::kIsOpaque,
                              VideoColorSpace::REC601(), kNoTransformation, size,
-                             rect, size, std::vector<uint8_t>(), Unencrypted());
+                             rect, size, std::vector<uint8_t>(),
+                             EncryptionScheme::kUnencrypted);
   }
   ON_CALL(*this, Read(_))
       .WillByDefault(Invoke(this, &FakeDemuxerStream::FakeRead));
diff --git a/media/remoting/proto_enum_utils.cc b/media/remoting/proto_enum_utils.cc
index 807a48cf..a2313f6 100644
--- a/media/remoting/proto_enum_utils.cc
+++ b/media/remoting/proto_enum_utils.cc
@@ -11,26 +11,28 @@
   case OriginType::x:        \
     return OtherType::x
 
-base::Optional<EncryptionScheme::CipherMode> ToMediaEncryptionSchemeCipherMode(
+base::Optional<EncryptionScheme> ToMediaEncryptionScheme(
     pb::EncryptionScheme::CipherMode value) {
-  using OriginType = pb::EncryptionScheme;
-  using OtherType = EncryptionScheme;
   switch (value) {
-    CASE_RETURN_OTHER(CIPHER_MODE_UNENCRYPTED);
-    CASE_RETURN_OTHER(CIPHER_MODE_AES_CTR);
-    CASE_RETURN_OTHER(CIPHER_MODE_AES_CBC);
+    case pb::EncryptionScheme::CIPHER_MODE_UNENCRYPTED:
+      return EncryptionScheme::kUnencrypted;
+    case pb::EncryptionScheme::CIPHER_MODE_AES_CTR:
+      return EncryptionScheme::kCenc;
+    case pb::EncryptionScheme::CIPHER_MODE_AES_CBC:
+      return EncryptionScheme::kCbcs;
   }
   return base::nullopt;  // Not a 'default' to ensure compile-time checks.
 }
 
 base::Optional<pb::EncryptionScheme::CipherMode>
-ToProtoEncryptionSchemeCipherMode(EncryptionScheme::CipherMode value) {
-  using OriginType = EncryptionScheme;
-  using OtherType = pb::EncryptionScheme;
+ToProtoEncryptionSchemeCipherMode(EncryptionScheme value) {
   switch (value) {
-    CASE_RETURN_OTHER(CIPHER_MODE_UNENCRYPTED);
-    CASE_RETURN_OTHER(CIPHER_MODE_AES_CTR);
-    CASE_RETURN_OTHER(CIPHER_MODE_AES_CBC);
+    case EncryptionScheme::kUnencrypted:
+      return pb::EncryptionScheme::CIPHER_MODE_UNENCRYPTED;
+    case EncryptionScheme::kCenc:
+      return pb::EncryptionScheme::CIPHER_MODE_AES_CTR;
+    case EncryptionScheme::kCbcs:
+      return pb::EncryptionScheme::CIPHER_MODE_AES_CBC;
   }
   return base::nullopt;  // Not a 'default' to ensure compile-time checks.
 }
@@ -561,9 +563,10 @@
   return base::nullopt;  // Not a 'default' to ensure compile-time checks.
 }
 
-base::Optional<EncryptionMode> ToMediaEncryptionMode(pb::EncryptionMode value) {
+base::Optional<EncryptionScheme> ToMediaEncryptionScheme(
+    pb::EncryptionMode value) {
   using OriginType = pb::EncryptionMode;
-  using OtherType = EncryptionMode;
+  using OtherType = EncryptionScheme;
   switch (value) {
     CASE_RETURN_OTHER(kUnencrypted);
     CASE_RETURN_OTHER(kCenc);
@@ -572,8 +575,9 @@
   return base::nullopt;  // Not a 'default' to ensure compile-time checks.
 }
 
-base::Optional<pb::EncryptionMode> ToProtoEncryptionMode(EncryptionMode value) {
-  using OriginType = EncryptionMode;
+base::Optional<pb::EncryptionMode> ToProtoEncryptionMode(
+    EncryptionScheme value) {
+  using OriginType = EncryptionScheme;
   using OtherType = pb::EncryptionMode;
   switch (value) {
     CASE_RETURN_OTHER(kUnencrypted);
diff --git a/media/remoting/proto_enum_utils.h b/media/remoting/proto_enum_utils.h
index 113cf9f..6a92c4b 100644
--- a/media/remoting/proto_enum_utils.h
+++ b/media/remoting/proto_enum_utils.h
@@ -32,10 +32,10 @@
 // Each returns a base::Optional value. If it is not set, that indicates the
 // conversion failed.
 
-base::Optional<EncryptionScheme::CipherMode> ToMediaEncryptionSchemeCipherMode(
+base::Optional<EncryptionScheme> ToMediaEncryptionScheme(
     pb::EncryptionScheme::CipherMode value);
 base::Optional<pb::EncryptionScheme::CipherMode>
-ToProtoEncryptionSchemeCipherMode(EncryptionScheme::CipherMode value);
+ToProtoEncryptionSchemeCipherMode(EncryptionScheme value);
 
 base::Optional<AudioCodec> ToMediaAudioCodec(
     pb::AudioDecoderConfig::Codec value);
@@ -96,8 +96,10 @@
 base::Optional<pb::DemuxerStreamReadUntilCallback::Status>
 ToProtoDemuxerStreamStatus(DemuxerStream::Status value);
 
-base::Optional<EncryptionMode> ToMediaEncryptionMode(pb::EncryptionMode value);
-base::Optional<pb::EncryptionMode> ToProtoEncryptionMode(EncryptionMode value);
+base::Optional<EncryptionScheme> ToMediaEncryptionScheme(
+    pb::EncryptionMode value);
+base::Optional<pb::EncryptionMode> ToProtoEncryptionMode(
+    EncryptionScheme value);
 
 }  // namespace remoting
 }  // namespace media
diff --git a/media/remoting/proto_utils.cc b/media/remoting/proto_utils.cc
index 6d34554c..50374662 100644
--- a/media/remoting/proto_utils.cc
+++ b/media/remoting/proto_utils.cc
@@ -135,7 +135,7 @@
   }
 
   config_message->set_mode(
-      ToProtoEncryptionMode(decrypt_config.encryption_mode()).value());
+      ToProtoEncryptionMode(decrypt_config.encryption_scheme()).value());
   if (decrypt_config.HasPattern()) {
     config_message->set_crypt_byte_block(
         decrypt_config.encryption_pattern()->crypt_byte_block());
@@ -235,20 +235,23 @@
   return buffer;
 }
 
-void ConvertEncryptionSchemeToProto(const EncryptionScheme& encryption_scheme,
+void ConvertEncryptionSchemeToProto(EncryptionScheme encryption_scheme,
                                     pb::EncryptionScheme* message) {
   DCHECK(message);
+
+  // The remote side only cares about the cipher mode. Setting EncryptionPattern
+  // to (0, 0) is fine.
+  // TODO(crbug.com/1018923): Upgrade proto to remove EncryptionPattern from
+  // Audio/VideoDecoderConfig.
   message->set_mode(
-      ToProtoEncryptionSchemeCipherMode(encryption_scheme.mode()).value());
-  message->set_encrypt_blocks(encryption_scheme.pattern().crypt_byte_block());
-  message->set_skip_blocks(encryption_scheme.pattern().skip_byte_block());
+      ToProtoEncryptionSchemeCipherMode(encryption_scheme).value());
+  message->set_encrypt_blocks(0);
+  message->set_skip_blocks(0);
 }
 
 EncryptionScheme ConvertProtoToEncryptionScheme(
     const pb::EncryptionScheme& message) {
-  return EncryptionScheme(
-      ToMediaEncryptionSchemeCipherMode(message.mode()).value(),
-      EncryptionPattern(message.encrypt_blocks(), message.skip_blocks()));
+  return ToMediaEncryptionScheme(message.mode()).value();
 }
 
 void ConvertAudioDecoderConfigToProto(const AudioDecoderConfig& audio_config,
@@ -359,7 +362,6 @@
     const pb::VideoDecoderConfig& video_message,
     VideoDecoderConfig* video_config) {
   DCHECK(video_config);
-  EncryptionScheme encryption_scheme;
 
   // TODO(hubbe): Update pb to use VideoColorSpace
   VideoColorSpace color_space;
diff --git a/media/remoting/proto_utils_unittest.cc b/media/remoting/proto_utils_unittest.cc
index b20c4bb..4e1748a 100644
--- a/media/remoting/proto_utils_unittest.cc
+++ b/media/remoting/proto_utils_unittest.cc
@@ -114,8 +114,7 @@
 
 TEST_F(ProtoUtilsTest, AudioDecoderConfigConversionTest) {
   const std::string extra_data = "ACEG";
-  const EncryptionScheme encryption_scheme(
-      EncryptionScheme::CIPHER_MODE_AES_CTR, EncryptionPattern(20, 40));
+  const EncryptionScheme encryption_scheme = EncryptionScheme::kCenc;
   AudioDecoderConfig audio_config(
       kCodecAAC, kSampleFormatF32, CHANNEL_LAYOUT_MONO, 48000,
       std::vector<uint8_t>(extra_data.begin(), extra_data.end()),
diff --git a/media/remoting/renderer_controller_unittest.cc b/media/remoting/renderer_controller_unittest.cc
index 9507195..3caf8a17 100644
--- a/media/remoting/renderer_controller_unittest.cc
+++ b/media/remoting/renderer_controller_unittest.cc
@@ -288,7 +288,7 @@
 TEST_F(RendererControllerTest, WithAACAudioCodec) {
   const AudioDecoderConfig audio_config = AudioDecoderConfig(
       AudioCodec::kCodecAAC, kSampleFormatPlanarF32, CHANNEL_LAYOUT_STEREO,
-      44100, EmptyExtraData(), Unencrypted());
+      44100, EmptyExtraData(), EncryptionScheme::kUnencrypted);
   PipelineMetadata pipeline_metadata = DefaultMetadata(VideoCodec::kCodecVP8);
   pipeline_metadata.audio_decoder_config = audio_config;
   InitializeControllerAndBecomeDominant(pipeline_metadata,
@@ -316,7 +316,7 @@
 TEST_F(RendererControllerTest, WithOpusAudioCodec) {
   const AudioDecoderConfig audio_config = AudioDecoderConfig(
       AudioCodec::kCodecOpus, kSampleFormatPlanarF32, CHANNEL_LAYOUT_STEREO,
-      44100, EmptyExtraData(), Unencrypted());
+      44100, EmptyExtraData(), EncryptionScheme::kUnencrypted);
   PipelineMetadata pipeline_metadata = DefaultMetadata(VideoCodec::kCodecVP8);
   pipeline_metadata.audio_decoder_config = audio_config;
   InitializeControllerAndBecomeDominant(pipeline_metadata,
diff --git a/media/renderers/audio_renderer_impl_unittest.cc b/media/renderers/audio_renderer_impl_unittest.cc
index 6ed5f91..c9ec128 100644
--- a/media/renderers/audio_renderer_impl_unittest.cc
+++ b/media/renderers/audio_renderer_impl_unittest.cc
@@ -106,7 +106,7 @@
         ended_(false) {
     AudioDecoderConfig audio_config(kCodec, kSampleFormat, kChannelLayout,
                                     kInputSamplesPerSecond, EmptyExtraData(),
-                                    Unencrypted());
+                                    EncryptionScheme::kUnencrypted);
     demuxer_stream_.set_audio_decoder_config(audio_config);
 
     ConfigureDemuxerStream(true);
@@ -218,9 +218,9 @@
     hardware_params_.Reset(AudioParameters::AUDIO_BITSTREAM_EAC3,
                            kChannelLayout, kOutputSamplesPerSecond, 512);
     sink_ = new FakeAudioRendererSink(hardware_params_);
-    AudioDecoderConfig audio_config(kCodecAC3, kSampleFormatEac3,
-                                    kChannelLayout, kInputSamplesPerSecond,
-                                    EmptyExtraData(), Unencrypted());
+    AudioDecoderConfig audio_config(
+        kCodecAC3, kSampleFormatEac3, kChannelLayout, kInputSamplesPerSecond,
+        EmptyExtraData(), EncryptionScheme::kUnencrypted);
     demuxer_stream_.set_audio_decoder_config(audio_config);
 
     ConfigureDemuxerStream(true);
@@ -565,7 +565,7 @@
   EXPECT_CALL(new_stream, SupportsConfigChanges()).WillOnce(Return(false));
   AudioDecoderConfig audio_config(kCodec, kSampleFormat, kChannelLayout,
                                   kInputSamplesPerSecond, EmptyExtraData(),
-                                  Unencrypted());
+                                  EncryptionScheme::kUnencrypted);
   new_stream.set_audio_decoder_config(audio_config);
 
   // The renderer is now in the flushed state and can be reinitialized.
@@ -586,7 +586,7 @@
   // that RendererClient to be signaled with the new config.
   const AudioDecoderConfig kValidAudioConfig(
       kCodecVorbis, kSampleFormatPlanarF32, CHANNEL_LAYOUT_STEREO, 44100,
-      EmptyExtraData(), Unencrypted());
+      EmptyExtraData(), EncryptionScheme::kUnencrypted);
   EXPECT_TRUE(kValidAudioConfig.IsValidConfig());
   EXPECT_CALL(*this, OnAudioConfigChange(DecoderConfigEq(kValidAudioConfig)));
   force_config_change(kValidAudioConfig);
@@ -850,7 +850,7 @@
 
   AudioDecoderConfig audio_config(
       kCodecOpus, kSampleFormat, CHANNEL_LAYOUT_DISCRETE,
-      kInputSamplesPerSecond, EmptyExtraData(), Unencrypted());
+      kInputSamplesPerSecond, EmptyExtraData(), EncryptionScheme::kUnencrypted);
   audio_config.SetChannelsForDiscrete(audio_channels);
   demuxer_stream_.set_audio_decoder_config(audio_config);
   ConfigureDemuxerStream(true);
diff --git a/media/video/video_decode_accelerator.h b/media/video/video_decode_accelerator.h
index b0a5448..262600a 100644
--- a/media/video/video_decode_accelerator.h
+++ b/media/video/video_decode_accelerator.h
@@ -137,13 +137,15 @@
     ~Config();
 
     std::string AsHumanReadableString() const;
-    bool is_encrypted() const { return encryption_scheme.is_encrypted(); }
+    bool is_encrypted() const {
+      return encryption_scheme != EncryptionScheme::kUnencrypted;
+    }
 
     // The video codec and profile.
     VideoCodecProfile profile = VIDEO_CODEC_PROFILE_UNKNOWN;
 
     // Whether the stream is encrypted, and, if so, the scheme used.
-    EncryptionScheme encryption_scheme;
+    EncryptionScheme encryption_scheme = EncryptionScheme::kUnencrypted;
 
     // The CDM that the VDA should use to decode encrypted streams. Must be
     // set to a valid ID if |is_encrypted|.
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_adapter.cc b/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_adapter.cc
index 55ec5e8..59f7558 100644
--- a/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_adapter.cc
+++ b/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_adapter.cc
@@ -154,7 +154,8 @@
       GuessVideoCodecProfile(format),
       media::VideoDecoderConfig::AlphaMode::kIsOpaque, media::VideoColorSpace(),
       media::kNoTransformation, kDefaultSize, gfx::Rect(kDefaultSize),
-      kDefaultSize, media::EmptyExtraData(), media::Unencrypted());
+      kDefaultSize, media::EmptyExtraData(),
+      media::EncryptionScheme::kUnencrypted);
   if (!gpu_factories->IsDecoderConfigSupported(kImplementation, config))
     return nullptr;