libva 0.1.4

Safe bindings over libva
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

use bitflags::bitflags;

use crate::bindings;

bitflags! {
    /// Gives the driver a hint of intended usage to optimize allocation (e.g. tiling).
    #[derive(Debug, Clone, Copy)]
    pub struct UsageHint: u32 {
        /// Surface used by video decoder.
        const USAGE_HINT_DECODER = bindings::VA_SURFACE_ATTRIB_USAGE_HINT_DECODER;
        /// Surface used by video encoder.
        const USAGE_HINT_ENCODER = bindings::VA_SURFACE_ATTRIB_USAGE_HINT_ENCODER;
        /// Surface read by video post-processing.
        const USAGE_HINT_VPP_READ = bindings::VA_SURFACE_ATTRIB_USAGE_HINT_VPP_READ;
        /// Surface written by video post-processing.
        const USAGE_HINT_VPP_WRITE = bindings::VA_SURFACE_ATTRIB_USAGE_HINT_VPP_WRITE;
        /// Surface used for display.
        const USAGE_HINT_DISPLAY = bindings::VA_SURFACE_ATTRIB_USAGE_HINT_DISPLAY;
        /// Surface used for export to third-party APIs, e.g. via `vaExportSurfaceHandle()`.
        const USAGE_HINT_EXPORT = bindings::VA_SURFACE_ATTRIB_USAGE_HINT_EXPORT;
    }
}