summaryrefslogtreecommitdiffstats
path: root/modules/ogg/ogg_packet_sequence.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2023-10-13 22:45:59 +0200
committerGitHub <noreply@github.com>2023-10-13 22:45:59 +0200
commita574c0296b38d5f786f249b12e6251e562c528cc (patch)
treebee373f4c1a8caab2f5ea94d98f10aa5102670bd /modules/ogg/ogg_packet_sequence.cpp
parent325cc0178ee033a2fef29524fed0db0e2dcf328f (diff)
parent9c9f1154f83c5ee3363ede8385170e699d36a22d (diff)
downloadredot-engine-a574c0296b38d5f786f249b12e6251e562c528cc.tar.gz
Merge pull request #80452 from strellydev/ogg-loop-offset-pop-fix
Fix OGG audio loop offset pop
Diffstat (limited to 'modules/ogg/ogg_packet_sequence.cpp')
-rw-r--r--modules/ogg/ogg_packet_sequence.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/modules/ogg/ogg_packet_sequence.cpp b/modules/ogg/ogg_packet_sequence.cpp
index fb29493ca9..1100367f03 100644
--- a/modules/ogg/ogg_packet_sequence.cpp
+++ b/modules/ogg/ogg_packet_sequence.cpp
@@ -159,7 +159,9 @@ bool OggPacketSequencePlayback::next_ogg_packet(ogg_packet **p_packet) const {
*p_packet = packet;
- packet_cursor++;
+ if (!packet->e_o_s) { // Added this so it doesn't try to go to the next packet if it's the last packet of the file.
+ packet_cursor++;
+ }
return true;
}
@@ -216,6 +218,20 @@ bool OggPacketSequencePlayback::seek_page(int64_t p_granule_pos) {
return true;
}
+int64_t OggPacketSequencePlayback::get_page_number() const {
+ return page_cursor;
+}
+
+bool OggPacketSequencePlayback::set_page_number(int64_t p_page_number) {
+ if (p_page_number >= 0 && p_page_number < ogg_packet_sequence->page_data.size()) {
+ page_cursor = p_page_number;
+ packet_cursor = 0;
+ packetno = 0;
+ return true;
+ }
+ return false;
+}
+
OggPacketSequencePlayback::OggPacketSequencePlayback() {
packet = new ogg_packet();
}