class StreamBufferConstraints

Defined at line 11987 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

This struct conveys the buffer_constraints_version_ordinal.

Historically this table conveyed more fields than it currently does, but

those fields are all deprecated in favor of using sysmem instead.

There are separate instances of this struct for stream input and stream

output.

Notes about fields:

For uncompressed video, separate and complete frames in their

separate buffers (buffer-per-packet mode) are always a requirement.

Public Members

static const fidl_type_t * FidlType

Public Methods

bool IsEmpty ()

Returns whether no field is set.

void StreamBufferConstraints ()
void StreamBufferConstraints (StreamBufferConstraints && other)
const uint64_t & buffer_constraints_version_ordinal ()

This is a version number the server sets on the constraints to allow the

server to determine when the client has caught up with the latest

constraints sent by the server. The server won't emit output data until

the client has configured output settings and buffers with a

buffer_constraints_version_ordinal >= the latest

buffer_constraints_version_ordinal that had

buffer_constraints_action_required true. See

buffer_constraints_action_required comments for more.

A buffer_constraints_version_ordinal of 0 is not permitted, to simplify

initial state handling. Other than 0, both odd and even version ordinals

are allowed (in contrast to the stream_lifetime_ordinal, neither the

client nor server ever has a reason to consider the latest version to be

stale, so there would be no benefit to disallowing even values).

Defined at line 12007 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_buffer_constraints_version_ordinal ()

Defined at line 12011 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

uint64_t * mutable_buffer_constraints_version_ordinal ()

This is a version number the server sets on the constraints to allow the

server to determine when the client has caught up with the latest

constraints sent by the server. The server won't emit output data until

the client has configured output settings and buffers with a

buffer_constraints_version_ordinal >= the latest

buffer_constraints_version_ordinal that had

buffer_constraints_action_required true. See

buffer_constraints_action_required comments for more.

A buffer_constraints_version_ordinal of 0 is not permitted, to simplify

initial state handling. Other than 0, both odd and even version ordinals

are allowed (in contrast to the stream_lifetime_ordinal, neither the

client nor server ever has a reason to consider the latest version to be

stale, so there would be no benefit to disallowing even values).

Defined at line 12029 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_buffer_constraints_version_ordinal ()

Defined at line 12037 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const ::fuchsia::media::StreamBufferSettings & default_settings ()

Defined at line 12045 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_default_settings ()

Defined at line 12049 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

::fuchsia::media::StreamBufferSettings * mutable_default_settings ()

Defined at line 12053 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_default_settings ()

Defined at line 12061 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const uint32_t & per_packet_buffer_bytes_min ()

Defined at line 12069 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_per_packet_buffer_bytes_min ()

Defined at line 12073 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

uint32_t * mutable_per_packet_buffer_bytes_min ()

Defined at line 12077 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_per_packet_buffer_bytes_min ()

Defined at line 12085 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const uint32_t & per_packet_buffer_bytes_recommended ()

Defined at line 12093 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_per_packet_buffer_bytes_recommended ()

Defined at line 12097 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

uint32_t * mutable_per_packet_buffer_bytes_recommended ()

Defined at line 12101 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_per_packet_buffer_bytes_recommended ()

Defined at line 12109 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const uint32_t & per_packet_buffer_bytes_max ()

Defined at line 12117 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_per_packet_buffer_bytes_max ()

Defined at line 12121 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

uint32_t * mutable_per_packet_buffer_bytes_max ()

Defined at line 12125 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_per_packet_buffer_bytes_max ()

Defined at line 12133 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const uint32_t & packet_count_for_server_min ()

Defined at line 12141 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_packet_count_for_server_min ()

Defined at line 12145 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

uint32_t * mutable_packet_count_for_server_min ()

Defined at line 12149 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_packet_count_for_server_min ()

Defined at line 12157 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const uint32_t & packet_count_for_server_recommended ()

Defined at line 12165 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_packet_count_for_server_recommended ()

Defined at line 12169 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

uint32_t * mutable_packet_count_for_server_recommended ()

