scrap: update HwDecoder::instance()
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
parent
327bdb741c
commit
4bb09865cf
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -2236,7 +2236,7 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "hwcodec"
|
name = "hwcodec"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/21pages/hwcodec#1f8e03c433c1ec73067b4c85026d99f2e9fcf9bf"
|
source = "git+https://github.com/21pages/hwcodec#1cfe82f08f254e88f18cea1ad7c332f1c28dc1b9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bindgen",
|
"bindgen",
|
||||||
"cc",
|
"cc",
|
||||||
|
@ -240,35 +240,15 @@ impl HwDecoder {
|
|||||||
static ONCE: Once = Once::new();
|
static ONCE: Once = Once::new();
|
||||||
// TODO: different process
|
// TODO: different process
|
||||||
ONCE.call_once(|| {
|
ONCE.call_once(|| {
|
||||||
let avaliable = Decoder::avaliable_decoders();
|
let (h264_info, h265_info) = CodecInfo::score(Decoder::avaliable_decoders());
|
||||||
let mut decoders = vec![];
|
|
||||||
for decoder in avaliable {
|
|
||||||
if let Ok(d) = HwDecoder::new(decoder) {
|
|
||||||
decoders.push(d);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut h264: Option<HwDecoder> = None;
|
let mut h264: Option<HwDecoder> = None;
|
||||||
let mut h265: Option<HwDecoder> = None;
|
let mut h265: Option<HwDecoder> = None;
|
||||||
for decoder in decoders {
|
|
||||||
match decoder.info.format {
|
if let Some(info) = h264_info {
|
||||||
DataFormat::H264 => match &h264 {
|
h264 = HwDecoder::new(info).ok();
|
||||||
Some(old) => {
|
}
|
||||||
if decoder.info.score > old.info.score {
|
if let Some(info) = h265_info {
|
||||||
h264 = Some(decoder)
|
h265 = HwDecoder::new(info).ok();
|
||||||
}
|
|
||||||
}
|
|
||||||
None => h264 = Some(decoder),
|
|
||||||
},
|
|
||||||
DataFormat::H265 => match &h265 {
|
|
||||||
Some(old) => {
|
|
||||||
if decoder.info.score > old.info.score {
|
|
||||||
h265 = Some(decoder)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
None => h265 = Some(decoder),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if h264.is_some() {
|
if h264.is_some() {
|
||||||
log::info!("h264 decoder:{:?}", h264.as_ref().unwrap().info);
|
log::info!("h264 decoder:{:?}", h264.as_ref().unwrap().info);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user