Commit 8ce32054 by claincly Committed by Rohit Singh

Fix MCVR is not able to find FrameProcessor.Factory constructor.

The constructor is removed in https://github.com/google/ExoPlayer/commit/6dcb018da8fe9591173088be36a9a32a5a1eab31.

PiperOrigin-RevId: 526068585
parent 61f28a6d
...@@ -2311,12 +2311,12 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { ...@@ -2311,12 +2311,12 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
} }
private static final class VideoFrameProcessorAccessor { private static final class VideoFrameProcessorAccessor {
private static @MonotonicNonNull Constructor<?> private static @MonotonicNonNull Constructor<?>
scaleAndRotateTransformationBuilderConstructor; scaleAndRotateTransformationBuilderConstructor;
private static @MonotonicNonNull Method setRotationMethod; private static @MonotonicNonNull Method setRotationMethod;
private static @MonotonicNonNull Method buildScaleAndRotateTransformationMethod; private static @MonotonicNonNull Method buildScaleAndRotateTransformationMethod;
private static @MonotonicNonNull Constructor<?> videoFrameProcessorFactoryConstructor; private static @MonotonicNonNull Constructor<?> videoFrameProcessorFactoryBuilderConstructor;
private static @MonotonicNonNull Method buildVideoFrameProcessorFactoryMethod;
public static Effect createRotationEffect(float rotationDegrees) throws Exception { public static Effect createRotationEffect(float rotationDegrees) throws Exception {
prepare(); prepare();
...@@ -2327,14 +2327,17 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { ...@@ -2327,14 +2327,17 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
public static VideoFrameProcessor.Factory getFrameProcessorFactory() throws Exception { public static VideoFrameProcessor.Factory getFrameProcessorFactory() throws Exception {
prepare(); prepare();
return (VideoFrameProcessor.Factory) videoFrameProcessorFactoryConstructor.newInstance(); Object builder = videoFrameProcessorFactoryBuilderConstructor.newInstance();
return (VideoFrameProcessor.Factory)
checkNotNull(buildVideoFrameProcessorFactoryMethod.invoke(builder));
} }
@EnsuresNonNull({ @EnsuresNonNull({
"ScaleAndRotateEffectBuilder", "scaleAndRotateTransformationBuilderConstructor",
"SetRotationMethod", "setRotationMethod",
"SetRotationMethod", "buildScaleAndRotateTransformationMethod",
"VideoFrameProcessorFactoryClass" "videoFrameProcessorFactoryBuilderConstructor",
"buildVideoFrameProcessorFactoryMethod"
}) })
private static void prepare() throws Exception { private static void prepare() throws Exception {
if (scaleAndRotateTransformationBuilderConstructor == null if (scaleAndRotateTransformationBuilderConstructor == null
...@@ -2350,11 +2353,15 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { ...@@ -2350,11 +2353,15 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
buildScaleAndRotateTransformationMethod = buildScaleAndRotateTransformationMethod =
scaleAndRotateTransformationBuilderClass.getMethod("build"); scaleAndRotateTransformationBuilderClass.getMethod("build");
} }
if (videoFrameProcessorFactoryConstructor == null) { if (videoFrameProcessorFactoryBuilderConstructor == null
videoFrameProcessorFactoryConstructor = || buildVideoFrameProcessorFactoryMethod == null) {
Class<?> videoFrameProcessorFactoryBuilderClass =
Class.forName( Class.forName(
"com.google.android.exoplayer2.effect.DefaultVideoFrameProcessor$Factory") "com.google.android.exoplayer2.effect.DefaultVideoFrameProcessor$Factory$Builder");
.getConstructor(); videoFrameProcessorFactoryBuilderConstructor =
videoFrameProcessorFactoryBuilderClass.getConstructor();
buildVideoFrameProcessorFactoryMethod =
videoFrameProcessorFactoryBuilderClass.getMethod("build");
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment