Replace BuiltinVideo{Encoder,Decoder}Factory with Video{Encoder,Decoder}FactoryTemplate.

Bug: webrtc:13573
Change-Id: I07e4fe9be938ba2540351b73ff22a090c68afa00
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/299663
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39777}
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index 5bf25ff..6c0d9c0 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -898,9 +898,15 @@
       ":libvpx_vp9_jni",
       ":native_api_jni",
       ":video_jni",
-      "../../api/video_codecs:builtin_video_decoder_factory",
-      "../../api/video_codecs:builtin_video_encoder_factory",
       "../../api/video_codecs:video_codecs_api",
+      "../../api/video_codecs:video_decoder_factory_template",
+      "../../api/video_codecs:video_decoder_factory_template_dav1d_adapter",
+      "../../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter",
+      "../../api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter",
+      "../../api/video_codecs:video_encoder_factory_template",
+      "../../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter",
+      "../../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter",
+      "../../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter",
     ]
   }
 
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java b/sdk/android/instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java
index fe608c7..eee9306 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java
@@ -53,8 +53,8 @@
     VideoCodecInfo[] supportedCodecs = defFactory.getSupportedCodecs();
     assertEquals(3, supportedCodecs.length);
     assertEquals("VP8", supportedCodecs[0].name);
-    assertEquals("AV1", supportedCodecs[1].name);
-    assertEquals("VP9", supportedCodecs[2].name);
+    assertEquals("VP9", supportedCodecs[1].name);
+    assertEquals("AV1", supportedCodecs[2].name);
   }
 
   @SmallTest
@@ -68,8 +68,8 @@
     VideoCodecInfo[] supportedCodecs = defFactory.getSupportedCodecs();
     assertEquals(4, supportedCodecs.length);
     assertEquals("VP8", supportedCodecs[0].name);
-    assertEquals("AV1", supportedCodecs[1].name);
-    assertEquals("VP9", supportedCodecs[2].name);
+    assertEquals("VP9", supportedCodecs[1].name);
+    assertEquals("AV1", supportedCodecs[2].name);
     assertEquals("VP8", supportedCodecs[3].name);
     assertEquals(1, supportedCodecs[3].params.size());
     assertEquals("value", supportedCodecs[3].params.get("param"));
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/SoftwareVideoEncoderFactoryTest.java b/sdk/android/instrumentationtests/src/org/webrtc/SoftwareVideoEncoderFactoryTest.java
index 696b423..877c5da 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/SoftwareVideoEncoderFactoryTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/SoftwareVideoEncoderFactoryTest.java
@@ -32,8 +32,8 @@
     VideoCodecInfo[] codecs = factory.getSupportedCodecs();
     assertThat(codecs.length).isEqualTo(3);
     assertThat(codecs[0].name).isEqualTo("VP8");
-    assertThat(codecs[1].name).isEqualTo("AV1");
-    assertThat(codecs[2].name).isEqualTo("VP9");
+    assertThat(codecs[1].name).isEqualTo("VP9");
+    assertThat(codecs[2].name).isEqualTo("AV1");
   }
 
   @SmallTest
diff --git a/sdk/android/src/jni/software_video_decoder_factory.cc b/sdk/android/src/jni/software_video_decoder_factory.cc
index 151bf5f..710b788 100644
--- a/sdk/android/src/jni/software_video_decoder_factory.cc
+++ b/sdk/android/src/jni/software_video_decoder_factory.cc
@@ -8,8 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "api/video_codecs/builtin_video_decoder_factory.h"
 #include "api/video_codecs/video_decoder.h"
+#include "api/video_codecs/video_decoder_factory_template.h"
+#include "api/video_codecs/video_decoder_factory_template_dav1d_adapter.h"
+#include "api/video_codecs/video_decoder_factory_template_libvpx_vp8_adapter.h"
+#include "api/video_codecs/video_decoder_factory_template_libvpx_vp9_adapter.h"
 #include "sdk/android/generated_swcodecs_jni/SoftwareVideoDecoderFactory_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/src/jni/jni_helpers.h"
@@ -20,7 +23,9 @@
 
 static jlong JNI_SoftwareVideoDecoderFactory_CreateFactory(JNIEnv* env) {
   return webrtc::NativeToJavaPointer(
-      CreateBuiltinVideoDecoderFactory().release());
+      new VideoDecoderFactoryTemplate<LibvpxVp8DecoderTemplateAdapter,
+                                      LibvpxVp9DecoderTemplateAdapter,
+                                      Dav1dDecoderTemplateAdapter>());
 }
 
 static jlong JNI_SoftwareVideoDecoderFactory_CreateDecoder(
diff --git a/sdk/android/src/jni/software_video_encoder_factory.cc b/sdk/android/src/jni/software_video_encoder_factory.cc
index 4b86960..b16a8a1 100644
--- a/sdk/android/src/jni/software_video_encoder_factory.cc
+++ b/sdk/android/src/jni/software_video_encoder_factory.cc
@@ -8,8 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "api/video_codecs/builtin_video_encoder_factory.h"
 #include "api/video_codecs/video_encoder.h"
+#include "api/video_codecs/video_encoder_factory_template.h"
+#include "api/video_codecs/video_encoder_factory_template_libaom_av1_adapter.h"
+#include "api/video_codecs/video_encoder_factory_template_libvpx_vp8_adapter.h"
+#include "api/video_codecs/video_encoder_factory_template_libvpx_vp9_adapter.h"
 #include "sdk/android/generated_swcodecs_jni/SoftwareVideoEncoderFactory_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/src/jni/jni_helpers.h"
@@ -20,7 +23,9 @@
 
 static jlong JNI_SoftwareVideoEncoderFactory_CreateFactory(JNIEnv* env) {
   return webrtc::NativeToJavaPointer(
-      CreateBuiltinVideoEncoderFactory().release());
+      new VideoEncoderFactoryTemplate<LibvpxVp8EncoderTemplateAdapter,
+                                      LibvpxVp9EncoderTemplateAdapter,
+                                      LibaomAv1EncoderTemplateAdapter>());
 }
 
 static jlong JNI_SoftwareVideoEncoderFactory_CreateEncoder(