public void transform(PictureHiBD src, PictureHiBD dst) { copy(src.getPlaneData(0), dst.getPlaneData(0), src.getWidth(), dst.getWidth(), dst.getHeight(), shiftUp, shiftDown); _copy(src.getPlaneData(1), dst.getPlaneData(1), 0, 0, 1, 2, src.getWidth() >> 1, dst.getWidth() >> 1, src.getHeight() >> 1, dst.getHeight(), shiftUp, shiftDown); _copy(src.getPlaneData(1), dst.getPlaneData(1), 0, 1, 1, 2, src.getWidth() >> 1, dst.getWidth() >> 1, src.getHeight() >> 1, dst.getHeight(), shiftUp, shiftDown); _copy(src.getPlaneData(2), dst.getPlaneData(2), 0, 0, 1, 2, src.getWidth() >> 1, dst.getWidth() >> 1, src.getHeight() >> 1, dst.getHeight(), shiftUp, shiftDown); _copy(src.getPlaneData(2), dst.getPlaneData(2), 0, 1, 1, 2, src.getWidth() >> 1, dst.getWidth() >> 1, src.getHeight() >> 1, dst.getHeight(), shiftUp, shiftDown); }
public void transform(PictureHiBD src, PictureHiBD dst) { int[] y = src.getPlaneData(0); int[] u = src.getPlaneData(1); int[] v = src.getPlaneData(2); int[] data = dst.getPlaneData(0); for (int i = 0, srcOff = 0, dstOff = 0; i < dst.getHeight(); i++) { for (int j = 0; j < dst.getWidth(); j++, srcOff++, dstOff += 3) { YUV444toRGB888((y[srcOff] << upShift) >> downShift, (u[srcOff] << upShift) >> downShift, (v[srcOff] << upShift) >> downShift, data, dstOff); } } }
public void transform(PictureHiBD src, PictureHiBD dst) { int[] y = src.getPlaneData(0); int[] u = src.getPlaneData(1); int[] v = src.getPlaneData(2); int[] data = dst.getPlaneData(0); for (int i = 0, srcOff = 0, dstOff = 0; i < dst.getHeight(); i++) { for (int j = 0; j < dst.getWidth(); j++, srcOff++, dstOff += 3) { YUVJtoRGB(y[srcOff], u[srcOff], v[srcOff], data, dstOff); } } } }
public void transform(PictureHiBD img, PictureHiBD dst) { int[] y = img.getData()[0]; int[][] dstData = dst.getData(); int off = 0, offSrc = 0; for (int i = 0; i < img.getHeight(); i++) { for (int j = 0; j < img.getWidth() >> 1; j++) { dstData[1][off] = 0; dstData[2][off] = 0; int offY = off << 1; RgbToYuv420pHiBD.rgb2yuv(y[offSrc++], y[offSrc++], y[offSrc++], dstData[0], offY, dstData[1], off, dstData[2], off); dstData[0][offY] = (dstData[0][offY] << upShift) >> downShift; RgbToYuv420pHiBD.rgb2yuv(y[offSrc++], y[offSrc++], y[offSrc++], dstData[0], offY + 1, dstData[1], off, dstData[2], off); dstData[0][offY + 1] = (dstData[0][offY + 1] << upShift) >> downShift; dstData[1][off] = (dstData[1][off] << upShift) >> downShiftChr; dstData[2][off] = (dstData[2][off] << upShift) >> downShiftChr; ++off; } } } }
public void transform(PictureHiBD src, PictureHiBD dst) { int[] y = src.getPlaneData(0); int[] u = src.getPlaneData(1); int[] v = src.getPlaneData(2); int[] data = dst.getPlaneData(0); int offLuma = 0, offChroma = 0; for (int i = 0; i < dst.getHeight(); i++) { for (int j = 0; j < dst.getWidth(); j += 2) { YUVJtoRGB(y[offLuma], u[offChroma], v[offChroma], data, offLuma * 3); YUVJtoRGB(y[offLuma + 1], u[offChroma], v[offChroma], data, (offLuma + 1) * 3); offLuma += 2; ++offChroma; } } } }
public void transform(PictureHiBD src, PictureHiBD dst) { int[] y = src.getPlaneData(0); int[] u = src.getPlaneData(1); int[] v = src.getPlaneData(2); int[] data = dst.getPlaneData(0); int offLuma = 0, offChroma = 0; for (int i = 0; i < dst.getHeight(); i++) { for (int j = 0; j < dst.getWidth(); j += 2) { YUV444toRGB888((y[offLuma] << upShift) >> downShift, (u[offChroma] << upShift) >> downShift, (v[offChroma] << upShift) >> downShift, data, offLuma * 3); YUV444toRGB888((y[offLuma + 1] << upShift) >> downShift, (u[offChroma] << upShift) >> downShift, (v[offChroma] << upShift) >> downShift, data, (offLuma + 1) * 3); offLuma += 2; ++offChroma; } } }
public static Picture fromPictureHiBD(PictureHiBD pic) { int lowBitsNum = pic.getBitDepth() - 8; int lowBitsRound = (1 << lowBitsNum) >> 1; Picture result = Picture.createCroppedHiBD(pic.getWidth(), pic.getHeight(), lowBitsNum, pic.getColor(), pic.getCrop()); for (int i = 0; i < Math.min(pic.getData().length, result.getData().length); i++) { for (int j = 0; j < Math.min(pic.getData()[i].length, result.getData()[i].length); j++) { int val = pic.getData()[i][j]; int round = MathUtil.clip((val + lowBitsRound) >> lowBitsNum, 0, 255); result.getData()[i][j] = (byte) (round - 128); } } byte[][] lowBits = result.getLowBits(); if (lowBits != null) { for (int i = 0; i < Math.min(pic.getData().length, result.getData().length); i++) { for (int j = 0; j < Math.min(pic.getData()[i].length, result.getData()[i].length); j++) { int val = pic.getData()[i][j]; int round = MathUtil.clip((val + lowBitsRound) >> lowBitsNum, 0, 255); lowBits[i][j] = (byte) (val - (round << 2)); } } } return result; }
for (int i = 0; i < img.getHeight() >> 1; i++) { for (int j = 0; j < img.getWidth() >> 1; j++) { dstData[1][offChr] = 0;
for (int i = 0; i < img.getHeight() >> 1; i++) { for (int j = 0; j < img.getWidth() >> 1; j++) { dstData[1][offChr] = 0;
public void transform(PictureHiBD src, PictureHiBD dst) { int lumaSize = src.getWidth() * src.getHeight(); arraycopy(src.getPlaneData(0), 0, dst.getPlaneData(0), 0, lumaSize); copyAvg(src.getPlaneData(1), dst.getPlaneData(1), src.getPlaneWidth(1), src.getPlaneHeight(1)); copyAvg(src.getPlaneData(2), dst.getPlaneData(2), src.getPlaneWidth(2), src.getPlaneHeight(2)); if (shiftUp > shiftDown) { up(dst.getPlaneData(0), shiftUp - shiftDown); up(dst.getPlaneData(1), shiftUp - shiftDown); up(dst.getPlaneData(2), shiftUp - shiftDown); } else if (shiftDown > shiftUp) { down(dst.getPlaneData(0), shiftDown - shiftUp); down(dst.getPlaneData(1), shiftDown - shiftUp); down(dst.getPlaneData(2), shiftDown - shiftUp); } }
public void transform(PictureHiBD src, PictureHiBD dst) { int lumaSize = src.getWidth() * src.getHeight(); arraycopy(src.getPlaneData(0), 0, dst.getPlaneData(0), 0, lumaSize); copyAvg(src.getPlaneData(1), dst.getPlaneData(1), src.getPlaneWidth(1), src.getPlaneHeight(1)); copyAvg(src.getPlaneData(2), dst.getPlaneData(2), src.getPlaneWidth(2), src.getPlaneHeight(2)); if (shiftUp > shiftDown) { up(dst.getPlaneData(0), shiftUp - shiftDown); up(dst.getPlaneData(1), shiftUp - shiftDown); up(dst.getPlaneData(2), shiftUp - shiftDown); } else if (shiftDown > shiftUp) { down(dst.getPlaneData(0), shiftDown - shiftUp); down(dst.getPlaneData(1), shiftDown - shiftUp); down(dst.getPlaneData(2), shiftDown - shiftUp); } }