14cead8034aab0e20e402baee87cbe9129db00192Stephen Hinespackage com.android.rs.refocus;
2de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
3de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.content.Context;
4de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.graphics.Bitmap;
5de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.graphics.BitmapFactory;
6de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.net.Uri;
7de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
8de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
9de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.os.AsyncTask;
10de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.support.v8.renderscript.Allocation;
11de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.support.v8.renderscript.RenderScript;
12de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
13de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport java.io.IOException;
14de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport java.io.InputStream;
15de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
16de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang/**
17de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * Created by hoford on 5/15/15.
18de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang */
19de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangpublic class DepthImage {
20de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    private final String mFormat;
21de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    private final double mFar;
22de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    private final double mNear;
23de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    private final Bitmap mDepthBitmap;
24de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    private final double mBlurAtInfinity;
25de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    private final double mFocalDistance;
26de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    private final double mDepthOfFiled;
27de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    private final double mFocalPointX;
28de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    private final double mFocalPointY;
29de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    private final DepthTransform mDepthTransform;
30de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    public DepthImage(Context context, Uri data) throws IOException {
31de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        InputStream input = context.getContentResolver().openInputStream(data);
32de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        XmpDepthDecode decode = new XmpDepthDecode(input);
33de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        mFormat = decode.getFormat();
34de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        mFar = decode.getFar();
35de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        mNear = decode.getNear();
36de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        mDepthBitmap = decode.getDepthBitmap();
37de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        mBlurAtInfinity = decode.getBlurAtInfinity();
38de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        mFocalDistance = decode.getFocalDistance();
39de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        mDepthOfFiled = decode.getDepthOfField();
40de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        mFocalPointX = decode.getFocalPointX();
41de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        mFocalPointY = decode.getFocalPointY();
42de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        input = context.getContentResolver().openInputStream(data);
43de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        mDepthTransform = decode.getDepthTransform();
44de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    }
45de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
46de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    public Bitmap getDepthBitmap() {
47de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        return mDepthBitmap;
48de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    }
49de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
50de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    public DepthTransform getDepthTransform() { return mDepthTransform; }
51de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
52de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    public String getFormat() {
53de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        return mFormat;
54de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    }
55de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
56de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    public double getFar() {
57de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        return mFar;
58de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    }
59de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
60de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    public double getNear() {
61de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        return mNear;
62de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    }
63de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
64de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    public double getBlurAtInfinity() {
65de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        return mBlurAtInfinity;
66de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    }
67de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
68de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    public double getFocalDistance() {
69de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        return mFocalDistance;
70de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    }
71de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
72de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    public double getDepthOfField() {return mDepthOfFiled; }
73de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
74de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    public double getFocalPointX() {
75de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        return mFocalPointX;
76de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    }
77de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
78de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    public double getFocalPointY() {
79de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        return mFocalPointY;
80de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    }
81de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang}
82de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
83