diff --git a/call.cc b/call.cc
index 68d4843..2ba1692 100644
--- a/call.cc
+++ b/call.cc
@@ -41,14 +41,15 @@
   virtual VideoSendStream* CreateVideoSendStream(
       const VideoSendStream::Config& config) OVERRIDE;
 
-  virtual void DestroySendStream(webrtc::VideoSendStream* send_stream) OVERRIDE;
+  virtual void DestroyVideoSendStream(webrtc::VideoSendStream* send_stream)
+      OVERRIDE;
 
   virtual VideoReceiveStream::Config GetDefaultReceiveConfig() OVERRIDE;
 
   virtual VideoReceiveStream* CreateVideoReceiveStream(
       const VideoReceiveStream::Config& config) OVERRIDE;
 
-  virtual void DestroyReceiveStream(
+  virtual void DestroyVideoReceiveStream(
       webrtc::VideoReceiveStream* receive_stream) OVERRIDE;
 
   virtual uint32_t SendBitrateEstimate() OVERRIDE;
@@ -228,7 +229,7 @@
   return send_stream;
 }
 
-void Call::DestroySendStream(webrtc::VideoSendStream* send_stream) {
+void Call::DestroyVideoSendStream(webrtc::VideoSendStream* send_stream) {
   assert(send_stream != NULL);
 
   VideoSendStream* send_stream_impl = NULL;
@@ -265,7 +266,8 @@
   return receive_stream;
 }
 
-void Call::DestroyReceiveStream(webrtc::VideoReceiveStream* receive_stream) {
+void Call::DestroyVideoReceiveStream(
+    webrtc::VideoReceiveStream* receive_stream) {
   assert(receive_stream != NULL);
 
   VideoReceiveStream* receive_stream_impl = NULL;
diff --git a/call.h b/call.h
index 7b3de93..186672d 100644
--- a/call.h
+++ b/call.h
@@ -66,13 +66,14 @@
   // Returns the internal state of the send stream, for resume sending with a
   // new stream with different settings.
   // Note: Only the last returned send-stream state is valid.
-  virtual void DestroySendStream(VideoSendStream* send_stream) = 0;
+  virtual void DestroyVideoSendStream(VideoSendStream* send_stream) = 0;
 
   virtual VideoReceiveStream::Config GetDefaultReceiveConfig() = 0;
 
   virtual VideoReceiveStream* CreateVideoReceiveStream(
       const VideoReceiveStream::Config& config) = 0;
-  virtual void DestroyReceiveStream(VideoReceiveStream* receive_stream) = 0;
+  virtual void DestroyVideoReceiveStream(
+      VideoReceiveStream* receive_stream) = 0;
 
   // All received RTP and RTCP packets for the call should be inserted to this
   // PacketReceiver. The PacketReceiver pointer is valid as long as the
diff --git a/call_tests.cc b/call_tests.cc
index 1789ebc..773886d 100644
--- a/call_tests.cc
+++ b/call_tests.cc
@@ -119,9 +119,9 @@
 
   void DestroyStreams() {
     if (send_stream_ != NULL)
-      sender_call_->DestroySendStream(send_stream_);
+      sender_call_->DestroyVideoSendStream(send_stream_);
     if (receive_stream_ != NULL)
-      receiver_call_->DestroyReceiveStream(receive_stream_);
+      receiver_call_->DestroyVideoReceiveStream(receive_stream_);
     send_stream_ = NULL;
     receive_stream_ = NULL;
   }
@@ -623,7 +623,7 @@
   CreateFrameGenerator();
   StartSending();
 
-  receiver_call_->DestroyReceiveStream(receive_stream_);
+  receiver_call_->DestroyVideoReceiveStream(receive_stream_);
   receive_stream_ = NULL;
 
   // Wait() waits for a received packet.
@@ -810,8 +810,8 @@
   for (size_t i = 0; i < kNumStreams; ++i) {
     frame_generators[i]->Stop();
     delete frame_generators[i];
-    sender_call->DestroySendStream(send_streams[i]);
-    receiver_call->DestroyReceiveStream(receive_streams[i]);
+    sender_call->DestroyVideoSendStream(send_streams[i]);
+    receiver_call->DestroyVideoReceiveStream(receive_streams[i]);
     delete observers[i];
   }
 
diff --git a/loopback.cc b/loopback.cc
index 4e72735..e07138a 100644
--- a/loopback.cc
+++ b/loopback.cc
@@ -91,8 +91,8 @@
   send_stream->StopSending();
   receive_stream->StopReceiving();
 
-  call->DestroyReceiveStream(receive_stream);
-  call->DestroySendStream(send_stream);
+  call->DestroyVideoReceiveStream(receive_stream);
+  call->DestroyVideoSendStream(send_stream);
 
   transport.StopSending();
 }
diff --git a/video/full_stack.cc b/video/full_stack.cc
index 30d63a4..17e7686 100644
--- a/video/full_stack.cc
+++ b/video/full_stack.cc
@@ -435,8 +435,8 @@
   send_stream->StopSending();
   receive_stream->StopReceiving();
 
-  call->DestroyReceiveStream(receive_stream);
-  call->DestroySendStream(send_stream);
+  call->DestroyVideoReceiveStream(receive_stream);
+  call->DestroyVideoSendStream(send_stream);
 
   transport.StopSending();
 }
diff --git a/video/rampup_tests.cc b/video/rampup_tests.cc
index 346c189..b294c70 100644
--- a/video/rampup_tests.cc
+++ b/video/rampup_tests.cc
@@ -162,8 +162,8 @@
   send_stream->StopSending();
   receive_stream->StopReceiving();
 
-  call->DestroyReceiveStream(receive_stream);
-  call->DestroySendStream(send_stream);
+  call->DestroyVideoReceiveStream(receive_stream);
+  call->DestroyVideoSendStream(send_stream);
 }
 
 INSTANTIATE_TEST_CASE_P(RampUpTest, RampUpTest, ::testing::Bool());
diff --git a/video/video_send_stream_tests.cc b/video/video_send_stream_tests.cc
index 0affdbd..67555ec 100644
--- a/video/video_send_stream_tests.cc
+++ b/video/video_send_stream_tests.cc
@@ -52,7 +52,7 @@
     observer->StopSending();
     frame_generator_capturer->Stop();
     send_stream_->StopSending();
-    call->DestroySendStream(send_stream_);
+    call->DestroyVideoSendStream(send_stream_);
   }
 
   VideoSendStream::Config GetSendTestConfig(Call* call) {
