From 3c482fc63afbe9ebe0c0bee656fdab8312fff3e9 Mon Sep 17 00:00:00 2001 From: IllusionMan1212 Date: Wed, 19 Jun 2024 21:28:33 +0200 Subject: [PATCH] whoops --- examples/buffered/main.odin | 124 ++++++++++++++++++------------------ 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/examples/buffered/main.odin b/examples/buffered/main.odin index a626134..6637b99 100644 --- a/examples/buffered/main.odin +++ b/examples/buffered/main.odin @@ -44,77 +44,77 @@ main :: proc() { fmt.println(flac_data) - //alsa_err = alsa.pcm_set_params(handle, .S16_LE, .RW_INTERLEAVED, u32(flac_data.metadata.channels), flac_data.metadata.sample_rate, 1, 500000) - //if alsa_err < 0 { - // fmt.eprintln("Playback open error:", alsa.strerror(alsa_err)) - // os.exit(1) - //} + alsa_err = alsa.pcm_set_params(handle, .S16_LE, .RW_INTERLEAVED, u32(flac_data.metadata.channels), flac_data.metadata.sample_rate, 1, 500000) + if alsa_err < 0 { + fmt.eprintln("Playback open error:", alsa.strerror(alsa_err)) + os.exit(1) + } - //sample_rate := flac_data.metadata.sample_rate - //channels := flac_data.metadata.channels + sample_rate := flac_data.metadata.sample_rate + channels := flac_data.metadata.channels - ////md5_ctx: md5.Context - ////md5.init(&md5_ctx) - //for { - // frame, err := flac.read_next_frame(reader, flac_data) + //md5_ctx: md5.Context + //md5.init(&md5_ctx) + for { + frame, err := flac.read_next_frame(reader, flac_data) - // defer delete(frame.samples) - // if err != nil { - // if err == .EOF { - // break - // } else { - // fmt.println("Error while decoding frame:", err) - // os.exit(1) - // } - // } + defer delete(frame.samples) + if err != nil { + if err == .EOF { + break + } else { + fmt.println("Error while decoding frame:", err) + os.exit(1) + } + } - // //if frame.sample_rate != sample_rate || frame.channels != channels { - // // sample_rate = frame.sample_rate - // // channels = frame.channels - // // alsa_err = alsa.pcm_set_params(handle, .S16_LE, .RW_INTERLEAVED, u32(channels), sample_rate, 1, 0) - // // if alsa_err < 0 { - // // fmt.eprintln("Playback open error:", alsa.strerror(alsa_err)) - // // os.exit(1) - // // } - // //} + //if frame.sample_rate != sample_rate || frame.channels != channels { + // sample_rate = frame.sample_rate + // channels = frame.channels + // alsa_err = alsa.pcm_set_params(handle, .S16_LE, .RW_INTERLEAVED, u32(channels), sample_rate, 1, 0) + // if alsa_err < 0 { + // fmt.eprintln("Playback open error:", alsa.strerror(alsa_err)) + // os.exit(1) + // } + //} - // //converted_samples := make([]u8, len(samples)) - // //defer delete(converted_samples) - // //for sample, i in samples { - // // converted_samples[i] = u8(sample & 0xFF) - // //} + //converted_samples := make([]u8, len(samples)) + //defer delete(converted_samples) + //for sample, i in samples { + // converted_samples[i] = u8(sample & 0xFF) + //} - // converted_samples := make([]i16, len(frame.samples)) - // defer delete(converted_samples) - // for sample, i in frame.samples { - // new_sample := sample & 0xFF - // new_sample |= ((sample >> 8) & 0xFF) << 8 - // converted_samples[i] = i16(new_sample) - // } + converted_samples := make([]i16, len(frame.samples)) + defer delete(converted_samples) + for sample, i in frame.samples { + new_sample := sample & 0xFF + new_sample |= ((sample >> 8) & 0xFF) << 8 + converted_samples[i] = i16(new_sample) + } - // frames := alsa.pcm_writei(handle, raw_data(converted_samples), u64(len(frame.samples)) / u64(frame.channels)) - // if frames < 0 { - // fmt.eprintln("Error writing to PCM device:", alsa.strerror(auto_cast frames)) - // break - // } - // fmt.printfln("Played %d frames", frames) + frames := alsa.pcm_writei(handle, raw_data(converted_samples), u64(len(frame.samples)) / u64(frame.channels)) + if frames < 0 { + fmt.eprintln("Error writing to PCM device:", alsa.strerror(auto_cast frames)) + break + } + fmt.printfln("Played %d frames", frames) - // //flac.md5hash(&md5_ctx, flac_data.metadata.bits_per_sample, samples) + //flac.md5hash(&md5_ctx, flac_data.metadata.bits_per_sample, samples) + } + end := time.now() + + //err = flac.md5sum(&md5_ctx, flac_data) + //if err == .MD5_Mismatch { + // fmt.println("Decoded audio data is not correct.") + // os.exit(1) //} - //end := time.now() - ////err = flac.md5sum(&md5_ctx, flac_data) - ////if err == .MD5_Mismatch { - //// fmt.println("Decoded audio data is not correct.") - //// os.exit(1) - ////} + alsa_err = alsa.pcm_drain(handle) + if alsa_err < 0 { + fmt.eprintln("pcm_drain failed with:", alsa.strerror(alsa_err)) + } + alsa.pcm_close(handle) - //alsa_err = alsa.pcm_drain(handle) - //if alsa_err < 0 { - // fmt.eprintln("pcm_drain failed with:", alsa.strerror(alsa_err)) - //} - //alsa.pcm_close(handle) - - //elapsed := time.diff(start, end) - //fmt.println("Decoding took", elapsed) + elapsed := time.diff(start, end) + fmt.println("Decoding took", elapsed) }