Stream Features

Video Stream Feature (0x201)

Video Stream

Feature ID

0x201

Version

0x001

(0.1)

Pointer Count

12

Bootstrap ID

0x2010010C

(Max pointers)

Pointer 0

String

Description

Pointer 1

Reg 32

Stream Config

Pointer 2

Reg 32

Delay

Pointer 3

Reg 64

Dest MAC Addr (MSBs)

Pointer 4

Reg 32

Dest IP Addr

Pointer 5

Reg 32

Dest Port

Pointer 6

Reg 32

Source Port

Pointer 7

Reg 32

Pixels Per Line (Width)

Pointer 8

Reg 32

Lines Per Frame (Height)

Pointer 9

Reg 32

Pixel Format

Pointer 10

Reg 32

X Offset

Pointer 11

Reg 32

Y Offset

Description (Pointer 0)

Stream Config (Pointer 1)

Stream Config Register
Field bits msb

Fire Test Pkt

1

31

Stream Format

4

23

Enable Stream

1

16

Max Pkt Size

15

15

Fire Test Packet Field

Set to 1 to launch a single test packet of the Max Packet Size.

Self clearing.

Stream Format

Selects Stream Format option for the stream.

Enable Stream

Set to 1 to enable the stream.

Max Packet Size

Set to limit the maximum packet size.

Max Packet size may also be restricted by an internal hardware limit.

Setting Max Packet Size to 0 will disable the stream.

Delay (Pointer 2)

Count of clocks to delay between stream packets. May be 0. Ethernet minimum interpacket gaps must be enforced by logic.

Destination MAC Address (Pointer 3)

Not required for EEVideo devices with ARP capability.

Destination IP Address (Pointer 4)

32-bit IPv4 address.

Destination Port (Pointer 5)

Destination UDP Port as required by host.

Source Port (Pointer 6)

Source UDP Port as required by host.

Pixels per Line (Width) (Pointer 7)

Lines per Frame (Height) (Pointer 8)

Pixel Format (Pointer 9)

Index of the selected Parametric Pixel Format feature.

X Offset (Pointer 10)

Pixel offset from left side of original frame.

Y Offset (Pointer 11)

Pixel offset from top side of original frame.

Parametric Pixel Format (0x210)

EEVideo pixel formats are declared with Parametric Pixel Format descriptions.

Embedded systems require maximum flexibility for pixel formats. Traditional standards limit formats to predefined legacy video types. Modern embedded applications increasingly use non-visible wavelengths, depth sensing, hyper-spectral imaging, and other custom data that do not fit classic video formats.

EEVideo uses a parametric description system instead of a fixed list. This enables the widest possible range of formats — including legacy ones (HDR monochrome, RGBA, sub-sampled YUV, Bayer) and future ones (hyper-spectral, 3D, event-based) — while allowing drivers and host processors to understand buffering requirements and frame sizes without knowing every component detail.

This also simplifies device implementation. Stream generators can use parametric fields to format the output stream rather than maintain large implementation specific look-up tables.

Parametric Pixel Format

Feature ID

0x210

a

Version

0x001

(0.1)

Pointer Count

4

b

Bootstrap ID

0x21000104

(Max pointers)

Pointer 0

String

Description

Pointer 1

Reg 32

Pixel Group Format Register

Pointer 2

Reg 32

Valid Streams (bit-field)

Pointer 3

Reg 32

Stream XRef Count

Description (Pointer 0)

User-defined null-terminated string that describes the format.

Pixel Group Format Register (Pointer 1)

The pixel Format register points to the first register of the list of registers that define the format.

The parametric format is built around repeating sample groups. A group is the smallest set of samples that repeats across the frame. * For monochrome: the group is one sample. * For RGB or YUV 4:4:4: the group contains 3 samples. * For Bayer or YUV 4:2:2: the group is more complex but still fully described.

The Pixel Group Format Register defines the relationship between sample groups and image pixels.

Pixel Group Format Register
Field Name Bits Description

Y Samples per Group

4

Number of sample lines required for each sample group

X Samples per Group

4

Number of samples on each line included in the group

Y Pixels per Group

4

Number of pixel lines represented by the group

X Pixels per Group

4

Number of pixels in each line represented by the group

Interleaved Columns

4

Number of column bands (multi-tap sensors)

Interleaved Rows

4

Number of row bands (multi-tap sensors)

Bits per Pixel

8

Total bits required to represent one image pixel pixel

Standard Format Examples

Standard Format Examples
Format Y s/g X s/g Y p/g X p/g ICols IRows BPP Comps

Monochrome 8

1

1

1

1

1

1

8

1

Monochrome 12

1

1

1

1

1

1

12

1

RGB 8:8:8

1

3

1

1

1

1

24

3

RGB 5:6:5