Defined at line 12173 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_packet_count_for_server_recommended ()

Defined at line 12181 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const uint32_t & packet_count_for_server_recommended_max ()

Defined at line 12189 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_packet_count_for_server_recommended_max ()

Defined at line 12193 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

uint32_t * mutable_packet_count_for_server_recommended_max ()

Defined at line 12197 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_packet_count_for_server_recommended_max ()

Defined at line 12205 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const uint32_t & packet_count_for_server_max ()

Defined at line 12213 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_packet_count_for_server_max ()

Defined at line 12217 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

uint32_t * mutable_packet_count_for_server_max ()

Defined at line 12221 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_packet_count_for_server_max ()

Defined at line 12229 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const uint32_t & packet_count_for_client_min ()

Defined at line 12237 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_packet_count_for_client_min ()

Defined at line 12241 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

uint32_t * mutable_packet_count_for_client_min ()

Defined at line 12245 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_packet_count_for_client_min ()

Defined at line 12253 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const uint32_t & packet_count_for_client_max ()

Defined at line 12261 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_packet_count_for_client_max ()

Defined at line 12265 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

uint32_t * mutable_packet_count_for_client_max ()

Defined at line 12269 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_packet_count_for_client_max ()

Defined at line 12277 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const uint32_t & buffer_count_for_server_current ()

If a codec has

`[fuchsia.mediacodec/DetailedCodecDescription.supports_dynamic_buffers]`

set to true, this field must be set by the server and will be the

minimum number of input or output buffers that the server needs to be

able to concurrently use (or continue using) to guarantee forward

progress. For video decoders, this number assumes a

bitstream-standard-compliant stream. Any time the server doesn't have

this many buffers available for the server's concurrent use (DPB size +

1), processing may pause, but will not fail - in this case the client

can add more buffers with AddBuffers to get the processing to start

again. When the DPB needs to reference more images, recycling an output

buffer won't necessarily cause processing to start again, as the image

may still be in the DPB, so the buffer can't be re-used yet despite

being recycled by the client.

For input, the codec may require this many buffers before the codec will

process any input. Currently, for input, this value is static per

StreamProcessor instance. The client is allowed to send QueueInput...()

messages before this many input buffers have been added, but should not

expect any output to necessarily be emitted until at least this many

input buffers have been added. This also applies for

QueueInputFormatDetails and QueueInputEndOfStream before any

QueueInputPacket, for a newly starting stream, so the first two can be

sent while there are still zero added input buffers so far. Codecs that

only need one input buffer to make forward progress (non-continuous

non-smooth forward progress still counts) should set this to one. Most

clients will want to add a low number of additional buffers to keep the

pipeline running smoothly, to avoid stalling processing while an

OnFreeInputPacket is on its way from the codec to the client. Decoders

that copy input data into a separate stream buffer (sometimes treated as

circular) typically will only need one input buffer for forward progress

to be possible, but most clients will still want to add a low number of

additional input buffers for smoother thread scheduling, even if such a

decoder core might be able to run at 100% utilization with a single

input buffer.

For video decoder output, if a client were to only `AddBuffers` this

many buffers overall, every time `OnOutputPacket` happened, the decoder

would be potentially stalled until `RecycleOutputPacket` is received at

the server. For this reason, most clients will prefer to allocate a few

more buffers, accounting for other parts of the pipeline (locally in the

client or not) that may also need to "camp" on buffers for reasons

unrelated to video decode, and possibly also a low number of additional

buffers to keep the pipeline running smoothly, to avoid stalling decode

while a free buffer on its way to being recycled or similar.

For video decoder output, when set, this value will always be less than

or equal to

`[fuchsia.mediacodec/DetailedCodecDescription.dynamic_buffers_video_decoder_output_safe]`.

This value can be updated by a new OnOutputConstraints from the server

with action_required false. However, despite "action_required" being

false, the client must still ensure that the number of buffers currently

available for concurrent use by the codec is at least this many.

If a client using dynamic buffers with a video decoder doesn't want to

