diff options
author | Davi <davicr38@gmail.com> | 2023-02-25 21:07:24 -0300 |
---|---|---|
committer | Davi <davicr38@gmail.com> | 2023-02-26 09:20:49 -0300 |
commit | 4a7c93708e6cd33b04ef802cd69912bcf1b3f08c (patch) | |
tree | 0059400680d5048607e01554650eeed1472f9609 /modules | |
parent | 84a80721c5308df36c7295949c76a622c5e0edb9 (diff) |
Patch `VideoStreamPlaybackTheora::set_file` to only look for header packets of one stream type
Diffstat (limited to 'modules')
-rw-r--r-- | modules/theora/video_stream_theora.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/modules/theora/video_stream_theora.cpp b/modules/theora/video_stream_theora.cpp index b38f7225a2..6c961813b4 100644 --- a/modules/theora/video_stream_theora.cpp +++ b/modules/theora/video_stream_theora.cpp @@ -251,8 +251,12 @@ void VideoStreamPlaybackTheora::set_file(const String &p_file) { /* we're expecting more header packets. */ while ((theora_p && theora_p < 3) || (vorbis_p && vorbis_p < 3)) { + int ret = 0; + /* look for further theora headers */ - int ret = ogg_stream_packetout(&to, &op); + if (theora_p && theora_p < 3) { + ret = ogg_stream_packetout(&to, &op); + } while (theora_p && theora_p < 3 && ret) { if (ret < 0) { fprintf(stderr, "Error parsing Theora stream headers; corrupt stream?\n"); @@ -269,7 +273,9 @@ void VideoStreamPlaybackTheora::set_file(const String &p_file) { } /* look for more vorbis header packets */ - ret = ogg_stream_packetout(&vo, &op); + if (vorbis_p && vorbis_p < 3) { + ret = ogg_stream_packetout(&vo, &op); + } while (vorbis_p && vorbis_p < 3 && ret) { if (ret < 0) { fprintf(stderr, "Error parsing Vorbis stream headers; corrupt stream?\n"); |