---
slug: ./Processor
title: "ClikaRT::processor::Processor"
sidebar_label: "Processor"
description: "A multimodal preprocessor bundle: the OPTIONAL per-modality sub-processors a model directory provides (a tokenizer + one media processor: audio / image / video). Move-only."
---

<!-- Generated by tools/doxygen2mdx from Doxygen XML. Do not edit. -->

<span class="api-kind api-kind--class">class</span>

**Header:** `ClikaRT/processor/processor.h`

A multimodal preprocessor bundle: the OPTIONAL per-modality sub-processors a model directory provides (a tokenizer + one media processor: audio / image / video). Move-only.

[`from_huggingface`](./Processor.md#from_huggingface) auto-detects what is present (it inspects the directory's files; it is model-neutral). The `has_*` predicates report which slots filled, i.e. which components this model carries. Every fallible operation returns [`Result`](../Result.md)`<T>`; the library never throws.

## Static member functions

### from\_huggingface() {#from_huggingface}

<div class="api-signature">

`static` [`Processor`](./Processor.md) **`from_huggingface`**(<br />
&nbsp;&nbsp;&nbsp;&nbsp;`std::string_view` `path`,<br />
&nbsp;&nbsp;&nbsp;&nbsp;[`StreamOrDevice`](../StreamOrDevice.md) `where` `=` `{}`,<br />
&nbsp;&nbsp;&nbsp;&nbsp;[`ClikaRT::Span`](../Span.md)`<const std::string_view>` `consumed_keys` `=` `{}`<br />
)

</div>

Load a HuggingFace model directory: the tokenizer (any artifact) + the one media processor `preprocessor_config.json` describes. `where` binds the default placement for the media processor. `path` is copied, not retained. Missing pieces leave their slot empty (not an error).

`consumed_keys` names top-level config keys the caller consumes above the IMAGE processor (a model's own tiling or geometry keys); they join the image parse's recognized set, so a clean load logs no unknown-key warning. Keys neither recognized nor named still warn. Read during the call, not retained.

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 493

</div>

### from\_directory() {#from_directory}

<div class="api-signature">

`static` [`Processor`](./Processor.md) **`from_directory`**(`std::string_view` `path`, [`StreamOrDevice`](../StreamOrDevice.md) `where` `=` `{}`)

</div>

Load from a model directory, detecting the format present (currently HuggingFace). `path` is copied, not retained.

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 498

</div>

## Member functions

### Processor() {#Processor}

<div class="api-signature">

**`Processor`**(`Processor&&`) `noexcept`

</div>

move-construct (the source becomes an empty shell)

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 500

</div>

### operator=() {#operator-assign}

<div class="api-signature">

[`Processor`](./Processor.md)`&` **`operator=`**([`Processor`](./Processor.md)`&&`) `noexcept`

</div>

move-assign

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 501

</div>

### \~Processor() {#Processor-2}

<div class="api-signature">

**`~Processor`**()

</div>

destructor

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 502

</div>

### has\_tokenizer() {#has_tokenizer}

<div class="api-signature">

`bool` **`has_tokenizer`**() `const noexcept`

</div>

Which components the loaded model directory carries.

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 505

</div>

### has\_audio\_processor() {#has_audio_processor}

<div class="api-signature">

`bool` **`has_audio_processor`**() `const noexcept`

</div>

an audio processor is present

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 506

</div>

### has\_image\_processor() {#has_image_processor}

<div class="api-signature">

`bool` **`has_image_processor`**() `const noexcept`

</div>

an image processor is present

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 507

</div>

### has\_video\_processor() {#has_video_processor}

<div class="api-signature">

`bool` **`has_video_processor`**() `const noexcept`

</div>

a video processor is present

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 508

</div>

### tokenizer() {#tokenizer}

<div class="api-signature">

[`tokenizer::Tokenizer`](../tokenizer/Tokenizer.md) **`tokenizer`**() `const`

</div>

The tokenizer this model directory shipped, with the special-token ids its config named (media processors keep the placement bound at load).

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 519

</div>

### audio\_processor() {#audio_processor}

<div class="api-signature">

[`AudioProcessor`](./AudioProcessor.md) **`audio_processor`**() `const`

</div>

The audio processor: a standalone handle sharing the composite's instance (stays valid past this [`Processor`](./Processor.md)).

**Throws**

- `ClikaRT::Error`: (NotFound) when the model directory shipped none; check [`has_audio_processor()`](./Processor.md#has_audio_processor) first.

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 526

</div>

### image\_processor() {#image_processor}

<div class="api-signature">

[`ImageProcessor`](./ImageProcessor.md) **`image_processor`**() `const`

</div>

The image processor: same sharing and lifetime as [`audio_processor`](./Processor.md#audio_processor).

**Throws**

- `ClikaRT::Error`: (NotFound) when the slot is empty; check [`has_image_processor()`](./Processor.md#has_image_processor) first.

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 532

</div>

### video\_processor() {#video_processor}

<div class="api-signature">

[`VideoProcessor`](./VideoProcessor.md) **`video_processor`**() `const`

</div>

The video processor: same sharing and lifetime as [`audio_processor`](./Processor.md#audio_processor).

**Throws**

- `ClikaRT::Error`: (NotFound) when the slot is empty; check [`has_video_processor()`](./Processor.md#has_video_processor) first.

<div class="api-declared">

Declared in `ClikaRT/processor/processor.h`, line 538

</div>
