Fix MCVR is not able to find FrameProcessor.Factory constructor.
The constructor is removed in 316a2ce0ee
.
PiperOrigin-RevId: 526068585
This commit is contained in:
parent
0bac4e24e4
commit
bb0c4a468a
@ -2315,12 +2315,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();
|
||||||
@ -2331,14 +2331,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
|
||||||
@ -2353,10 +2356,14 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
|||||||
buildScaleAndRotateTransformationMethod =
|
buildScaleAndRotateTransformationMethod =
|
||||||
scaleAndRotateTransformationBuilderClass.getMethod("build");
|
scaleAndRotateTransformationBuilderClass.getMethod("build");
|
||||||
}
|
}
|
||||||
if (videoFrameProcessorFactoryConstructor == null) {
|
if (videoFrameProcessorFactoryBuilderConstructor == null
|
||||||
videoFrameProcessorFactoryConstructor =
|
|| buildVideoFrameProcessorFactoryMethod == null) {
|
||||||
Class.forName("androidx.media3.effect.DefaultVideoFrameProcessor$Factory")
|
Class<?> videoFrameProcessorFactoryBuilderClass =
|
||||||
.getConstructor();
|
Class.forName("androidx.media3.effect.DefaultVideoFrameProcessor$Factory$Builder");
|
||||||
|
videoFrameProcessorFactoryBuilderConstructor =
|
||||||
|
videoFrameProcessorFactoryBuilderClass.getConstructor();
|
||||||
|
buildVideoFrameProcessorFactoryMethod =
|
||||||
|
videoFrameProcessorFactoryBuilderClass.getMethod("build");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user