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/payload_router_unittest.cc b/webrtc/video/payload_router_unittest.cc
index c5d3f38..41e173b 100644
--- a/webrtc/video/payload_router_unittest.cc
+++ b/webrtc/video/payload_router_unittest.cc
@@ -14,6 +14,7 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
 #include "webrtc/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h"
+#include "webrtc/modules/video_coding/include/video_codec_interface.h"
 #include "webrtc/video/payload_router.h"
 
 using ::testing::_;
@@ -27,46 +28,56 @@
   MockRtpRtcp rtp;
   std::vector<RtpRtcp*> modules(1, &rtp);
 
-  PayloadRouter payload_router(modules);
+  uint8_t payload = 'a';
+  int8_t payload_type = 96;
+  EncodedImage encoded_image;
+  encoded_image._timeStamp = 1;
+  encoded_image.capture_time_ms_ = 2;
+  encoded_image._frameType = kVideoFrameKey;
+  encoded_image._buffer = &payload;
+  encoded_image._length = 1;
+
+  PayloadRouter payload_router(modules, payload_type);
   payload_router.SetSendingRtpModules(modules.size());
 
-  uint8_t payload = 'a';
-  FrameType frame_type = kVideoFrameKey;
-  int8_t payload_type = 96;
-
-  EXPECT_CALL(rtp, SendOutgoingData(frame_type, payload_type, 0, 0, _, 1,
-                                    nullptr, nullptr))
+  EXPECT_CALL(rtp, SendOutgoingData(encoded_image._frameType, payload_type,
+                                    encoded_image._timeStamp,
+                                    encoded_image.capture_time_ms_, &payload,
+                                    encoded_image._length, nullptr, _))
       .Times(0);
-  EXPECT_FALSE(payload_router.RoutePayload(frame_type, payload_type, 0, 0,
-                                           &payload, 1, nullptr, nullptr));
+  EXPECT_EQ(-1, payload_router.Encoded(encoded_image, nullptr, nullptr));
 
   payload_router.set_active(true);
-  EXPECT_CALL(rtp, SendOutgoingData(frame_type, payload_type, 0, 0, _, 1,
-                                    nullptr, nullptr))
+  EXPECT_CALL(rtp, SendOutgoingData(encoded_image._frameType, payload_type,
+                                    encoded_image._timeStamp,
+                                    encoded_image.capture_time_ms_, &payload,
+                                    encoded_image._length, nullptr, _))
       .Times(1);
-  EXPECT_TRUE(payload_router.RoutePayload(frame_type, payload_type, 0, 0,
-                                          &payload, 1, nullptr, nullptr));
+  EXPECT_EQ(0, payload_router.Encoded(encoded_image, nullptr, nullptr));
 
   payload_router.set_active(false);
-  EXPECT_CALL(rtp, SendOutgoingData(frame_type, payload_type, 0, 0, _, 1,
-                                    nullptr, nullptr))
+  EXPECT_CALL(rtp, SendOutgoingData(encoded_image._frameType, payload_type,
+                                    encoded_image._timeStamp,
+                                    encoded_image.capture_time_ms_, &payload,
+                                    encoded_image._length, nullptr, _))
       .Times(0);
-  EXPECT_FALSE(payload_router.RoutePayload(frame_type, payload_type, 0, 0,
-                                           &payload, 1, nullptr, nullptr));
+  EXPECT_EQ(-1, payload_router.Encoded(encoded_image, nullptr, nullptr));
 
   payload_router.set_active(true);
-  EXPECT_CALL(rtp, SendOutgoingData(frame_type, payload_type, 0, 0, _, 1,
-                                    nullptr, nullptr))
+  EXPECT_CALL(rtp, SendOutgoingData(encoded_image._frameType, payload_type,
+                                    encoded_image._timeStamp,
+                                    encoded_image.capture_time_ms_, &payload,
+                                    encoded_image._length, nullptr, _))
       .Times(1);
-  EXPECT_TRUE(payload_router.RoutePayload(frame_type, payload_type, 0, 0,
-                                          &payload, 1, nullptr, nullptr));
+  EXPECT_EQ(0, payload_router.Encoded(encoded_image, nullptr, nullptr));
 
   payload_router.SetSendingRtpModules(0);
-  EXPECT_CALL(rtp, SendOutgoingData(frame_type, payload_type, 0, 0, _, 1,
-                                    nullptr, nullptr))
+  EXPECT_CALL(rtp, SendOutgoingData(encoded_image._frameType, payload_type,
+                                    encoded_image._timeStamp,
+                                    encoded_image.capture_time_ms_, &payload,
+                                    encoded_image._length, nullptr, _))
       .Times(0);
-  EXPECT_FALSE(payload_router.RoutePayload(frame_type, payload_type, 0, 0,
-                                           &payload, 1, nullptr, nullptr));
+  EXPECT_EQ(-1, payload_router.Encoded(encoded_image, nullptr, nullptr));
 }
 
 TEST(PayloadRouterTest, SendSimulcast) {
@@ -76,36 +87,46 @@
   modules.push_back(&rtp_1);
   modules.push_back(&rtp_2);
 
-  PayloadRouter payload_router(modules);
+  int8_t payload_type = 96;
+  uint8_t payload = 'a';
+  EncodedImage encoded_image;
+  encoded_image._timeStamp = 1;
+  encoded_image.capture_time_ms_ = 2;
+  encoded_image._frameType = kVideoFrameKey;
+  encoded_image._buffer = &payload;
+  encoded_image._length = 1;
+
+  PayloadRouter payload_router(modules, payload_type);
   payload_router.SetSendingRtpModules(modules.size());
 
-  uint8_t payload_1 = 'a';
-  FrameType frame_type_1 = kVideoFrameKey;
-  int8_t payload_type_1 = 96;
-  RTPVideoHeader rtp_hdr_1;
-  rtp_hdr_1.simulcastIdx = 0;
+  CodecSpecificInfo codec_info_1;
+  memset(&codec_info_1, 0, sizeof(CodecSpecificInfo));
+  codec_info_1.codecType = kVideoCodecVP8;
+  codec_info_1.codecSpecific.VP8.simulcastIdx = 0;
 
   payload_router.set_active(true);
-  EXPECT_CALL(rtp_1, SendOutgoingData(frame_type_1, payload_type_1, 0, 0, _, 1,
-                                      nullptr, &rtp_hdr_1))
+  EXPECT_CALL(rtp_1, SendOutgoingData(encoded_image._frameType, payload_type,
+                                      encoded_image._timeStamp,
+                                      encoded_image.capture_time_ms_, &payload,
+                                      encoded_image._length, nullptr, _))
       .Times(1);
   EXPECT_CALL(rtp_2, SendOutgoingData(_, _, _, _, _, _, _, _))
       .Times(0);
-  EXPECT_TRUE(payload_router.RoutePayload(frame_type_1, payload_type_1, 0, 0,
-                                          &payload_1, 1, nullptr, &rtp_hdr_1));
+  EXPECT_EQ(0, payload_router.Encoded(encoded_image, &codec_info_1, nullptr));
 
-  uint8_t payload_2 = 'b';
-  FrameType frame_type_2 = kVideoFrameDelta;
-  int8_t payload_type_2 = 97;
-  RTPVideoHeader rtp_hdr_2;
-  rtp_hdr_2.simulcastIdx = 1;
-  EXPECT_CALL(rtp_2, SendOutgoingData(frame_type_2, payload_type_2, 0, 0, _, 1,
-                                      nullptr, &rtp_hdr_2))
+  CodecSpecificInfo codec_info_2;
+  memset(&codec_info_2, 0, sizeof(CodecSpecificInfo));
+  codec_info_2.codecType = kVideoCodecVP8;
+  codec_info_2.codecSpecific.VP8.simulcastIdx = 1;
+
+  EXPECT_CALL(rtp_2, SendOutgoingData(encoded_image._frameType, payload_type,
+                                      encoded_image._timeStamp,
+                                      encoded_image.capture_time_ms_, &payload,
+                                      encoded_image._length, nullptr, _))
       .Times(1);
   EXPECT_CALL(rtp_1, SendOutgoingData(_, _, _, _, _, _, _, _))
       .Times(0);
-  EXPECT_TRUE(payload_router.RoutePayload(frame_type_2, payload_type_2, 0, 0,
-                                          &payload_2, 1, nullptr, &rtp_hdr_2));
+  EXPECT_EQ(0, payload_router.Encoded(encoded_image, &codec_info_2, nullptr));
 
   // Inactive.
   payload_router.set_active(false);
@@ -113,10 +134,8 @@
       .Times(0);
   EXPECT_CALL(rtp_2, SendOutgoingData(_, _, _, _, _, _, _, _))
       .Times(0);
-  EXPECT_FALSE(payload_router.RoutePayload(frame_type_1, payload_type_1, 0, 0,
-                                           &payload_1, 1, nullptr, &rtp_hdr_1));
-  EXPECT_FALSE(payload_router.RoutePayload(frame_type_2, payload_type_2, 0, 0,
-                                           &payload_2, 1, nullptr, &rtp_hdr_2));
+  EXPECT_EQ(-1, payload_router.Encoded(encoded_image, &codec_info_1, nullptr));
+  EXPECT_EQ(-1, payload_router.Encoded(encoded_image, &codec_info_2, nullptr));
 
   // Invalid simulcast index.
   payload_router.SetSendingRtpModules(1);
@@ -125,9 +144,8 @@
       .Times(0);
   EXPECT_CALL(rtp_2, SendOutgoingData(_, _, _, _, _, _, _, _))
       .Times(0);
-  rtp_hdr_1.simulcastIdx = 1;
-  EXPECT_FALSE(payload_router.RoutePayload(frame_type_1, payload_type_1, 0, 0,
-                                           &payload_1, 1, nullptr, &rtp_hdr_1));
+  codec_info_2.codecSpecific.VP8.simulcastIdx = 1;
+  EXPECT_EQ(-1, payload_router.Encoded(encoded_image, &codec_info_2, nullptr));
 }
 
 TEST(PayloadRouterTest, MaxPayloadLength) {
@@ -139,7 +157,7 @@
   std::vector<RtpRtcp*> modules;
   modules.push_back(&rtp_1);
   modules.push_back(&rtp_2);
-  PayloadRouter payload_router(modules);
+  PayloadRouter payload_router(modules, 42);
 
   EXPECT_EQ(kDefaultMaxLength, PayloadRouter::DefaultMaxPayloadLength());
   payload_router.SetSendingRtpModules(modules.size());
@@ -170,7 +188,7 @@
   std::vector<RtpRtcp*> modules;
   modules.push_back(&rtp_1);
   modules.push_back(&rtp_2);
-  PayloadRouter payload_router(modules);
+  PayloadRouter payload_router(modules, 42);
   payload_router.SetSendingRtpModules(modules.size());
 
   const uint32_t bitrate_1 = 10000;