From 991694aca5a164321bf1b455a6a27b115a239ec7 Mon Sep 17 00:00:00 2001 From: 21pages Date: Mon, 6 May 2024 10:59:25 +0800 Subject: [PATCH] update hwcodec, qsv support changing bitrate (#7911) Signed-off-by: 21pages --- Cargo.lock | 4 ++-- libs/scrap/src/common/hwcodec.rs | 2 +- libs/scrap/src/common/vram.rs | 6 ++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8e37ee8e6..8b46c0fc7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3038,8 +3038,8 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hwcodec" -version = "0.4.8" -source = "git+https://github.com/21pages/hwcodec#7cb16c64f4657385dd2adefcac7cff89088f4e6d" +version = "0.4.9" +source = "git+https://github.com/21pages/hwcodec#7a52282267cb6aadbcd74c132bd4ecd43ab6f505" dependencies = [ "bindgen 0.59.2", "cc", diff --git a/libs/scrap/src/common/hwcodec.rs b/libs/scrap/src/common/hwcodec.rs index fc722fb18..a4a11c6ac 100644 --- a/libs/scrap/src/common/hwcodec.rs +++ b/libs/scrap/src/common/hwcodec.rs @@ -183,7 +183,7 @@ impl EncoderApi for HwRamEncoder { } fn support_abr(&self) -> bool { - !self.name.contains("qsv") + ["qsv", "vaapi"].iter().all(|&x| !self.name.contains(x)) } } diff --git a/libs/scrap/src/common/vram.rs b/libs/scrap/src/common/vram.rs index 2fa96f422..05295c824 100644 --- a/libs/scrap/src/common/vram.rs +++ b/libs/scrap/src/common/vram.rs @@ -16,7 +16,7 @@ use hbb_common::{ ResultType, }; use hwcodec::{ - common::{DataFormat, Driver, MAX_GOP}, + common::{AdapterVendor::*, DataFormat, Driver, MAX_GOP}, vram::{ decode::{self, DecodeFrame, Decoder}, encode::{self, EncodeFrame, Encoder}, @@ -49,6 +49,7 @@ pub struct VRamEncoder { bitrate: u32, last_frame_len: usize, same_bad_len_counter: usize, + config: VRamEncoderConfig, } impl EncoderApi for VRamEncoder { @@ -84,6 +85,7 @@ impl EncoderApi for VRamEncoder { bitrate, last_frame_len: 0, same_bad_len_counter: 0, + config, }), Err(_) => { hbb_common::config::HwCodecConfig::clear_vram(); @@ -179,7 +181,7 @@ impl EncoderApi for VRamEncoder { } fn support_abr(&self) -> bool { - self.ctx.f.driver != Driver::MFX + self.config.device.vendor_id != ADAPTER_VENDOR_INTEL as u32 } }