1*38e8c45fSAndroid Build Coastguard Worker /* 2*38e8c45fSAndroid Build Coastguard Worker * Copyright (C) 2024 The Android Open Source Project 3*38e8c45fSAndroid Build Coastguard Worker * 4*38e8c45fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*38e8c45fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*38e8c45fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*38e8c45fSAndroid Build Coastguard Worker * 8*38e8c45fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*38e8c45fSAndroid Build Coastguard Worker * 10*38e8c45fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*38e8c45fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*38e8c45fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*38e8c45fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*38e8c45fSAndroid Build Coastguard Worker * limitations under the License. 15*38e8c45fSAndroid Build Coastguard Worker */ 16*38e8c45fSAndroid Build Coastguard Worker #pragma once 17*38e8c45fSAndroid Build Coastguard Worker 18*38e8c45fSAndroid Build Coastguard Worker #include <android-base/unique_fd.h> 19*38e8c45fSAndroid Build Coastguard Worker #include <binder/Parcel.h> 20*38e8c45fSAndroid Build Coastguard Worker #include <binder/Parcelable.h> 21*38e8c45fSAndroid Build Coastguard Worker #include <vector> 22*38e8c45fSAndroid Build Coastguard Worker 23*38e8c45fSAndroid Build Coastguard Worker namespace android::gui { 24*38e8c45fSAndroid Build Coastguard Worker 25*38e8c45fSAndroid Build Coastguard Worker struct DisplayLuts : public Parcelable { 26*38e8c45fSAndroid Build Coastguard Worker public: 27*38e8c45fSAndroid Build Coastguard Worker struct Entry : public Parcelable { EntryDisplayLuts::Entry28*38e8c45fSAndroid Build Coastguard Worker Entry() {}; EntryDisplayLuts::Entry29*38e8c45fSAndroid Build Coastguard Worker Entry(int32_t lutDimension, int32_t lutSize, int32_t lutSamplingKey) 30*38e8c45fSAndroid Build Coastguard Worker : dimension(lutDimension), size(lutSize), samplingKey(lutSamplingKey) {} 31*38e8c45fSAndroid Build Coastguard Worker int32_t dimension; 32*38e8c45fSAndroid Build Coastguard Worker int32_t size; 33*38e8c45fSAndroid Build Coastguard Worker int32_t samplingKey; 34*38e8c45fSAndroid Build Coastguard Worker 35*38e8c45fSAndroid Build Coastguard Worker status_t writeToParcel(android::Parcel* parcel) const override; 36*38e8c45fSAndroid Build Coastguard Worker status_t readFromParcel(const android::Parcel* parcel) override; 37*38e8c45fSAndroid Build Coastguard Worker }; 38*38e8c45fSAndroid Build Coastguard Worker DisplayLutsDisplayLuts39*38e8c45fSAndroid Build Coastguard Worker DisplayLuts() {} 40*38e8c45fSAndroid Build Coastguard Worker DisplayLutsDisplayLuts41*38e8c45fSAndroid Build Coastguard Worker DisplayLuts(base::unique_fd lutfd, std::vector<int32_t> lutoffsets, 42*38e8c45fSAndroid Build Coastguard Worker std::vector<int32_t> lutdimensions, std::vector<int32_t> lutsizes, 43*38e8c45fSAndroid Build Coastguard Worker std::vector<int32_t> lutsamplingKeys) { 44*38e8c45fSAndroid Build Coastguard Worker fd = std::move(lutfd); 45*38e8c45fSAndroid Build Coastguard Worker offsets = lutoffsets; 46*38e8c45fSAndroid Build Coastguard Worker lutProperties.reserve(offsets.size()); 47*38e8c45fSAndroid Build Coastguard Worker for (size_t i = 0; i < lutoffsets.size(); i++) { 48*38e8c45fSAndroid Build Coastguard Worker Entry entry{lutdimensions[i], lutsizes[i], lutsamplingKeys[i]}; 49*38e8c45fSAndroid Build Coastguard Worker lutProperties.emplace_back(entry); 50*38e8c45fSAndroid Build Coastguard Worker } 51*38e8c45fSAndroid Build Coastguard Worker } 52*38e8c45fSAndroid Build Coastguard Worker 53*38e8c45fSAndroid Build Coastguard Worker status_t writeToParcel(android::Parcel* parcel) const override; 54*38e8c45fSAndroid Build Coastguard Worker status_t readFromParcel(const android::Parcel* parcel) override; 55*38e8c45fSAndroid Build Coastguard Worker getLutFileDescriptorDisplayLuts56*38e8c45fSAndroid Build Coastguard Worker const base::unique_fd& getLutFileDescriptor() const { return fd; } 57*38e8c45fSAndroid Build Coastguard Worker 58*38e8c45fSAndroid Build Coastguard Worker std::vector<Entry> lutProperties; 59*38e8c45fSAndroid Build Coastguard Worker std::vector<int32_t> offsets; 60*38e8c45fSAndroid Build Coastguard Worker 61*38e8c45fSAndroid Build Coastguard Worker private: 62*38e8c45fSAndroid Build Coastguard Worker base::unique_fd fd; 63*38e8c45fSAndroid Build Coastguard Worker }; // struct DisplayLuts 64*38e8c45fSAndroid Build Coastguard Worker 65*38e8c45fSAndroid Build Coastguard Worker } // namespace android::gui