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 {
}
private static final class VideoFrameProcessorAccessor {
private static @MonotonicNonNull Constructor<?>
scaleAndRotateTransformationBuilderConstructor;
private static @MonotonicNonNull Method setRotationMethod;
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 {
prepare();
......@@ -2327,14 +2327,17 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
public static VideoFrameProcessor.Factory getFrameProcessorFactory() throws Exception {
prepare();
return (VideoFrameProcessor.Factory) videoFrameProcessorFactoryConstructor.newInstance();
Object builder = videoFrameProcessorFactoryBuilderConstructor.newInstance();
return (VideoFrameProcessor.Factory)
checkNotNull(buildVideoFrameProcessorFactoryMethod.invoke(builder));
}
@EnsuresNonNull({
"ScaleAndRotateEffectBuilder",
"SetRotationMethod",
"SetRotationMethod",
"VideoFrameProcessorFactoryClass"
"scaleAndRotateTransformationBuilderConstructor",
"setRotationMethod",
"buildScaleAndRotateTransformationMethod",
"videoFrameProcessorFactoryBuilderConstructor",
"buildVideoFrameProcessorFactoryMethod"
})
private static void prepare() throws Exception {
if (scaleAndRotateTransformationBuilderConstructor == null
......@@ -2350,11 +2353,15 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
buildScaleAndRotateTransformationMethod =
scaleAndRotateTransformationBuilderClass.getMethod("build");
}
if (videoFrameProcessorFactoryConstructor == null) {
videoFrameProcessorFactoryConstructor =
if (videoFrameProcessorFactoryBuilderConstructor == null
|| buildVideoFrameProcessorFactoryMethod == null) {
Class<?> videoFrameProcessorFactoryBuilderClass =
Class.forName(
"com.google.android.exoplayer2.effect.DefaultVideoFrameProcessor$Factory")
.getConstructor();
"com.google.android.exoplayer2.effect.DefaultVideoFrameProcessor$Factory$Builder");
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