Revert "Delete deprecated variant of VideoDecoder::Decode"

This reverts commit 3a86d9520c9692abe4c6d2a73faf4fb7a0cb80b2.

Reason for revert: breaks downstream project

Original change's description:
> Delete deprecated variant of VideoDecoder::Decode
> 
> Bug: webrtc:10379
> Change-Id: I4dd8b503625a9ea2a71177165238e128ac3e49bb
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/132554
> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27712}

TBR=brandtr@webrtc.org,sakal@webrtc.org,nisse@webrtc.org,kthelgason@webrtc.org,sprang@webrtc.org

Change-Id: Ie971fd821f4de9e4b68e1608d7074835bdf2ed16
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10379
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133907
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27713}
diff --git a/api/video_codecs/video_decoder.cc b/api/video_codecs/video_decoder.cc
index 1044ae4..b0a1c87 100644
--- a/api/video_codecs/video_decoder.cc
+++ b/api/video_codecs/video_decoder.cc
@@ -28,6 +28,19 @@
   return -1;
 }
 
+int32_t VideoDecoder::Decode(const EncodedImage& input_image,
+                             bool missing_frames,
+                             int64_t render_time_ms) {
+  return Decode(input_image, missing_frames, nullptr, render_time_ms);
+}
+
+int32_t VideoDecoder::Decode(const EncodedImage& input_image,
+                             bool missing_frames,
+                             const CodecSpecificInfo* codec_specific_info,
+                             int64_t render_time_ms) {
+  return Decode(input_image, missing_frames, render_time_ms);
+}
+
 bool VideoDecoder::PrefersLateDecoding() const {
   return true;
 }
diff --git a/api/video_codecs/video_decoder.h b/api/video_codecs/video_decoder.h
index e903934..d0341b1 100644
--- a/api/video_codecs/video_decoder.h
+++ b/api/video_codecs/video_decoder.h
@@ -22,6 +22,10 @@
 
 namespace webrtc {
 
+// TODO(pbos): Expose these through a public (root) header or change these APIs.
+struct CodecSpecificInfo;
+class VideoCodec;
+
 class RTC_EXPORT DecodedImageCallback {
  public:
   virtual ~DecodedImageCallback() {}
@@ -51,7 +55,14 @@
 
   virtual int32_t Decode(const EncodedImage& input_image,
                          bool missing_frames,
-                         int64_t render_time_ms) = 0;
+                         int64_t render_time_ms);
+
+  // TODO(bugs.webrtc.org/10379): Deprecated. Delete, and make above method pure
+  // virtual, as soon as downstream applications are updated.
+  virtual int32_t Decode(const EncodedImage& input_image,
+                         bool missing_frames,
+                         const CodecSpecificInfo* codec_specific_info,
+                         int64_t render_time_ms);
 
   virtual int32_t RegisterDecodeCompleteCallback(
       DecodedImageCallback* callback) = 0;
diff --git a/sdk/android/src/jni/android_media_decoder.cc b/sdk/android/src/jni/android_media_decoder.cc
index 60250d8..6506a86 100644
--- a/sdk/android/src/jni/android_media_decoder.cc
+++ b/sdk/android/src/jni/android_media_decoder.cc
@@ -65,6 +65,7 @@
 
   int32_t Decode(const EncodedImage& inputImage,
                  bool missingFrames,
+                 const CodecSpecificInfo* codecSpecificInfo = NULL,
                  int64_t renderTimeMs = -1) override;
 
   int32_t RegisterDecodeCompleteCallback(
@@ -349,6 +350,7 @@
 int32_t MediaCodecVideoDecoder::Decode(
     const EncodedImage& inputImage,
     bool missingFrames,
+    const CodecSpecificInfo* codecSpecificInfo,
     int64_t renderTimeMs) {
   if (sw_fallback_required_) {
     ALOGE << "Decode() - fallback to SW codec";
diff --git a/sdk/android/src/jni/video_decoder_wrapper.cc b/sdk/android/src/jni/video_decoder_wrapper.cc
index 1a15715..e314074 100644
--- a/sdk/android/src/jni/video_decoder_wrapper.cc
+++ b/sdk/android/src/jni/video_decoder_wrapper.cc
@@ -88,6 +88,7 @@
 int32_t VideoDecoderWrapper::Decode(
     const EncodedImage& image_param,
     bool missing_frames,
+    const CodecSpecificInfo* codec_specific_info,
     int64_t render_time_ms) {
   RTC_DCHECK_RUN_ON(&decoder_thread_checker_);
   if (!initialized_) {
diff --git a/sdk/android/src/jni/video_decoder_wrapper.h b/sdk/android/src/jni/video_decoder_wrapper.h
index a2bc072..55a395b 100644
--- a/sdk/android/src/jni/video_decoder_wrapper.h
+++ b/sdk/android/src/jni/video_decoder_wrapper.h
@@ -35,6 +35,7 @@
 
   int32_t Decode(const EncodedImage& input_image,
                  bool missing_frames,
+                 const CodecSpecificInfo* codec_specific_info,
                  int64_t render_time_ms) override;
 
   int32_t RegisterDecodeCompleteCallback(
diff --git a/sdk/objc/native/src/objc_video_decoder_factory.mm b/sdk/objc/native/src/objc_video_decoder_factory.mm
index fdc15c7..c79fb06 100644
--- a/sdk/objc/native/src/objc_video_decoder_factory.mm
+++ b/sdk/objc/native/src/objc_video_decoder_factory.mm
@@ -51,13 +51,25 @@
 
   int32_t Decode(const EncodedImage &input_image,
                  bool missing_frames,
+                 const CodecSpecificInfo *codec_specific_info = NULL,
                  int64_t render_time_ms = -1) override {
     RTCEncodedImage *encodedImage =
         [[RTCEncodedImage alloc] initWithNativeEncodedImage:input_image];
 
+    // webrtc::CodecSpecificInfo only handles a hard coded list of codecs
+    id<RTCCodecSpecificInfo> rtcCodecSpecificInfo = nil;
+    if (codec_specific_info) {
+      if (codec_specific_info->codecType == kVideoCodecH264) {
+        RTCCodecSpecificInfoH264 *h264Info = [[RTCCodecSpecificInfoH264 alloc] init];
+        h264Info.packetizationMode =
+            (RTCH264PacketizationMode)codec_specific_info->codecSpecific.H264.packetization_mode;
+        rtcCodecSpecificInfo = h264Info;
+      }
+    }
+
     return [decoder_ decode:encodedImage
               missingFrames:missing_frames
-          codecSpecificInfo:nil
+          codecSpecificInfo:rtcCodecSpecificInfo
                renderTimeMs:render_time_ms];
   }
 
diff --git a/video/video_stream_decoder_impl.cc b/video/video_stream_decoder_impl.cc
index 42a5434..c3c1d0d 100644
--- a/video/video_stream_decoder_impl.cc
+++ b/video/video_stream_decoder_impl.cc
@@ -210,6 +210,7 @@
 
     int32_t decode_result = decoder->Decode(frame->EncodedImage(),
                                             false,    // missing_frame
+                                            nullptr,  // codec specific info
                                             frame->RenderTimeMs());
 
     return decode_result == WEBRTC_VIDEO_CODEC_OK ? kOk : kDecodeFailure;