diff --git a/media/base/media_channel.cc b/media/base/media_channel.cc
index 0cef36e..aa20ad9 100644
--- a/media/base/media_channel.cc
+++ b/media/base/media_channel.cc
@@ -78,9 +78,6 @@
 VideoMediaInfo::VideoMediaInfo() = default;
 VideoMediaInfo::~VideoMediaInfo() = default;
 
-DataMediaInfo::DataMediaInfo() = default;
-DataMediaInfo::~DataMediaInfo() = default;
-
 AudioSendParameters::AudioSendParameters() = default;
 AudioSendParameters::~AudioSendParameters() = default;
 
@@ -107,31 +104,4 @@
   return cricket::MediaType::MEDIA_TYPE_VIDEO;
 }
 
-DataMediaChannel::DataMediaChannel() = default;
-DataMediaChannel::DataMediaChannel(const MediaConfig& config)
-    : MediaChannel(config) {}
-DataMediaChannel::~DataMediaChannel() = default;
-
-webrtc::RtpParameters DataMediaChannel::GetRtpSendParameters(
-    uint32_t ssrc) const {
-  // GetRtpSendParameters is not supported for DataMediaChannel.
-  RTC_NOTREACHED();
-  return webrtc::RtpParameters();
-}
-webrtc::RTCError DataMediaChannel::SetRtpSendParameters(
-    uint32_t ssrc,
-    const webrtc::RtpParameters& parameters) {
-  // SetRtpSendParameters is not supported for DataMediaChannel.
-  RTC_NOTREACHED();
-  return webrtc::RTCError(webrtc::RTCErrorType::UNSUPPORTED_OPERATION);
-}
-
-cricket::MediaType DataMediaChannel::media_type() const {
-  return cricket::MediaType::MEDIA_TYPE_DATA;
-}
-
-bool DataMediaChannel::GetStats(DataMediaInfo* info) {
-  return true;
-}
-
 }  // namespace cricket
diff --git a/media/base/media_channel.h b/media/base/media_channel.h
index c44e058..714e4d6 100644
--- a/media/base/media_channel.h
+++ b/media/base/media_channel.h
@@ -676,14 +676,6 @@
   absl::optional<webrtc::TimingFrameInfo> timing_frame_info;
 };
 
-struct DataSenderInfo : public MediaSenderInfo {
-  uint32_t ssrc = 0;
-};
-
-struct DataReceiverInfo : public MediaReceiverInfo {
-  uint32_t ssrc = 0;
-};
-
 struct BandwidthEstimationInfo {
   int available_send_bandwidth = 0;
   int available_recv_bandwidth = 0;
@@ -737,17 +729,6 @@
   RtpCodecParametersMap receive_codecs;
 };
 
-struct DataMediaInfo {
-  DataMediaInfo();
-  ~DataMediaInfo();
-  void Clear() {
-    senders.clear();
-    receivers.clear();
-  }
-  std::vector<DataSenderInfo> senders;
-  std::vector<DataReceiverInfo> receivers;
-};
-
 struct RtcpParameters {
   bool reduced_size = false;
   bool remote_estimate = false;
@@ -990,46 +971,6 @@
 
 enum SendDataResult { SDR_SUCCESS, SDR_ERROR, SDR_BLOCK };
 
-struct DataSendParameters : RtpSendParameters<DataCodec> {};
-
-struct DataRecvParameters : RtpParameters<DataCodec> {};
-
-class DataMediaChannel : public MediaChannel {
- public:
-  DataMediaChannel();
-  explicit DataMediaChannel(const MediaConfig& config);
-  ~DataMediaChannel() override;
-
-  cricket::MediaType media_type() const override;
-  virtual bool SetSendParameters(const DataSendParameters& params) = 0;
-  virtual bool SetRecvParameters(const DataRecvParameters& params) = 0;
-
-  // RtpParameter methods are not supported for Data channel.
-  webrtc::RtpParameters GetRtpSendParameters(uint32_t ssrc) const override;
-  webrtc::RTCError SetRtpSendParameters(
-      uint32_t ssrc,
-      const webrtc::RtpParameters& parameters) override;
-
-  // TODO(pthatcher): Implement this.
-  virtual bool GetStats(DataMediaInfo* info);
-
-  virtual bool SetSend(bool send) = 0;
-  virtual bool SetReceive(bool receive) = 0;
-
-  void OnNetworkRouteChanged(const std::string& transport_name,
-                             const rtc::NetworkRoute& network_route) override {}
-
-  virtual bool SendData(const SendDataParams& params,
-                        const rtc::CopyOnWriteBuffer& payload,
-                        SendDataResult* result = NULL) = 0;
-  // Signals when data is received (params, data, len)
-  sigslot::signal3<const ReceiveDataParams&, const char*, size_t>
-      SignalDataReceived;
-  // Signal when the media channel is ready to send the stream. Arguments are:
-  //     writable(bool)
-  sigslot::signal1<bool> SignalReadyToSend;
-};
-
 }  // namespace cricket
 
 #endif  // MEDIA_BASE_MEDIA_CHANNEL_H_