pay attention to this field, the client should still pay attention to

`[fuchsia.mediacodec/DetailedCodecDescription.dynamic_buffers_video_decoder_output_safe]`.

Or the client can instead use

SetInputBufferPartialSettings/SetOutputBufferPartialSettings which has

approximately the same (potentially adverse) effect in terms of overall

buffer count (assuming a correctly operating pipeline). While these less

complicated client implementation options might initially seem like

they're wasting some memory, paying attention to

buffer_count_for_server_current (in contrast to only

dynamic_buffers_video_decoder_output_safe) only saves memory if the

stream has the needed optional fields with values less than the max DPB

size, which is unfortunately not guaranteed. In particular, h.264

streams without max_num_reorder_frames or max_dec_frame_buffering set in

vui_parameters (or anywhere else) seem more common than not (to this

author, among streams looked at so far), though this could depend

strongly on which particular set of streams a client wants to decode.

Client implementers may want to check some of the relevant streams for

relevant bitstream header fields before caring about this field and the

dynamic changes to the value conveyed by this field, for video decoders.

Also, client implementers are free to use other strategies to save

memory, such as being stingy with buffer counts but adding buffers

dynamically and quickly if it seems like the codec might be starving for

buffers (such as if downstream queued output buffers start to run low).

This sort of strategy is up to the client, and it's on the client to get

the timing right if it goes with that sort of strategy (not super easy

to get perfectly correct / tuned). The platform makes no specific

guarantee re. how quickly an additional buffer can be allocated, so a

client attempting to run with fewer than

dynamic_buffers_video_decoder_output_safe may encounter stream rendering

jank or similar, including mid-stream. The platform makes no promises

regarding the ability to avoid jank in this situation, such as if

there's a mid-stream header that increases this value for output (not

common).

Layers above are encouraged to permit storing smaller images in larger

buffers, so that mid-stream dimensions changes don't each need to

re-allocate buffers. Instead, it's almost always better to just keep

using existing larger buffers in this case, to avoid possibility of

rendering jank due to allocating buffers not always being as fast as

desired combined with output buffer count not necessarily having

sufficient extra buffers to absorb the buffer reallocation in a timing

sense. However, if a layer above really must re-allocate buffers when

the image size changes and the needed buffer size to hold the images

goes down, such a client must set force_new_buffers_for_new_dimensions

passed to CreateDecoder. Otherwise a video decoder is permitted to start

putting smaller images in the existing larger buffers, with

OnOutputFormat message(s) indicating this.

Defined at line 12436 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_buffer_count_for_server_current ()

Defined at line 12440 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

uint32_t * mutable_buffer_count_for_server_current ()

If a codec has

`[fuchsia.mediacodec/DetailedCodecDescription.supports_dynamic_buffers]`

set to true, this field must be set by the server and will be the

minimum number of input or output buffers that the server needs to be

able to concurrently use (or continue using) to guarantee forward

progress. For video decoders, this number assumes a

bitstream-standard-compliant stream. Any time the server doesn't have

this many buffers available for the server's concurrent use (DPB size +

1), processing may pause, but will not fail - in this case the client

can add more buffers with AddBuffers to get the processing to start

again. When the DPB needs to reference more images, recycling an output

buffer won't necessarily cause processing to start again, as the image

may still be in the DPB, so the buffer can't be re-used yet despite

being recycled by the client.

For input, the codec may require this many buffers before the codec will

process any input. Currently, for input, this value is static per

StreamProcessor instance. The client is allowed to send QueueInput...()

messages before this many input buffers have been added, but should not

expect any output to necessarily be emitted until at least this many

input buffers have been added. This also applies for

QueueInputFormatDetails and QueueInputEndOfStream before any

QueueInputPacket, for a newly starting stream, so the first two can be

sent while there are still zero added input buffers so far. Codecs that

only need one input buffer to make forward progress (non-continuous

non-smooth forward progress still counts) should set this to one. Most

clients will want to add a low number of additional buffers to keep the

