- 
                Notifications
    
You must be signed in to change notification settings  - Fork 553
 
Open
Description
seek-tune/server/shazam/fingerprint.go
Line 43 in 69bd180
| address := uint32(anchorFreq<<23) | uint32(targetFreq<<14) | deltaMs | 
package main
import (
	"fmt"
)
// Packs anchorFreq (9 bits), targetFreq (9 bits), and deltaMs (14 bits) into a uint32
func createAddress(anchorFreq, targetFreq, deltaMs uint32) uint32 {
	return (anchorFreq << 23) | (targetFreq << 14) | deltaMs
}
// Unpacks the 32-bit address back into anchorFreq, targetFreq, and deltaMs
func parseAddress(address uint32) (anchorFreq, targetFreq, deltaMs uint32) {
	anchorFreq = (address >> 23) & 0x1FF // 9 bits: bits 23-31
	targetFreq = (address >> 14) & 0x1FF // 9 bits: bits 14-22
	deltaMs = address & 0x3FFF           // 14 bits: bits 0-13
	return
}
func main() {
	var anchorFreq uint32 = 719 // within 9-bit range
	var targetFreq uint32 = 351 // within 9-bit range
	var deltaMs uint32 = 34567  // within 14-bit range
	address := createAddress(anchorFreq, targetFreq, deltaMs)
	fmt.Printf("Packed address: %032b (%d)\n", address, address)
	a, t, d := parseAddress(address)
	fmt.Printf("Decoded -> anchorFreq: %d, targetFreq: %d, deltaMs: %d\n", a, t, d)
}
// Packed address: 01100111110101111100011100000111 (1742194439)
// Decoded -> anchorFreq: 207, targetFreq: 351, deltaMs: 1799
func main() {
	var anchorFreq uint32 = 511 // within 9-bit range
	var targetFreq uint32 = 200 // within 9-bit range
	var deltaMs uint32 = 12345  // within 14-bit range
	address := createAddress(anchorFreq, targetFreq, deltaMs)
	fmt.Printf("Packed address: %032b (%d)\n", address, address)
	a, t, d := parseAddress(address)
	fmt.Printf("Decoded -> anchorFreq: %d, targetFreq: %d, deltaMs: %d\n", a, t, d)
}
// Packed address: 11111111101100100011000000111001 (4289867833)
// Decoded -> anchorFreq: 511, targetFreq: 200, deltaMs: 12345Metadata
Metadata
Assignees
Labels
No labels