mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-03-30 07:06:38 +08:00
feat: 支持树莓派 v4l2m2m 编码器探测
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
include!(concat!(env!("OUT_DIR"), "/ffmpeg_ffi.rs"));
|
||||
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use std::env;
|
||||
|
||||
#[derive(Debug, Eq, PartialEq, Clone, Copy, Serialize, Deserialize)]
|
||||
pub enum AVHWDeviceType {
|
||||
@@ -53,7 +54,36 @@ pub extern "C" fn hwcodec_av_log_callback(level: i32, message: *const std::os::r
|
||||
pub(crate) fn init_av_log() {
|
||||
static INIT: std::sync::Once = std::sync::Once::new();
|
||||
INIT.call_once(|| unsafe {
|
||||
av_log_set_level(AV_LOG_ERROR as i32);
|
||||
av_log_set_level(parse_ffmpeg_log_level());
|
||||
hwcodec_set_av_log_callback();
|
||||
});
|
||||
}
|
||||
|
||||
fn parse_ffmpeg_log_level() -> i32 {
|
||||
let raw = match env::var("ONE_KVM_FFMPEG_LOG") {
|
||||
Ok(value) => value,
|
||||
Err(_) => return AV_LOG_ERROR as i32,
|
||||
};
|
||||
|
||||
let value = raw.trim().to_ascii_lowercase();
|
||||
if value.is_empty() {
|
||||
return AV_LOG_ERROR as i32;
|
||||
}
|
||||
|
||||
if let Ok(level) = value.parse::<i32>() {
|
||||
return level;
|
||||
}
|
||||
|
||||
match value.as_str() {
|
||||
"quiet" => AV_LOG_QUIET as i32,
|
||||
"panic" => AV_LOG_PANIC as i32,
|
||||
"fatal" => AV_LOG_FATAL as i32,
|
||||
"error" => AV_LOG_ERROR as i32,
|
||||
"warn" | "warning" => AV_LOG_WARNING as i32,
|
||||
"info" => AV_LOG_INFO as i32,
|
||||
"verbose" => AV_LOG_VERBOSE as i32,
|
||||
"debug" => AV_LOG_DEBUG as i32,
|
||||
"trace" => AV_LOG_TRACE as i32,
|
||||
_ => AV_LOG_ERROR as i32,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user