package generator const v210RowAlignment = 128 // V210ActiveLineSize returns the number of bytes containing pixel data in one // v210 row, including the final partial six-pixel block when needed. func V210ActiveLineSize(width int) int { return (width + 5) / 6 * 16 } // V210LineSize returns the MXL v210 row stride. MXL stores every row at a // 128-byte boundary, equivalent to rounding the width up to 48 pixels. func V210LineSize(width int) int { return ((width + 47) / 48) * v210RowAlignment } // V210FrameSize returns the complete MXL payload size for a v210 frame. func V210FrameSize(width, height int) int { return V210LineSize(width) * height } // AlphaLineSize returns the byte stride of one packed 10-bit alpha row. Each // little-endian 32-bit word contains three alpha samples and two unused bits. func AlphaLineSize(width int) int { return ((width + 2) / 3) * 4 } // AlphaFrameSize returns the size of the alpha plane in a v210a frame. func AlphaFrameSize(width, height int) int { return AlphaLineSize(width) * height } // V210AFrameSize returns the total size of a v210a payload: the complete v210 // fill plane followed by the complete packed 10-bit alpha plane. func V210AFrameSize(width, height int) int { return V210FrameSize(width, height) + AlphaFrameSize(width, height) }