19bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter/*
29bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter * Copyright 2018 The Android Open Source Project
39bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter *
49bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter * Licensed under the Apache License, Version 2.0 (the "License");
59bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter * you may not use this file except in compliance with the License.
69bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter * You may obtain a copy of the License at
79bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter *
89bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter *      http://www.apache.org/licenses/LICENSE-2.0
99bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter *
109bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter * Unless required by applicable law or agreed to in writing, software
119bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter * distributed under the License is distributed on an "AS IS" BASIS,
129bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter * See the License for the specific language governing permissions and
149bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter * limitations under the License.
159bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter */
169bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter
179bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter#pragma once
189bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter
199bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter#include <stdint.h>
209bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter
219bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter#include <system/graphics.h>
229bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter#include <utils/Flattenable.h>
239bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter
249bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchternamespace android {
259bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter
269bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchterstruct HdrMetadata : public LightFlattenable<HdrMetadata> {
279bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter    enum Type : uint32_t {
289bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter        SMPTE2086 = 1 << 0,
299bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter        CTA861_3  = 1 << 1,
309bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter    };
319bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter    uint32_t validTypes{0};
329bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter
339bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter    android_smpte2086_metadata smpte2086{};
349bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter    android_cta861_3_metadata cta8613{};
359bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter
369bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter    // LightFlattenable
379bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter    bool isFixedSize() const { return false; }
389bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter    size_t getFlattenedSize() const;
399bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter    status_t flatten(void* buffer, size_t size) const;
409bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter    status_t unflatten(void const* buffer, size_t size);
4139a0788cf6d728bd356700bb5b0a1d31cce10356Courtney Goeltzenleuchter
4239a0788cf6d728bd356700bb5b0a1d31cce10356Courtney Goeltzenleuchter    bool operator==(const HdrMetadata& rhs) const;
439bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter};
449bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter
459bad0d7e726e6b264c528a3dd13d0c58fd92c0e1Courtney Goeltzenleuchter} // namespace android
46