InputConfiguration.java revision 8062d31d27943da4d652878b4c36aeabb8bb8b08
1/*
2 * Copyright 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.hardware.camera2.params;
18
19import android.hardware.camera2.utils.HashCodeHelpers;
20
21/**
22 * Immutable class to store an input configuration that is used to create a reprocessable capture
23 * session.
24 *
25 * @see android.hardware.camera2.CameraDevice#createReprocessableCaptureSession
26 * @see android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
27 */
28public final class InputConfiguration {
29
30    private final int mWidth;
31    private final int mHeight;
32    private final int mFormat;
33
34    /**
35     * Create an input configration with the width, height, and user-defined format.
36     *
37     * <p>Images of an user-defined format are accessible by applications. Use
38     * {@link android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP}
39     * to query supported input formats</p>
40     *
41     * @param width Width of the input buffers.
42     * @param height Height of the input buffers.
43     * @param format Format of the input buffers. One of ImageFormat or PixelFormat constants.
44     *
45     * @see android.graphics.ImageFormat
46     * @see android.graphics.PixelFormat
47     * @see android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
48     */
49    public InputConfiguration(int width, int height, int format) {
50        mWidth = width;
51        mHeight = height;
52        mFormat = format;
53    }
54
55    /**
56     * Get the width of this input configration.
57     *
58     * @return width of this input configuration.
59     */
60    public int getWidth() {
61        return mWidth;
62    }
63
64    /**
65     * Get the height of this input configration.
66     *
67     * @return height of this input configuration.
68     */
69    public int getHeight() {
70        return mHeight;
71    }
72
73    /**
74     * Get the format of this input configration.
75     *
76     * @return format of this input configuration.
77     */
78    public int getFormat() {
79        return mFormat;
80    }
81
82    /**
83     * Check if this InputConfiguration is equal to another InputConfiguration.
84     *
85     * <p>Two input configurations are equal if and only if they have the same widths, heights, and
86     * formats.</p>
87     *
88     * @param obj the object to compare this instance with.
89     *
90     * @return {@code true} if the objects were equal, {@code false} otherwise.
91     */
92    @Override
93    public boolean equals(Object obj) {
94        if (!(obj instanceof InputConfiguration)) {
95            return false;
96        }
97
98        InputConfiguration otherInputConfig = (InputConfiguration) obj;
99
100        if (otherInputConfig.getWidth() == mWidth &&
101                otherInputConfig.getHeight() == mHeight &&
102                otherInputConfig.getFormat() == mFormat) {
103            return true;
104        }
105        return false;
106    }
107
108    /**
109     * {@inheritDoc}
110     */
111    @Override
112    public int hashCode() {
113        return HashCodeHelpers.hashCode(mWidth, mHeight, mFormat);
114    }
115}
116