mirror of
https://github.com/IllusionMan1212/flac-odin.git
synced 2026-10-24 02:12:29 +00:00
whoops
This commit is contained in:
+63
-63
@@ -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))
|
||||||
|
os.exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
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))
|
// fmt.eprintln("Playback open error:", alsa.strerror(alsa_err))
|
||||||
// os.exit(1)
|
// os.exit(1)
|
||||||
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//sample_rate := flac_data.metadata.sample_rate
|
//converted_samples := make([]u8, len(samples))
|
||||||
//channels := flac_data.metadata.channels
|
//defer delete(converted_samples)
|
||||||
|
//for sample, i in samples {
|
||||||
|
// converted_samples[i] = u8(sample & 0xFF)
|
||||||
|
//}
|
||||||
|
|
||||||
////md5_ctx: md5.Context
|
converted_samples := make([]i16, len(frame.samples))
|
||||||
////md5.init(&md5_ctx)
|
defer delete(converted_samples)
|
||||||
//for {
|
for sample, i in frame.samples {
|
||||||
// frame, err := flac.read_next_frame(reader, flac_data)
|
new_sample := sample & 0xFF
|
||||||
|
new_sample |= ((sample >> 8) & 0xFF) << 8
|
||||||
|
converted_samples[i] = i16(new_sample)
|
||||||
|
}
|
||||||
|
|
||||||
// defer delete(frame.samples)
|
frames := alsa.pcm_writei(handle, raw_data(converted_samples), u64(len(frame.samples)) / u64(frame.channels))
|
||||||
// if err != nil {
|
if frames < 0 {
|
||||||
// if err == .EOF {
|
fmt.eprintln("Error writing to PCM device:", alsa.strerror(auto_cast frames))
|
||||||
// break
|
break
|
||||||
// } else {
|
}
|
||||||
// fmt.println("Error while decoding frame:", err)
|
fmt.printfln("Played %d frames", frames)
|
||||||
|
|
||||||
|
//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)
|
// 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([]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)
|
|
||||||
|
|
||||||
// //flac.md5hash(&md5_ctx, flac_data.metadata.bits_per_sample, samples)
|
|
||||||
//}
|
//}
|
||||||
//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)
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user