diff --git a/src/cobalt/bindings/contexts.py b/src/cobalt/bindings/contexts.py
index 23cd3d7..885f6e5 100644
--- a/src/cobalt/bindings/contexts.py
+++ b/src/cobalt/bindings/contexts.py
@@ -30,6 +30,7 @@
 from overload_context import get_overload_contexts
 from v8_attributes import is_constructor_attribute
 from v8_interface import method_overloads_by_name
+import v8_utilities
 
 
 def is_date_type(idl_type):
@@ -397,6 +398,12 @@
             self.typed_object_to_cobalt_type(interface, operation),
         'is_static':
             operation.is_static,
+        'on_instance':
+            v8_utilities.on_instance(interface, operation),
+        'on_interface':
+            v8_utilities.on_interface(interface, operation),
+        'on_prototype':
+            v8_utilities.on_prototype(interface, operation),
         'call_with':
             operation.extended_attributes.get('CallWith', None),
         'raises_exception':
@@ -406,7 +413,6 @@
         'unsupported':
             'NotSupported' in operation.extended_attributes,
     }
-
     context.update(self.partial_context(interface, operation))
     return context
 
@@ -486,6 +492,12 @@
             self.typed_object_to_cobalt_type(interface, attribute),
         'is_static':
             attribute.is_static,
+        'on_instance':
+            v8_utilities.on_instance(interface, attribute),
+        'on_interface':
+            v8_utilities.on_interface(interface, attribute),
+        'on_prototype':
+            v8_utilities.on_prototype(interface, attribute),
         'is_read_only':
             attribute.is_read_only,
         'call_with':
@@ -598,6 +610,9 @@
       context['idl_name'] = context['overloads'][0]['idl_name']
       context['conditional'] = context['overloads'][0]['conditional']
       context['unsupported'] = context['overloads'][0]['unsupported']
+      context['on_instance'] = context['overloads'][0]['on_instance']
+      context['on_interface'] = context['overloads'][0]['on_interface']
+      context['on_prototype'] = context['overloads'][0]['on_prototype']
       for overload in context['overloads']:
         assert context['conditional'] == overload['conditional'], (
             'All overloads must have the same conditional.')
diff --git a/src/cobalt/bindings/v8c/templates/interface.cc.template b/src/cobalt/bindings/v8c/templates/interface.cc.template
index a5dabfc..8d8736c 100644
--- a/src/cobalt/bindings/v8c/templates/interface.cc.template
+++ b/src/cobalt/bindings/v8c/templates/interface.cc.template
@@ -661,7 +661,7 @@
 {% endif %}
 
     // The location of the property is determined as follows:
-{% if attribute.is_static %}
+{% if attribute.on_interface %}
     // Operations installed on the interface object must be static methods, so
     // no need to specify a signature, i.e. no need to do type check against a
     // holder.
@@ -669,7 +669,7 @@
     // If the attribute is a static attribute, then there is a single
     // corresponding property and it exists on the interface's interface object.
     function_template->
-{% elif attribute.is_unforgeable or is_global_interface %}
+{% elif attribute.on_instance %}
     // Otherwise, if the attribute is unforgeable on the interface or if the
     // interface was declared with the [Global] extended attribute, then the
     // property exists on every object that implements the interface.
@@ -741,11 +741,11 @@
     method_template->SetLength({{operation.length}});
 
     // The location of the property is determined as follows:
-{% if operation.is_static %}
+{% if operation.on_interface %}
     // If the operation is static, then the property exists on the interface
     // object.
     function_template->
-{% elif operation.is_unforgeable or is_global_interface %}
+{% elif operation.on_instance %}
     // Otherwise, if the operation is unforgeable on the interface or if the
     // interface was declared with the [Global] extended attribute, then the
     // property exists on every object that implements the interface.