pipeline running smoothly, to avoid stalling processing while an

OnFreeInputPacket is on its way from the codec to the client. Decoders

that copy input data into a separate stream buffer (sometimes treated as

circular) typically will only need one input buffer for forward progress

to be possible, but most clients will still want to add a low number of

additional input buffers for smoother thread scheduling, even if such a

decoder core might be able to run at 100% utilization with a single

input buffer.

For video decoder output, if a client were to only `AddBuffers` this

many buffers overall, every time `OnOutputPacket` happened, the decoder

would be potentially stalled until `RecycleOutputPacket` is received at

the server. For this reason, most clients will prefer to allocate a few

more buffers, accounting for other parts of the pipeline (locally in the

client or not) that may also need to "camp" on buffers for reasons

unrelated to video decode, and possibly also a low number of additional

buffers to keep the pipeline running smoothly, to avoid stalling decode

while a free buffer on its way to being recycled or similar.

For video decoder output, when set, this value will always be less than

or equal to

`[fuchsia.mediacodec/DetailedCodecDescription.dynamic_buffers_video_decoder_output_safe]`.

This value can be updated by a new OnOutputConstraints from the server

with action_required false. However, despite "action_required" being

false, the client must still ensure that the number of buffers currently

available for concurrent use by the codec is at least this many.

If a client using dynamic buffers with a video decoder doesn't want to

pay attention to this field, the client should still pay attention to

`[fuchsia.mediacodec/DetailedCodecDescription.dynamic_buffers_video_decoder_output_safe]`.

Or the client can instead use

SetInputBufferPartialSettings/SetOutputBufferPartialSettings which has

approximately the same (potentially adverse) effect in terms of overall

buffer count (assuming a correctly operating pipeline). While these less

complicated client implementation options might initially seem like

they're wasting some memory, paying attention to

buffer_count_for_server_current (in contrast to only

dynamic_buffers_video_decoder_output_safe) only saves memory if the

stream has the needed optional fields with values less than the max DPB

size, which is unfortunately not guaranteed. In particular, h.264

streams without max_num_reorder_frames or max_dec_frame_buffering set in

vui_parameters (or anywhere else) seem more common than not (to this

author, among streams looked at so far), though this could depend

strongly on which particular set of streams a client wants to decode.

Client implementers may want to check some of the relevant streams for

relevant bitstream header fields before caring about this field and the

dynamic changes to the value conveyed by this field, for video decoders.

Also, client implementers are free to use other strategies to save

memory, such as being stingy with buffer counts but adding buffers

dynamically and quickly if it seems like the codec might be starving for

buffers (such as if downstream queued output buffers start to run low).

This sort of strategy is up to the client, and it's on the client to get

the timing right if it goes with that sort of strategy (not super easy

to get perfectly correct / tuned). The platform makes no specific

guarantee re. how quickly an additional buffer can be allocated, so a

client attempting to run with fewer than

dynamic_buffers_video_decoder_output_safe may encounter stream rendering

jank or similar, including mid-stream. The platform makes no promises

regarding the ability to avoid jank in this situation, such as if

there's a mid-stream header that increases this value for output (not

common).

Layers above are encouraged to permit storing smaller images in larger

buffers, so that mid-stream dimensions changes don't each need to

re-allocate buffers. Instead, it's almost always better to just keep

using existing larger buffers in this case, to avoid possibility of

rendering jank due to allocating buffers not always being as fast as

desired combined with output buffer count not necessarily having

sufficient extra buffers to absorb the buffer reallocation in a timing

sense. However, if a layer above really must re-allocate buffers when

the image size changes and the needed buffer size to hold the images

goes down, such a client must set force_new_buffers_for_new_dimensions

passed to CreateDecoder. Otherwise a video decoder is permitted to start

putting smaller images in the existing larger buffers, with

OnOutputFormat message(s) indicating this.

Defined at line 12547 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_buffer_count_for_server_current ()

Defined at line 12555 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_pixel_format ()

Defined at line 12678 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

