Files
supersonic/backend/player/mpv/peaks.go
T
2024-08-06 20:30:44 -07:00

20 lines
710 B
Go

package mpv
// #include <mpv/client.h>
// int mpv_get_peaks(mpv_handle* handle, double* lPeak, double* rPeak, double* lRMS, double* rRMS);
import "C"
import (
"github.com/supersonic-app/go-mpv"
)
// rather than querying peaks through m.mpv.GetProperty which necessitates
// converting the MPV node to a Go map, we can do so in C with no Go allocations
func (m *Player) getPeaks() (float64, float64, float64, float64, error) {
var lPeak, rPeak, lRMS, rRMS C.double
ret := int(C.mpv_get_peaks((*C.mpv_handle)(m.mpv.MPVHandle()), &lPeak, &rPeak, &lRMS, &rRMS))
if err := mpv.NewError(ret); err != nil {
return 0, 0, 0, 0, err
}
return float64(lPeak), float64(rPeak), float64(lRMS), float64(rRMS), nil
}