blob: bd7d0262c702711bd39777abc15032610f6ae763 [file] [log] [blame] [edit]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/camera/drivers/controller/sherlock/common_util.h"
#include <fidl/fuchsia.sysmem/cpp/hlcpp_conversion.h>
#include <lib/sysmem-version/sysmem-version.h>
#include <sstream>
namespace camera {
fuchsia::camera2::StreamProperties GetStreamProperties(fuchsia::camera2::CameraStreamType type) {
fuchsia::camera2::StreamProperties ret{};
ret.set_stream_type(type);
return ret;
}
fuchsia::sysmem2::BufferCollectionConstraints InvalidConstraints() {
StreamConstraints stream_constraints;
stream_constraints.set_bytes_per_row_divisor(0);
stream_constraints.set_contiguous(false);
stream_constraints.AddImageFormat(0, 0, fuchsia::images2::PixelFormat::NV12);
stream_constraints.set_buffer_count_for_camping(0);
return stream_constraints.MakeBufferCollectionConstraints();
}
fuchsia::sysmem::BufferCollectionConstraints CopyConstraintsWithNewCampingBufferCount(
const fuchsia::sysmem::BufferCollectionConstraints& original,
uint32_t new_camping_buffer_count) {
auto constraints = original;
constraints.min_buffer_count_for_camping = new_camping_buffer_count;
return constraints;
}
fuchsia::sysmem2::BufferCollectionConstraints CopyConstraintsWithOverrides(
const fuchsia::sysmem::BufferCollectionConstraints& v1_original,
ConstraintsOverrides overrides) {
auto v1_original_natural = fidl::HLCPPToNatural(fidl::Clone(v1_original));
auto v2_original_constraints_result =
sysmem::V2CopyFromV1BufferCollectionConstraints(&v1_original_natural);
ZX_ASSERT(v2_original_constraints_result.is_ok());
auto original = fidl::NaturalToHLCPP(std::move(v2_original_constraints_result.value()));
auto modified = fidl::Clone(original);
if (overrides.min_buffer_count_for_camping.has_value()) {
modified.set_min_buffer_count_for_camping(*overrides.min_buffer_count_for_camping);
}
if (overrides.min_buffer_count.has_value()) {
modified.set_min_buffer_count(*overrides.min_buffer_count);
}
return modified;
}
} // namespace camera