15698d4461a260dbf208484383f692b03c6473e74Ruben Brunk/*
25698d4461a260dbf208484383f692b03c6473e74Ruben Brunk * Copyright (C) 2014 The Android Open Source Project
35698d4461a260dbf208484383f692b03c6473e74Ruben Brunk *
45698d4461a260dbf208484383f692b03c6473e74Ruben Brunk * Licensed under the Apache License, Version 2.0 (the "License");
55698d4461a260dbf208484383f692b03c6473e74Ruben Brunk * you may not use this file except in compliance with the License.
65698d4461a260dbf208484383f692b03c6473e74Ruben Brunk * You may obtain a copy of the License at
75698d4461a260dbf208484383f692b03c6473e74Ruben Brunk *
85698d4461a260dbf208484383f692b03c6473e74Ruben Brunk *      http://www.apache.org/licenses/LICENSE-2.0
95698d4461a260dbf208484383f692b03c6473e74Ruben Brunk *
105698d4461a260dbf208484383f692b03c6473e74Ruben Brunk * Unless required by applicable law or agreed to in writing, software
115698d4461a260dbf208484383f692b03c6473e74Ruben Brunk * distributed under the License is distributed on an "AS IS" BASIS,
125698d4461a260dbf208484383f692b03c6473e74Ruben Brunk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135698d4461a260dbf208484383f692b03c6473e74Ruben Brunk * See the License for the specific language governing permissions and
145698d4461a260dbf208484383f692b03c6473e74Ruben Brunk * limitations under the License.
155698d4461a260dbf208484383f692b03c6473e74Ruben Brunk */
165698d4461a260dbf208484383f692b03c6473e74Ruben Brunk
175698d4461a260dbf208484383f692b03c6473e74Ruben Brunk#ifndef ANDROID_CAMERA_CLIENT_CAMERAUTILS_H
185698d4461a260dbf208484383f692b03c6473e74Ruben Brunk#define ANDROID_CAMERA_CLIENT_CAMERAUTILS_H
195698d4461a260dbf208484383f692b03c6473e74Ruben Brunk
206773d4777f4ccbbe6377e4ae1b42c117066ae6baPraveen Chavan#include <binder/IMemory.h>
215698d4461a260dbf208484383f692b03c6473e74Ruben Brunk#include <camera/CameraMetadata.h>
225698d4461a260dbf208484383f692b03c6473e74Ruben Brunk#include <utils/Errors.h>
236773d4777f4ccbbe6377e4ae1b42c117066ae6baPraveen Chavan#include <utils/RefBase.h>
245698d4461a260dbf208484383f692b03c6473e74Ruben Brunk
255698d4461a260dbf208484383f692b03c6473e74Ruben Brunk#include <stdint.h>
265698d4461a260dbf208484383f692b03c6473e74Ruben Brunk
275698d4461a260dbf208484383f692b03c6473e74Ruben Brunknamespace android {
285698d4461a260dbf208484383f692b03c6473e74Ruben Brunk
295698d4461a260dbf208484383f692b03c6473e74Ruben Brunk/**
305698d4461a260dbf208484383f692b03c6473e74Ruben Brunk * CameraUtils contains utility methods that are shared between the native
315698d4461a260dbf208484383f692b03c6473e74Ruben Brunk * camera client, and the camera service.
325698d4461a260dbf208484383f692b03c6473e74Ruben Brunk */
335698d4461a260dbf208484383f692b03c6473e74Ruben Brunkclass CameraUtils {
345698d4461a260dbf208484383f692b03c6473e74Ruben Brunk    public:
355698d4461a260dbf208484383f692b03c6473e74Ruben Brunk        /**
365698d4461a260dbf208484383f692b03c6473e74Ruben Brunk         * Calculate the ANativeWindow transform from the static camera
375698d4461a260dbf208484383f692b03c6473e74Ruben Brunk         * metadata.  This is based on the sensor orientation and lens facing
385698d4461a260dbf208484383f692b03c6473e74Ruben Brunk         * attributes of the camera device.
395698d4461a260dbf208484383f692b03c6473e74Ruben Brunk         *
405698d4461a260dbf208484383f692b03c6473e74Ruben Brunk         * Returns OK on success, or a negative error code.
415698d4461a260dbf208484383f692b03c6473e74Ruben Brunk         */
425698d4461a260dbf208484383f692b03c6473e74Ruben Brunk        static status_t getRotationTransform(const CameraMetadata& staticInfo,
435698d4461a260dbf208484383f692b03c6473e74Ruben Brunk                /*out*/int32_t* transform);
446773d4777f4ccbbe6377e4ae1b42c117066ae6baPraveen Chavan
456773d4777f4ccbbe6377e4ae1b42c117066ae6baPraveen Chavan        /**
466773d4777f4ccbbe6377e4ae1b42c117066ae6baPraveen Chavan         * Check if the image data is VideoNativeHandleMetadata, that contains a native handle.
476773d4777f4ccbbe6377e4ae1b42c117066ae6baPraveen Chavan         */
486773d4777f4ccbbe6377e4ae1b42c117066ae6baPraveen Chavan        static bool isNativeHandleMetadata(const sp<IMemory>& imageData);
496773d4777f4ccbbe6377e4ae1b42c117066ae6baPraveen Chavan
505698d4461a260dbf208484383f692b03c6473e74Ruben Brunk    private:
515698d4461a260dbf208484383f692b03c6473e74Ruben Brunk        CameraUtils();
525698d4461a260dbf208484383f692b03c6473e74Ruben Brunk};
535698d4461a260dbf208484383f692b03c6473e74Ruben Brunk
545698d4461a260dbf208484383f692b03c6473e74Ruben Brunk} /* namespace android */
555698d4461a260dbf208484383f692b03c6473e74Ruben Brunk
565698d4461a260dbf208484383f692b03c6473e74Ruben Brunk#endif /* ANDROID_CAMERA_CLIENT_CAMERAUTILS_H */
575698d4461a260dbf208484383f692b03c6473e74Ruben Brunk
58