Commit ec3568bd authored by Andrée Ekroth's avatar Andrée Ekroth

decoder/Mp4v2: fix crash with undefined error

When no track is found the error is now properly set. Previously the calling function tried to log an undefined error, which resulted in a crash. MPD falls back to ffmpeg for unsupported tracks, such as ALAC. This should fix issue 4051.
parent 7a048f00
...@@ -91,15 +91,14 @@ mp4_get_aac_track(MP4FileHandle handle, NeAACDecHandle decoder, ...@@ -91,15 +91,14 @@ mp4_get_aac_track(MP4FileHandle handle, NeAACDecHandle decoder,
if (!audio_format_init_checked(audio_format, sample_rate, if (!audio_format_init_checked(audio_format, sample_rate,
SampleFormat::S16, SampleFormat::S16,
channels, channels,
error)) { error))
error.Set(mp4v2_decoder_domain,
"Invalid audio format");
continue; continue;
}
return id; return id;
} }
error.Set(mp4v2_decoder_domain, "no valid aac track found");
return MP4_INVALID_TRACK_ID; return MP4_INVALID_TRACK_ID;
} }
...@@ -117,7 +116,6 @@ mp4_faad_new(MP4FileHandle handle, AudioFormat &audio_format, Error &error) ...@@ -117,7 +116,6 @@ mp4_faad_new(MP4FileHandle handle, AudioFormat &audio_format, Error &error)
const auto track = mp4_get_aac_track(handle, decoder, audio_format, error); const auto track = mp4_get_aac_track(handle, decoder, audio_format, error);
if (track == MP4_INVALID_TRACK_ID) { if (track == MP4_INVALID_TRACK_ID) {
LogError(error);
NeAACDecClose(decoder); NeAACDecClose(decoder);
return nullptr; return nullptr;
} }
...@@ -132,7 +130,7 @@ mp4_file_decode(Decoder &mpd_decoder, Path path_fs) ...@@ -132,7 +130,7 @@ mp4_file_decode(Decoder &mpd_decoder, Path path_fs)
if (handle == MP4_INVALID_FILE_HANDLE) { if (handle == MP4_INVALID_FILE_HANDLE) {
FormatError(mp4v2_decoder_domain, FormatError(mp4v2_decoder_domain,
"Unable to open file"); "unable to open file");
return; return;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment