mirror of
https://github.com/encounter/rust-ffmpeg-zmwangx.git
synced 2026-07-10 21:18:40 -07:00
avcodec: fix AVCodecContext::bit_rate field size by version inspection
This commit is contained in:
committed by
Till Höppner
parent
5ea07980f8
commit
ac9129d2b6
@@ -247,6 +247,20 @@ fn check_features(infos: &Vec<(&'static str, Option<&'static str>, &'static str)
|
||||
main_code.push_str(&format!(r#"printf("[{var}]%d%d\n", {var}, {var}_is_defined);"#, var=var));
|
||||
}
|
||||
|
||||
let version_check_info = [("avcodec", 56, 60, 0, 80)];
|
||||
for &(lib, begin_version_major, end_version_major, begin_version_minor, end_version_minor) in version_check_info.iter() {
|
||||
for version_major in begin_version_major..end_version_major {
|
||||
for version_minor in begin_version_minor..end_version_minor {
|
||||
main_code.push_str(&format!(r#"printf("[{lib}_version_greater_than_{version_major}_{version_minor}]%d\n", LIB{lib_uppercase}_VERSION_MAJOR > {version_major} || (LIB{lib_uppercase}_VERSION_MAJOR == {version_major} && LIB{lib_uppercase}_VERSION_MINOR > {version_minor}));"#,
|
||||
lib=lib,
|
||||
lib_uppercase=lib.to_uppercase(),
|
||||
version_major=version_major,
|
||||
version_minor=version_minor));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let out_dir = output();
|
||||
|
||||
write!(File::create(out_dir.join("check.c")).expect("Failed to create file"), r#"
|
||||
@@ -303,6 +317,21 @@ fn check_features(infos: &Vec<(&'static str, Option<&'static str>, &'static str)
|
||||
println!(r#"cargo:{}_is_defined=true"#, var.to_lowercase());
|
||||
}
|
||||
}
|
||||
|
||||
for &(lib, begin_version_major, end_version_major, begin_version_minor, end_version_minor) in version_check_info.iter() {
|
||||
for version_major in begin_version_major..end_version_major {
|
||||
for version_minor in begin_version_minor..end_version_minor {
|
||||
let search_str = format!("[{lib}_version_greater_than_{version_major}_{version_minor}]",
|
||||
version_major=version_major,
|
||||
version_minor=version_minor,
|
||||
lib=lib);
|
||||
let pos = stdout.find(&search_str).expect("Variable not found in output") + search_str.len();
|
||||
if &stdout[pos..pos+1] == "1" {
|
||||
println!(r#"cargo:rustc-cfg=feature="{}""#, &search_str[1..(search_str.len() - 1)]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -932,6 +932,10 @@ pub struct AVCodecContext {
|
||||
pub priv_data: *mut c_void,
|
||||
pub internal: *mut AVCodecInternal,
|
||||
pub opaque: *mut c_void,
|
||||
// See https://github.com/FFmpeg/FFmpeg/commit/7404f3bdb90e6a5dcb59bc0a091e2c5c038e557d
|
||||
#[cfg(feature="avcodec_version_greater_than_57_1")]
|
||||
pub bit_rate: int64_t,
|
||||
#[cfg(not(feature="avcodec_version_greater_than_57_1"))]
|
||||
pub bit_rate: c_int,
|
||||
pub bit_rate_tolerance: c_int,
|
||||
pub global_quality: c_int,
|
||||
|
||||
Reference in New Issue
Block a user