diff options
author | Błażej Szczygieł <spaz16@wp.pl> | 2016-06-15 15:31:32 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2016-06-18 00:49:55 +0200 |
commit | aebad5de5f629826ae4e63df7c48cab204999b4f (patch) | |
tree | 000786761cf8bfd347a319c5b8219706fcc77e9c /scene | |
parent | 65bcde0a7d837bcfc98d37734806caa1f894a36d (diff) |
Fix Theora video playback without a Vorbis stream
- prevent audio resampler errors when number of channels is 0,
- don't check for 'audio_done' when there is no audio data.
(cherry picked from commit 763b29f34e8c99c2f9559dcc31b59f99d0d6dee3)
Diffstat (limited to 'scene')
-rw-r--r-- | scene/gui/video_player.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/scene/gui/video_player.cpp b/scene/gui/video_player.cpp index 26227d6389..e9ff76bd91 100644 --- a/scene/gui/video_player.cpp +++ b/scene/gui/video_player.cpp @@ -208,10 +208,17 @@ void VideoPlayer::set_stream(const Ref<VideoStream> &p_stream) { playback->set_paused(paused); texture=playback->get_texture(); + const int channels = playback->get_channels(); + AudioServer::get_singleton()->lock(); - resampler.setup(playback->get_channels(),playback->get_mix_rate(),server_mix_rate,buffering_ms,0); + if (channels > 0) + resampler.setup(channels,playback->get_mix_rate(),server_mix_rate,buffering_ms,0); + else + resampler.clear(); AudioServer::get_singleton()->unlock(); - playback->set_mix_callback(_audio_mix_callback,this); + + if (channels > 0) + playback->set_mix_callback(_audio_mix_callback,this); } else { texture.unref(); |