Reland of Deprecate VCMPacketizationCallback::SendData and use EncodedImageCallback instead. (patchset #1 id:1 of https://codereview.webrtc.org/1903193002/ )

Reason for revert:
A fix is being prepared downstream so this can now go in.

Original issue's description:
> Revert of Deprecate VCMPacketizationCallback::SendData and use EncodedImageCallback instead. (patchset #5 id:80001 of https://codereview.webrtc.org/1897233002/ )
>
> Reason for revert:
> API changes broke downstream.
>
> Original issue's description:
> > Deprecate VCMPacketizationCallback::SendData and use EncodedImageCallback instead.
> > EncodedImageCallback is used by all encoder implementations and seems to be what we should try to use in the transport.
> > EncodedImageCallback can of course be cleaned up in the future.
> >
> > This moves creation of RTPVideoHeader from the GenericEncoder to the PayLoadRouter.
> >
> > BUG=webrtc::5687
> >
> > Committed: https://crrev.com/f5d55aaecdc39e9cc66eb6e87614f04afe28f6eb
> > Cr-Commit-Position: refs/heads/master@{#12436}
>
> TBR=stefan@webrtc.org,pbos@webrtc.org,perkj@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:5687
>
> Committed: https://crrev.com/a261e6136655af33f283eda8e60a6dd93dd746a4
> Cr-Commit-Position: refs/heads/master@{#12441}

TBR=stefan@webrtc.org,pbos@webrtc.org,perkj@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:5687

Review URL: https://codereview.webrtc.org/1905583002

Cr-Commit-Position: refs/heads/master@{#12442}
diff --git a/webrtc/video/send_statistics_proxy_unittest.cc b/webrtc/video/send_statistics_proxy_unittest.cc
index dae0b46..eb77a27 100644
--- a/webrtc/video/send_statistics_proxy_unittest.cc
+++ b/webrtc/video/send_statistics_proxy_unittest.cc
@@ -334,16 +334,16 @@
 TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp8) {
   test::ClearHistograms();
   EncodedImage encoded_image;
-  RTPVideoHeader rtp_video_header;
-  rtp_video_header.codec = kRtpVideoVp8;
+  CodecSpecificInfo codec_info;
+  codec_info.codecType = kVideoCodecVP8;
 
   for (int i = 0; i < kMinRequiredSamples; ++i) {
-    rtp_video_header.simulcastIdx = 0;
+    codec_info.codecSpecific.VP8.simulcastIdx = 0;
     encoded_image.qp_ = kQpIdx0;
-    statistics_proxy_->OnSendEncodedImage(encoded_image, &rtp_video_header);
-    rtp_video_header.simulcastIdx = 1;
+    statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info);
+    codec_info.codecSpecific.VP8.simulcastIdx = 1;
     encoded_image.qp_ = kQpIdx1;
-    statistics_proxy_->OnSendEncodedImage(encoded_image, &rtp_video_header);
+    statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info);
   }
   statistics_proxy_.reset();
   EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.Encoded.Qp.Vp8.S0"));
@@ -362,13 +362,13 @@
 
   test::ClearHistograms();
   EncodedImage encoded_image;
-  RTPVideoHeader rtp_video_header;
-  rtp_video_header.codec = kRtpVideoVp8;
+  CodecSpecificInfo codec_info;
+  codec_info.codecType = kVideoCodecVP8;
 
   for (int i = 0; i < kMinRequiredSamples; ++i) {
-    rtp_video_header.simulcastIdx = 0;
+    codec_info.codecSpecific.VP8.simulcastIdx = 0;
     encoded_image.qp_ = kQpIdx0;
-    statistics_proxy_->OnSendEncodedImage(encoded_image, &rtp_video_header);
+    statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info);
   }
   statistics_proxy_.reset();
   EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.Encoded.Qp.Vp8"));
@@ -378,18 +378,17 @@
 TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp9) {
   test::ClearHistograms();
   EncodedImage encoded_image;
-  RTPVideoHeader rtp_video_header;
-  rtp_video_header.simulcastIdx = 0;
-  rtp_video_header.codec = kRtpVideoVp9;
-  rtp_video_header.codecHeader.VP9.num_spatial_layers = 2;
+  CodecSpecificInfo codec_info;
+  codec_info.codecType = kVideoCodecVP9;
+  codec_info.codecSpecific.VP9.num_spatial_layers = 2;
 
   for (int i = 0; i < kMinRequiredSamples; ++i) {
     encoded_image.qp_ = kQpIdx0;
-    rtp_video_header.codecHeader.VP9.spatial_idx = 0;
-    statistics_proxy_->OnSendEncodedImage(encoded_image, &rtp_video_header);
+    codec_info.codecSpecific.VP9.spatial_idx = 0;
+    statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info);
     encoded_image.qp_ = kQpIdx1;
-    rtp_video_header.codecHeader.VP9.spatial_idx = 1;
-    statistics_proxy_->OnSendEncodedImage(encoded_image, &rtp_video_header);
+    codec_info.codecSpecific.VP9.spatial_idx = 1;
+    statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info);
   }
   statistics_proxy_.reset();
   EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.Encoded.Qp.Vp9.S0"));
