class OnOutputTimestampHasNoOutput
Defined at line 2294 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/cpp/fidl/fuchsia.media/cpp/markers.h
Most clients can ignore the `OnOutputTimestampHasNoOutput` message.
`OnOutputTimestampHasNoOutput` is only sent by `StreamProcessor` servers
with `supports_dynamic_buffers` true.
When the server determines that a previous input packet with a given
`timestamp_ish` value will never generate any output, the server will
send this message with the `timestamp_ish` value.
This message can be thought of as a stand-in for `OnOutputPacket` when
the server eventually determines that the timestamp will never generate
any output; this is why the name starts with "OnOutput". Similar to
messages indicating output, the server will not send this message when
there is an in-progress stream-driven output re-config in progress (as
occurs starting with `OnOutputConstraints`).
While servers should send this message as soon as allowed, feasible, and
practical, there is no specific timeliness guarantee regarding when this
message will be sent by a server. For some input packets that don't
generate any output, the server may send this message fairly soon after
consuming the corresponding input packet. For other input packets that
don't generate any output, the server may not send this message until
the server can prove that the corresponding input packet will never
generate any output via delayed means such as, for example, logic
involving `max_num_reorder_frames`, or any relevant
bitstream-format-specific logic. The server is allowed to not send this
message until substantially more input is received and processed by the
server. The client must not attempt to wait on reception of this message
before sending more input, as that would create a potential deadlock.
When sent, this message will be sent at some time after the
`OnFreeInputPacket` message for the corresponding input packet that had
the same `timestamp_ish` value. The client must not delay re-use of the
input buffer until after reception of `OnOutputTimestampHasNoOutput`
because that would create a potential deadlock.
When sent, this message will be sent before the `OnOutputEndOfStream`
message for the `stream_lifetime_ordinal` stream. A server is not
required to send `OnOutputTimestampHasNoOutput` for all unresolved (in
terms of output yes/no) input timestamp_ish values prior to sending
`OnOutputEndOfStream`, and the `OnOutputEndOfStream` unambiguously
resolves the (output yes/no) status of any remaining input timestamp_ish
values tracked by the client.
The server must not output the indicated timestamp_ish value in a later
OnOutputPacket, unless the client is not ensuring that timestamp_ish
values are unique and the client is re-using the timestamp_ish value on
another input packet. The server-side mechanism to achieve this robustly
can be bitstream format specific and codec implementation specific.
This message is not required to be sent by the server when the reason
for an input packet not generating output is the client switching to a
new stream without FlushEndOfStreamAndCloseStream, stream failure, or
codec failure.
If the client is ensuring that all input packets with a given
`stream_lifetime_ordinal` have unique `timestamp_ish` values, then the
client can use this message to determine which input packet will never
generate any output.
If the client is not ensuring that all input packets have a unique
timestamp_ish value, then the client should always ignore this message,
as the protocol makes no particular gaurantees regarding this message in
this case (it may not be possible for any such client to disambiguate
which input packet is meant, the server may not send this message as
many times as there were input packets with the same `timestamp_ish`
value, the server may not send this message at all once it notices any
non-unique `timestamp_ish` values, etc).
Effective and robust use of this message may require the client to
assign timestamp_ish values as sequential unsigned 64 bit numbers, and
keep any corresponding real timestamps locally in the client.
If a client doesn't have any specific reason to pay attention to this
event, the client should ignore this event. Most clients can completely
ignore this event with no adverse impact.
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