@Override public int getNextWidth() { return frameNext.getWidth(); }
@Override public int getNextWidth() { return frameNext.getWidth(); }
@Override public int estimateBufferSize(Picture frame) { return (3 * frame.getWidth() * frame.getHeight()) / 2; } }
@Override public int estimateBufferSize(Picture frame) { return Math.max(1 << 16, frame.getWidth() * frame.getHeight() / 2); } }
@Override public int estimateBufferSize(Picture frame) { return frame.getWidth() * frame.getHeight() / 2; } }
@Override public int estimateBufferSize(Picture frame) { // We assume it's the same size as raw image return frame.getWidth() * frame.getHeight() * 3; }
@Override public int estimateBufferSize(Picture frame) { int fullPlaneSize = frame.getWidth() * frame.getCroppedHeight(); ColorSpace color = frame.getColor(); int totalSize = 0; for (int i = 0; i < color.nComp; i++) { totalSize += (fullPlaneSize >> color.compWidth[i]) >> color.compHeight[i]; } return totalSize; }
@Override public void transform(Picture src, Picture dst) { copy(src.getPlaneData(0), dst.getPlaneData(0), src.getWidth(), dst.getWidth(), dst.getHeight()); _copy(src.getPlaneData(1), dst.getPlaneData(1), 0, 0, 1, 2, src.getWidth() >> 1, dst.getWidth() >> 1, src.getHeight() >> 1, dst.getHeight()); _copy(src.getPlaneData(1), dst.getPlaneData(1), 0, 1, 1, 2, src.getWidth() >> 1, dst.getWidth() >> 1, src.getHeight() >> 1, dst.getHeight()); _copy(src.getPlaneData(2), dst.getPlaneData(2), 0, 0, 1, 2, src.getWidth() >> 1, dst.getWidth() >> 1, src.getHeight() >> 1, dst.getHeight()); _copy(src.getPlaneData(2), dst.getPlaneData(2), 0, 1, 1, 2, src.getWidth() >> 1, dst.getWidth() >> 1, src.getHeight() >> 1, dst.getHeight()); }
@Override public <InternalImage> InternalImage getGuiImage() { Planar<GrayU8> boofColor = new Planar<>(GrayU8.class, frameCurrent.getWidth(),frameCurrent.getHeight(),3); BufferedImage output = new BufferedImage(boofColor.width,boofColor.height,BufferedImage.TYPE_INT_RGB); UtilJCodec.convertToBoof(frameCurrent,boofColor); ConvertBufferedImage.convertTo(boofColor,output,true); return (InternalImage)output; }
@Override public <InternalImage> InternalImage getGuiImage() { Planar<GrayU8> boofColor = new Planar<>(GrayU8.class, frameCurrent.getWidth(),frameCurrent.getHeight(),3); BufferedImage output = new BufferedImage(boofColor.width,boofColor.height,BufferedImage.TYPE_INT_RGB); UtilJCodec.convertToBoof(frameCurrent,boofColor); ConvertBufferedImage.convertTo(boofColor,output,true); return (InternalImage)output; }
@Override public LoanerPicture getPicture(int width, int height, ColorSpace color) { for (Picture picture : buffers) { if (picture.getWidth() == width && picture.getHeight() == height && picture.getColor() == color) { buffers.remove(picture); return new LoanerPicture(picture, 1); } } return new LoanerPicture(Picture.create(width, height, color), 1); }
public Frame cropped() { Picture cropped = super.cropped(); return new Frame(cropped.getWidth(), cropped.getHeight(), cropped.getData(), cropped.getColor(), null, frameNo, frameType, mvs, refsUsed, poc); }
public static Frame createFrame(Frame pic) { Picture comp = pic.createCompatible(); return new Frame(comp.getWidth(), comp.getHeight(), comp.getData(), comp.getColor(), pic.getCrop(), pic.frameNo, pic.frameType, pic.mvs, pic.refsUsed, pic.poc); }
public Picture decodeFrame(ByteBuffer data, byte[][] data2) { if (interlace) { Picture r1 = decodeField(data, data2, topFieldFirst ? 0 : 1, 2); Picture r2 = decodeField(data, data2, topFieldFirst ? 1 : 0, 2); return Picture.createPicture(r1.getWidth(), r1.getHeight() << 1, data2, r1.getColor()); } else { return decodeField(data, data2, 0, 1); } }
public static Picture fromBufferedImage(BufferedImage src, ColorSpace tgtColor) { Picture rgb = fromBufferedImageRGB(src); Transform tr = ColorUtil.getTransform(rgb.getColor(), tgtColor); Picture res = Picture.create(rgb.getWidth(), rgb.getHeight(), tgtColor); tr.transform(rgb, res); return res; }
public static void savePictureAsPPM(Picture pic, File file) throws IOException { Transform transform = ColorUtil.getTransform(pic.getColor(), ColorSpace.RGB); Picture rgb = Picture.create(pic.getWidth(), pic.getHeight(), ColorSpace.RGB); transform.transform(pic, rgb); NIOUtils.writeTo(new PPMEncoder().encodeFrame(rgb), file); }
@Override public void transform(Picture src, Picture 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)); }
@Override public Picture decodeField(ByteBuffer data, byte[][] data2, int field, int step) { Picture res = super.decodeField(data, data2, field, step); return new Picture(res.getWidth() >> 2, res.getHeight() >> 2, res.getData(), null, res.getColor(), 0, new Rect( 0, 0, res.getCroppedWidth() >> 2, res.getCroppedHeight() >> 2)); } }
@Override public Picture decodeField(ByteBuffer data, byte[][] data2, int field, int step) { Picture res = super.decodeField(data, data2, field, step); return new Picture(res.getWidth() >> 1, res.getHeight() >> 1, res.getData(), null, res.getColor(), 0, new Rect( 0, 0, res.getCroppedWidth() >> 1, res.getCroppedHeight() >> 1)); } }
@Override public LoanerPicture filter(Picture picture, PixelStore store) { if (transform == null) { transform = ColorUtil.getTransform(picture.getColor(), outputColor); Logger.debug("Creating transform: " + transform); } LoanerPicture outFrame = store.getPicture(picture.getWidth(), picture.getHeight(), outputColor); outFrame.getPicture().setCrop(picture.getCrop()); transform.transform(picture, outFrame.getPicture()); return outFrame; }