private Control getControl() { if (control == null) { control = new JAIControl(); control.setConvolutionChoices(kernelNames); } int index = control.getEffectIndex(); return control; }
public int process(Buffer inBuffer, Buffer outBuffer) { try { if (frameConverter == null) { frameConverter = new BufferToImage((VideoFormat) inBuffer.getFormat()); } // Convert the Buffer to an AWT Image. Image frameImage = frameConverter.createImage(inBuffer); // Derive a JAI image from the AWT image. PlanarImage jaiImage = JAI.create("AWTImage", frameImage); int index; boolean emboss = false; if (control != null) { index = control.getEffectIndex(); if (control.getEffectName().equals("None")) { outBuffer.setData(inBuffer.getData()); outBuffer.setFormat(inBuffer.getFormat()); outBuffer.setFlags(inBuffer.getFlags()); outBuffer.setLength(inBuffer.getLength()); return BUFFER_PROCESSED_OK; } if (control.getEffectName().equals("Emboss")) { emboss = true; // Special case } } else index = 0; if (kernels[index] == null) { kernels[index] = new KernelJAI(3, 3, matrices[index]); } jaiImage = JAI.create("convolve", jaiImage, kernels[index]); if (emboss) { // add 128 to make it brighter double[] constants = new double[] {128., 128., 128.}; ParameterBlock pb = new ParameterBlock(); pb.addSource(jaiImage); pb.add(constants); jaiImage = JAI.create("addconst", pb, null); } // Now convert the image to a buffer BufferedImage bim = jaiImage.getAsBufferedImage(); Buffer out = ImageToBuffer.createBuffer(bim, 15.F); if (out == null) { if (debug) { System.out.println("ImageToBuffer returned null"); } return BUFFER_PROCESSED_FAILED; } outBuffer.setData(out.getData()); outBuffer.setFormat(out.getFormat()); outBuffer.setFlags(out.getFlags()); outBuffer.setLength(out.getLength()); } catch (Exception e) { System.err.println(e); return BUFFER_PROCESSED_FAILED; } catch (Error e) { System.err.println(e); return BUFFER_PROCESSED_FAILED; } return BUFFER_PROCESSED_OK; }