/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.filterfw.format; import android.filterfw.core.FrameFormat; import android.filterfw.core.MutableFrameFormat; import android.graphics.Bitmap; /** * @hide */ public class ImageFormat { public static final String COLORSPACE_KEY = "colorspace"; public static final int COLORSPACE_GRAY = 1; public static final int COLORSPACE_RGB = 2; public static final int COLORSPACE_RGBA = 3; public static final int COLORSPACE_YUV = 4; public static MutableFrameFormat create(int width, int height, int colorspace, int bytesPerSample, int target) { MutableFrameFormat result = new MutableFrameFormat(FrameFormat.TYPE_BYTE, target); result.setDimensions(width, height); result.setBytesPerSample(bytesPerSample); result.setMetaValue(COLORSPACE_KEY, colorspace); if (target == FrameFormat.TARGET_SIMPLE) { result.setObjectClass(Bitmap.class); } return result; } public static MutableFrameFormat create(int width, int height, int colorspace, int target) { return create(width, height, colorspace, bytesPerSampleForColorspace(colorspace), target); } public static MutableFrameFormat create(int colorspace, int target) { return create(FrameFormat.SIZE_UNSPECIFIED, FrameFormat.SIZE_UNSPECIFIED, colorspace, bytesPerSampleForColorspace(colorspace), target); } public static MutableFrameFormat create(int colorspace) { return create(FrameFormat.SIZE_UNSPECIFIED, FrameFormat.SIZE_UNSPECIFIED, colorspace, bytesPerSampleForColorspace(colorspace), FrameFormat.TARGET_UNSPECIFIED); } public static int bytesPerSampleForColorspace(int colorspace) { switch (colorspace) { case COLORSPACE_GRAY: return 1; case COLORSPACE_RGB: return 3; case COLORSPACE_RGBA: return 4; case COLORSPACE_YUV: return 3; default: throw new RuntimeException("Unknown colorspace id " + colorspace + "!"); } } }