summaryrefslogtreecommitdiff
path: root/modules/ogg
diff options
context:
space:
mode:
Diffstat (limited to 'modules/ogg')
-rw-r--r--modules/ogg/doc_classes/OGGPacketSequence.xml2
-rw-r--r--modules/ogg/doc_classes/OGGPacketSequencePlayback.xml2
-rw-r--r--modules/ogg/ogg_packet_sequence.cpp4
3 files changed, 5 insertions, 3 deletions
diff --git a/modules/ogg/doc_classes/OGGPacketSequence.xml b/modules/ogg/doc_classes/OGGPacketSequence.xml
index deac5b67e2..bff3691ce0 100644
--- a/modules/ogg/doc_classes/OGGPacketSequence.xml
+++ b/modules/ogg/doc_classes/OGGPacketSequence.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="OGGPacketSequence" inherits="Resource" version="4.0">
+<class name="OGGPacketSequence" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
<brief_description>
A sequence of OGG packets.
</brief_description>
diff --git a/modules/ogg/doc_classes/OGGPacketSequencePlayback.xml b/modules/ogg/doc_classes/OGGPacketSequencePlayback.xml
index 86dee15567..11fc1f4cb6 100644
--- a/modules/ogg/doc_classes/OGGPacketSequencePlayback.xml
+++ b/modules/ogg/doc_classes/OGGPacketSequencePlayback.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="OGGPacketSequencePlayback" inherits="RefCounted" version="4.0">
+<class name="OGGPacketSequencePlayback" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
<brief_description>
</brief_description>
<description>
diff --git a/modules/ogg/ogg_packet_sequence.cpp b/modules/ogg/ogg_packet_sequence.cpp
index 65058f088e..da52ecfdd5 100644
--- a/modules/ogg/ogg_packet_sequence.cpp
+++ b/modules/ogg/ogg_packet_sequence.cpp
@@ -162,6 +162,7 @@ bool OGGPacketSequencePlayback::next_ogg_packet(ogg_packet **p_packet) const {
}
uint32_t OGGPacketSequencePlayback::seek_page_internal(int64_t granule, uint32_t after_page_inclusive, uint32_t before_page_inclusive) {
+ // FIXME: This function needs better corner case handling.
if (before_page_inclusive == after_page_inclusive) {
return before_page_inclusive;
}
@@ -169,7 +170,8 @@ uint32_t OGGPacketSequencePlayback::seek_page_internal(int64_t granule, uint32_t
// Complicating the bisection search algorithm, the middle page might not have a packet that ends on it,
// which means it might not have a correct granule position. Find a nearby page that does have a packet ending on it.
uint32_t bisection_page = -1;
- for (uint32_t test_page = actual_middle_page; test_page <= before_page_inclusive; test_page++) {
+ // Don't include before_page_inclusive because that always succeeds and will cause infinite recursion later.
+ for (uint32_t test_page = actual_middle_page; test_page < before_page_inclusive; test_page++) {
if (ogg_packet_sequence->page_data[test_page].size() > 0) {
bisection_page = test_page;
break;