diff --git a/src/third_party/starboard/rdk/shared/BUILD.gn b/src/third_party/starboard/rdk/shared/BUILD.gn
index b0b23eb..6dfbcbd 100644
--- a/src/third_party/starboard/rdk/shared/BUILD.gn
+++ b/src/third_party/starboard/rdk/shared/BUILD.gn
@@ -34,6 +34,7 @@
   rdk_enable_securityagent = true
   rdk_enable_ocdm = true
   rdk_enable_cryptography = true
+  rdk_enable_cbcs = false
 }
 
 pkg_config("glib") {
@@ -87,6 +88,8 @@
 static_library("starboard_platform") {
   check_includes = false
 
+  defines = []
+
   sources = [
     # Shared sources
     "//starboard/shared/gles/system_gles2.cc",
@@ -484,6 +487,10 @@
     configs += [ ":ocdm" ]
   }
 
+  if (rdk_enable_cbcs) {
+    defines += [ "ENABLE_CBCS=1" ]
+  }
+
   public_deps = [
     "//starboard:starboard_headers_only",
     "//starboard/common",
diff --git a/src/third_party/starboard/rdk/shared/drm/gst_decryptor_ocdm.cc b/src/third_party/starboard/rdk/shared/drm/gst_decryptor_ocdm.cc
index c8f10ec..982e7a7 100644
--- a/src/third_party/starboard/rdk/shared/drm/gst_decryptor_ocdm.cc
+++ b/src/third_party/starboard/rdk/shared/drm/gst_decryptor_ocdm.cc
@@ -429,16 +429,16 @@
   GstBuffer* iv = nullptr;
   GstBuffer* key = nullptr;
   uint32_t subsample_count = 0u;
-  uint32_t encryption_scheme = kSbDrmEncryptionSchemeAesCtr;
 
   const GValue* value = nullptr;
 
-  if ( gst_structure_get_uint(info, "encryption_scheme", &encryption_scheme) ) {
-    if (encryption_scheme != kSbDrmEncryptionSchemeAesCtr) {
-      GST_ELEMENT_ERROR (self, STREAM, DECRYPT, ("Decryption failed"), ("Unsupported encryption scheme = %d", encryption_scheme));
-      goto exit;
-    }
+#if !(defined(ENABLE_CBCS) && ENABLE_CBCS)
+  const char* cipher_mode = gst_structure_get_string(info, "cipher-mode");
+  if ( g_strcmp0(cipher_mode, "cbcs") == 0 ) {
+    GST_ELEMENT_ERROR (self, STREAM, DECRYPT, ("Decryption failed"), ("Unsupported chipher-mode = %s", cipher_mode));
+    goto exit;
   }
+#endif
 
   value = gst_structure_get_value(info, "kid");
   if (!value) {
diff --git a/src/third_party/starboard/rdk/shared/player/player_internal.cc b/src/third_party/starboard/rdk/shared/player/player_internal.cc
index d5ce9a6..79074cb 100644
--- a/src/third_party/starboard/rdk/shared/player/player_internal.cc
+++ b/src/third_party/starboard/rdk/shared/player/player_internal.cc
@@ -124,6 +124,11 @@
       gst_object_unref(GST_OBJECT(factory));
       enable_native_audio = true;
     }
+    else if ((factory = gst_element_factory_find("rialtomseaudiosink"))) {
+      guint rank = gst_plugin_feature_get_rank((GstPluginFeature*)factory);
+      gst_object_unref(GST_OBJECT(factory));
+      enable_native_audio = (rank >= GST_RANK_PRIMARY);
+    }
     g_once_init_leave (&init, 1);
   }
 
@@ -1950,6 +1955,21 @@
       g_object_set(G_OBJECT(element), "async", TRUE, nullptr);
     }
   }
+
+  if ( !self->max_video_capabilities_.empty() ) {
+    const gchar* klass_str =
+      gst_element_class_get_metadata (GST_ELEMENT_GET_CLASS (element), "klass");
+    if ( strstr(klass_str, "Sink") && strstr(klass_str, "Video") ) {
+      GObjectClass* oclass = G_OBJECT_GET_CLASS(element);
+      if ( g_object_class_find_property(oclass, "maxVideoWidth") &&
+           g_object_class_find_property(oclass, "maxVideoHeight") ) {
+        uint32_t width = 0, height = 0;
+        ParseMaxVideoCapabilities(self->max_video_capabilities_.c_str(), &width, &height, nullptr);
+        g_object_set(G_OBJECT(element), "maxVideoWidth", width, "maxVideoHeight", height, nullptr);
+      }
+    }
+  }
+
 }
 
 void PlayerImpl::MarkEOS(SbMediaType stream_type) {
@@ -2089,16 +2109,19 @@
             sample_type == kSbMediaTypeVideo ? "video" : "audio");
     SB_DCHECK(drm_system_);
 
-    GST_LOG("Encryption scheme %s",
-            sample_infos[0].drm_info->encryption_scheme == kSbDrmEncryptionSchemeAesCtr ? "Ctr" :
-            (sample_infos[0].drm_info->encryption_scheme == kSbDrmEncryptionSchemeAesCbc ? "Cbc" : "Unknown") );
-
     GstBuffer* subsamples = nullptr;
     GstBuffer* iv = nullptr;
     GstBuffer* key = nullptr;
     uint32_t subsamples_count = 0u;
     uint32_t iv_size = 0u;
+
     const int8_t kEmptyArray[kMaxIvSize / 2] = {0};
+    const auto encryption_scheme = sample_infos[0].drm_info->encryption_scheme;
+    const char* cipher_mode =
+      (encryption_scheme == kSbDrmEncryptionSchemeAesCtr) ? "cenc" :
+      (encryption_scheme == kSbDrmEncryptionSchemeAesCbc  ? "cbcs" : "unknown");
+
+    GST_LOG("Encryption cipher-mode: %s", cipher_mode);
 
     key = gst_buffer_new_allocate(
         nullptr, sample_infos[0].drm_info->identifier_size, nullptr);
@@ -2144,9 +2167,17 @@
       "iv", GST_TYPE_BUFFER, iv,
       "subsample_count", G_TYPE_UINT, subsamples_count,
       "subsamples", GST_TYPE_BUFFER, subsamples,
-      "encryption_scheme", G_TYPE_UINT, sample_infos[0].drm_info->encryption_scheme,
+      "cipher-mode", G_TYPE_STRING, cipher_mode,
       NULL);
 
+    if (encryption_scheme == kSbDrmEncryptionSchemeAesCbc) {
+      const auto& encryption_pattern = sample_infos[0].drm_info->encryption_pattern;
+      gst_structure_set(info,
+        "crypt_byte_block", G_TYPE_UINT, encryption_pattern.crypt_byte_block,
+        "skip_byte_block", G_TYPE_UINT, encryption_pattern.skip_byte_block,
+        NULL);
+    }
+
     gst_buffer_add_protection_meta(buffer, info);
 
     gst_buffer_unref(iv);