diff --git a/src/cobalt/build/build.id b/src/cobalt/build/build.id
index 3450182..0952d93 100644
--- a/src/cobalt/build/build.id
+++ b/src/cobalt/build/build.id
@@ -1 +1 @@
-185967
\ No newline at end of file
+186195
\ No newline at end of file
diff --git a/src/cobalt/dom/rule_matching.cc b/src/cobalt/dom/rule_matching.cc
index 736efae..86ae85b 100644
--- a/src/cobalt/dom/rule_matching.cc
+++ b/src/cobalt/dom/rule_matching.cc
@@ -600,12 +600,13 @@
   // |parent_nodes| and |matching_nodes|, as these two containers are kept in
   // sync.
   for (const auto& parent_node_to_remove : parent_nodes_to_remove) {
-    for (size_t index = 0; index < parent_nodes->size(); ++index) {
+    for (size_t index = 0; index < parent_nodes->size();) {
       if (parent_node_to_remove == (*parent_nodes)[index]) {
         node_removed = true;
         parent_nodes->erase(parent_nodes->begin() + index);
         matching_nodes->erase(matching_nodes->begin() + index);
-        break;
+      } else {
+        ++index;
       }
     }
   }
diff --git a/src/cobalt/media/base/drm_system.cc b/src/cobalt/media/base/drm_system.cc
index 5cf1eb6..6ac8145 100644
--- a/src/cobalt/media/base/drm_system.cc
+++ b/src/cobalt/media/base/drm_system.cc
@@ -207,8 +207,9 @@
 
 void DrmSystem::CloseSession(const std::string& session_id) {
   DCHECK(message_loop_->BelongsToCurrentThread());
-
+#if !SB_HAS(DRM_SESSION_CLOSED)
   id_to_session_map_.erase(session_id);
+#endif  // !SB_HAS(DRM_SESSION_CLOSED)
   SbDrmCloseSession(wrapped_drm_system_, session_id.c_str(), session_id.size());
 }
 
diff --git a/src/cobalt/script/standalone_javascript_runner.cc b/src/cobalt/script/standalone_javascript_runner.cc
index cc92421..d18217c 100644
--- a/src/cobalt/script/standalone_javascript_runner.cc
+++ b/src/cobalt/script/standalone_javascript_runner.cc
@@ -30,6 +30,7 @@
 }
 
 void StandaloneJavascriptRunner::RunInteractive() {
+#if defined(COBALT_LINUX)
   while (!std::cin.eof() && std::cin.good()) {
     // Interactive prompt.
     std::cout << "> ";
@@ -42,6 +43,9 @@
     }
   }
   std::cout << std::endl;
