diff --git a/libs/scrap/build.rs b/libs/scrap/build.rs index 72fe0707a..709e64aa9 100644 --- a/libs/scrap/build.rs +++ b/libs/scrap/build.rs @@ -128,9 +128,9 @@ fn find_package(name: &str) -> Vec { let no_pkg_config_var_name = format!("NO_PKG_CONFIG_{name}"); println!("cargo:rerun-if-env-changed={no_pkg_config_var_name}"); if cfg!(all(target_os = "linux", feature = "linux-pkg-config")) - && std::env::var(no_pkg_config_var_name).as_deref() != Ok("1") { - - link_pkg_config(name) + && std::env::var(no_pkg_config_var_name).as_deref() != Ok("1") + { + link_pkg_config(name) } else if let Ok(vcpkg_root) = std::env::var("VCPKG_ROOT") { vec![link_vcpkg(vcpkg_root.into(), name)] } else { diff --git a/libs/scrap/src/common/aom.rs b/libs/scrap/src/common/aom.rs index 40026b240..b9748efda 100644 --- a/libs/scrap/src/common/aom.rs +++ b/libs/scrap/src/common/aom.rs @@ -11,12 +11,14 @@ use crate::{common::GoogleImage, generate_call_macro, generate_call_ptr_macro, E use hbb_common::{ anyhow::{anyhow, Context}, bytes::Bytes, + log, message_proto::{EncodedVideoFrame, EncodedVideoFrames, Message, VideoFrame}, ResultType, }; use std::{ptr, slice}; -generate_call_macro!(call_aom); +generate_call_macro!(call_aom, false); +generate_call_macro!(call_aom_allow_err, true); generate_call_ptr_macro!(call_aom_ptr); impl Default for aom_codec_enc_cfg_t { @@ -145,7 +147,7 @@ mod webrtc { use aome_enc_control_id::*; macro_rules! call_ctl { ($ctx:expr, $av1e:expr, $arg:expr) => {{ - call_aom!(aom_codec_control($ctx, $av1e as i32, $arg)); + call_aom_allow_err!(aom_codec_control($ctx, $av1e as i32, $arg)); }}; } @@ -168,6 +170,7 @@ mod webrtc { } else { AV1E_SET_TILE_COLUMNS }; + // Failed on android call_ctl!(ctx, tile_set, (cfg.g_threads as f64 * 1.0f64).log2().ceil()); call_ctl!(ctx, AV1E_SET_ROW_MT, 1); call_ctl!(ctx, AV1E_SET_ENABLE_OBMC, 0); diff --git a/libs/scrap/src/common/mod.rs b/libs/scrap/src/common/mod.rs index 15e0f5147..75e350b49 100644 --- a/libs/scrap/src/common/mod.rs +++ b/libs/scrap/src/common/mod.rs @@ -205,21 +205,25 @@ pub type Result = std::result::Result; #[macro_export] macro_rules! generate_call_macro { - ($func_name:ident) => { + ($func_name:ident, $allow_err:expr) => { macro_rules! $func_name { ($x:expr) => {{ let result = unsafe { $x }; let result_int = unsafe { std::mem::transmute::<_, i32>(result) }; if result_int != 0 { - return Err(crate::Error::FailedCall(format!( + let message = format!( "errcode={} {}:{}:{}:{}", result_int, module_path!(), file!(), line!(), column!() - )) - .into()); + ); + if $allow_err { + log::warn!("Failed to call {}, {}", stringify!($func_name), message); + } else { + return Err(crate::Error::FailedCall(message).into()); + } } result }}; diff --git a/libs/scrap/src/common/vpxcodec.rs b/libs/scrap/src/common/vpxcodec.rs index 817971c60..801527811 100644 --- a/libs/scrap/src/common/vpxcodec.rs +++ b/libs/scrap/src/common/vpxcodec.rs @@ -3,6 +3,7 @@ // https://github.com/rust-av/vpx-rs/blob/master/src/decoder.rs use hbb_common::anyhow::{anyhow, Context}; +use hbb_common::log; use hbb_common::message_proto::{EncodedVideoFrame, EncodedVideoFrames, Message, VideoFrame}; use hbb_common::ResultType; @@ -15,7 +16,7 @@ use hbb_common::bytes::Bytes; use std::os::raw::{c_int, c_uint}; use std::{ptr, slice}; -generate_call_macro!(call_vpx); +generate_call_macro!(call_vpx, false); generate_call_ptr_macro!(call_vpx_ptr); #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]