CustomAction
class CustomAction(@DrawableRes val iconRes: Int, val contentDescription: String? = null, val onClick: () -> Unit)
A host-supplied icon button rendered inline in the player's top-end control row, to the LEFT of the Cast button — icon-only by design (no labels). Custom actions are part of the control chrome: they appear and hide with the controls and are suppressed during ad breaks. Up to 8 per player via OGUiConfig.Builder.setCustomActions.
Overlay slots (OGPlayerView overlays) remain the right tool for persistent, non-chrome elements (watermarks, logos) — those stay visible while the controls are hidden and render below the control line.