class OnOutputFormat
Defined at line 1240 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/cpp/fidl/fuchsia.media/cpp/markers.h
This message is sent by the server before the first output packet of any
stream, and potentially mid-stream between output packets of the stream,
ordered with respect to output packets, and ordered with respect to
OnOutputConstraints().
The server guarantees that the first packet of every stream will be
preceeded by an OnOutputFormat().
The server guarantees that there will be an OnOutputFormat() between an
OnOutputConstraints() with buffer_constraints_action_required true and an
OnOutputPacket(). In other words, the client is essentially allowed to
forget what the output format is on any OnOutputConstraints() with
buffer_constraints_action_required true, because the server promises a
subsequent OnOutputFormat() before any OnOutputPacket().
If the server sets buffer_constraints_action_required true in
OnOutputConstraints(), the server won't send OnOutputFormat() (and
therefore also won't send OnOutputPacket()) until the client has
re-configured output buffers.
The server is allowed to send an OnOutputFormat() mid-stream between two
output packets.
A server won't send two adjacent OnOutputFormat() messages without any
output packet in between. However an OnOutputFormat() message doesn't
guarantee a subsequent packet, because for example the server could send
OnOutputEndOfStream() or OnStreamFailed() instead.
A client that does not wish to seamlessly handle mid-stream output format
changes should either ensure that no stream processed by the client
ever has any mid-stream format change, or the client should ensure that
any retry of processing starts the new attempt at a point logically at or
after the point where the old format has ended and the new format starts,
else the client could just hit the same mid-stream format change again.
An example of this message being sent mid-stream is mid-stream change
of dimensions of video frames output from a video decoder.
Not all servers will support seamless handling of format change. Those
that do support seamless handling of format change may require that the
format change not also require output buffer re-config, in order for the
handling to be seamless. See the comment block for OnOutputConstraints()
for more discussion of how servers and clients should behave - in
particular when they don't seamlessly handle output constraint change
and/or output format change.
If this message isn't being sent by the server when expected at the
start of a stream, the most common reason is that a OnOutputConstraints()
with buffer_constraints_action_required true hasn't been processed by the
client (by configuring output buffers using
SetOutputBufferPartialSettings() etc).
Public Members
static const bool kHasClientToServer
static const bool kHasClientToServerBody
static const bool kHasServerToClient
static const bool kHasServerToClientBody
static const bool kHasNonEmptyUserFacingResponse
static const bool kHasDomainError
static const bool kHasFrameworkError
static const uint64_t kOrdinal