13710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin/*
23710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin * Copyright (C) 2013 The Android Open Source Project
33710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin *
43710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin * Licensed under the Apache License, Version 2.0 (the "License");
53710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin * you may not use this file except in compliance with the License.
63710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin * You may obtain a copy of the License at
73710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin *
83710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin *      http://www.apache.org/licenses/LICENSE-2.0
93710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin *
103710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin * Unless required by applicable law or agreed to in writing, software
113710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin * distributed under the License is distributed on an "AS IS" BASIS,
123710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin * See the License for the specific language governing permissions and
143710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin * limitations under the License.
153710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin */
162f1a2e423e0fbb64467d6fcfa4e82c6384f31210Eino-Ville Talvalapackage android.hardware.camera2.impl;
173710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin
182f1a2e423e0fbb64467d6fcfa4e82c6384f31210Eino-Ville Talvalaimport android.hardware.camera2.Size;
193710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin
203710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkinimport java.nio.ByteBuffer;
213710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin
223710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkinpublic class MetadataMarshalSize implements MetadataMarshalClass<Size> {
233710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin
243710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    private static final int SIZE = 8;
253710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin
263710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    @Override
273710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    public int marshal(Size value, ByteBuffer buffer, int nativeType, boolean sizeOnly) {
283710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin        if (sizeOnly) {
293710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin            return SIZE;
303710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin        }
313710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin
323710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin        buffer.putInt(value.getWidth());
333710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin        buffer.putInt(value.getHeight());
343710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin
353710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin        return SIZE;
363710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    }
373710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin
383710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    @Override
393710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    public Size unmarshal(ByteBuffer buffer, int nativeType) {
403710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin        int width = buffer.getInt();
413710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin        int height = buffer.getInt();
423710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin
433710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin        return new Size(width, height);
443710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    }
453710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin
463710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    @Override
473710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    public Class<Size> getMarshalingClass() {
483710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin        return Size.class;
493710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    }
503710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin
513710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    @Override
523710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    public boolean isNativeTypeSupported(int nativeType) {
5370c2207c34cf0e6b3b383b1b1500ff5385aa51a6Eino-Ville Talvala        return nativeType == CameraMetadataNative.TYPE_INT32;
543710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    }
553710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin
563710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    @Override
573710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    public int getNativeSize(int nativeType) {
583710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin        return SIZE;
593710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin    }
603710db80d4b9e573d775790e4c9a2ab6e062201eIgor Murashkin}
61