Skip to content

Commit 1d21b60

Browse files
authored
Merge pull request #1525 from moisesjpelaez/hl_audio_fix
Fix Kore-HL audio initialization and playback
2 parents ea49f33 + 6c56873 commit 1d21b60

2 files changed

Lines changed: 9 additions & 4 deletions

File tree

Backends/Kore-HL/kha/audio2/StreamChannel.hx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package kha.audio2;
22

3-
import haxe.ds.Vector;
43
import haxe.io.Bytes;
54

65
class StreamChannel implements kha.audio1.AudioChannel {
@@ -9,10 +8,12 @@ class StreamChannel implements kha.audio1.AudioChannel {
98
@:keep var loop: Bool;
109
var myVolume: Float;
1110
var paused: Bool = false;
11+
var _data: Bytes;
1212

1313
public function new(data: Bytes, loop: Bool) {
1414
myVolume = 1;
1515
this.loop = loop;
16+
this._data = data;
1617
_vorbis = kinc_sound_init_vorbis(data.getData().bytes, data.length);
1718
}
1819

@@ -28,6 +29,10 @@ class StreamChannel implements kha.audio1.AudioChannel {
2829
}
2930

3031
public function play(): Void {
32+
if (atend) {
33+
_vorbis = kinc_sound_init_vorbis(_data.getData().bytes, _data.length);
34+
atend = false;
35+
}
3136
paused = false;
3237
}
3338

Backends/Kore-HL/kinc-bridge/kinc.c.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ static void mix(kinc_a2_buffer_t *buffer, uint32_t samples, void *userdata) {
5252
hl_blocking(true);
5353
#endif
5454

55-
audioCallCallback(samples);
55+
audioCallCallback(samples * 2);
5656

57-
for (uint32_t i = 0; i < samples; i += 2) {
57+
for (uint32_t i = 0; i < samples; ++i) {
5858
float left_value = audioReadSample();
5959
float right_value = audioReadSample();
6060
*(float *)&buffer->channels[0][buffer->write_location] = left_value;
@@ -94,8 +94,8 @@ void hl_init_kore(vbyte *title, int width, int height, int samplesPerPixel, bool
9494
void hl_kinc_init_audio(vclosure *callCallback, vclosure *readSample, int *outSamplesPerSecond) {
9595
audioCallCallback = *((FN_AUDIO_CALL_CALLBACK *)(&callCallback->fun));
9696
audioReadSample = *((FN_AUDIO_READ_SAMPLE *)(&readSample->fun));
97-
kinc_a2_set_callback(mix, NULL);
9897
kinc_a2_init();
98+
kinc_a2_set_callback(mix, NULL);
9999
*outSamplesPerSecond = kinc_a2_samples_per_second();
100100
}
101101

0 commit comments

Comments
 (0)