openOptions
Demuxer options applied between allocation and open, the only moment probesize, fflags, format forcing and protocol options can act. Passed straight to the source's pre-open funnel; a key the demuxer does not consume is reported rather than silently dropped.
These belong to the ITEM and not to the backend because the useful ones differ per file. The motivating case is Android: a picked content:// file reaches FFmpeg as the fd: protocol with "fd" set to a descriptor number, and that number is different for every file.
On Android, Apple platforms and Linux, the FFmpeg backend reads such a descriptor by position when it holds a regular file, so no open moves the file offset of the caller. You still own the descriptor and close it. A pipe is read as a stream.
A key that a typed field also sets, such as headers next to headers, refuses the open with PlaybackError.ConfigurationInvalid naming both. Neither side wins quietly.