diff --git a/webrtc/DEPS b/webrtc/DEPS
index ffb67d1..41e0b71 100644
--- a/webrtc/DEPS
+++ b/webrtc/DEPS
@@ -13,7 +13,6 @@
   "+webrtc/call.h",
   "+webrtc/common.h",
   "+webrtc/common_types.h",
-  "+webrtc/common_video/rotation.h",
   "+webrtc/config.h",
   "+webrtc/engine_configurations.h",
   "+webrtc/transport.h",
diff --git a/webrtc/common_types.cc b/webrtc/common_types.cc
index 8f117e1..86e7813 100644
--- a/webrtc/common_types.cc
+++ b/webrtc/common_types.cc
@@ -27,7 +27,7 @@
       voiceActivity(false),
       audioLevel(0),
       hasVideoRotation(false),
-      videoRotation(kVideoRotation_0) {}
+      videoRotation(0) {}
 
 RTPHeader::RTPHeader()
     : markerBit(false),
diff --git a/webrtc/common_types.h b/webrtc/common_types.h
index cad748a..1ef5f91 100644
--- a/webrtc/common_types.h
+++ b/webrtc/common_types.h
@@ -18,7 +18,6 @@
 #include <string>
 #include <vector>
 
-#include "webrtc/common_video/rotation.h"
 #include "webrtc/typedefs.h"
 
 #if defined(_MSC_VER)
@@ -700,7 +699,7 @@
   // http://www.etsi.org/deliver/etsi_ts/126100_126199/126114/12.07.00_60/
   // ts_126114v120700p.pdf
   bool hasVideoRotation;
-  VideoRotation videoRotation;
+  uint8_t videoRotation;
 
   PlayoutDelay playout_delay = {-1, -1};
 };
diff --git a/webrtc/modules/rtp_rtcp/include/rtp_cvo.h b/webrtc/modules/rtp_rtcp/include/rtp_cvo.h
index b60b06e..5d5c995 100644
--- a/webrtc/modules/rtp_rtcp/include/rtp_cvo.h
+++ b/webrtc/modules/rtp_rtcp/include/rtp_cvo.h
@@ -34,10 +34,8 @@
   return 0;
 }
 
-inline VideoRotation ConvertCVOByteToVideoRotation(uint8_t cvo_byte) {
-  // CVO byte: |0 0 0 0 C F R R|.
-  const uint8_t rotation_bits = cvo_byte & 0x3;
-  switch (rotation_bits) {
+inline VideoRotation ConvertCVOByteToVideoRotation(uint8_t rotation) {
+  switch (rotation) {
     case 0:
       return kVideoRotation_0;
     case 1:
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.cc b/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.cc
index 6e65ed3..2d5dbf9 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.cc
@@ -177,7 +177,7 @@
 }
 
 bool VideoOrientation::Parse(const uint8_t* data, VideoRotation* rotation) {
-  *rotation = ConvertCVOByteToVideoRotation(data[0]);
+  *rotation = ConvertCVOByteToVideoRotation(data[0] & 0x03);
   return true;
 }
 
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.cc b/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.cc
index 9f6d80a..7667c46 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.cc
@@ -94,8 +94,8 @@
 
   // Retrieve the video rotation information.
   if (rtp_header->header.extension.hasVideoRotation) {
-    rtp_header->type.Video.rotation =
-        rtp_header->header.extension.videoRotation;
+    rtp_header->type.Video.rotation = ConvertCVOByteToVideoRotation(
+        rtp_header->header.extension.videoRotation);
   }
 
   rtp_header->type.Video.playout_delay =
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
index b9f061a..e11bf1e 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -262,7 +262,8 @@
     EXPECT_EQ(rtp_sender_->SSRC(), rtp_header.ssrc);
     EXPECT_EQ(0, rtp_header.numCSRCs);
     EXPECT_EQ(0U, rtp_header.paddingLength);
-    EXPECT_EQ(rotation, rtp_header.extension.videoRotation);
+    EXPECT_EQ(ConvertVideoRotationToCVOByte(rotation),
+              rtp_header.extension.videoRotation);
   }
 };
 
@@ -576,7 +577,8 @@
   VerifyRTPHeaderCommon(rtp_header);
   EXPECT_EQ(length, rtp_header.headerLength);
   EXPECT_TRUE(rtp_header.extension.hasVideoRotation);
-  EXPECT_EQ(kRotation, rtp_header.extension.videoRotation);
+  EXPECT_EQ(ConvertVideoRotationToCVOByte(kRotation),
+            rtp_header.extension.videoRotation);
 }
 
 // Test CVO header extension is not set when marker bit is false.
