150fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala/*
250fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala * Copyright (C) 2017 The Android Open Source Project
350fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala *
450fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License");
550fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala * you may not use this file except in compliance with the License.
650fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala * You may obtain a copy of the License at
750fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala *
850fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala *      http://www.apache.org/licenses/LICENSE-2.0
950fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala *
1050fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software
1150fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS,
1250fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1350fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala * See the License for the specific language governing permissions and
1450fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala * limitations under the License.
1550fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala */
1650fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala
1750fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala#define LOG_TAG "android.hardware.camera.device@3.3-convert-impl"
1850fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala#include <log/log.h>
1950fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala
2050fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala#include "include/convert.h"
2150fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala
2250fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvalanamespace android {
2350fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvalanamespace hardware {
2450fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvalanamespace camera {
2550fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvalanamespace device {
2650fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvalanamespace V3_3 {
2750fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvalanamespace implementation {
2850fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala
2950fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvalausing ::android::hardware::graphics::common::V1_0::Dataspace;
3050fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvalausing ::android::hardware::graphics::common::V1_0::PixelFormat;
3150fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvalausing ::android::hardware::camera::device::V3_2::BufferUsageFlags;
3250fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala
3350fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvalavoid convertToHidl(const Camera3Stream* src, HalStream* dst) {
3450fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala    dst->overrideDataSpace = src->data_space;
3550fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala    dst->v3_2.id = src->mId;
3650fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala    dst->v3_2.overrideFormat = (PixelFormat) src->format;
3750fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala    dst->v3_2.maxBuffers = src->max_buffers;
3850fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala    if (src->stream_type == CAMERA3_STREAM_OUTPUT) {
3950fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala        dst->v3_2.consumerUsage = (BufferUsageFlags)0;
4050fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala        dst->v3_2.producerUsage = (BufferUsageFlags)src->usage;
4150fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala    } else if (src->stream_type == CAMERA3_STREAM_INPUT) {
4250fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala        dst->v3_2.producerUsage = (BufferUsageFlags)0;
4350fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala        dst->v3_2.consumerUsage = (BufferUsageFlags)src->usage;
4450fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala    } else {
4550fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala        //Should not reach here per current HIDL spec, but we might end up adding
4650fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala        // bi-directional stream to HIDL.
4750fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala        ALOGW("%s: Stream type %d is not currently supported!",
4850fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala                __FUNCTION__, src->stream_type);
4950fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala    }
5050fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala}
5150fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala
5250fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvalavoid convertToHidl(const camera3_stream_configuration_t& src, HalStreamConfiguration* dst) {
5350fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala    dst->streams.resize(src.num_streams);
5450fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala    for (uint32_t i = 0; i < src.num_streams; i++) {
5550fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala        convertToHidl(static_cast<Camera3Stream*>(src.streams[i]), &dst->streams[i]);
5650fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala    }
5750fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala    return;
5850fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala}
5950fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala
6050fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala}  // namespace implementation
6150fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala}  // namespace V3_3
6250fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala}  // namespace device
6350fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala}  // namespace camera
6450fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala}  // namespace hardware
6550fe43099495dcb388fdd7eb1ff78609aaa0cf88Eino-Ville Talvala}  // namespace android
66