ImageBuffersForRenderScript.java revision de2f182fdb522689e05280e449a39ec2c1b53e1f
1de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangpackage com.android.rs.test; 2de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang 3de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.graphics.Bitmap; 4de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.support.v8.renderscript.Allocation; 5de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.support.v8.renderscript.RenderScript; 6de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang 7de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang/** 8de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * A class that manages the image buffers that interface between Java and Render 9de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * Script. This class will be specialized for float in f32 package and for byte 10de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * in u8 package. 11de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * 12de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * @author zhl@google.com (Li Zhang) 13de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang */ 14de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangpublic class ImageBuffersForRenderScript { 15de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang /** 16de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * Input and output images and their corresponding Allocation to interface 17de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * with Render Script. Both input and output images are unpadded images. 18de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang */ 19de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang public Bitmap inputImage; 20de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang public Bitmap outputImage; 21de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang public Allocation inAllocation; 22de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang public Allocation outAllocation; 23de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang 24de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang /** 25de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * The following three member variables are used in the subclasses that extend 26de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * this class. Therefore, they are protected. 27de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang */ 28de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang public int imageWidthPadded; 29de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang public int imageHeightPadded; 30de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang public int paddedMargin; 31de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang 32de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang public ImageBuffersForRenderScript(Bitmap inImage, int margin, 33de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang RenderScript renderScript) { 34de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang inputImage = inImage; 35de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang inAllocation = Allocation.createFromBitmap(renderScript, inputImage); 36de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang 37de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang outputImage = Bitmap.createBitmap(inputImage.getWidth(), 38de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang inputImage.getHeight(), Bitmap.Config.ARGB_8888); 39de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang outAllocation = Allocation.createFromBitmap(renderScript, outputImage); 40de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang 41de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang paddedMargin = margin; 42de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang imageWidthPadded = inputImage.getWidth() + 2 * margin; 43de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang imageHeightPadded = inputImage.getHeight() + 2 * margin; 44de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang } 45de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang} 46