@@ -1689,26 +1691,4 @@
       transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1,
       hdr.rotation);
 }
-
-// Make sure rotation is parsed correctly when the Camera (C) and Flip (F) bits
-// are set in the CVO byte.
-TEST_F(RtpSenderVideoTest, SendVideoWithCameraAndFlipCVO) {
-  // Test extracting rotation when Camera (C) and Flip (F) bits are zero.
-  EXPECT_EQ(kVideoRotation_0, ConvertCVOByteToVideoRotation(0));
-  EXPECT_EQ(kVideoRotation_90, ConvertCVOByteToVideoRotation(1));
-  EXPECT_EQ(kVideoRotation_180, ConvertCVOByteToVideoRotation(2));
-  EXPECT_EQ(kVideoRotation_270, ConvertCVOByteToVideoRotation(3));
-  // Test extracting rotation when Camera (C) and Flip (F) bits are set.
-  const int flip_bit = 1 << 2;
-  const int camera_bit = 1 << 3;
-  EXPECT_EQ(kVideoRotation_0,
-            ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 0));
-  EXPECT_EQ(kVideoRotation_90,
-            ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 1));
-  EXPECT_EQ(kVideoRotation_180,
-            ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 2));
-  EXPECT_EQ(kVideoRotation_270,
-            ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 3));
-}
-
 }  // namespace webrtc
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_utility.cc b/webrtc/modules/rtp_rtcp/source/rtp_utility.cc
index 7dd5973..e38b3a3 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_utility.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_utility.cc
@@ -13,7 +13,6 @@
 #include <string.h>
 
 #include "webrtc/base/logging.h"
-#include "webrtc/modules/rtp_rtcp/include/rtp_cvo.h"
 #include "webrtc/modules/rtp_rtcp/source/byte_io.h"
 
 namespace webrtc {
@@ -247,7 +246,7 @@
 
   // May not be present in packet.
   header->extension.hasVideoRotation = false;
-  header->extension.videoRotation = kVideoRotation_0;
+  header->extension.videoRotation = 0;
 
   // May not be present in packet.
   header->extension.playout_delay.min_ms = -1;
@@ -398,8 +397,7 @@
           // |  ID   | len=0 |0 0 0 0 C F R R|
           // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           header->extension.hasVideoRotation = true;
-          header->extension.videoRotation =
-              ConvertCVOByteToVideoRotation(ptr[0]);
+          header->extension.videoRotation = ptr[0];
           break;
         }
         case kRtpExtensionTransportSequenceNumber: {
diff --git a/webrtc/sdk/DEPS b/webrtc/sdk/DEPS
index d6e53d5..16ef0f6 100644
--- a/webrtc/sdk/DEPS
+++ b/webrtc/sdk/DEPS
@@ -2,6 +2,7 @@
   "+WebRTC",
   "+webrtc/api",
   "+webrtc/common_video/include",
+  "+webrtc/common_video/rotation.h",
   "+webrtc/media",
   "+webrtc/system_wrappers",
 ]
diff --git a/webrtc/video/rtp_stream_receiver.cc b/webrtc/video/rtp_stream_receiver.cc
index 20acc06..d5b547f 100644
--- a/webrtc/video/rtp_stream_receiver.cc
+++ b/webrtc/video/rtp_stream_receiver.cc
@@ -443,7 +443,8 @@
   rtp_header.type.Video.codec = payload_specific.Video.videoCodecType;
   rtp_header.type.Video.rotation = kVideoRotation_0;
   if (header.extension.hasVideoRotation) {
-    rtp_header.type.Video.rotation = header.extension.videoRotation;
+    rtp_header.type.Video.rotation =
+        ConvertCVOByteToVideoRotation(header.extension.videoRotation);
   }
   rtp_header.type.Video.playout_delay = header.extension.playout_delay;
 
