e2m2e.api.frames#
二进制帧编解码(ADR 0035 §3)。
帧格式是 tod ↔ e2m2e 的跨仓库持久契约,逐字段定义(多字节整数一律小端):
偏移 长度 类型 含义 0 4 u32 magic = 0x324D3245(ASCII "E2M2" 小端;字节 45 32 4D 32) 4 1 u8 dtype:0 = float32,1 = float64 5 1 u8 ndim:维度数,≥ 1 6 4·ndim u32[] shape:各维元素数(不是字节数) 6+4·ndim — — 原始数组字节:C 连续、小端,长度 = prod(shape) × 元素宽度
没有 version 字段:magic 兼职版本锚点,不兼容改动时换 magic(须走新 ADR)。 本模块是帧契约的唯一实现点,不得引入 ADR 之外的字段。位于 api/ 包根而 非 sidecar 子包:执行核心的画布帧抽取(execution.py)与 sidecar 协议共 用同一编解码(#601)。
Attributes#
Exceptions#
帧编解码失败(坏 magic、坏 dtype、长度与声明不符等)。 |
Functions#
|
把数组编码为一帧。 |
|
从 |
Module Contents#
- e2m2e.api.frames.MAGIC = 843919941#
- exception e2m2e.api.frames.FrameError#
Bases:
ValueError帧编解码失败(坏 magic、坏 dtype、长度与声明不符等)。
- e2m2e.api.frames.encode_frame(array: numpy.ndarray, dtype: str) bytes#
把数组编码为一帧。
- Args:
array: 任意布局的数组(内部规范化为 C 连续、小端)。 dtype:
"f32"或"f64",与数组当前 dtype 独立(按声明转换)。
- e2m2e.api.frames.decode_frame(buf: bytes | memoryview) tuple[numpy.ndarray, str, int]#
从
buf开头解码一帧。- Returns:
(数组, dtype 名, 消费字节数)。消费字节数让调用方在帧流后恢复 JSON 行流(JSON 行的
binary_frames声明了帧数,帧后无分隔符)。