File peak_detector.h¶
FileList > csrc > peak_detector.h
Go to the source code of this file
Median-based impulse detector public API. More...
#include <stdbool.h>#include <stddef.h>#include <stdint.h>
Classes¶
| Type | Name |
|---|---|
| struct | detector_result Výsledek detekce po zpracování bloku. |
| struct | median_detector_cfg Konfigurace detektoru. |
| struct | median_detector_levels Detekční prahy pro impulzní událost. |
Public Types¶
| Type | Name |
|---|---|
| enum | peak_det_state Stavový kód vrácený API detektoru. |
Public Functions¶
| Type | Name |
|---|---|
| int | detect_recording_i16 (const int16_t * samples, size_t n, const struct median_detector_cfg * cfg, int * positions, size_t capacity) Offline detekce nad celou nahrávkou (16bit). |
| void | detector_deinit (struct detector_state * s) |
| int | detector_feed_block (struct detector_state * s, const int16_t * block, int64_t block_start_offset, struct detector_result * out) Online zpracování jednoho tapu (bloku) vzorků. |
| enum peak_det_state | detector_init (void * mem, size_t mem_size, const struct median_detector_cfg * cfg, struct detector_state ** out) Inicializuje stav v uživatelem dodaném bufferu (bez malloc). |
| void | detector_reset (struct detector_state * s) |
| enum peak_det_state | detector_state_size (const struct median_detector_cfg * cfg, size_t * out_size) Vrátí potřebnou velikost paměťového bloku pro stav podle konfigurace. |
Detailed Description¶
Detektor pracuje nad posuvným oknem o velikosti num_taps * tap_size a pro každý offset udržuje medián napříč všemi tapy. Nad "middle" tapem hledá odchylku od odhadovaného šumu, provádí RMS kontrolu a energetický test před a po piku. Kód je napsán tak, aby běžel i v prostředí bez heapu – stav je alokován volajícím.
Public Types Documentation¶
enum peak_det_state¶
Stavový kód vrácený API detektoru.
enum peak_det_state {
PEAK_DET_OK = 0,
PEAK_DET_ERR_CFG_UNINITIALIZED = -200,
PEAK_DET_ERR_BUFFER_TOO_SMALL = -201,
PEAK_DET_ERR_INVALID_ARG = -202
};
Public Functions Documentation¶
function detect_recording_i16¶
Offline detekce nad celou nahrávkou (16bit).
int detect_recording_i16 (
const int16_t * samples,
size_t n,
const struct median_detector_cfg * cfg,
int * positions,
size_t capacity
)
Parameters:
samplesvstupní pole vzorkůnpočet vzorkůcfgkonfiguracepositionsvýstupní pole pro nalezené pozice (absolutní indexy)capacitykapacita pole positions
Returns:
počet detekovaných pozic (>=0) nebo chybový kód (<0)
function detector_deinit¶
function detector_feed_block¶
Online zpracování jednoho tapu (bloku) vzorků.
int detector_feed_block (
struct detector_state * s,
const int16_t * block,
int64_t block_start_offset,
struct detector_result * out
)
Postup: * Aktualizuje per-offset mediány s lazy invalidací starých generací. * Udržuje RMS akumulátor přes celé okno. * Jakmile je okno naplněné, vyhodnotí deviation v "middle" tapu a provede energetický test before/after.
Parameters:
sInterní stav.blockVstupní vzorky délky tap_size.block_start_offsetLogický offset signálu (pro zpětné určení polohy).outVýsledek detekce (může být NULL, pak se ignoruje).
Returns:
PEAK_DET_OK nebo chybový kód.
function detector_init¶
Inicializuje stav v uživatelem dodaném bufferu (bez malloc).
enum peak_det_state detector_init (
void * mem,
size_t mem_size,
const struct median_detector_cfg * cfg,
struct detector_state ** out
)
Inicializace nastaví kruhové buffery na nulu, zapíše parametry z cfg a připraví struktury pro výpočet mediánu (max/min heap per offset) a RMS akumulátor pro celé okno.
Parameters:
memUkazatel na předalokovaný buffer.mem_sizeVelikost bufferu v bajtech.cfgKonfigurace detektoru.outVýstup: ukazatel na inicializovaný stav uvnitř bufferu.
Returns:
PEAK_DET_OK nebo chybový kód.
function detector_reset¶
function detector_state_size¶
Vrátí potřebnou velikost paměťového bloku pro stav podle konfigurace.
enum peak_det_state detector_state_size (
const struct median_detector_cfg * cfg,
size_t * out_size
)
Funkce nealokuje paměť – pouze spočítá minimální velikost bufferu, který musí volající poskytnout při detector_init.
Parameters:
cfgKonfigurace detektoru (nesmí být NULL).out_sizeVýstup: požadovaná velikost v bajtech, zarovnaná pro interní struktury.
Returns:
PEAK_DET_OK nebo chybový kód.
The documentation for this class was generated from the following file scripts/median-filter/csrc/peak_detector.h