+#else
+  NOTIMPLEMENTED();
+#endif
 }
 
 void StandaloneJavascriptRunner::ExecuteFile(const FilePath& path) {
diff --git a/src/starboard/contrib/creator/README.md b/src/starboard/contrib/creator/README.md
index f6f57f0..6e66ee0 100644
--- a/src/starboard/contrib/creator/README.md
+++ b/src/starboard/contrib/creator/README.md
@@ -1,7 +1,7 @@
 # MIPS support
 
 starboard/contrib/creator directory contains port of Cobalt for Creator CI20 platform:
-https://creatordev.io/ci20.html
+https://www.elinux.org/MIPS_Creator_CI20
 
 
 # Building Cobalt for CI20
diff --git a/src/starboard/contrib/creator/shared/media_is_video_supported.cc b/src/starboard/contrib/creator/shared/media_is_video_supported.cc
index 67f03f3..1b13fa7 100644
--- a/src/starboard/contrib/creator/shared/media_is_video_supported.cc
+++ b/src/starboard/contrib/creator/shared/media_is_video_supported.cc
@@ -21,7 +21,12 @@
                                        int frame_width,
                                        int frame_height,
                                        int64_t bitrate,
-                                       int fps) {
+                                       int fps,
+                                       bool decode_to_texture_required) {
+  if (decode_to_texture_required) {
+    // There is no Creator CI20 360 video implementation.
+    return false;
+  }
   return video_codec == kSbMediaVideoCodecH264 && frame_width <= 1920 &&
          frame_height <= 1080 &&
          bitrate <= SB_MEDIA_MAX_VIDEO_BITRATE_IN_BITS_PER_SECOND && fps <= 30;
diff --git a/src/starboard/contrib/creator/shared/starboard_platform.gypi b/src/starboard/contrib/creator/shared/starboard_platform.gypi
index 0353a9e..c53674c 100644
--- a/src/starboard/contrib/creator/shared/starboard_platform.gypi
+++ b/src/starboard/contrib/creator/shared/starboard_platform.gypi
@@ -12,8 +12,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 {
+  'includes': [
+    '<(DEPTH)/starboard/shared/starboard/player/filter/player_filter.gypi',
+  ],
   'variables': {
     'starboard_platform_sources': [
+      '<@(filter_based_player_sources)',
       '<(DEPTH)/starboard/contrib/creator/shared/media_is_video_supported.cc',
       '<(DEPTH)/starboard/contrib/creator/shared/player_components_impl.cc',
       '<(DEPTH)/starboard/linux/shared/atomic_public.h',
@@ -247,38 +251,6 @@
       '<(DEPTH)/starboard/shared/starboard/new.cc',
       '<(DEPTH)/starboard/shared/starboard/player/decoded_audio_internal.cc',
       '<(DEPTH)/starboard/shared/starboard/player/decoded_audio_internal.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/audio_decoder_internal.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/audio_frame_tracker.cc',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/audio_frame_tracker.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/audio_time_stretcher.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/audio_time_stretcher.cc',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/audio_renderer_internal.cc',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/audio_renderer_internal.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/audio_renderer_sink.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/audio_renderer_sink_impl.cc',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/audio_renderer_sink_impl.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/audio_resampler_impl.cc',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/cpu_video_frame.cc',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/cpu_video_frame.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/decoded_audio_queue.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/decoded_audio_queue.cc',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/filter_based_player_worker_handler.cc',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/filter_based_player_worker_handler.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/media_time_provider.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/media_time_provider_impl.cc',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/media_time_provider_impl.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/player_components.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/punchout_video_renderer_sink.cc',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/punchout_video_renderer_sink.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/video_decoder_internal.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/video_frame_internal.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/video_render_algorithm.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/video_render_algorithm_impl.cc',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/video_render_algorithm_impl.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/video_renderer_internal.cc',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/video_renderer_internal.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/wsola_internal.h',
-      '<(DEPTH)/starboard/shared/starboard/player/filter/wsola_internal.cc',
       '<(DEPTH)/starboard/shared/starboard/player/input_buffer_internal.cc',
       '<(DEPTH)/starboard/shared/starboard/player/input_buffer_internal.h',
       '<(DEPTH)/starboard/shared/starboard/player/job_queue.cc',
diff --git a/src/starboard/linux/shared/BUILD.gn b/src/starboard/linux/shared/BUILD.gn
index 2ad6091..321db07 100644
--- a/src/starboard/linux/shared/BUILD.gn
+++ b/src/starboard/linux/shared/BUILD.gn
@@ -470,6 +470,7 @@
     "//starboard/shared/starboard/media/media_get_audio_output_count_stereo_only.cc",
     "//starboard/shared/starboard/media/media_is_audio_supported_aac_and_opus.cc",
     "//starboard/shared/starboard/media/media_is_output_protected.cc",
+    "//starboard/shared/starboard/media/media_is_transfer_characteristics_supported.cc",
     "//starboard/shared/starboard/media/media_set_output_protection.cc",
     "//starboard/shared/starboard/media/media_util.cc",
     "//starboard/shared/starboard/media/media_util.h",
@@ -537,7 +538,7 @@
     "//starboard/shared/starboard/system_request_stop.cc",
     "//starboard/shared/starboard/system_request_suspend.cc",
     "//starboard/shared/starboard/system_request_unpause.cc",
-    '//starboard/shared/starboard/system_supports_resume.cc',
+    "//starboard/shared/starboard/system_supports_resume.cc",
     "//starboard/shared/starboard/window_set_default_options.cc",
     "//starboard/shared/stub/accessibility_get_display_settings.cc",
     "//starboard/shared/stub/accessibility_get_text_to_speech_settings.cc",
@@ -558,7 +559,6 @@
     "//starboard/shared/stub/image_decode.cc",
     "//starboard/shared/stub/image_is_decode_supported.cc",
     "//starboard/shared/stub/media_is_supported.cc",
-    "//starboard/shared/stub/media_is_transfer_characteristics_supported.cc",
     "//starboard/shared/stub/microphone_close.cc",
     "//starboard/shared/stub/microphone_create.cc",
     "//starboard/shared/stub/microphone_destroy.cc",
diff --git a/src/starboard/linux/shared/starboard_platform.gypi b/src/starboard/linux/shared/starboard_platform.gypi
index c7588ca..67a24f7 100644
--- a/src/starboard/linux/shared/starboard_platform.gypi
+++ b/src/starboard/linux/shared/starboard_platform.gypi
@@ -240,6 +240,7 @@
       '<(DEPTH)/starboard/shared/starboard/media/media_is_audio_supported_aac_and_opus.cc',
       '<(DEPTH)/starboard/shared/starboard/media/media_is_buffer_pool_allocate_on_demand.cc',
       '<(DEPTH)/starboard/shared/starboard/media/media_is_buffer_using_memory_pool.cc',
+      '<(DEPTH)/starboard/shared/starboard/media/media_is_transfer_characteristics_supported.cc',
       '<(DEPTH)/starboard/shared/starboard/media/media_set_output_protection.cc',
       '<(DEPTH)/starboard/shared/starboard/media/media_util.cc',
       '<(DEPTH)/starboard/shared/starboard/media/media_util.h',
@@ -296,7 +297,6 @@
       '<(DEPTH)/starboard/shared/stub/cryptography_transform.cc',
       '<(DEPTH)/starboard/shared/stub/image_decode.cc',
       '<(DEPTH)/starboard/shared/stub/image_is_decode_supported.cc',
-      '<(DEPTH)/starboard/shared/stub/media_is_transfer_characteristics_supported.cc',
       '<(DEPTH)/starboard/shared/stub/microphone_close.cc',
       '<(DEPTH)/starboard/shared/stub/microphone_create.cc',
       '<(DEPTH)/starboard/shared/stub/microphone_destroy.cc',
diff --git a/src/starboard/nplb/system_get_property_test.cc b/src/starboard/nplb/system_get_property_test.cc
index bb4379b..0a255c3 100644
--- a/src/starboard/nplb/system_get_property_test.cc
+++ b/src/starboard/nplb/system_get_property_test.cc
@@ -113,7 +113,7 @@
   BasicTest(static_cast<SbSystemPropertyId>(99999), true, false, __LINE__);
 }
 
-TEST(SbSystemGetPathTest, DoesNotTouchOutputBufferOnFailureForDefinedIds) {
+TEST(SbSystemGetPropertyTest, DoesNotTouchOutputBufferOnFailureForDefinedIds) {
   UnmodifiedOnFailureTest(kSbSystemPropertyChipsetModelNumber, __LINE__);
   UnmodifiedOnFailureTest(kSbSystemPropertyFirmwareVersion, __LINE__);
   UnmodifiedOnFailureTest(kSbSystemPropertyFriendlyName, __LINE__);
diff --git a/src/starboard/raspi/shared/starboard_platform.gypi b/src/starboard/raspi/shared/starboard_platform.gypi
index be746db..835f5d0 100644
--- a/src/starboard/raspi/shared/starboard_platform.gypi
+++ b/src/starboard/raspi/shared/starboard_platform.gypi
@@ -290,6 +290,7 @@
         '<(DEPTH)/starboard/shared/starboard/media/media_is_buffer_pool_allocate_on_demand.cc',
         '<(DEPTH)/starboard/shared/starboard/media/media_is_buffer_using_memory_pool.cc',
         '<(DEPTH)/starboard/shared/starboard/media/media_is_output_protected.cc',
+        '<(DEPTH)/starboard/shared/starboard/media/media_is_transfer_characteristics_supported.cc',
         '<(DEPTH)/starboard/shared/starboard/media/media_set_output_protection.cc',
         '<(DEPTH)/starboard/shared/starboard/media/media_util.cc',
         '<(DEPTH)/starboard/shared/starboard/media/media_util.h',
@@ -351,7 +352,6 @@
         '<(DEPTH)/starboard/shared/stub/drm_update_server_certificate.cc',
         '<(DEPTH)/starboard/shared/stub/drm_update_session.cc',
         '<(DEPTH)/starboard/shared/stub/media_is_supported.cc',
-        '<(DEPTH)/starboard/shared/stub/media_is_transfer_characteristics_supported.cc',
         '<(DEPTH)/starboard/shared/stub/system_clear_platform_error.cc',
         '<(DEPTH)/starboard/shared/stub/system_get_total_gpu_memory.cc',
         '<(DEPTH)/starboard/shared/stub/system_get_used_gpu_memory.cc',
diff --git a/src/starboard/raspi/shared/system_get_property.cc b/src/starboard/raspi/shared/system_get_property.cc
index 3930087..a04ae5e 100644
--- a/src/starboard/raspi/shared/system_get_property.cc
+++ b/src/starboard/raspi/shared/system_get_property.cc
@@ -15,6 +15,9 @@
 #include "starboard/system.h"
 
 #include <sys/utsname.h>
+
+#include <string>
+
 #include "starboard/log.h"
 #include "starboard/string.h"
 
@@ -60,19 +63,10 @@
       if (uname(&name) == -1)
         return false;
 
-      if (SbStringCopy(out_value, "Raspian ", value_length) >= value_length)
-        return false;
+      std::string temp =
+          starboard::FormatString("Raspian %s %s", name.sysname, name.machine);
 
-      if (SbStringConcat(out_value, name.sysname, value_length) >= value_length)
-        return false;
-
-      if (SbStringConcat(out_value, " ", value_length) >= value_length)
-        return false;
-
-      if (SbStringConcat(out_value, name.machine, value_length) >= value_length)
-        return false;
-
-      return true;
+      return CopyStringAndTestIfSuccess(out_value, value_length, temp.c_str());
     }
 
     default:
diff --git a/src/starboard/shared/directfb/application_directfb.cc b/src/starboard/shared/directfb/application_directfb.cc
index da8d63b..152bc31 100644
--- a/src/starboard/shared/directfb/application_directfb.cc
+++ b/src/starboard/shared/directfb/application_directfb.cc
@@ -459,7 +459,8 @@
       sigemptyset(&sigaction_config.sa_mask);
       sigaction_config.sa_flags = 0;
 
-      // Unblock SIGSEGV, which has been blocked earlier (perhaps by libdirectfb)
+      // Unblock SIGSEGV, which has been blocked earlier (perhaps by
+      // libdirectfb)
       sigset_t set;
       sigemptyset(&set);
       sigaddset(&set, SIGSEGV);
@@ -523,6 +524,9 @@
 
     SbInputData* data = new SbInputData();
     SbMemorySet(data, 0, sizeof(*data));
+#if SB_API_VERSION >= 10
+    data->timestamp = SbTimeGetMonotonicNow();
+#endif  // SB_API_VERSION >= 10
     data->window = window_;
     SB_DCHECK(SbWindowIsValid(data->window));
     data->type = (event.type == DIET_KEYPRESS ? kSbInputEventTypePress
diff --git a/src/starboard/shared/linux/dev_input/dev_input.cc b/src/starboard/shared/linux/dev_input/dev_input.cc
index ec46365..2ef71fb 100644
--- a/src/starboard/shared/linux/dev_input/dev_input.cc
+++ b/src/starboard/shared/linux/dev_input/dev_input.cc
@@ -892,6 +892,9 @@
 
   SbInputData* data = new SbInputData();
   SbMemorySet(data, 0, sizeof(*data));
+#if SB_API_VERSION >= 10
+  data->timestamp = SbTimeGetMonotonicNow();
+#endif  // SB_API_VERSION >= 10
   data->window = window;
   data->type = type;
   data->device_type = kSbInputDeviceTypeGamepad;
@@ -912,6 +915,9 @@
   SbInputData* data = new SbInputData();
   SbMemorySet(data, 0, sizeof(*data));
 
+#if SB_API_VERSION >= 10
+  data->timestamp = SbTimeGetMonotonicNow();
+#endif  // SB_API_VERSION >= 10
   data->window = window;
   data->type = kSbInputEventTypeMove;
   data->device_type = kSbInputDeviceTypeGamepad;
@@ -940,6 +946,9 @@
   SbInputData* data = new SbInputData();
   SbMemorySet(data, 0, sizeof(*data));
 
+#if SB_API_VERSION >= 10
+  data->timestamp = SbTimeGetMonotonicNow();
+#endif  // SB_API_VERSION >= 10
   data->window = window;
   data->type = type;
   data->device_type = kSbInputDeviceTypeTouchPad;
@@ -1120,6 +1129,9 @@
   SB_DCHECK(event.value <= 2);
   SbInputData* data = new SbInputData();
   SbMemorySet(data, 0, sizeof(*data));
+#if SB_API_VERSION >= 10
+  data->timestamp = SbTimeGetMonotonicNow();
+#endif  // SB_API_VERSION >= 10
   data->window = window_;
   data->type =
       (event.value == 0 ? kSbInputEventTypeUnpress : kSbInputEventTypePress);
diff --git a/src/starboard/shared/starboard/media/media_is_transfer_characteristics_supported.cc b/src/starboard/shared/starboard/media/media_is_transfer_characteristics_supported.cc
new file mode 100644
index 0000000..01f4eca
--- /dev/null
+++ b/src/starboard/shared/starboard/media/media_is_transfer_characteristics_supported.cc
@@ -0,0 +1,22 @@
+// Copyright 2018 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "starboard/shared/starboard/media/media_support_internal.h"
+
+#include "starboard/media.h"
+
+SB_EXPORT bool SbMediaIsTransferCharacteristicsSupported(
+    SbMediaTransferId transfer_id) {
+  return transfer_id == kSbMediaTransferIdBt709;
+}
diff --git a/src/starboard/shared/starboard/player/filter/testing/audio_decoder_test.cc b/src/starboard/shared/starboard/player/filter/testing/audio_decoder_test.cc
index 46e07e8..39a108e 100644
--- a/src/starboard/shared/starboard/player/filter/testing/audio_decoder_test.cc
+++ b/src/starboard/shared/starboard/player/filter/testing/audio_decoder_test.cc
@@ -68,7 +68,9 @@
 
 class AudioDecoderTest : public ::testing::TestWithParam<const char*> {
  public:
-  AudioDecoderTest() : dmp_reader_(ResolveTestFileName(GetParam()).c_str()) {}
+  AudioDecoderTest() : dmp_reader_(ResolveTestFileName(GetParam()).c_str()) {
+    SB_LOG(INFO) << "Testing " << GetParam();
+  }
   void SetUp() override {
     ASSERT_NE(dmp_reader_.audio_codec(), kSbMediaAudioCodecNone);
     ASSERT_GT(dmp_reader_.number_of_audio_buffers(), 0);
diff --git a/src/starboard/shared/starboard/player/filter/testing/video_decoder_test.cc b/src/starboard/shared/starboard/player/filter/testing/video_decoder_test.cc
index 12622c5..8b7d749 100644
--- a/src/starboard/shared/starboard/player/filter/testing/video_decoder_test.cc
+++ b/src/starboard/shared/starboard/player/filter/testing/video_decoder_test.cc
@@ -97,7 +97,9 @@
 class VideoDecoderTest : public ::testing::TestWithParam<TestParam> {
  public:
   VideoDecoderTest()
-      : dmp_reader_(ResolveTestFileName(GetParam().filename).c_str()) {}
+      : dmp_reader_(ResolveTestFileName(GetParam().filename).c_str()) {
+    SB_LOG(INFO) << "Testing " << GetParam().filename;
+  }
 
   void SetUp() override {
     ASSERT_NE(dmp_reader_.video_codec(), kSbMediaVideoCodecNone);
@@ -571,6 +573,9 @@
                             video_decoder_->GetMaxNumberOfCachedFrames();
       }));
   WriteEndOfStream();
+  if (decoded_frames_.size() >= video_decoder_->GetMaxNumberOfCachedFrames()) {
+    return;
+  }
   bool error_occurred = false;
   ASSERT_NO_FATAL_FAILURE(DrainOutputs(
       &error_occurred, [=](const Event& event, bool* continue_process) {
diff --git a/src/starboard/shared/starboard/player/video_dmp_reader.cc b/src/starboard/shared/starboard/player/video_dmp_reader.cc
index 28b3ad4..c497871 100644
--- a/src/starboard/shared/starboard/player/video_dmp_reader.cc
+++ b/src/starboard/shared/starboard/player/video_dmp_reader.cc
@@ -64,15 +64,21 @@
 
 VideoDmpReader::VideoDmpReader(const char* filename)
     : reverse_byte_order_(false),
-      read_cb_(std::bind(&VideoDmpReader::ReadFromFile, this, _1, _2)) {
-  SB_CHECK(SbFileCanOpen(filename, kSbFileOpenOnly | kSbFileRead))
-      << "Can't open " << filename;
-  file_ = SbFileOpen(filename, kSbFileOpenOnly | kSbFileRead, NULL, NULL);
-  SB_DCHECK(SbFileIsValid(file_));
+      read_cb_(std::bind(&VideoDmpReader::ReadFromCache, this, _1, _2)) {
+  ScopedFile file(filename, kSbFileOpenOnly | kSbFileRead);
+  SB_CHECK(file.IsValid()) << "Failed to open " << filename;
+  int64_t file_size = file.GetSize();
+  SB_CHECK(file_size >= 0);
+
+  file_cache_.resize(file_size);
+  int bytes_read = file.Read(file_cache_.data(), file_size);
+  SB_CHECK(bytes_read == file_size);
 
   Parse();
 
-  SbFileClose(file_);
+  // To free memory used by |file_cache_|.
+  decltype(file_cache_) empty;
+  file_cache_.swap(empty);
 }
 
 VideoDmpReader::~VideoDmpReader() {}
@@ -111,7 +117,7 @@
   }
   for (;;) {
     uint32_t type;
-    int bytes_read = ReadFromFile(&type, sizeof(type));
+    int bytes_read = ReadFromCache(&type, sizeof(type));
     if (bytes_read <= 0) {
       break;
     }
@@ -205,8 +211,12 @@
                          std::move(data), video_sample_info);
 }
 
-int VideoDmpReader::ReadFromFile(void* buffer, int bytes_to_read) {
-  return SbFileRead(file_, static_cast<char*>(buffer), bytes_to_read);
+int VideoDmpReader::ReadFromCache(void* buffer, int bytes_to_read) {
+  bytes_to_read = std::min(
+      bytes_to_read, static_cast<int>(file_cache_.size()) - file_cache_offset_);
+  SbMemoryCopy(buffer, file_cache_.data() + file_cache_offset_, bytes_to_read);
+  file_cache_offset_ += bytes_to_read;
+  return bytes_to_read;
 }
 
 }  // namespace video_dmp
diff --git a/src/starboard/shared/starboard/player/video_dmp_reader.h b/src/starboard/shared/starboard/player/video_dmp_reader.h
index e692b3a..2fc8a13 100644
--- a/src/starboard/shared/starboard/player/video_dmp_reader.h
+++ b/src/starboard/shared/starboard/player/video_dmp_reader.h
@@ -98,9 +98,8 @@
   void Parse();
   AudioAccessUnit ReadAudioAccessUnit();
   VideoAccessUnit ReadVideoAccessUnit();
-  int ReadFromFile(void* buffer, int bytes_to_read);
+  int ReadFromCache(void* buffer, int bytes_to_read);
 
-  SbFile file_;
   ReadCB read_cb_;
 
   bool reverse_byte_order_;
@@ -115,6 +114,9 @@
 
   std::vector<AudioAccessUnit> audio_access_units_;
   std::vector<VideoAccessUnit> video_access_units_;
+
+  int file_cache_offset_ = 0;
+  std::vector<char> file_cache_;
 };
 
 }  // namespace video_dmp
diff --git a/src/starboard/shared/wayland/dev_input.cc b/src/starboard/shared/wayland/dev_input.cc
index 2531e5e..2a1e102 100644
--- a/src/starboard/shared/wayland/dev_input.cc
+++ b/src/starboard/shared/wayland/dev_input.cc
@@ -524,6 +524,9 @@
 void DevInput::CreateKey(int key, int state, bool is_repeat) {
   SbInputData* data = new SbInputData();
   SbMemorySet(data, 0, sizeof(*data));
+#if SB_API_VERSION >= 10
+  data->timestamp = SbTimeGetMonotonicNow();
+#endif  // SB_API_VERSION >= 10
   data->window = window_;
   data->type = (state == 0 ? kSbInputEventTypeUnpress : kSbInputEventTypePress);
   data->device_type = kSbInputDeviceTypeRemote;
diff --git a/src/starboard/shared/x11/application_x11.cc b/src/starboard/shared/x11/application_x11.cc
index b52f730..5d45828 100644
--- a/src/starboard/shared/x11/application_x11.cc
+++ b/src/starboard/shared/x11/application_x11.cc
@@ -1119,6 +1119,9 @@
 
   scoped_ptr<SbInputData> data(new SbInputData());
   SbMemorySet(data.get(), 0, sizeof(*data));
+#if SB_API_VERSION >= 10
+  data->timestamp = SbTimeGetMonotonicNow();
+#endif  // SB_API_VERSION >= 10
   data->window = windows_[0];
   SB_DCHECK(SbWindowIsValid(data->window));
   data->type = paste_buffer_key_release_pending_ ? kSbInputEventTypeUnpress
@@ -1184,6 +1187,9 @@
 
       scoped_ptr<SbInputData> data(new SbInputData());
       SbMemorySet(data.get(), 0, sizeof(*data));
+#if SB_API_VERSION >= 10
+      data->timestamp = SbTimeGetMonotonicNow();
+#endif  // SB_API_VERSION >= 10
       data->window = FindWindow(x_key_event->window);
       SB_DCHECK(SbWindowIsValid(data->window));
       data->type = x_event->type == KeyPress ? kSbInputEventTypePress
@@ -1211,6 +1217,9 @@
 #endif
       scoped_ptr<SbInputData> data(new SbInputData());
       SbMemorySet(data.get(), 0, sizeof(*data));
+#if SB_API_VERSION >= 10
+      data->timestamp = SbTimeGetMonotonicNow();
+#endif  // SB_API_VERSION >= 10
       data->window = FindWindow(x_button_event->window);
       SB_DCHECK(SbWindowIsValid(data->window));
       data->key = XButtonEventToSbKey(x_button_event);
@@ -1241,6 +1250,9 @@
       XMotionEvent* x_motion_event = reinterpret_cast<XMotionEvent*>(x_event);
       scoped_ptr<SbInputData> data(new SbInputData());
       SbMemorySet(data.get(), 0, sizeof(*data));
+#if SB_API_VERSION >= 10
+      data->timestamp = SbTimeGetMonotonicNow();
+#endif  // SB_API_VERSION >= 10
       data->window = FindWindow(x_motion_event->window);
       SB_DCHECK(SbWindowIsValid(data->window));
 #if SB_API_VERSION >= 6
