dynlink_nvidia_encode/
error.rs1use crate::NvInt;
5use thiserror::Error;
6
7#[derive(Error, Debug)]
8pub enum NvencError {
9 #[error("dynamic library `{dynlib}` could not be loaded: `{source}`")]
10 DynLibLoadError {
11 dynlib: String,
12 source: libloading::Error,
13 },
14 #[error("NvEnc returned code `{status}`: {message} at {fname}:{line_num}")]
15 ErrCode {
16 status: NvInt,
17 fname: &'static str,
18 line_num: u32,
19 message: &'static str,
20 },
21 #[error("Name `{name}` could not be opened")]
22 NameFFIError { name: String },
23 #[error("Name `{name}` could not be opened: `{source}`")]
24 NameFFIError2 {
25 name: String,
26 source: libloading::Error,
27 },
28 #[error("Unable to compute image size")]
29 UnableToComputeSize {},
30 #[error("Encode configuration required")]
31 EncodeConfigRequired {},
32}
33
34pub fn code_to_string(code: crate::ffi::_NVENCSTATUS::Type) -> &'static str {
35 use crate::ffi::_NVENCSTATUS::*;
36 match code {
37 NV_ENC_SUCCESS => "NV_ENC_SUCCESS",
38 NV_ENC_ERR_NO_ENCODE_DEVICE => "NV_ENC_ERR_NO_ENCODE_DEVICE",
39 NV_ENC_ERR_UNSUPPORTED_DEVICE => "NV_ENC_ERR_UNSUPPORTED_DEVICE",
40 NV_ENC_ERR_INVALID_ENCODERDEVICE => "NV_ENC_ERR_INVALID_ENCODERDEVICE",
41 NV_ENC_ERR_INVALID_DEVICE => "NV_ENC_ERR_INVALID_DEVICE",
42 NV_ENC_ERR_DEVICE_NOT_EXIST => "NV_ENC_ERR_DEVICE_NOT_EXIST",
43 NV_ENC_ERR_INVALID_PTR => "NV_ENC_ERR_INVALID_PTR",
44 NV_ENC_ERR_INVALID_EVENT => "NV_ENC_ERR_INVALID_EVENT",
45 NV_ENC_ERR_INVALID_PARAM => "NV_ENC_ERR_INVALID_PARAM",
46 NV_ENC_ERR_INVALID_CALL => "NV_ENC_ERR_INVALID_CALL",
47 NV_ENC_ERR_OUT_OF_MEMORY => "NV_ENC_ERR_OUT_OF_MEMORY",
48 NV_ENC_ERR_ENCODER_NOT_INITIALIZED => "NV_ENC_ERR_ENCODER_NOT_INITIALIZED",
49 NV_ENC_ERR_UNSUPPORTED_PARAM => "NV_ENC_ERR_UNSUPPORTED_PARAM",
50 NV_ENC_ERR_LOCK_BUSY => "NV_ENC_ERR_LOCK_BUSY",
51 NV_ENC_ERR_NOT_ENOUGH_BUFFER => "NV_ENC_ERR_NOT_ENOUGH_BUFFER",
52 NV_ENC_ERR_INVALID_VERSION => "NV_ENC_ERR_INVALID_VERSION",
53 NV_ENC_ERR_MAP_FAILED => "NV_ENC_ERR_MAP_FAILED",
54 NV_ENC_ERR_NEED_MORE_INPUT => "NV_ENC_ERR_NEED_MORE_INPUT",
55 NV_ENC_ERR_ENCODER_BUSY => "NV_ENC_ERR_ENCODER_BUSY",
56 NV_ENC_ERR_EVENT_NOT_REGISTERD => "NV_ENC_ERR_EVENT_NOT_REGISTERD",
57 NV_ENC_ERR_GENERIC => "NV_ENC_ERR_GENERIC",
58 NV_ENC_ERR_INCOMPATIBLE_CLIENT_KEY => "NV_ENC_ERR_INCOMPATIBLE_CLIENT_KEY",
59 NV_ENC_ERR_UNIMPLEMENTED => "NV_ENC_ERR_UNIMPLEMENTED",
60 NV_ENC_ERR_RESOURCE_REGISTER_FAILED => "NV_ENC_ERR_RESOURCE_REGISTER_FAILED",
61 NV_ENC_ERR_RESOURCE_NOT_REGISTERED => "NV_ENC_ERR_RESOURCE_NOT_REGISTERED",
62 NV_ENC_ERR_RESOURCE_NOT_MAPPED => "NV_ENC_ERR_RESOURCE_NOT_MAPPED",
63 _ => "unknown error",
64 }
65}