diff --git a/webrtc/examples/android/opensl_loopback/jni/opensl_runner.cc b/webrtc/examples/android/opensl_loopback/jni/opensl_runner.cc
index 5b7c092..81e4ec4 100644
--- a/webrtc/examples/android/opensl_loopback/jni/opensl_runner.cc
+++ b/webrtc/examples/android/opensl_loopback/jni/opensl_runner.cc
@@ -30,7 +30,7 @@
  public:
   OpenSlRunnerTemplate()
       : output_(0),
-        input_(0, &output_) {
+        input_() {
     output_.AttachAudioBuffer(&audio_buffer_);
     if (output_.Init() != 0) {
       assert(false);
diff --git a/webrtc/modules/audio_device/android/opensles_input.cc b/webrtc/modules/audio_device/android/opensles_input.cc
index e68a6aa..e31b57f 100644
--- a/webrtc/modules/audio_device/android/opensles_input.cc
+++ b/webrtc/modules/audio_device/android/opensles_input.cc
@@ -25,8 +25,6 @@
   do {                                                           \
     SLresult err = (op);                                         \
     if (err != SL_RESULT_SUCCESS) {                              \
-      WEBRTC_TRACE(kTraceError, kTraceAudioDevice, id_,          \
-                   "OpenSL error: %d", err);                     \
       assert(false);                                             \
       return ret_val;                                            \
     }                                                            \
@@ -43,11 +41,8 @@
 
 namespace webrtc {
 
-OpenSlesInput::OpenSlesInput(
-    const int32_t id, PlayoutDelayProvider* delay_provider)
-    : id_(id),
-      delay_provider_(delay_provider),
-      initialized_(false),
+OpenSlesInput::OpenSlesInput()
+    : initialized_(false),
       mic_initialized_(false),
       rec_initialized_(false),
       crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
@@ -419,7 +414,6 @@
   if (event_id == kNoOverrun) {
     return false;
   }
-  WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, id_, "Audio overrun");
   assert(event_id == kOverrun);
   assert(event_msg > 0);
   // Wait for all enqueued buffers be flushed.
@@ -533,7 +527,8 @@
   while (fifo_->size() > 0 && recording_) {
     int8_t* audio = fifo_->Pop();
     audio_buffer_->SetRecordedBuffer(audio, buffer_size_samples());
-    audio_buffer_->SetVQEData(delay_provider_->PlayoutDelayMs(),
+    // TODO(henrika): improve the delay estimate.
+    audio_buffer_->SetVQEData(100,
                               recording_delay_, 0);
     audio_buffer_->DeliverRecordedData();
   }
diff --git a/webrtc/modules/audio_device/android/opensles_input.h b/webrtc/modules/audio_device/android/opensles_input.h
index 2f819b3..05a1ef0 100644
--- a/webrtc/modules/audio_device/android/opensles_input.h
+++ b/webrtc/modules/audio_device/android/opensles_input.h
@@ -35,7 +35,7 @@
 // to non-const methods require exclusive access to the object.
 class OpenSlesInput {
  public:
-  OpenSlesInput(const int32_t id, PlayoutDelayProvider* delay_provider);
+  OpenSlesInput();
   ~OpenSlesInput();
 
   static int32_t SetAndroidAudioDeviceObjects(void* javaVM,
@@ -177,8 +177,9 @@
   // Java API handle
   AudioManagerJni audio_manager_;
 
-  int id_;
-  PlayoutDelayProvider* delay_provider_;
+  // TODO(henrika): improve this area
+  // PlayoutDelayProvider* delay_provider_;
+
   bool initialized_;
   bool mic_initialized_;
   bool rec_initialized_;
