decoder/wavpack: check WavpackGetNumSamples()==-1

This commit is contained in:
Max Kellermann 2016-12-09 21:46:29 +01:00
parent caee420087
commit f35dab1b56

View File

@ -54,6 +54,10 @@ static SignedSongTime
GetDuration(WavpackContext *wpc) GetDuration(WavpackContext *wpc)
{ {
const uint32_t n_samples = WavpackGetNumSamples(wpc); const uint32_t n_samples = WavpackGetNumSamples(wpc);
if (n_samples == uint32_t(-1))
/* unknown */
return SignedSongTime::Negative();
return SongTime::FromScale<uint64_t>(n_samples, return SongTime::FromScale<uint64_t>(n_samples,
WavpackGetSampleRate(wpc)); WavpackGetSampleRate(wpc));
} }
@ -230,7 +234,8 @@ wavpack_scan_file(Path path_fs,
}; };
const auto duration = GetDuration(wpc); const auto duration = GetDuration(wpc);
tag_handler_invoke_duration(handler, handler_ctx, SongTime(duration)); if (!duration.IsNegative())
tag_handler_invoke_duration(handler, handler_ctx, SongTime(duration));
return true; return true;
} }