use std::env;
use std::error::Error;
use std::path::PathBuf;
fn main() -> Result<(), Box<dyn Error>> {
let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let vendor_dir = manifest_dir.join("vendor/api/vpl");
let header = vendor_dir.join("mfxstructures.h");
println!("cargo:rerun-if-changed={}", vendor_dir.display());
let bindings = bindgen::Builder::default()
.header(header.to_string_lossy().into_owned())
.clang_arg(format!("-I{}", vendor_dir.display()))
.ignore_functions()
.allowlist_type(
"^mfx(FrameInfo|FrameData|FrameSurface1|InfoMFX|InfoVPP|VideoParam|Version\
|StructVersion|ExtBuffer|InitParam|Bitstream|EncodeCtrl|IMPL|Status|HandleType|FrameId)$",
)
.derive_default(true)
.derive_debug(true)
.layout_tests(false)
.generate()?;
let out_dir = PathBuf::from(env::var("OUT_DIR")?);
bindings.write_to_file(out_dir.join("mfx_types.rs"))?;
Ok(())
}