|
| 1 | +# DESIGN_TODO |
| 2 | + |
| 3 | +A terse catalogue of open tasks only. Gaps on the host side of the glass2glass |
| 4 | +Python-element host are tracked in that repo's `DESIGN_TODO.md`, under |
| 5 | +"Python-element host", not here. |
| 6 | + |
| 7 | +## g2g backend coverage |
| 8 | + |
| 9 | +- **Which README pipelines run under `PYML_BACKEND=g2g` is not established |
| 10 | + yet.** `PYML_BACKEND=g2g uv run pytest tests/test_pipelines.py -q |
| 11 | + -p no:randomly` gives 11 passing and 67 failing: `pyml_classifier` (6 |
| 12 | + variants), `pyml_inference` (executorch, candle), `pyml_llm` (llamacpp), |
| 13 | + `pyml_vlm`, `pyml_embedding` (clip, dinov2). Every one of the 67 failures is |
| 14 | + `PIPELINE_TIMEOUT` firing at 30 s while the model loads, so the split |
| 15 | + measures the card rather than g2g support. Getting the real answer needs the |
| 16 | + same suite run under `gst` at the same timeout and diffed: a pipeline that |
| 17 | + passes on gst and fails on g2g is a genuine gap, one that fails on both is the |
| 18 | + environment. The full suite takes 10-18 minutes and wants the GPU, so do not |
| 19 | + run the two backends at once on a 6 GB card. |
| 20 | + |
| 21 | +- **Eleven elements have no per-frame seam, so they cannot run on g2g at all.** |
| 22 | + `alert`, `tracker`, `vad`, `clap`, `overlay_counter`, `kafkasink`, |
| 23 | + `streammux`, `streamdemux`, `coalescehistory` and `llm_remote` subclass a |
| 24 | + GStreamer base directly. `stablediffusion` is hosted but fills in neither |
| 25 | + `process_frames` nor `process_payload`. Reparenting a family onto one of those |
| 26 | + two seams in `backend/core.py` is what makes its pipelines runnable. |
| 27 | + `overlay_counter` inherits `overlay`, which the launcher rewrites to g2g's |
| 28 | + native `analyticsoverlay`, so the plain overlay line works regardless. |
| 29 | + |
| 30 | +- **`wavparse` will not negotiate an audio payload pipeline.** |
| 31 | + `filesrc ! wavparse ! pyelement ...` fails `NoConsistentFixation` whatever the |
| 32 | + caps string says. Not investigated, and it blocks every audio-in README |
| 33 | + pipeline on g2g. |
| 34 | + |
| 35 | +## Elements |
| 36 | + |
| 37 | +- **`WhisperSpeechTTS.do_generate_speech` returns a `(1, n)` array**, which |
| 38 | + `soundfile` rejects with `LibsndfileError: Format not recognised`, so the |
| 39 | + element emits no audio. `CoquiTTS` returns 1-D and is fine. Pre-existing on |
| 40 | + both backends. |
| 41 | + |
| 42 | +- **`AnomalyEngine._transform` is assigned only in `do_load_model`**, so |
| 43 | + `_get_transform` raises `AttributeError` on an engine whose model never |
| 44 | + loaded. Pre-existing on both backends. |
0 commit comments