fix decoding when a file is broken

This commit is contained in:
Polochon-street 2022-09-06 18:56:39 +02:00
parent c5ffb619bb
commit 7420da5041
4 changed files with 18 additions and 2 deletions

View File

@ -1,5 +1,9 @@
#Changelog
## bliss 5.2.3
* Fix a bug with some broken MP3 files
* Bump ffmpeg to 5.1.0
## bliss 0.5.0
* Add support for CUE files.
* Add `album_artist` and `duration` to `Song`.

2
Cargo.lock generated
View File

@ -85,7 +85,7 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bliss-audio"
version = "0.5.2"
version = "0.5.3"
dependencies = [
"anyhow",
"bliss-audio-aubio-rs",

View File

@ -1,6 +1,6 @@
[package]
name = "bliss-audio"
version = "0.5.2"
version = "0.5.3"
authors = ["Polochon-street <polochonstreet@gmx.fr>"]
edition = "2018"
license = "GPL-3.0-only"

View File

@ -664,7 +664,16 @@ fn resample_frame(
))
})?;
let mut resampled = ffmpeg::frame::Audio::empty();
let mut something_happened = false;
for decoded in rx.iter() {
if in_codec_format != decoded.format()
|| in_channel_layout != decoded.channel_layout()
|| in_rate != decoded.rate()
{
warn!("received decoded packet with wrong format; file might be corrupted.");
continue;
}
something_happened = true;
resampled = ffmpeg::frame::Audio::empty();
resample_context
.run(&decoded, &mut resampled)
@ -673,6 +682,9 @@ fn resample_frame(
})?;
push_to_sample_array(&resampled, &mut sample_array);
}
if !something_happened {
return Ok(sample_array);
}
// TODO when ffmpeg-next will be active again: shouldn't we allocate
// `resampled` again?
loop {