diff --git a/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc b/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc
index 7ced8dd..3b26214 100644
--- a/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc
@@ -216,9 +216,13 @@
       original->GetData().data(), original->GetData().size());
   EncodedImage encoded_image;
   encoded_image.SetEncodedData(encoded_image_buffer);
+  encoded_image._frameType = original->IsKeyFrame()
+                                 ? VideoFrameType::kVideoFrameKey
+                                 : VideoFrameType::kVideoFrameDelta;
+  // TODO(bugs.webrtc.org/14708): Fill in other EncodedImage parameters
+
   VideoFrameMetadata metadata = original->Metadata();
   RTPVideoHeader new_header = RTPVideoHeader::FromMetadata(metadata);
-  // TODO(bugs.webrtc.org/14708): Fill in other EncodedImage parameters
   return std::make_unique<TransformableVideoSenderFrame>(
       encoded_image, new_header, original->GetPayloadType(), new_header.codec,
       original->GetTimestamp(),
diff --git a/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate_unittest.cc
index 075f680..ad1d0b3 100644
--- a/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate_unittest.cc
@@ -58,9 +58,12 @@
   ~RtpSenderVideoFrameTransformerDelegateTest() override = default;
 
   std::unique_ptr<TransformableFrameInterface> GetTransformableFrame(
-      rtc::scoped_refptr<RTPSenderVideoFrameTransformerDelegate> delegate) {
+      rtc::scoped_refptr<RTPSenderVideoFrameTransformerDelegate> delegate,
+      bool key_frame = false) {
     EncodedImage encoded_image;
     encoded_image.SetEncodedData(EncodedImageBuffer::Create(1));
+    encoded_image._frameType = key_frame ? VideoFrameType::kVideoFrameKey
+                                         : VideoFrameType::kVideoFrameDelta;
     std::unique_ptr<TransformableFrameInterface> frame = nullptr;
     EXPECT_CALL(*frame_transformer_, Transform)
         .WillOnce([&](std::unique_ptr<TransformableFrameInterface>
@@ -154,16 +157,36 @@
       GetTransformableFrame(delegate);
   ASSERT_TRUE(frame);
 
-  TransformableVideoFrameInterface* video_frame =
-      static_cast<TransformableVideoFrameInterface*>(frame.get());
+  auto& video_frame = static_cast<TransformableVideoFrameInterface&>(*frame);
   std::unique_ptr<TransformableVideoFrameInterface> clone =
-      CloneSenderVideoFrame(video_frame);
+      CloneSenderVideoFrame(&video_frame);
 
-  EXPECT_EQ(video_frame->IsKeyFrame(), clone->IsKeyFrame());
-  EXPECT_EQ(video_frame->GetPayloadType(), clone->GetPayloadType());
-  EXPECT_EQ(video_frame->GetSsrc(), clone->GetSsrc());
-  EXPECT_EQ(video_frame->GetTimestamp(), clone->GetTimestamp());
-  EXPECT_EQ(video_frame->Metadata(), clone->Metadata());
+  EXPECT_EQ(clone->IsKeyFrame(), video_frame.IsKeyFrame());
+  EXPECT_EQ(clone->GetPayloadType(), video_frame.GetPayloadType());
+  EXPECT_EQ(clone->GetSsrc(), video_frame.GetSsrc());
+  EXPECT_EQ(clone->GetTimestamp(), video_frame.GetTimestamp());
+  EXPECT_EQ(clone->Metadata(), video_frame.Metadata());
+}
+
+TEST_F(RtpSenderVideoFrameTransformerDelegateTest, CloneKeyFrame) {
+  auto delegate = rtc::make_ref_counted<RTPSenderVideoFrameTransformerDelegate>(
+      &test_sender_, frame_transformer_,
+      /*ssrc=*/1111, /*csrcs=*/std::vector<uint32_t>(),
+      time_controller_.CreateTaskQueueFactory().get());
+
+  std::unique_ptr<TransformableFrameInterface> frame =
+      GetTransformableFrame(delegate, /*key_frame=*/true);
+  ASSERT_TRUE(frame);
+
+  auto& video_frame = static_cast<TransformableVideoFrameInterface&>(*frame);
+  std::unique_ptr<TransformableVideoFrameInterface> clone =
+      CloneSenderVideoFrame(&video_frame);
+
+  EXPECT_EQ(clone->IsKeyFrame(), video_frame.IsKeyFrame());
+  EXPECT_EQ(clone->GetPayloadType(), video_frame.GetPayloadType());
+  EXPECT_EQ(clone->GetSsrc(), video_frame.GetSsrc());
+  EXPECT_EQ(clone->GetTimestamp(), video_frame.GetTimestamp());
+  EXPECT_EQ(clone->Metadata(), video_frame.Metadata());
 }
 
 TEST_F(RtpSenderVideoFrameTransformerDelegateTest, MetadataAfterSetMetadata) {
@@ -175,8 +198,7 @@
   std::unique_ptr<TransformableFrameInterface> frame =
       GetTransformableFrame(delegate);
   ASSERT_TRUE(frame);
-  TransformableVideoFrameInterface* video_frame =
-      static_cast<TransformableVideoFrameInterface*>(frame.get());
+  auto& video_frame = static_cast<TransformableVideoFrameInterface&>(*frame);
 
   VideoFrameMetadata metadata;
   metadata.SetFrameType(VideoFrameType::kVideoFrameKey);
@@ -184,8 +206,8 @@
   metadata.SetSsrc(2222);
   metadata.SetCsrcs({1, 2, 3});
 
-  video_frame->SetMetadata(metadata);
-  VideoFrameMetadata actual_metadata = video_frame->Metadata();
+  video_frame.SetMetadata(metadata);
+  VideoFrameMetadata actual_metadata = video_frame.Metadata();
 
   // TODO(bugs.webrtc.org/14708): Just EXPECT_EQ the whole Metadata once the
   // equality operator lands.
