# Integration notes

## Existing FM / DSP project
The intended integration pattern is:

- your application decides which input mode is active
- this module delivers decoded PCM frames
- your application writes those samples into its existing audio ring buffer or live source abstraction

## Recommended first integration
Use only:

- `Config`
- `NewReceiver`
- `Start`
- `Stop`

and a callback like:

```go
rx, _ := aoiprxkit.NewReceiver(cfg, func(frame aoiprxkit.PCMFrame) {
    audioInput.PushInt32(frame.Samples, frame.SampleRateHz, frame.Channels)
})
```

## SRT integration pattern
The WAN side is now split into two layers:

1. `SRTReceiver` / `StreamReceiver`
2. a transport opener that returns an `io.ReadCloser`

That means your target repo can later add a native `gosrt` opener without changing the PCM handling path.

## Later additions
- derive config from SDP
- attach a SAP listener to discover sessions
- query NMOS registry for streams/receivers
- activate receiver transport with IS-05
- use a native SRT opener for WAN delivery into the same audio input path
