112da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh/* 212da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * Copyright (C) 2014 The Android Open Source Project 312da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * 412da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * Licensed under the Apache License, Version 2.0 (the "License"); 512da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * you may not use this file except in compliance with the License. 612da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * You may obtain a copy of the License at 712da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * 812da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * http://www.apache.org/licenses/LICENSE-2.0 912da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * 1012da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * Unless required by applicable law or agreed to in writing, software 1112da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * distributed under the License is distributed on an "AS IS" BASIS, 1212da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1312da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * See the License for the specific language governing permissions and 1412da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * limitations under the License. 1512da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh */ 1612da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yehpackage android.hardware.camera2.marshal.impl; 1712da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh 1812da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yehimport android.hardware.camera2.marshal.Marshaler; 1912da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yehimport android.hardware.camera2.marshal.MarshalQueryable; 2012da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yehimport android.hardware.camera2.params.HighSpeedVideoConfiguration; 2112da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yehimport android.hardware.camera2.utils.TypeReference; 2212da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh 2312da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yehimport static android.hardware.camera2.impl.CameraMetadataNative.*; 2412da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yehimport static android.hardware.camera2.marshal.MarshalHelpers.*; 2512da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh 2612da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yehimport java.nio.ByteBuffer; 2712da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh 2812da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh/** 2912da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * Marshaler for {@code android.control.availableHighSpeedVideoConfigurations} custom class 3012da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * {@link HighSpeedVideoConfiguration} 3112da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * 3212da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh * <p>Data is stored as {@code (width, height, fpsMin, fpsMax)} tuples (int32).</p> 3312da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh */ 3412da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yehpublic class MarshalQueryableHighSpeedVideoConfiguration 3512da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh implements MarshalQueryable<HighSpeedVideoConfiguration> { 36b1300e39c7974937d563b3ec62f5246248a157b3Zhijun He private static final int SIZE = SIZEOF_INT32 * 5; 3712da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh 3812da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh private class MarshalerHighSpeedVideoConfiguration 3912da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh extends Marshaler<HighSpeedVideoConfiguration> { 4012da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh protected MarshalerHighSpeedVideoConfiguration( 4112da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh TypeReference<HighSpeedVideoConfiguration> typeReference, 4212da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh int nativeType) { 4312da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh super(MarshalQueryableHighSpeedVideoConfiguration.this, typeReference, nativeType); 4412da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh } 4512da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh 4612da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh @Override 4712da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh public void marshal(HighSpeedVideoConfiguration value, ByteBuffer buffer) { 4812da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh buffer.putInt(value.getWidth()); 4912da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh buffer.putInt(value.getHeight()); 5012da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh buffer.putInt(value.getFpsMin()); 5112da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh buffer.putInt(value.getFpsMax()); 52b1300e39c7974937d563b3ec62f5246248a157b3Zhijun He buffer.putInt(value.getBatchSizeMax()); 5312da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh } 5412da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh 5512da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh @Override 5612da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh public HighSpeedVideoConfiguration unmarshal(ByteBuffer buffer) { 5712da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh int width = buffer.getInt(); 5812da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh int height = buffer.getInt(); 5912da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh int fpsMin = buffer.getInt(); 6012da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh int fpsMax = buffer.getInt(); 61b1300e39c7974937d563b3ec62f5246248a157b3Zhijun He int batchSizeMax = buffer.getInt(); 6212da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh 63b1300e39c7974937d563b3ec62f5246248a157b3Zhijun He return new HighSpeedVideoConfiguration(width, height, fpsMin, fpsMax, batchSizeMax); 6412da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh } 6512da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh 6612da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh @Override 6712da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh public int getNativeSize() { 6812da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh return SIZE; 6912da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh } 7012da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh 7112da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh } 7212da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh 7312da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh @Override 7412da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh public Marshaler<HighSpeedVideoConfiguration> createMarshaler( 7512da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh TypeReference<HighSpeedVideoConfiguration> managedType, int nativeType) { 7612da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh return new MarshalerHighSpeedVideoConfiguration(managedType, nativeType); 7712da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh } 7812da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh 7912da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh @Override 8012da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh public boolean isTypeMappingSupported(TypeReference<HighSpeedVideoConfiguration> managedType, 8112da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh int nativeType) { 8212da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh return nativeType == TYPE_INT32 && 8312da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh managedType.getType().equals(HighSpeedVideoConfiguration.class); 8412da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh } 8512da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh} 86