package com.google.zxing.common; import com.google.zxing.Binarizer; import com.google.zxing.LuminanceSource; import com.google.zxing.NotFoundException; /* loaded from: classes.dex */ public class GlobalHistogramBinarizer extends Binarizer { private static final byte[] d = new byte[0]; private byte[] b; private final int[] c; public GlobalHistogramBinarizer(LuminanceSource luminanceSource) { super(luminanceSource); this.b = d; this.c = new int[32]; } @Override // com.google.zxing.Binarizer public BitArray a(int i, BitArray bitArray) throws NotFoundException { LuminanceSource c = c(); int c2 = c.c(); if (bitArray == null || bitArray.h() < c2) { bitArray = new BitArray(c2); } else { bitArray.a(); } a(c2); byte[] a = c.a(i, this.b); int[] iArr = this.c; for (int i2 = 0; i2 < c2; i2++) { int i3 = (a[i2] & 255) >> 3; iArr[i3] = iArr[i3] + 1; } int a2 = a(iArr); if (c2 < 3) { for (int i4 = 0; i4 < c2; i4++) { if ((a[i4] & 255) < a2) { bitArray.d(i4); } } } else { int i5 = a[0] & 255; int i6 = a[1] & 255; int i7 = i5; int i8 = 1; while (i8 < c2 - 1) { int i9 = i8 + 1; int i10 = a[i9] & 255; if ((((i6 << 2) - i7) - i10) / 2 < a2) { bitArray.d(i8); } i7 = i6; i8 = i9; i6 = i10; } } return bitArray; } @Override // com.google.zxing.Binarizer public BitMatrix a() throws NotFoundException { LuminanceSource c = c(); int c2 = c.c(); int a = c.a(); BitMatrix bitMatrix = new BitMatrix(c2, a); a(c2); int[] iArr = this.c; for (int i = 1; i < 5; i++) { byte[] a2 = c.a((a * i) / 5, this.b); int i2 = (c2 << 2) / 5; for (int i3 = c2 / 5; i3 < i2; i3++) { int i4 = (a2[i3] & 255) >> 3; iArr[i4] = iArr[i4] + 1; } } int a3 = a(iArr); byte[] b = c.b(); for (int i5 = 0; i5 < a; i5++) { int i6 = i5 * c2; for (int i7 = 0; i7 < c2; i7++) { if ((b[i6 + i7] & 255) < a3) { bitMatrix.c(i7, i5); } } } return bitMatrix; } private void a(int i) { if (this.b.length < i) { this.b = new byte[i]; } for (int i2 = 0; i2 < 32; i2++) { this.c[i2] = 0; } } private static int a(int[] iArr) throws NotFoundException { int length = iArr.length; int i = 0; int i2 = 0; int i3 = 0; for (int i4 = 0; i4 < length; i4++) { if (iArr[i4] > i) { i = iArr[i4]; i3 = i4; } if (iArr[i4] > i2) { i2 = iArr[i4]; } } int i5 = 0; int i6 = 0; for (int i7 = 0; i7 < length; i7++) { int i8 = i7 - i3; int i9 = iArr[i7] * i8 * i8; if (i9 > i6) { i5 = i7; i6 = i9; } } if (i3 > i5) { int i10 = i3; i3 = i5; i5 = i10; } if (i5 - i3 <= length / 16) { throw NotFoundException.getNotFoundInstance(); } int i11 = i5 - 1; int i12 = i11; int i13 = -1; while (i11 > i3) { int i14 = i11 - i3; int i15 = i14 * i14 * (i5 - i11) * (i2 - iArr[i11]); if (i15 > i13) { i12 = i11; i13 = i15; } i11--; } return i12 << 3; } }