Bill Meltsner avatar Bill Meltsner committed fa4e82e

Source:seek didn't work properly for streaming sources, fixed that

Comments (0)

Files changed (1)


 			switch (unit) {
 				case Source::UNIT_SAMPLES:
-					if (type == TYPE_STREAM) offset -= offsetSamples;
-					alSourcef(source, AL_SAMPLE_OFFSET, offset);
+					if (type == TYPE_STREAM) {
+						ALint buffer;
+						alGetSourcei(source, AL_BUFFER, &buffer);
+						int freq;
+						alGetBufferi(buffer, AL_FREQUENCY, &freq);
+						offset /= freq;
+						decoder->seek(offset);
+					} else {
+						alSourcef(source, AL_SAMPLE_OFFSET, offset);
+					}
 				case Source::UNIT_SECONDS:	
-					if (type == TYPE_STREAM) offset -= offsetSeconds;
-					alSourcef(source, AL_SEC_OFFSET, offset);
+					if (type == TYPE_STREAM) {
+						decoder->seek(offset);
+					} else {
+						alSourcef(source, AL_SEC_OFFSET, offset);
+					}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.