use std::ffi::c_void;
#[repr(C)]
pub(super) struct NvEncCreateInputBuffer {
pub(super) version: u32,
pub(super) width: u32,
pub(super) height: u32,
pub(super) memory_heap: u32,
pub(super) buffer_fmt: u32,
pub(super) reserved: u32,
pub(super) input_buffer: *mut c_void,
pub(super) sys_mem_buffer: *mut c_void,
pub(super) reserved1: [u32; 57],
pub(super) reserved2: [*mut c_void; 63],
}
#[repr(C)]
pub(super) struct NvEncCreateBitstreamBuffer {
pub(super) version: u32,
pub(super) size: u32,
pub(super) memory_heap: u32,
pub(super) reserved: u32,
pub(super) bitstream_buffer: *mut c_void,
pub(super) bitstream_buffer_ptr: *mut c_void,
pub(super) reserved1: [u32; 58],
pub(super) reserved2: [*mut c_void; 64],
}
#[repr(C)]
pub(super) struct NvEncLockInputBuffer {
pub(super) version: u32,
pub(super) reserved1: u32,
pub(super) input_buffer: *mut c_void,
pub(super) buffer_data_ptr: *mut c_void,
pub(super) pitch: u32,
pub(super) reserved2: [u32; 251],
pub(super) reserved3: [*mut c_void; 64],
}
#[repr(C)]
pub(super) struct NvEncLockBitstream {
pub(super) version: u32, pub(super) bitfields: u32, pub(super) output_bitstream: *mut c_void, pub(super) slice_offsets: *mut u32, pub(super) frame_idx: u32, pub(super) hw_encode_status: u32, pub(super) num_slices: u32, pub(super) bitstream_size_in_bytes: u32, pub(super) output_time_stamp: u64, pub(super) output_duration: u64, pub(super) bitstream_buffer_ptr: *mut c_void, pub(super) picture_type: u32, pub(super) picture_struct: u32, pub(super) frame_avg_qp: u32, pub(super) frame_satd: u32, pub(super) ltr_frame_idx: u32, pub(super) ltr_frame_bitmap: u32, pub(super) temporal_id: u32, pub(super) intra_mb_count: u32, pub(super) inter_mb_count: u32, pub(super) average_mvx: i32, pub(super) average_mvy: i32, pub(super) alpha_layer_size_in_bytes: u32, pub(super) output_stats_ptr_size: u32, pub(super) reserved: u32, pub(super) output_stats_ptr: *mut c_void, pub(super) frame_idx_display: u32, pub(super) reserved1: [u32; 219], pub(super) reserved2: [*mut c_void; 63], pub(super) reserved_internal: [u32; 8], }
#[repr(C)]
pub(super) struct NvEncPicParams {
pub(super) version: u32,
pub(super) input_width: u32,
pub(super) input_height: u32,
pub(super) input_pitch: u32,
pub(super) encode_pic_flags: u32,
pub(super) frame_idx: u32,
pub(super) input_timestamp: u64,
pub(super) input_duration: u64,
pub(super) input_buffer: *mut c_void,
pub(super) output_bitstream: *mut c_void,
pub(super) completion_event: *mut c_void,
pub(super) buffer_fmt: u32,
pub(super) picture_struct: u32,
pub(super) picture_type: u32,
pub(super) codec_pic_params: [u64; 193],
pub(super) me_hint_counts_per_block: [u32; 8],
pub(super) me_external_hints: *mut c_void,
pub(super) reserved2: [u32; 7],
pub(super) reserved5: [*mut c_void; 2],
pub(super) qp_delta_map: *mut i8,
pub(super) qp_delta_map_size: u32,
pub(super) reserved_bitfields: u32,
pub(super) me_hint_ref_pic_dist: [u16; 2],
pub(super) reserved4: u32,
pub(super) alpha_buffer: *mut c_void,
pub(super) me_external_sb_hints: *mut c_void,
pub(super) me_sb_hints_count: u32,
pub(super) state_buffer_idx: u32,
pub(super) output_recon_buffer: *mut c_void,
pub(super) reserved3: [u32; 284],
pub(super) reserved6: [*mut c_void; 57],
}
#[repr(C)]
pub(super) struct NvEncFunctionList {
pub(super) version: u32,
pub(super) reserved: u32,
pub(super) nv_enc_open_encode_session: *mut c_void,
pub(super) nv_enc_get_encode_guid_count: *mut c_void,
pub(super) nv_enc_get_encode_profile_guid_count: *mut c_void,
pub(super) nv_enc_get_encode_profile_guids: *mut c_void,
pub(super) nv_enc_get_encode_guids: *mut c_void,
pub(super) nv_enc_get_input_format_count: *mut c_void,
pub(super) nv_enc_get_input_formats: *mut c_void,
pub(super) nv_enc_get_encode_caps: *mut c_void,
pub(super) nv_enc_get_encode_preset_count: *mut c_void,
pub(super) nv_enc_get_encode_preset_guids: *mut c_void,
pub(super) nv_enc_get_encode_preset_config: *mut c_void,
pub(super) nv_enc_initialize_encoder: *mut c_void,
pub(super) nv_enc_create_input_buffer: *mut c_void,
pub(super) nv_enc_destroy_input_buffer: *mut c_void,
pub(super) nv_enc_create_bitstream_buffer: *mut c_void,
pub(super) nv_enc_destroy_bitstream_buffer: *mut c_void,
pub(super) nv_enc_encode_picture: *mut c_void,
pub(super) nv_enc_lock_bitstream: *mut c_void,
pub(super) nv_enc_unlock_bitstream: *mut c_void,
pub(super) nv_enc_lock_input_buffer: *mut c_void,
pub(super) nv_enc_unlock_input_buffer: *mut c_void,
pub(super) nv_enc_get_encode_stats: *mut c_void,
pub(super) nv_enc_get_sequence_params: *mut c_void,
pub(super) nv_enc_register_async_event: *mut c_void,
pub(super) nv_enc_unregister_async_event: *mut c_void,
pub(super) nv_enc_map_input_resource: *mut c_void,
pub(super) nv_enc_unmap_input_resource: *mut c_void,
pub(super) nv_enc_destroy_encoder: *mut c_void,
pub(super) nv_enc_invalidate_ref_frames: *mut c_void,
pub(super) nv_enc_open_encode_session_ex: *mut c_void,
pub(super) nv_enc_register_resource: *mut c_void,
pub(super) nv_enc_unregister_resource: *mut c_void,
pub(super) nv_enc_reconfigure_encoder: *mut c_void,
pub(super) reserved1: *mut c_void,
pub(super) nv_enc_create_mv_buffer: *mut c_void,
pub(super) nv_enc_destroy_mv_buffer: *mut c_void,
pub(super) nv_enc_run_motion_estimation_only: *mut c_void,
pub(super) nv_enc_get_last_error_string: *mut c_void,
pub(super) nv_enc_set_io_cuda_streams: *mut c_void,
pub(super) nv_enc_get_encode_preset_config_ex: *mut c_void,
pub(super) nv_enc_get_sequence_param_ex: *mut c_void,
pub(super) nv_enc_restore_encoder_state: *mut c_void,
pub(super) nv_enc_lookahead_picture: *mut c_void,
pub(super) reserved2: [*mut c_void; 275],
}
const _: () = assert!(std::mem::size_of::<NvEncCreateInputBuffer>() == 776);
const _: () = assert!(std::mem::size_of::<NvEncCreateBitstreamBuffer>() == 776);
const _: () = assert!(std::mem::size_of::<NvEncLockBitstream>() == 1544);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, version) == 0);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, output_bitstream) == 8);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, slice_offsets) == 16);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, frame_idx) == 24);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, bitstream_size_in_bytes) == 36);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, output_time_stamp) == 40);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, bitstream_buffer_ptr) == 56);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, picture_type) == 64);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, ltr_frame_bitmap) == 84);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, temporal_id) == 88);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, intra_mb_count) == 92);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, alpha_layer_size_in_bytes) == 108);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, output_stats_ptr_size) == 112);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, reserved) == 116);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, output_stats_ptr) == 120);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, frame_idx_display) == 128);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, reserved1) == 132);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, reserved2) == 1008);
const _: () = assert!(std::mem::offset_of!(NvEncLockBitstream, reserved_internal) == 1512);
const _: () = assert!(std::mem::size_of::<NvEncPicParams>() == 3360);
const _: () = assert!(std::mem::size_of::<NvEncFunctionList>() >= 336);