mirror of
https://github.com/godotengine/godot.git
synced 2024-11-27 09:16:35 +08:00
Fix OGG Vorbis infinite error spam with corrupt file.
When OGG Vorbis encountered unreadable file, it emitted infinite error spam. This PR returns the full number of frames in the case of error, to prevent infinite loop.
This commit is contained in:
parent
2b987d1c54
commit
188266af47
@ -144,7 +144,7 @@ int AudioStreamPlaybackOggVorbis::_mix_internal(AudioFrame *p_buffer, int p_fram
|
||||
}
|
||||
|
||||
int AudioStreamPlaybackOggVorbis::_mix_frames_vorbis(AudioFrame *p_buffer, int p_frames) {
|
||||
ERR_FAIL_COND_V(!ready, 0);
|
||||
ERR_FAIL_COND_V(!ready, p_frames);
|
||||
if (!have_samples_left) {
|
||||
ogg_packet *packet = nullptr;
|
||||
int err;
|
||||
@ -156,10 +156,10 @@ int AudioStreamPlaybackOggVorbis::_mix_frames_vorbis(AudioFrame *p_buffer, int p
|
||||
}
|
||||
|
||||
err = vorbis_synthesis(&block, packet);
|
||||
ERR_FAIL_COND_V_MSG(err != 0, 0, "Error during vorbis synthesis " + itos(err));
|
||||
ERR_FAIL_COND_V_MSG(err != 0, p_frames, "Error during vorbis synthesis " + itos(err));
|
||||
|
||||
err = vorbis_synthesis_blockin(&dsp_state, &block);
|
||||
ERR_FAIL_COND_V_MSG(err != 0, 0, "Error during vorbis block processing " + itos(err));
|
||||
ERR_FAIL_COND_V_MSG(err != 0, p_frames, "Error during vorbis block processing " + itos(err));
|
||||
|
||||
have_packets_left = !packet->e_o_s;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user