Skip to content

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:

  • samples vstupní pole vzorků
  • n počet vzorků
  • cfg konfigurace
  • positions výstupní pole pro nalezené pozice (absolutní indexy)
  • capacity kapacita pole positions

Returns:

počet detekovaných pozic (>=0) nebo chybový kód (<0)


function detector_deinit

void detector_deinit (
    struct detector_state * s
) 

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:

  • s Interní stav.
  • block Vstupní vzorky délky tap_size.
  • block_start_offset Logický offset signálu (pro zpětné určení polohy).
  • out Vý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:

  • mem Ukazatel na předalokovaný buffer.
  • mem_size Velikost bufferu v bajtech.
  • cfg Konfigurace detektoru.
  • out Výstup: ukazatel na inicializovaný stav uvnitř bufferu.

Returns:

PEAK_DET_OK nebo chybový kód.


function detector_reset

void detector_reset (
    struct detector_state * s
) 

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:

  • cfg Konfigurace detektoru (nesmí být NULL).
  • out_size Vý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