what-the-bank/sources/com/kofax/kmc/ken/engines/gpu/e.java

500 lines
24 KiB
Java
Raw Permalink Normal View History

2024-07-27 18:17:47 +07:00
package com.kofax.kmc.ken.engines.gpu;
import android.graphics.Point;
import android.graphics.Rect;
import android.opengl.GLES20;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.common.primitives.UnsignedBytes;
import com.kofax.kmc.ken.engines.data.DocumentDetectionSettings;
import com.kofax.kmc.ken.engines.gpu.shaders.BarnsenShader;
import com.kofax.kmc.ken.engines.gpu.shaders.GlobalThresholdShader;
import com.kofax.kmc.ken.engines.gpu.shaders.LocalAdaptiveThresholdShader;
import com.kofax.kmc.ken.engines.gpu.shaders.PassThroughShader;
import com.kofax.kmc.ken.engines.gpu.shaders.RgbSobelShader;
import com.kofax.kmc.ken.engines.gpu.shaders.ScaleHistogramShader;
import com.kofax.kmc.kut.utilities.RectUtil;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes3.dex */
public abstract class e extends ImageProcessor {
static final float[] fH = {-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f};
protected OpenGLESContextManager fD;
private FloatBuffer fG;
private FloatBuffer fK;
protected LocalAdaptiveThresholdShader gA;
protected BarnsenShader gB;
protected PassThroughShader gg;
protected RgbSobelShader gx;
protected GlobalThresholdShader gy;
protected ScaleHistogramShader gz;
private FrameBufferTexture fY = null;
private FrameBufferTexture gC = null;
private FrameBufferTexture gD = null;
private FrameBufferTexture gE = null;
private ByteBuffer gc = null;
private ByteBuffer gd = null;
protected float[] gF = null;
private int fO = 0;
private int fP = 0;
private int fZ = 0;
private int ga = 0;
@Override // com.kofax.kmc.ken.engines.gpu.ImageProcessor
public void processByteData(byte[] bArr, int i, int i2) {
}
public e() {
float[] fArr = fH;
FloatBuffer asFloatBuffer = ByteBuffer.allocateDirect(fArr.length << 2).order(ByteOrder.nativeOrder()).asFloatBuffer();
this.fG = asFloatBuffer;
asFloatBuffer.put(fArr).position(0);
FloatBuffer asFloatBuffer2 = ByteBuffer.allocateDirect(TextureRotationUtil.TEXTURE_ROTATED_270.length << 2).order(ByteOrder.nativeOrder()).asFloatBuffer();
this.fK = asFloatBuffer2;
asFloatBuffer2.clear();
this.fK.put(TextureRotationUtil.TEXTURE_ROTATED_270).position(0);
}
/* JADX INFO: Access modifiers changed from: protected */
public void a(FrameBufferTexture frameBufferTexture) {
this.gF = null;
V();
FrameBufferTexture frameBufferTexture2 = this.fY;
if (frameBufferTexture2 != null) {
d(frameBufferTexture, frameBufferTexture2);
boolean e = e(this.fY, this.gC);
FrameBufferTexture frameBufferTexture3 = this.gC;
this.gE = frameBufferTexture3;
if (e) {
this.gF = b(frameBufferTexture3, (ByteBuffer) null, GPUSettings.getSettings().enableRgbSobelOLC);
}
}
}
/* JADX INFO: Access modifiers changed from: protected */
public void b(FrameBufferTexture frameBufferTexture) {
this.gF = null;
V();
FrameBufferTexture frameBufferTexture2 = this.fY;
if (frameBufferTexture2 != null) {
if (!f(frameBufferTexture, frameBufferTexture2)) {
this.gE = this.fY;
return;
}
ByteBuffer g = g(this.fY, this.gC);
FrameBufferTexture frameBufferTexture3 = this.gC;
this.gE = frameBufferTexture3;
this.gF = b(frameBufferTexture3, g, GPUSettings.getSettings().enableGlobalAdaptiveThresholdOLC);
}
}
/* JADX INFO: Access modifiers changed from: protected */
public void c(FrameBufferTexture frameBufferTexture) {
this.gF = null;
V();
FrameBufferTexture frameBufferTexture2 = this.fY;
if (frameBufferTexture2 != null) {
if (!f(frameBufferTexture, frameBufferTexture2)) {
this.gE = this.fY;
return;
}
FrameBufferTexture frameBufferTexture3 = this.fY;
a(frameBufferTexture3, frameBufferTexture3, this.gC);
FrameBufferTexture frameBufferTexture4 = this.fY;
this.gE = frameBufferTexture4;
this.gF = b(frameBufferTexture4, (ByteBuffer) null, GPUSettings.getSettings().enableLocalAdaptiveThresholdOLC);
}
}
/* JADX INFO: Access modifiers changed from: protected */
public void d(FrameBufferTexture frameBufferTexture) {
this.gF = null;
V();
FrameBufferTexture frameBufferTexture2 = this.fY;
if (frameBufferTexture2 != null) {
b(frameBufferTexture, frameBufferTexture2, this.gC);
FrameBufferTexture frameBufferTexture3 = this.fY;
this.gE = frameBufferTexture3;
this.gF = b(frameBufferTexture3, (ByteBuffer) null, GPUSettings.getSettings().enableBarnsenOLC);
}
}
@Override // com.kofax.kmc.ken.engines.gpu.ImageProcessor
public void destroy() {
FrameBufferTexture frameBufferTexture = this.fY;
if (frameBufferTexture != null) {
frameBufferTexture.destroy();
this.fY = null;
}
FrameBufferTexture frameBufferTexture2 = this.gC;
if (frameBufferTexture2 != null) {
frameBufferTexture2.destroy();
this.gC = null;
}
FrameBufferTexture frameBufferTexture3 = this.gD;
if (frameBufferTexture3 != null) {
frameBufferTexture3.destroy();
this.gD = null;
}
RgbSobelShader rgbSobelShader = this.gx;
if (rgbSobelShader != null) {
rgbSobelShader.destroy();
this.gx = null;
}
GlobalThresholdShader globalThresholdShader = this.gy;
if (globalThresholdShader != null) {
globalThresholdShader.destroy();
this.gy = null;
}
ScaleHistogramShader scaleHistogramShader = this.gz;
if (scaleHistogramShader != null) {
scaleHistogramShader.destroy();
this.gz = null;
}
LocalAdaptiveThresholdShader localAdaptiveThresholdShader = this.gA;
if (localAdaptiveThresholdShader != null) {
localAdaptiveThresholdShader.destroy();
this.gA = null;
}
BarnsenShader barnsenShader = this.gB;
if (barnsenShader != null) {
barnsenShader.destroy();
this.gB = null;
}
PassThroughShader passThroughShader = this.gg;
if (passThroughShader != null) {
passThroughShader.destroy();
this.gg = null;
}
}
private void d(FrameBufferTexture frameBufferTexture, FrameBufferTexture frameBufferTexture2) {
GLES20.glBindFramebuffer(36160, frameBufferTexture2.mFrameBuffer);
GLES20.glViewport(0, 0, frameBufferTexture2.mWidth, frameBufferTexture2.mHeight);
RgbSobelShader rgbSobelShader = this.gx;
GLES20.glUseProgram(rgbSobelShader.getProgram());
GLES20.glVertexAttribPointer(0, 2, 5126, false, 0, (Buffer) this.fG);
GLES20.glEnableVertexAttribArray(0);
GLES20.glVertexAttribPointer(1, 2, 5126, false, 0, (Buffer) this.fK);
GLES20.glEnableVertexAttribArray(1);
GLES20.glBindTexture(3553, frameBufferTexture.mTexture);
float f = GPUSettings.getSettings().rgbSobelEdgeStrength;
GLES20.glUniform1f(rgbSobelShader.getTexelWidthUniform(), 1.0f / frameBufferTexture.mWidth);
GLES20.glUniform1f(rgbSobelShader.getTexelHeightUniform(), 1.0f / frameBufferTexture.mHeight);
GLES20.glUniform1f(rgbSobelShader.getEdgeStrengthUniform(), f);
GLES20.glDrawArrays(5, 0, 4);
GLES20.glBindTexture(3553, 0);
}
private boolean e(FrameBufferTexture frameBufferTexture, FrameBufferTexture frameBufferTexture2) {
GLES20.glFinish();
GLES20.glBindFramebuffer(36160, frameBufferTexture.mFrameBuffer);
GLES20.glViewport(0, 0, frameBufferTexture.mWidth, frameBufferTexture.mHeight);
if (this.gc == null) {
ByteBuffer allocateDirect = ByteBuffer.allocateDirect((frameBufferTexture.mWidth * frameBufferTexture.mHeight) << 2);
this.gc = allocateDirect;
allocateDirect.order(ByteOrder.LITTLE_ENDIAN);
}
GLES20.glReadPixels(0, 0, frameBufferTexture.mWidth, frameBufferTexture.mHeight, 6408, 5121, this.gc);
byte[] array = this.gc.array();
int i = frameBufferTexture.mWidth << 2;
int i2 = 0;
int i3 = 0;
for (int i4 = 0; i4 < frameBufferTexture.mHeight; i4++) {
for (int i5 = 0; i5 < i; i5 += 4) {
int i6 = array[i3 + i5] & UnsignedBytes.MAX_VALUE;
if (i2 < i6) {
i2 = i6;
}
}
i3 += i;
}
float f = i2;
float f2 = f / 255.0f >= GPUSettings.getSettings().contrastThreshold ? 255.0f / f : BitmapDescriptorFactory.HUE_RED;
GLES20.glBindFramebuffer(36160, frameBufferTexture2.mFrameBuffer);
GLES20.glViewport(0, 0, frameBufferTexture2.mWidth, frameBufferTexture2.mHeight);
GlobalThresholdShader globalThresholdShader = this.gy;
GLES20.glUseProgram(globalThresholdShader.getProgram());
GLES20.glVertexAttribPointer(0, 2, 5126, false, 0, (Buffer) this.fG);
GLES20.glEnableVertexAttribArray(0);
GLES20.glVertexAttribPointer(1, 2, 5126, false, 0, (Buffer) this.fK);
GLES20.glEnableVertexAttribArray(1);
GLES20.glBindTexture(3553, frameBufferTexture.mTexture);
GLES20.glUniform1f(globalThresholdShader.getThresholdUniform(), GPUSettings.getSettings().edgeLowThreshold);
GLES20.glUniform1f(globalThresholdShader.getScaleFactorUniform(), f2);
GLES20.glDrawArrays(5, 0, 4);
GLES20.glBindTexture(3553, 0);
return ((double) f2) > 0.0d;
}
private float[] b(FrameBufferTexture frameBufferTexture, ByteBuffer byteBuffer, boolean z) {
byte[] bArr;
if (byteBuffer != null) {
bArr = byteBuffer.array();
} else {
GLES20.glFinish();
GLES20.glBindFramebuffer(36160, frameBufferTexture.mFrameBuffer);
GLES20.glViewport(0, 0, frameBufferTexture.mWidth, frameBufferTexture.mHeight);
if (this.gc == null) {
ByteBuffer allocateDirect = ByteBuffer.allocateDirect((frameBufferTexture.mWidth * frameBufferTexture.mHeight) << 2);
this.gc = allocateDirect;
allocateDirect.order(ByteOrder.LITTLE_ENDIAN);
}
GLES20.glReadPixels(0, 0, frameBufferTexture.mWidth, frameBufferTexture.mHeight, 6408, 5121, this.gc);
byte[] array = this.gc.array();
if (this.gd == null) {
ByteBuffer allocateDirect2 = ByteBuffer.allocateDirect(frameBufferTexture.mWidth * frameBufferTexture.mHeight);
this.gd = allocateDirect2;
allocateDirect2.order(ByteOrder.nativeOrder());
}
byte[] array2 = this.gd.array();
int i = frameBufferTexture.mWidth;
int i2 = frameBufferTexture.mHeight;
int i3 = 0;
int i4 = 0;
while (i3 < i * i2) {
array2[i3] = array[i4];
i3++;
i4 += 4;
}
bArr = array2;
}
float[] fArr = new float[8];
if (this.mSettings == null) {
this.mSettings = new DocumentDetectionSettings();
}
Rect createTargetRect = RectUtil.createTargetRect(this.mSettings.getTargetFramePaddingPercent(), this.mSettings.getTargetFrameAspectRatio(), this.mSettings.getCenterPoint() != null ? new Point((this.mSettings.getCenterPoint().x * frameBufferTexture.mWidth) / this.fO, (this.mSettings.getCenterPoint().y * frameBufferTexture.mHeight) / this.fP) : null, frameBufferTexture.mWidth, frameBufferTexture.mHeight);
if (!GPUImageNativeLibrary.DetectBounds(bArr, frameBufferTexture.mWidth, frameBufferTexture.mHeight, Math.min(((createTargetRect.width() * createTargetRect.height()) / (frameBufferTexture.mWidth * frameBufferTexture.mHeight)) * 0.5f, GPUSettings.getSettings().relativeAreaRatio), GPUSettings.getSettings().maxAspectRatio, (float) this.mSettings.getTargetFrameAspectRatio(), z, fArr)) {
return null;
}
fArr[0] = this.fO * (fArr[0] / frameBufferTexture.mWidth);
fArr[1] = this.fP * (fArr[1] / frameBufferTexture.mHeight);
fArr[2] = this.fO * (fArr[2] / frameBufferTexture.mWidth);
fArr[3] = this.fP * (fArr[3] / frameBufferTexture.mHeight);
fArr[4] = this.fO * (fArr[4] / frameBufferTexture.mWidth);
fArr[5] = this.fP * (fArr[5] / frameBufferTexture.mHeight);
fArr[6] = this.fO * (fArr[6] / frameBufferTexture.mWidth);
fArr[7] = this.fP * (fArr[7] / frameBufferTexture.mHeight);
return fArr;
}
private void V() {
int i;
int i2;
if (this.fY != null || (i = this.fZ) == 0 || (i2 = this.ga) == 0) {
return;
}
this.fY = new FrameBufferTexture(i, i2);
this.gC = new FrameBufferTexture(this.fZ, this.ga);
OpenGLESContextManager openGLESContextManager = new OpenGLESContextManager();
this.fD = openGLESContextManager;
this.gx = new RgbSobelShader(openGLESContextManager);
this.gy = new GlobalThresholdShader(this.fD);
this.gz = new ScaleHistogramShader(this.fD);
this.gA = new LocalAdaptiveThresholdShader(this.fD);
this.gB = new BarnsenShader(this.fD);
this.gg = new PassThroughShader(this.fD);
}
private boolean f(FrameBufferTexture frameBufferTexture, FrameBufferTexture frameBufferTexture2) {
GLES20.glFinish();
GLES20.glBindFramebuffer(36160, frameBufferTexture.mFrameBuffer);
GLES20.glViewport(0, 0, frameBufferTexture.mWidth, frameBufferTexture.mHeight);
if (this.gc == null) {
ByteBuffer allocateDirect = ByteBuffer.allocateDirect((frameBufferTexture.mWidth * frameBufferTexture.mHeight) << 2);
this.gc = allocateDirect;
allocateDirect.order(ByteOrder.LITTLE_ENDIAN);
}
GLES20.glReadPixels(0, 0, frameBufferTexture.mWidth, frameBufferTexture.mHeight, 6408, 5121, this.gc);
byte[] array = this.gc.array();
int i = frameBufferTexture.mWidth << 2;
int i2 = 0;
int i3 = 0;
int i4 = 255;
for (int i5 = 0; i5 < frameBufferTexture.mHeight; i5++) {
for (int i6 = 0; i6 < i; i6 += 4) {
int i7 = array[i3 + i6] & UnsignedBytes.MAX_VALUE;
if (i7 > i2) {
i2 = i7;
}
if (i7 < i4) {
i4 = i7;
}
}
i3 += i;
}
float f = i2 - i4;
float f2 = f / 255.0f >= GPUSettings.getSettings().contrastThreshold ? 255.0f / f : 0.0f;
GLES20.glBindFramebuffer(36160, frameBufferTexture2.mFrameBuffer);
GLES20.glViewport(0, 0, frameBufferTexture2.mWidth, frameBufferTexture2.mHeight);
ScaleHistogramShader scaleHistogramShader = this.gz;
GLES20.glUseProgram(scaleHistogramShader.getProgram());
GLES20.glVertexAttribPointer(0, 2, 5126, false, 0, (Buffer) this.fG);
GLES20.glEnableVertexAttribArray(0);
GLES20.glVertexAttribPointer(1, 2, 5126, false, 0, (Buffer) this.fK);
GLES20.glEnableVertexAttribArray(1);
GLES20.glBindTexture(3553, frameBufferTexture.mTexture);
GLES20.glUniform1f(scaleHistogramShader.getMinValueUniform(), i4 / 255.0f);
GLES20.glUniform1f(scaleHistogramShader.getScaleFactorUniform(), f2);
GLES20.glDrawArrays(5, 0, 4);
GLES20.glBindTexture(3553, 0);
return f2 > BitmapDescriptorFactory.HUE_RED;
}
private void a(FrameBufferTexture frameBufferTexture, FrameBufferTexture frameBufferTexture2, FrameBufferTexture frameBufferTexture3) {
LocalAdaptiveThresholdShader localAdaptiveThresholdShader = this.gA;
GLES20.glBindFramebuffer(36160, frameBufferTexture3.mFrameBuffer);
GLES20.glViewport(0, 0, frameBufferTexture3.mWidth, frameBufferTexture3.mHeight);
localAdaptiveThresholdShader.setRadius(GPUSettings.getSettings().localAdaptiveThresholdRadius);
GLES20.glUseProgram(localAdaptiveThresholdShader.getFirstPassProgram());
GLES20.glVertexAttribPointer(0, 2, 5126, false, 0, (Buffer) this.fG);
GLES20.glEnableVertexAttribArray(0);
GLES20.glVertexAttribPointer(1, 2, 5126, false, 0, (Buffer) this.fK);
GLES20.glEnableVertexAttribArray(1);
GLES20.glBindTexture(3553, frameBufferTexture.mTexture);
float f = GPUSettings.getSettings().localAdaptiveThreshold;
GLES20.glUniform1f(localAdaptiveThresholdShader.getFirstPassTexelWidthUniform(), 1.0f / frameBufferTexture.mWidth);
GLES20.glUniform1f(localAdaptiveThresholdShader.getFirstPassTexelHeightUniform(), BitmapDescriptorFactory.HUE_RED);
GLES20.glUniform1f(localAdaptiveThresholdShader.getFirstPassThresholdUniform(), f);
GLES20.glDrawArrays(5, 0, 4);
GLES20.glBindTexture(3553, 0);
GLES20.glBindFramebuffer(36160, frameBufferTexture2.mFrameBuffer);
GLES20.glViewport(0, 0, frameBufferTexture2.mWidth, frameBufferTexture2.mHeight);
GLES20.glUseProgram(localAdaptiveThresholdShader.getSecondPassProgram());
GLES20.glVertexAttribPointer(0, 2, 5126, false, 0, (Buffer) this.fG);
GLES20.glEnableVertexAttribArray(0);
GLES20.glVertexAttribPointer(1, 2, 5126, false, 0, (Buffer) this.fK);
GLES20.glEnableVertexAttribArray(1);
GLES20.glBindTexture(3553, frameBufferTexture3.mTexture);
float f2 = GPUSettings.getSettings().localAdaptiveThreshold;
GLES20.glUniform1f(localAdaptiveThresholdShader.getSecondPassTexelWidthUniform(), BitmapDescriptorFactory.HUE_RED);
GLES20.glUniform1f(localAdaptiveThresholdShader.getSecondPassTexelHeightUniform(), 1.0f / frameBufferTexture3.mHeight);
GLES20.glUniform1f(localAdaptiveThresholdShader.getSecondPassThresholdUniform(), f2);
GLES20.glDrawArrays(5, 0, 4);
GLES20.glBindTexture(3553, 0);
}
private ByteBuffer g(FrameBufferTexture frameBufferTexture, FrameBufferTexture frameBufferTexture2) {
int i;
GLES20.glFinish();
GLES20.glBindFramebuffer(36160, frameBufferTexture.mFrameBuffer);
GLES20.glViewport(0, 0, frameBufferTexture.mWidth, frameBufferTexture.mHeight);
if (this.gc == null) {
ByteBuffer allocateDirect = ByteBuffer.allocateDirect((frameBufferTexture.mWidth * frameBufferTexture.mHeight) << 2);
this.gc = allocateDirect;
allocateDirect.order(ByteOrder.LITTLE_ENDIAN);
}
if (this.gd == null) {
ByteBuffer allocateDirect2 = ByteBuffer.allocateDirect(frameBufferTexture.mWidth * frameBufferTexture.mHeight);
this.gd = allocateDirect2;
allocateDirect2.order(ByteOrder.nativeOrder());
}
GLES20.glReadPixels(0, 0, frameBufferTexture.mWidth, frameBufferTexture.mHeight, 6408, 5121, this.gc);
byte[] array = this.gc.array();
byte[] array2 = this.gd.array();
int i2 = frameBufferTexture.mWidth * frameBufferTexture.mHeight;
int i3 = 0;
int i4 = 0;
while (i3 < i2) {
array2[i3] = array[i4];
i3++;
i4 += 4;
}
GPUImageNativeLibrary.OtsyThreshold(array2, frameBufferTexture.mWidth, frameBufferTexture.mHeight, 30.0f, 255.0f);
if (GPUSettings.getSettings().showProcessedImageAndBounds) {
if (this.gD == null) {
this.gD = new FrameBufferTexture(this.fZ, this.ga);
}
if (this.gD != null) {
int i5 = 0;
for (int i6 = 0; i6 < i2; i6++) {
if (array2[i6] != 0) {
array[i5] = -1;
array[i5 + 1] = -1;
array[i5 + 2] = -1;
i = i5 + 4;
array[i5 + 3] = -1;
} else {
array[i5] = 0;
array[i5 + 1] = 0;
array[i5 + 2] = 0;
i = i5 + 4;
array[i5 + 3] = -1;
}
i5 = i;
}
this.gD.setTextureBuffer(this.gc);
GLES20.glBindFramebuffer(36160, frameBufferTexture2.mFrameBuffer);
GLES20.glViewport(0, 0, frameBufferTexture2.mWidth, frameBufferTexture2.mHeight);
GLES20.glUseProgram(this.gg.getProgram());
GLES20.glVertexAttribPointer(0, 2, 5126, false, 0, (Buffer) this.fG);
GLES20.glEnableVertexAttribArray(0);
GLES20.glVertexAttribPointer(1, 2, 5126, false, 0, (Buffer) this.fK);
GLES20.glEnableVertexAttribArray(1);
GLES20.glBindTexture(3553, this.gD.mTexture);
GLES20.glDrawArrays(5, 0, 4);
GLES20.glBindTexture(3553, 0);
}
}
return this.gd;
}
private void b(FrameBufferTexture frameBufferTexture, FrameBufferTexture frameBufferTexture2, FrameBufferTexture frameBufferTexture3) {
BarnsenShader barnsenShader = this.gB;
GLES20.glBindFramebuffer(36160, frameBufferTexture3.mFrameBuffer);
GLES20.glViewport(0, 0, frameBufferTexture3.mWidth, frameBufferTexture3.mHeight);
barnsenShader.setRadius(GPUSettings.getSettings().barnsenRadius);
GLES20.glUseProgram(barnsenShader.getFirstPassProgram());
GLES20.glVertexAttribPointer(0, 2, 5126, false, 0, (Buffer) this.fG);
GLES20.glEnableVertexAttribArray(0);
GLES20.glVertexAttribPointer(1, 2, 5126, false, 0, (Buffer) this.fK);
GLES20.glEnableVertexAttribArray(1);
GLES20.glBindTexture(3553, frameBufferTexture.mTexture);
float f = GPUSettings.getSettings().barnsenThreshold;
GLES20.glUniform1f(barnsenShader.getFirstPassTexelWidthUniform(), 1.0f / frameBufferTexture.mWidth);
GLES20.glUniform1f(barnsenShader.getFirstPassTexelHeightUniform(), BitmapDescriptorFactory.HUE_RED);
GLES20.glUniform1f(barnsenShader.getFirstPassThresholdUniform(), f);
GLES20.glDrawArrays(5, 0, 4);
GLES20.glBindTexture(3553, 0);
GLES20.glBindFramebuffer(36160, frameBufferTexture2.mFrameBuffer);
GLES20.glViewport(0, 0, frameBufferTexture2.mWidth, frameBufferTexture2.mHeight);
GLES20.glUseProgram(barnsenShader.getSecondPassProgram());
GLES20.glVertexAttribPointer(0, 2, 5126, false, 0, (Buffer) this.fG);
GLES20.glEnableVertexAttribArray(0);
GLES20.glVertexAttribPointer(1, 2, 5126, false, 0, (Buffer) this.fK);
GLES20.glEnableVertexAttribArray(1);
GLES20.glBindTexture(3553, frameBufferTexture3.mTexture);
float f2 = GPUSettings.getSettings().barnsenThreshold;
GLES20.glUniform1f(barnsenShader.getSecondPassTexelWidthUniform(), BitmapDescriptorFactory.HUE_RED);
GLES20.glUniform1f(barnsenShader.getSecondPassTexelHeightUniform(), 1.0f / frameBufferTexture3.mHeight);
GLES20.glUniform1f(barnsenShader.getSecondPassThresholdUniform(), f2);
GLES20.glDrawArrays(5, 0, 4);
GLES20.glBindTexture(3553, 0);
}
@Override // com.kofax.kmc.ken.engines.gpu.ImageProcessor
public void setResizedResolution(int i, int i2) {
this.fZ = i;
this.ga = i2;
}
@Override // com.kofax.kmc.ken.engines.gpu.ImageProcessor
public void setPreviewResoution(int i, int i2) {
this.fO = i;
this.fP = i2;
}
@Override // com.kofax.kmc.ken.engines.gpu.ImageProcessor
public FrameBufferTexture getProcessedTexture() {
return this.gE;
}
@Override // com.kofax.kmc.ken.engines.gpu.ImageProcessor
public float[] getBounds() {
return this.gF;
}
}