::fuchsia::images2::PixelFormat * mutable_pixel_format ()

Clients are free to ignore this field.

This field is set iff

`[fuchsia.mediacodec/DetailedCodecDescription.supports_dynamic_buffers]`

is true and the indicating port is conveying uncompressed video.

This field is provided for informational purposes, for clients that may

want to know this information. However, the StreamProcessor and sysmem

protocols work fine without the client ever reading this field.

Among the pixel formats supported by the StreamProcessor server which

can carry the full bit depth of the images, and which are broadly

supported for carrying images of the needed bit depth, and assuming

linear pixel_format_modifier, this is the pixel format that is most

performant for the StreamProcessor considered in isolation. If multiple

qualified formats are essentially the same performance, this should be

the most common format (or chosen arbitrarily among roughly

equally-common formats). Most StreamProcessor servers will hard code a

particular format to put in this field for each supported bit depth.

Currently, there is no anticipated need for a list here, but please

don't hesitate to reach out if a non-test scenario is encountered which

can only be addressed by having a list here (or by attempting several

test allocations via ParticipateInBufferAllocation, or by adding a

sysmem feature).

In general, sysmem is not guaranteed to select this pixel format, since

that depends on the full set of pixel formats supported by the

StreamProcessor instance and other sysmem participants. If only the

client and StreamProcessor are sysmem participants (such as in some

tests), if the client requires this pixel format, buffer allocation can

still succeed. Typical non-test clients will not need or want to

constrain the sysmem allocation to only allow this pixel format, as that

would be more likely to fail allocation in comparison to letting sysmem

pick a format mutually supported by all participants.

Defined at line 12717 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_pixel_format ()

Defined at line 12725 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

StreamBufferConstraints & set_buffer_constraints_version_ordinal (uint64_t _value)
StreamBufferConstraints & set_default_settings (::fuchsia::media::StreamBufferSettings _value)
StreamBufferConstraints & set_per_packet_buffer_bytes_min (uint32_t _value)
StreamBufferConstraints & set_per_packet_buffer_bytes_recommended (uint32_t _value)
StreamBufferConstraints & set_per_packet_buffer_bytes_max (uint32_t _value)
StreamBufferConstraints & set_packet_count_for_server_min (uint32_t _value)
StreamBufferConstraints & set_packet_count_for_server_recommended (uint32_t _value)
StreamBufferConstraints & set_packet_count_for_server_recommended_max (uint32_t _value)
StreamBufferConstraints & set_packet_count_for_server_max (uint32_t _value)
StreamBufferConstraints & set_packet_count_for_client_min (uint32_t _value)
StreamBufferConstraints & set_packet_count_for_client_max (uint32_t _value)
StreamBufferConstraints & set_buffer_count_for_server_current (uint32_t _value)
StreamBufferConstraints & set_pixel_format (::fuchsia::images2::PixelFormat _value)
const bool & single_buffer_mode_allowed ()

Defined at line 12285 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_single_buffer_mode_allowed ()

Defined at line 12289 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool * mutable_single_buffer_mode_allowed ()

Defined at line 12293 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_single_buffer_mode_allowed ()

Defined at line 12301 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const bool & is_physically_contiguous_required ()

Defined at line 12309 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_is_physically_contiguous_required ()

Defined at line 12313 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool * mutable_is_physically_contiguous_required ()

Defined at line 12317 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_is_physically_contiguous_required ()

Defined at line 12325 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

StreamBufferConstraints & set_single_buffer_mode_allowed (bool _value)
StreamBufferConstraints & set_is_physically_contiguous_required (bool _value)
const ::fuchsia::math::SizeU & size ()

Clients are free to ignore this field.

This field is set iff

`[fuchsia.mediacodec/DetailedCodecDescription.supports_dynamic_buffers]`

is true and the indicating port is outputting uncompressed video.

This field is provided for informational purposes, for clients that may

want to know this information. However, the StreamProcessor and sysmem

protocols work fine without the client ever reading this field.

This is the required coded size, without any cropping down to display

size.

