outputSize

The surface this renderer draws into, in PHYSICAL pixels, or null when it cannot say.

Subtitles are the reason this exists. Text rasterised on a canvas the size of the VIDEO and then stretched to the surface is text resampled once before it is ever seen: an 800p film on a 1125 pixel tall phone drew 40 pixel glyphs and scaled them up by 1.4, which is the soft, pixellated lettering every other player avoids by rasterising at the size it will actually draw at. A renderer that answers here gets its text drawn at 1:1 instead.

The engine lays the overlay out for this size, rule 2 of docs/subtitle-placement.md. Null makes it lay out for the picture's display size, turned upright, which suits a renderer whose output is the picture itself. A renderer that draws bars of its own must answer, or the picture-shaped overlay is stretched over an output of another shape. The engine reads this on its subtitle passes, never per frame, and lays the overlay out again when it changes.