bayerlink
Raw sensor data over an HDMI/DVI link.
FPGA boards rarely have camera connectors; nearly everything has HDMI. The bayerlink protocol treats a display link's active area as a byte container: packed raw Bayer samples, one camera line per display line, self-described by a 48-byte header (magic, version, V4L2 fourcc, geometry, frame counter, stripe and source identity for multi-link use, CRC). Real sensor data into any board with HDMI-in — no MIPI hardware, no deserialisers, no per-sensor bring-up on the receiver.
PROTOCOL.md is the specification. This package is its
reference implementation, and vectors/ pins the exact bytes, so a
conforming implementation in any language never has to run this one.
Independent implementations are unrestricted and encouraged; say "speaks bayerlink v2" and you are conforming, not licensing. See TRADEMARK.md for the one thing the name asks of you.
The package
import bayerlink
frame = bayerlink.encode_frame(raw, "RGGB", frame_seq=7) # (H, W, 3) uint8 out
header, raw = bayerlink.decode_frame(captured) # and back
header.bayer_order, header.width, header.frame_seq
It runs on both ends: encoders build containers with it, and a receiver's host software decodes captured frames with the same module — one implementation to disagree with the spec, which is the fewest possible.
bayerlink.pattern carries the link-proving test patterns (counting,
gradient, checker, corners) every encoder and receiver bring-up uses;
checker and corners pin 0 and full scale, the first casualties of a
limited-range link.
Implementations
The registry lives at the end of PROTOCOL.md. Reference encoder: picam2hdmi (Raspberry Pi, every libcamera sensor). To be listed: implement the spec, pass the vectors, open an issue.
Licence
Apache-2.0 — chosen over MIT for two of its clauses, not for anything this project owns. Section 3 means every contributor grants implementers a licence to any patent claims their contribution would infringe: no such patents are known or claimed, and the clause is insurance FOR implementers, not an assertion by this project. Section 6 makes explicit that the licence covers the text and code, never the name (see TRADEMARK.md). A protocol meant for many independent implementers benefits from both being written down.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bayerlink-0.3.0.tar.gz.
File metadata
- Download URL: bayerlink-0.3.0.tar.gz
- Upload date:
- Size: 22.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05495011dd91ad5e08effab5169d6d1079b74950ed9b7fb79cf6cfe2ef76ce60
|
|
| MD5 |
438016f4886e3e3bb781fc065b8937b5
|
|
| BLAKE2b-256 |
fed033a2f06307fecc60038f235cdb1faca5c062a71fe805d616a6073939d2e8
|
Provenance
The following attestation bundles were made for bayerlink-0.3.0.tar.gz:
Publisher:
publish.yml on bayerlink/bayerlink
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bayerlink-0.3.0.tar.gz -
Subject digest:
05495011dd91ad5e08effab5169d6d1079b74950ed9b7fb79cf6cfe2ef76ce60 - Sigstore transparency entry: 2397995000
- Sigstore integration time:
-
Permalink:
bayerlink/bayerlink@af297c531bff0a014d2961570bf35bb4f753527f -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/bayerlink
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@af297c531bff0a014d2961570bf35bb4f753527f -
Trigger Event:
release
-
Statement type:
File details
Details for the file bayerlink-0.3.0-py3-none-any.whl.
File metadata
- Download URL: bayerlink-0.3.0-py3-none-any.whl
- Upload date:
- Size: 18.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8282fefafe3d76d67ab8fc42e14d24a4669a74717ea366e2c10a62bfc0800461
|
|
| MD5 |
28de6678014c954eadc1b1594b30d3cc
|
|
| BLAKE2b-256 |
e47628200cfb2a61447ac0f804498ece4f06694cb86fa9a17d0a61d78419f146
|
Provenance
The following attestation bundles were made for bayerlink-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on bayerlink/bayerlink
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bayerlink-0.3.0-py3-none-any.whl -
Subject digest:
8282fefafe3d76d67ab8fc42e14d24a4669a74717ea366e2c10a62bfc0800461 - Sigstore transparency entry: 2397995616
- Sigstore integration time:
-
Permalink:
bayerlink/bayerlink@af297c531bff0a014d2961570bf35bb4f753527f -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/bayerlink
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@af297c531bff0a014d2961570bf35bb4f753527f -
Trigger Event:
release
-
Statement type: