From 5f207112974349b289bb84162309faa6177fb98e Mon Sep 17 00:00:00 2001 From: Donough Liu Date: Wed, 20 Mar 2024 04:13:33 +0800 Subject: [PATCH] Better error message (#167) --- src/avutil/error.rs | 1 + src/error.rs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/avutil/error.rs b/src/avutil/error.rs index 5aa4d1f..68ac6b7 100644 --- a/src/avutil/error.rs +++ b/src/avutil/error.rs @@ -7,6 +7,7 @@ use std::ffi::{c_int, CStr}; /// Return `Some(description)` on success, a negative value if a description for /// errnum cannot be found. pub fn err2str(errnum: c_int) -> Option { + // mimicks `av_err2str()` const ERRBUF_SIZE: usize = AV_ERROR_MAX_STRING_SIZE as usize; let mut errbuf = [0u8; ERRBUF_SIZE]; if unsafe { ffi::av_strerror(errnum, errbuf.as_mut_ptr() as _, ERRBUF_SIZE) } == 0 { diff --git a/src/error.rs b/src/error.rs index ed8ea8e..d74c8ff 100644 --- a/src/error.rs +++ b/src/error.rs @@ -6,13 +6,13 @@ use std::{ }; use thiserror::Error; -use crate::{ffi, shared::AVERROR_EAGAIN}; +use crate::{avutil::err2str, ffi, shared::AVERROR_EAGAIN}; /// All the error variants of rsmpeg. #[non_exhaustive] #[derive(Error, Debug, Eq, PartialEq)] pub enum RsmpegError { - #[error("AVERROR({0})")] + #[error("AVERROR({0}): `{}`", err2str(*.0).unwrap_or_else(|| "Unknown error code.".to_string()))] AVError(c_int), #[error("{0}")] CustomError(String),