Lines Matching +refs:columns +refs:a

57     private int columns;  field in FloatDCT_2D
79 public FloatDCT_2D(int rows, int columns) { in FloatDCT_2D() argument
80 if (rows <= 1 || columns <= 1) { in FloatDCT_2D()
84 this.columns = columns; in FloatDCT_2D()
85 if (rows * columns >= ConcurrencyUtils.getThreadsBeginN_2D()) { in FloatDCT_2D()
88 if (ConcurrencyUtils.isPowerOf2(rows) && ConcurrencyUtils.isPowerOf2(columns)) { in FloatDCT_2D()
92 if (columns == 2 * oldNthreads) { in FloatDCT_2D()
94 } else if (columns < 2 * oldNthreads) { in FloatDCT_2D()
99 dctColumns = new FloatDCT_1D(columns); in FloatDCT_2D()
100 if (columns == rows) { in FloatDCT_2D()
116 public void forward(final float[] a, final boolean scale) { in forward() argument
121 if (columns == 2 * nthreads) { in forward()
123 } else if (columns < 2 * nthreads) { in forward()
130 ddxt2d_subth(-1, a, scale); in forward()
131 ddxt2d0_subth(-1, a, scale); in forward()
133 ddxt2d_sub(-1, a, scale); in forward()
135 dctColumns.forward(a, i * columns, scale); in forward()
139 if ((nthreads > 1) && useThreads && (rows >= nthreads) && (columns >= nthreads)) { in forward()
148 dctColumns.forward(a, r * columns, scale); in forward()
154 p = columns / nthreads; in forward()
157 final int lastColumn = (l == (nthreads - 1)) ? columns : firstColumn + p; in forward()
163 temp[r] = a[r * columns + c]; in forward()
167 a[r * columns + c] = temp[r]; in forward()
176 dctColumns.forward(a, i * columns, scale); in forward()
179 for (int c = 0; c < columns; c++) { in forward()
181 temp[r] = a[r * columns + c]; in forward()
185 a[r * columns + c] = temp[r]; in forward()
201 public void forward(final float[][] a, final boolean scale) { in forward() argument
206 if (columns == 2 * nthreads) { in forward()
208 } else if (columns < 2 * nthreads) { in forward()
215 ddxt2d_subth(-1, a, scale); in forward()
216 ddxt2d0_subth(-1, a, scale); in forward()
218 ddxt2d_sub(-1, a, scale); in forward()
220 dctColumns.forward(a[i], scale); in forward()
224 if ((nthreads > 1) && useThreads && (rows >= nthreads) && (columns >= nthreads)) { in forward()
233 dctColumns.forward(a[i], scale); in forward()
239 p = columns / nthreads; in forward()
242 final int lastColumn = (l == (nthreads - 1)) ? columns : firstColumn + p; in forward()
248 temp[r] = a[r][c]; in forward()
252 a[r][c] = temp[r]; in forward()
261 dctColumns.forward(a[i], scale); in forward()
264 for (int c = 0; c < columns; c++) { in forward()
266 temp[r] = a[r][c]; in forward()
270 a[r][c] = temp[r]; in forward()
286 public void inverse(final float[] a, final boolean scale) { in inverse() argument
291 if (columns == 2 * nthreads) { in inverse()
293 } else if (columns < 2 * nthreads) { in inverse()
300 ddxt2d_subth(1, a, scale); in inverse()
301 ddxt2d0_subth(1, a, scale); in inverse()
303 ddxt2d_sub(1, a, scale); in inverse()
305 dctColumns.inverse(a, i * columns, scale); in inverse()
309 if ((nthreads > 1) && useThreads && (rows >= nthreads) && (columns >= nthreads)) { in inverse()
318 dctColumns.inverse(a, i * columns, scale); in inverse()
324 p = columns / nthreads; in inverse()
327 final int lastColumn = (l == (nthreads - 1)) ? columns : firstColumn + p; in inverse()
333 temp[r] = a[r * columns + c]; in inverse()
337 a[r * columns + c] = temp[r]; in inverse()
346 dctColumns.inverse(a, i * columns, scale); in inverse()
349 for (int c = 0; c < columns; c++) { in inverse()
351 temp[r] = a[r * columns + c]; in inverse()
355 a[r * columns + c] = temp[r]; in inverse()
371 public void inverse(final float[][] a, final boolean scale) { in inverse() argument
376 if (columns == 2 * nthreads) { in inverse()
378 } else if (columns < 2 * nthreads) { in inverse()
385 ddxt2d_subth(1, a, scale); in inverse()
386 ddxt2d0_subth(1, a, scale); in inverse()
388 ddxt2d_sub(1, a, scale); in inverse()
390 dctColumns.inverse(a[i], scale); in inverse()
394 if ((nthreads > 1) && useThreads && (rows >= nthreads) && (columns >= nthreads)) { in inverse()
403 dctColumns.inverse(a[i], scale); in inverse()
409 p = columns / nthreads; in inverse()
412 final int lastColumn = (l == (nthreads - 1)) ? columns : firstColumn + p; in inverse()
418 temp[r] = a[r][c]; in inverse()
422 a[r][c] = temp[r]; in inverse()
431 dctColumns.inverse(a[r], scale); in inverse()
434 for (int c = 0; c < columns; c++) { in inverse()
436 temp[r] = a[r][c]; in inverse()
440 a[r][c] = temp[r]; in inverse()
447 private void ddxt2d_subth(final int isgn, final float[] a, final boolean scale) { in ddxt2d_subth() argument
450 if (columns == 2 * nthread) { in ddxt2d_subth()
452 } else if (columns < 2 * nthread) { in ddxt2d_subth()
453 nthread = columns; in ddxt2d_subth()
465 if (columns > 2 * nthreads) { in ddxt2d_subth()
467 for (int c = 4 * n0; c < columns; c += 4 * nthreads) { in ddxt2d_subth()
469 idx1 = r * columns + c; in ddxt2d_subth()
471 t[startt + r] = a[idx1]; in ddxt2d_subth()
472 t[idx2] = a[idx1 + 1]; in ddxt2d_subth()
473 t[idx2 + rows] = a[idx1 + 2]; in ddxt2d_subth()
474 t[idx2 + 2 * rows] = a[idx1 + 3]; in ddxt2d_subth()
481 idx1 = r * columns + c; in ddxt2d_subth()
483 a[idx1] = t[startt + r]; in ddxt2d_subth()
484 a[idx1 + 1] = t[idx2]; in ddxt2d_subth()
485 a[idx1 + 2] = t[idx2 + rows]; in ddxt2d_subth()
486 a[idx1 + 3] = t[idx2 + 2 * rows]; in ddxt2d_subth()
490 for (int c = 4 * n0; c < columns; c += 4 * nthreads) { in ddxt2d_subth()
492 idx1 = r * columns + c; in ddxt2d_subth()
494 t[startt + r] = a[idx1]; in ddxt2d_subth()
495 t[idx2] = a[idx1 + 1]; in ddxt2d_subth()
496 t[idx2 + rows] = a[idx1 + 2]; in ddxt2d_subth()
497 t[idx2 + 2 * rows] = a[idx1 + 3]; in ddxt2d_subth()
504 idx1 = r * columns + c; in ddxt2d_subth()
506 a[idx1] = t[startt + r]; in ddxt2d_subth()
507 a[idx1 + 1] = t[idx2]; in ddxt2d_subth()
508 a[idx1 + 2] = t[idx2 + rows]; in ddxt2d_subth()
509 a[idx1 + 3] = t[idx2 + 2 * rows]; in ddxt2d_subth()
513 } else if (columns == 2 * nthreads) { in ddxt2d_subth()
515 idx1 = r * columns + 2 * n0; in ddxt2d_subth()
517 t[idx2] = a[idx1]; in ddxt2d_subth()
518 t[idx2 + rows] = a[idx1 + 1]; in ddxt2d_subth()
528 idx1 = r * columns + 2 * n0; in ddxt2d_subth()
530 a[idx1] = t[idx2]; in ddxt2d_subth()
531 a[idx1 + 1] = t[idx2 + rows]; in ddxt2d_subth()
533 } else if (columns == nthreads) { in ddxt2d_subth()
535 t[startt + r] = a[r * columns + n0]; in ddxt2d_subth()
543 a[r * columns + n0] = t[startt + r]; in ddxt2d_subth()
552 private void ddxt2d_subth(final int isgn, final float[][] a, final boolean scale) { in ddxt2d_subth() argument
555 if (columns == 2 * nthread) { in ddxt2d_subth()
557 } else if (columns < 2 * nthread) { in ddxt2d_subth()
558 nthread = columns; in ddxt2d_subth()
570 if (columns > 2 * nthreads) { in ddxt2d_subth()
572 for (int c = 4 * n0; c < columns; c += 4 * nthreads) { in ddxt2d_subth()
575 t[startt + r] = a[r][c]; in ddxt2d_subth()
576 t[idx2] = a[r][c + 1]; in ddxt2d_subth()
577 t[idx2 + rows] = a[r][c + 2]; in ddxt2d_subth()
578 t[idx2 + 2 * rows] = a[r][c + 3]; in ddxt2d_subth()
586 a[r][c] = t[startt + r]; in ddxt2d_subth()
587 a[r][c + 1] = t[idx2]; in ddxt2d_subth()
588 a[r][c + 2] = t[idx2 + rows]; in ddxt2d_subth()
589 a[r][c + 3] = t[idx2 + 2 * rows]; in ddxt2d_subth()
593 for (int c = 4 * n0; c < columns; c += 4 * nthreads) { in ddxt2d_subth()
596 t[startt + r] = a[r][c]; in ddxt2d_subth()
597 t[idx2] = a[r][c + 1]; in ddxt2d_subth()
598 t[idx2 + rows] = a[r][c + 2]; in ddxt2d_subth()
599 t[idx2 + 2 * rows] = a[r][c + 3]; in ddxt2d_subth()
607 a[r][c] = t[startt + r]; in ddxt2d_subth()
608 a[r][c + 1] = t[idx2]; in ddxt2d_subth()
609 a[r][c + 2] = t[idx2 + rows]; in ddxt2d_subth()
610 a[r][c + 3] = t[idx2 + 2 * rows]; in ddxt2d_subth()
614 } else if (columns == 2 * nthreads) { in ddxt2d_subth()
617 t[idx2] = a[r][2 * n0]; in ddxt2d_subth()
618 t[idx2 + rows] = a[r][2 * n0 + 1]; in ddxt2d_subth()
629 a[r][2 * n0] = t[idx2]; in ddxt2d_subth()
630 a[r][2 * n0 + 1] = t[idx2 + rows]; in ddxt2d_subth()
632 } else if (columns == nthreads) { in ddxt2d_subth()
634 t[startt + r] = a[r][n0]; in ddxt2d_subth()
642 a[r][n0] = t[startt + r]; in ddxt2d_subth()
651 private void ddxt2d0_subth(final int isgn, final float[] a, final boolean scale) { in ddxt2d0_subth() argument
663 dctColumns.forward(a, r * columns, scale); in ddxt2d0_subth()
667 dctColumns.inverse(a, r * columns, scale); in ddxt2d0_subth()
676 private void ddxt2d0_subth(final int isgn, final float[][] a, final boolean scale) { in ddxt2d0_subth() argument
688 dctColumns.forward(a[r], scale); in ddxt2d0_subth()
692 dctColumns.inverse(a[r], scale); in ddxt2d0_subth()
701 private void ddxt2d_sub(int isgn, float[] a, boolean scale) { in ddxt2d_sub() argument
704 if (columns > 2) { in ddxt2d_sub()
706 for (int c = 0; c < columns; c += 4) { in ddxt2d_sub()
708 idx1 = r * columns + c; in ddxt2d_sub()
710 t[r] = a[idx1]; in ddxt2d_sub()
711 t[idx2] = a[idx1 + 1]; in ddxt2d_sub()
712 t[idx2 + rows] = a[idx1 + 2]; in ddxt2d_sub()
713 t[idx2 + 2 * rows] = a[idx1 + 3]; in ddxt2d_sub()
720 idx1 = r * columns + c; in ddxt2d_sub()
722 a[idx1] = t[r]; in ddxt2d_sub()
723 a[idx1 + 1] = t[idx2]; in ddxt2d_sub()
724 a[idx1 + 2] = t[idx2 + rows]; in ddxt2d_sub()
725 a[idx1 + 3] = t[idx2 + 2 * rows]; in ddxt2d_sub()
729 for (int c = 0; c < columns; c += 4) { in ddxt2d_sub()
731 idx1 = r * columns + c; in ddxt2d_sub()
733 t[r] = a[idx1]; in ddxt2d_sub()
734 t[idx2] = a[idx1 + 1]; in ddxt2d_sub()
735 t[idx2 + rows] = a[idx1 + 2]; in ddxt2d_sub()
736 t[idx2 + 2 * rows] = a[idx1 + 3]; in ddxt2d_sub()
743 idx1 = r * columns + c; in ddxt2d_sub()
745 a[idx1] = t[r]; in ddxt2d_sub()
746 a[idx1 + 1] = t[idx2]; in ddxt2d_sub()
747 a[idx1 + 2] = t[idx2 + rows]; in ddxt2d_sub()
748 a[idx1 + 3] = t[idx2 + 2 * rows]; in ddxt2d_sub()
752 } else if (columns == 2) { in ddxt2d_sub()
754 idx1 = r * columns; in ddxt2d_sub()
755 t[r] = a[idx1]; in ddxt2d_sub()
756 t[rows + r] = a[idx1 + 1]; in ddxt2d_sub()
766 idx1 = r * columns; in ddxt2d_sub()
767 a[idx1] = t[r]; in ddxt2d_sub()
768 a[idx1 + 1] = t[rows + r]; in ddxt2d_sub()
773 private void ddxt2d_sub(int isgn, float[][] a, boolean scale) { in ddxt2d_sub() argument
776 if (columns > 2) { in ddxt2d_sub()
778 for (int c = 0; c < columns; c += 4) { in ddxt2d_sub()
781 t[r] = a[r][c]; in ddxt2d_sub()
782 t[idx2] = a[r][c + 1]; in ddxt2d_sub()
783 t[idx2 + rows] = a[r][c + 2]; in ddxt2d_sub()
784 t[idx2 + 2 * rows] = a[r][c + 3]; in ddxt2d_sub()
792 a[r][c] = t[r]; in ddxt2d_sub()
793 a[r][c + 1] = t[idx2]; in ddxt2d_sub()
794 a[r][c + 2] = t[idx2 + rows]; in ddxt2d_sub()
795 a[r][c + 3] = t[idx2 + 2 * rows]; in ddxt2d_sub()
799 for (int c = 0; c < columns; c += 4) { in ddxt2d_sub()
802 t[r] = a[r][c]; in ddxt2d_sub()
803 t[idx2] = a[r][c + 1]; in ddxt2d_sub()
804 t[idx2 + rows] = a[r][c + 2]; in ddxt2d_sub()
805 t[idx2 + 2 * rows] = a[r][c + 3]; in ddxt2d_sub()
813 a[r][c] = t[r]; in ddxt2d_sub()
814 a[r][c + 1] = t[idx2]; in ddxt2d_sub()
815 a[r][c + 2] = t[idx2 + rows]; in ddxt2d_sub()
816 a[r][c + 3] = t[idx2 + 2 * rows]; in ddxt2d_sub()
820 } else if (columns == 2) { in ddxt2d_sub()
822 t[r] = a[r][0]; in ddxt2d_sub()
823 t[rows + r] = a[r][1]; in ddxt2d_sub()
833 a[r][0] = t[r]; in ddxt2d_sub()
834 a[r][1] = t[rows + r]; in ddxt2d_sub()