@@ -408,15 +407,14 @@
 
   test::ClearHistograms();
   EncodedImage encoded_image;
-  RTPVideoHeader rtp_video_header;
-  rtp_video_header.simulcastIdx = 0;
-  rtp_video_header.codec = kRtpVideoVp9;
-  rtp_video_header.codecHeader.VP9.num_spatial_layers = 1;
+  CodecSpecificInfo codec_info;
+  codec_info.codecType = kVideoCodecVP9;
+  codec_info.codecSpecific.VP9.num_spatial_layers = 1;
 
   for (int i = 0; i < kMinRequiredSamples; ++i) {
     encoded_image.qp_ = kQpIdx0;
-    rtp_video_header.codecHeader.VP9.spatial_idx = 0;
-    statistics_proxy_->OnSendEncodedImage(encoded_image, &rtp_video_header);
+    codec_info.codecSpecific.VP9.spatial_idx = 0;
+    statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info);
   }
   statistics_proxy_.reset();
   EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.Encoded.Qp.Vp9"));
@@ -458,12 +456,13 @@
   encoded_image._encodedWidth = kEncodedWidth;
   encoded_image._encodedHeight = kEncodedHeight;
 
-  RTPVideoHeader rtp_video_header;
+  CodecSpecificInfo codec_info;
+  codec_info.codecType = kVideoCodecVP8;
+  codec_info.codecSpecific.VP8.simulcastIdx = 0;
 
-  rtp_video_header.simulcastIdx = 0;
-  statistics_proxy_->OnSendEncodedImage(encoded_image, &rtp_video_header);
-  rtp_video_header.simulcastIdx = 1;
-  statistics_proxy_->OnSendEncodedImage(encoded_image, &rtp_video_header);
+  statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info);
+  codec_info.codecSpecific.VP8.simulcastIdx = 1;
+  statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info);
 
   VideoSendStream::Stats stats = statistics_proxy_->GetStats();
   EXPECT_EQ(kEncodedWidth, stats.substreams[config_.rtp.ssrcs[0]].width);
@@ -485,8 +484,8 @@
 
   // Report stats for second SSRC to make sure it's not outdated along with the
   // first SSRC.
-  rtp_video_header.simulcastIdx = 1;
-  statistics_proxy_->OnSendEncodedImage(encoded_image, &rtp_video_header);
+  codec_info.codecSpecific.VP8.simulcastIdx = 1;
+  statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info);
 
   // Forward 1 ms, reach timeout, substream 0 should have no resolution
   // reported, but substream 1 should.
@@ -505,12 +504,13 @@
   encoded_image._encodedWidth = kEncodedWidth;
   encoded_image._encodedHeight = kEncodedHeight;
 
-  RTPVideoHeader rtp_video_header;
+  CodecSpecificInfo codec_info;
+  codec_info.codecType = kVideoCodecVP8;
+  codec_info.codecSpecific.VP8.simulcastIdx = 0;
 
-  rtp_video_header.simulcastIdx = 0;
-  statistics_proxy_->OnSendEncodedImage(encoded_image, &rtp_video_header);
-  rtp_video_header.simulcastIdx = 1;
-  statistics_proxy_->OnSendEncodedImage(encoded_image, &rtp_video_header);
+  statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info);
+  codec_info.codecSpecific.VP8.simulcastIdx = 1;
+  statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info);
 
   statistics_proxy_->OnInactiveSsrc(config_.rtp.ssrcs[1]);
   VideoSendStream::Stats stats = statistics_proxy_->GetStats();