Skip to content

Commit

Permalink
Clippy: replace array indexing by checked access methods
Browse files Browse the repository at this point in the history
  • Loading branch information
emarsden committed Jul 25, 2024
1 parent c0b4b58 commit 08e7674
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 26 deletions.
39 changes: 25 additions & 14 deletions src/fetch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1030,8 +1030,10 @@ fn select_preferred_adaptations<'a>(
.collect();
let min_distance = distance.iter().min().unwrap_or(&0);
for (i, a) in adaptations.iter().enumerate() {
if distance[i] == *min_distance {
preferred.push(a);
if let Some(di) = distance.get(i) {
if di == min_distance {
preferred.push(a);
}
}
}
} else {
Expand All @@ -1048,8 +1050,10 @@ fn select_preferred_adaptations<'a>(
let role_distance_min = role_distance.iter().min().unwrap_or(&0);
let mut best = Vec::new();
for (i, a) in preferred.into_iter().enumerate() {
if role_distance[i] == *role_distance_min {
best.push(a);
if let Some(rdi) = role_distance.get(i) {
if rdi == role_distance_min {
best.push(a);
}
}
}
best
Expand Down Expand Up @@ -1086,10 +1090,13 @@ fn select_preferred_representation<'a>(
.map(|r| r.qualityRanking.unwrap_or(u8::MAX))
.collect();
ranking.sort_unstable();
let want_ranking = ranking.get(count / 2).unwrap();
representations.iter()
.find(|r| r.qualityRanking.unwrap_or(u8::MAX) == *want_ranking)
.copied()
if let Some(want_ranking) = ranking.get(count / 2) {
representations.iter()
.find(|r| r.qualityRanking.unwrap_or(u8::MAX) == *want_ranking)
.copied()
} else {
representations.get(0).copied()
}
},
}
},
Expand All @@ -1113,10 +1120,13 @@ fn select_preferred_representation<'a>(
.map(|r| r.bandwidth.unwrap_or(100_000_000))
.collect();
ranking.sort_unstable();
let want_ranking = ranking.get(count / 2).unwrap();
representations.iter()
.find(|r| r.bandwidth.unwrap_or(100_000_000) == *want_ranking)
.copied()
if let Some(want_ranking) = ranking.get(count / 2) {
representations.iter()
.find(|r| r.bandwidth.unwrap_or(100_000_000) == *want_ranking)
.copied()
} else {
representations.get(0).copied()
}
},
}
},
Expand Down Expand Up @@ -1276,8 +1286,9 @@ async fn extract_init_pssh(downloader: &DashDownloader, init_url: Url) -> Option
}
let start = offset - 4;
let end = start + segment_first_bytes[offset-1] as usize;
let pssh = &segment_first_bytes[start..end];
return Some(pssh.to_vec());
if let Some(pssh) = &segment_first_bytes.get(start..end) {
return Some(pssh.to_vec());
}
}
}
None
Expand Down
12 changes: 7 additions & 5 deletions src/ffmpeg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ use std::process::Command;
use fs_err as fs;
use fs::File;
use tracing::{trace, info, warn};
use extrasafe::isolate::Isolate;
use crate::DashMpdError;
use crate::fetch::{DashDownloader, partial_process_output};
use crate::media::{audio_container_type, video_container_type, container_has_video, container_has_audio};




// ffmpeg can mux to many container types including mp4, mkv, avi
#[tracing::instrument(level="trace", skip(downloader))]
fn mux_audio_video_ffmpeg(
Expand Down Expand Up @@ -1057,9 +1057,11 @@ pub(crate) fn concat_output_files_mkvmerge(
args.push(&out);
args.push("[");
args.push(tmppath);
for p in &paths[1..] {
if let Some(ps) = p.to_str() {
args.push(ps);
if let Some(inpaths) = paths.get(1..) {
for p in inpaths {
if let Some(ps) = p.to_str() {
args.push(ps);
}
}
}
args.push("]");
Expand Down Expand Up @@ -1185,7 +1187,7 @@ mod tests {
#[test]
fn test_concat() {
use crate::fetch::DashDownloader;
use image::io::Reader as ImageReader;
use image::ImageReader;
use image::Rgb;

let tmpd = tempfile::tempdir().unwrap();
Expand Down
13 changes: 6 additions & 7 deletions src/media.rs
Original file line number Diff line number Diff line change
Expand Up @@ -100,15 +100,14 @@ fn video_container_metainfo(path: &PathBuf) -> Result<VideoMetainfo, DashMpdErro
return Err(DashMpdError::Muxing(String::from("reading video resolution")));
}
if let Some(s) = &meta.streams.iter().find(|s| s.width.is_some() && s.height.is_some()) {
if let Some(fr) = parse_frame_rate(&s.avg_frame_rate) {
if let Some(frame_rate) = parse_frame_rate(&s.avg_frame_rate) {
let sar = s.sample_aspect_ratio.as_ref()
.and_then(|sr| parse_aspect_ratio(sr));
return Ok(VideoMetainfo {
width: s.width.unwrap(),
height: s.height.unwrap(),
frame_rate: fr,
sar,
});
if let Some(width) = s.width {
if let Some(height) = s.height {
return Ok(VideoMetainfo { width, height, frame_rate, sar });
}
}
}
}
},
Expand Down

0 comments on commit 08e7674

Please sign in to comment.