1

3

1

1

1

1

16

3

RGBA 10-bit

1

4

1

1

1

1

40

4

YUV 4:4:4 10

1

3

1

1

1

1

30

3

YUV 4:2:2 12

1

4

1

2

1

1

24

4

YUV 4:1:1 8

2

3

2

2

1

1

12

6

Bayer GRBG 10

2

2

2

2

1

1

10

4

Field Descriptions

Y / X Samples per Group

Number of raw samples in each repeating group (vertical × horizontal).

For single sample (Mono) formats, they are always 1.

For RGB, RGBA, YUV 4:4:4, and 4:2:2, Y is still one because the samples are the same for each line. X indicates the number of samples of different types (i.e. 3 for RGB, 4 for YUV 4:2:2 which is delivered U,Y,V,Y).

Y Samples/Group is two for YUV 4:1:1 and Bayer patterns because those patterns are not the same on consecutive lines, but repeat every 2 lines.

Y / X Pixels per Group

Number of actual image pixels represented by one sample group. This allows correct frame-size calculation even when multiple samples map to one pixel (e.g. Bayer or 4:2:2).

Y and X Samples/Pixel indicates the number pixels represented by each sample group. Frame sizes are specified by X and Y pixel dimensions, but the data stream may deliver multiple samples per pixel. These Pixels/Group provides the group to pixel mapping.

For single sample formats Y and X Pixels/Group are always 1. For many multi-sample formats Y is still 1 and X represents the sample count, just like the group fields. These fields may differ from the Samples/Group settings when individual pixels are represented by different sets of samples.

Bayer and half-band chroma patterns are good examples. Each pixel in YUV 4:2:2 requires 1 Y, 2 X subgroup. For Bayer patterns, each pixel requires only 1 X and 1 Y sample out of the 2x2 group so each group provide 2x2 pixels.

Interleaved Columns / Rows

Number of column or row bands delivered by multi-tap sensors (usually 1,1 for non-interleaved delivery).

Bits Per Pixel

Total of bits needed to represent one image pixel pixel. Used with frame width/height to calculate buffer size.

Sample Type Registers (Pointer 1 + x)

Immediately following the Pixel Group Format Register are one or more Sample Type Registers (one per sample in the group).

Sample types must be listed in the order the samples arrive.

Sample Type Registers
Field Bits Description

Type

8

Top-level sample category

Sub-type

12

Specific variant or standard

Pad Bits

4

Padding bits for byte alignment

Bit Depth

8

Valid data bits per sample

Sample Type Field (8-bit)

The 8 bit sample type field contains an index to the EEVideo sample type list.

The sample type list is short and only defines the most general category of the sample. Each Type has a list of sub-types that more specifically define the qualities of the actual sample. In many cases, the simple Type identifier will be adequate for classifying the format and selecting processing options.

Sample types are defined in the appendix.

Sample Sub-type Field

Specific assignments are TBD. Sub-types can express conformance to particular video standards like sRGB, SMPTE, or ITU-R BT component specifications. Sub-types may indicate raw, unprocessed, sensor data. Sub-types may indicate linear or non-linear (gamma) scales. Sub-types may indicate bandwidth limiting (half,full) of the sample.

Sub-type assignment lists are unique for each top level Sample Type.

User defined sub-types are also available.

Sub-type lists are expected to grow over the life of the EEVideo specification.

Pad Bits Field (packing)

By default samples in EEVideo streams are packed together, not byte aligned. This allows 4x 12 bit pixels to fit in a 6 byte (48 bit) window. This increases channel efficiency, but may require unpacking effort from the host.

If byte aligned samples are desired, pad bits may be added in front of the sample data. For example, adding 4 pad bits would extend a 12 bit sample to 16 bits (2 bytes) in the stream data. Now those same 4 pixels require 8 bytes of stream bandwidth, but the host will not be responsible for bit manipulations to separate the samples.

Bit Depth Field

The Bit Depth Field reports the bit resolution of each sample type. Samples frequently use the same resolution for all sample types, but this is not required. RGB 565 is an example.

Valid Streams (Pointer 2)

Bit-field indicating which streams support this Pixel Format (bit 0 = stream 0, etc.).

An EEVideo device may support multiple streams and all streams may not support all pixel formats.

Stream XRef Count (Pointer 3)

EEVideo format streams include the Format Feature index in Start of Frame packets to identify the pixel format.

Other streaming formats use other identifiers.

The Stream XRef Count register indicates the number of alternate stream packet formats able to use this pixel format.

Stream XRef Format (Pointer 3 + 1 + n×2)

Indicates to which alternate stream packet feature this cross reference applies.

Stream XRef Value (Pointer 3 + 2 + n×2)

Provides the pixel format identifier for the alternate stream packet protocol.