If the client gets directly involved as a sysmem participant, the client

should not set constraints which are incompatible with this size, or

allocation will fail. This field should not be taken to imply that a

given buffer only has a single allowed image size. That is incorrect in

general. Rather, this field indicates a size which will be covered by

the required_min_size and required_max_size set by the StreamProcessor

sysmem participant using token passed into

SetInputBufferPartialSettings, SetOutputBufferPartialSettings, or

ParticipateInBufferAllocation.

Despite this size indicating a specific width and height, the allocated

buffers may permit a range of image sizes (for video decoder output or

video encoder input).

Defined at line 12589 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

bool has_size ()

Defined at line 12593 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

::fuchsia::math::SizeU * mutable_size ()

Clients are free to ignore this field.

This field is set iff

`[fuchsia.mediacodec/DetailedCodecDescription.supports_dynamic_buffers]`

is true and the indicating port is outputting uncompressed video.

This field is provided for informational purposes, for clients that may

want to know this information. However, the StreamProcessor and sysmem

protocols work fine without the client ever reading this field.

This is the required coded size, without any cropping down to display

size.

If the client gets directly involved as a sysmem participant, the client

should not set constraints which are incompatible with this size, or

allocation will fail. This field should not be taken to imply that a

given buffer only has a single allowed image size. That is incorrect in

general. Rather, this field indicates a size which will be covered by

the required_min_size and required_max_size set by the StreamProcessor

sysmem participant using token passed into

SetInputBufferPartialSettings, SetOutputBufferPartialSettings, or

ParticipateInBufferAllocation.

Despite this size indicating a specific width and height, the allocated

buffers may permit a range of image sizes (for video decoder output or

video encoder input).

Defined at line 12623 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

void clear_size ()

Defined at line 12631 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

const ::fuchsia::images2::PixelFormat & pixel_format ()

Clients are free to ignore this field.

This field is set iff

`[fuchsia.mediacodec/DetailedCodecDescription.supports_dynamic_buffers]`

is true and the indicating port is conveying uncompressed video.

This field is provided for informational purposes, for clients that may

want to know this information. However, the StreamProcessor and sysmem

protocols work fine without the client ever reading this field.

Among the pixel formats supported by the StreamProcessor server which

can carry the full bit depth of the images, and which are broadly

supported for carrying images of the needed bit depth, and assuming

linear pixel_format_modifier, this is the pixel format that is most

performant for the StreamProcessor considered in isolation. If multiple

qualified formats are essentially the same performance, this should be

the most common format (or chosen arbitrarily among roughly

equally-common formats). Most StreamProcessor servers will hard code a

particular format to put in this field for each supported bit depth.

Currently, there is no anticipated need for a list here, but please

don't hesitate to reach out if a non-test scenario is encountered which

can only be addressed by having a list here (or by attempting several

test allocations via ParticipateInBufferAllocation, or by adding a

sysmem feature).

In general, sysmem is not guaranteed to select this pixel format, since

that depends on the full set of pixel formats supported by the

StreamProcessor instance and other sysmem participants. If only the

client and StreamProcessor are sysmem participants (such as in some

tests), if the client requires this pixel format, buffer allocation can

still succeed. Typical non-test clients will not need or want to

constrain the sysmem allocation to only allow this pixel format, as that

would be more likely to fail allocation in comparison to letting sysmem

pick a format mutually supported by all participants.

Defined at line 12674 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/hlcpp/fuchsia/media/cpp/fidl.h

StreamBufferConstraints & set_size (::fuchsia::math::SizeU _value)
void ~StreamBufferConstraints ()
StreamBufferConstraints & operator= (StreamBufferConstraints && other)
::std::unique_ptr<StreamBufferConstraints> New ()
void Encode (::fidl::Encoder * _encoder, size_t _offset, std::optional< ::fidl::HandleInformation> maybe_handle_info)
void Decode (::fidl::Decoder * _decoder, StreamBufferConstraints * _value, size_t _offset)
zx_status_t Clone (StreamBufferConstraints * _result)