This commit is contained in:
2024-06-19 21:28:33 +02:00
parent da4c4c3651
commit 3c482fc63a
+62 -62
View File
@@ -44,77 +44,77 @@ main :: proc() {
fmt.println(flac_data) 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) 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 { if alsa_err < 0 {
// fmt.eprintln("Playback open error:", alsa.strerror(alsa_err)) fmt.eprintln("Playback open error:", alsa.strerror(alsa_err))
// os.exit(1) os.exit(1)
//} }
//sample_rate := flac_data.metadata.sample_rate sample_rate := flac_data.metadata.sample_rate
//channels := flac_data.metadata.channels channels := flac_data.metadata.channels
////md5_ctx: md5.Context //md5_ctx: md5.Context
////md5.init(&md5_ctx) //md5.init(&md5_ctx)
//for { for {
// frame, err := flac.read_next_frame(reader, flac_data) frame, err := flac.read_next_frame(reader, flac_data)
// defer delete(frame.samples) defer delete(frame.samples)
// if err != nil { if err != nil {
// if err == .EOF { if err == .EOF {
// break break
// } else { } else {
// fmt.println("Error while decoding frame:", err) fmt.println("Error while decoding frame:", err)
// os.exit(1) os.exit(1)
// } }
// } }
// //if frame.sample_rate != sample_rate || frame.channels != channels { //if frame.sample_rate != sample_rate || frame.channels != channels {
// // sample_rate = frame.sample_rate // sample_rate = frame.sample_rate
// // channels = frame.channels // channels = frame.channels
// // alsa_err = alsa.pcm_set_params(handle, .S16_LE, .RW_INTERLEAVED, u32(channels), sample_rate, 1, 0) // alsa_err = alsa.pcm_set_params(handle, .S16_LE, .RW_INTERLEAVED, u32(channels), sample_rate, 1, 0)
// // if alsa_err < 0 { // if alsa_err < 0 {
// // fmt.eprintln("Playback open error:", alsa.strerror(alsa_err)) // fmt.eprintln("Playback open error:", alsa.strerror(alsa_err))
// // os.exit(1) // os.exit(1)
// // } // }
// //} //}
// //converted_samples := make([]u8, len(samples)) //converted_samples := make([]u8, len(samples))
// //defer delete(converted_samples) //defer delete(converted_samples)
// //for sample, i in samples { //for sample, i in samples {
// // converted_samples[i] = u8(sample & 0xFF) // converted_samples[i] = u8(sample & 0xFF)
// //} //}
// converted_samples := make([]i16, len(frame.samples)) converted_samples := make([]i16, len(frame.samples))
// defer delete(converted_samples) defer delete(converted_samples)
// for sample, i in frame.samples { for sample, i in frame.samples {
// new_sample := sample & 0xFF new_sample := sample & 0xFF
// new_sample |= ((sample >> 8) & 0xFF) << 8 new_sample |= ((sample >> 8) & 0xFF) << 8
// converted_samples[i] = i16(new_sample) converted_samples[i] = i16(new_sample)
// } }
// frames := alsa.pcm_writei(handle, raw_data(converted_samples), u64(len(frame.samples)) / u64(frame.channels)) frames := alsa.pcm_writei(handle, raw_data(converted_samples), u64(len(frame.samples)) / u64(frame.channels))
// if frames < 0 { if frames < 0 {
// fmt.eprintln("Error writing to PCM device:", alsa.strerror(auto_cast frames)) fmt.eprintln("Error writing to PCM device:", alsa.strerror(auto_cast frames))
// break break
// } }
// fmt.printfln("Played %d frames", frames) 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) alsa_err = alsa.pcm_drain(handle)
////if err == .MD5_Mismatch { if alsa_err < 0 {
//// fmt.println("Decoded audio data is not correct.") fmt.eprintln("pcm_drain failed with:", alsa.strerror(alsa_err))
//// os.exit(1) }
////} alsa.pcm_close(handle)
//alsa_err = alsa.pcm_drain(handle) elapsed := time.diff(start, end)
//if alsa_err < 0 { fmt.println("Decoding took", elapsed)
// fmt.eprintln("pcm_drain failed with:", alsa.strerror(alsa_err))
//}
//alsa.pcm_close(handle)
//elapsed := time.diff(start, end)
//fmt.println("Decoding took", elapsed)
} }