class CreateDecoder_Params

Defined at line 84 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

Public Members

static const fidl_type_t * FidlType

Public Methods

bool IsEmpty ()

Returns whether no field is set.

CreateDecoder_Params & set_input_details (::fuchsia::media::FormatDetails _value)
CreateDecoder_Params & set_promise_separate_access_units_on_input (bool _value)
CreateDecoder_Params & set_require_can_stream_bytes_input (bool _value)
CreateDecoder_Params & set_require_can_find_start (bool _value)
CreateDecoder_Params & set_require_can_re_sync (bool _value)
CreateDecoder_Params & set_require_report_all_detected_errors (bool _value)
CreateDecoder_Params & set_require_hw (bool _value)
CreateDecoder_Params & set_permit_lack_of_split_header_handling (bool _value)
CreateDecoder_Params & set_secure_output_mode (::fuchsia::mediacodec::SecureMemoryMode _value)
CreateDecoder_Params & set_secure_input_mode (::fuchsia::mediacodec::SecureMemoryMode _value)
CreateDecoder_Params & set_require_sw (bool _value)
void CreateDecoder_Params ()
void CreateDecoder_Params (CreateDecoder_Params && other)
void ~CreateDecoder_Params ()
CreateDecoder_Params & operator= (CreateDecoder_Params && other)
::std::unique_ptr<CreateDecoder_Params> New ()
void Encode (::fidl::Encoder * _encoder, size_t _offset, std::optional< ::fidl::HandleInformation> maybe_handle_info)
void Decode (::fidl::Decoder * _decoder, CreateDecoder_Params * _value, size_t _offset)
zx_status_t Clone (CreateDecoder_Params * _result)
const ::fuchsia::media::FormatDetails & input_details ()

Input mime type for a decoder.

The recognized mime types for now:

video/h264

video/vp9

audio/aac

input_details.oob_bytes must be an AudioSpecificConfig() as defined

by AAC spec.

audio/sbc

input_details.oob_bytes must be Codec Specific Information Elements

for SBC as defined by the A2DP spec.

Defined at line 101 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool has_input_details ()

Defined at line 105 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

::fuchsia::media::FormatDetails * mutable_input_details ()

Input mime type for a decoder.

The recognized mime types for now:

video/h264

video/vp9

audio/aac

input_details.oob_bytes must be an AudioSpecificConfig() as defined

by AAC spec.

audio/sbc

input_details.oob_bytes must be Codec Specific Information Elements

for SBC as defined by the A2DP spec.

Defined at line 120 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

void clear_input_details ()

Defined at line 128 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

const bool & promise_separate_access_units_on_input ()

This must be true in order for the client to be permitted to put a

timestamp on an input packet, which is in turn required to get any

timestamps on any output packets.

It is always legal to provide separate Access Units (henceforth AUs) to a

decoder, but this boolean must be true for a decoder to accept and

propagate timestamp values.

This must be true when creating a video encoder, or the CodecFactory

channel will close.

If not set, interpreted as false.

Defined at line 148 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool has_promise_separate_access_units_on_input ()

Defined at line 152 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool * mutable_promise_separate_access_units_on_input ()

This must be true in order for the client to be permitted to put a

timestamp on an input packet, which is in turn required to get any

timestamps on any output packets.

It is always legal to provide separate Access Units (henceforth AUs) to a

decoder, but this boolean must be true for a decoder to accept and

propagate timestamp values.

This must be true when creating a video encoder, or the CodecFactory

channel will close.

If not set, interpreted as false.

Defined at line 168 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

void clear_promise_separate_access_units_on_input ()

Defined at line 176 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

const bool & require_can_stream_bytes_input ()

Require that the selected codec be capable of accepting input where

AUs are not separated into separate packets.

This does not imply that the decoder can find the start of the first AU;

for that see require_can_find_start. This does not imply that the decoder

can re-sync on its own if the stream data is damaged; for that see

require_can_re_sync.

If both promise_separate_access_units_on_input and

require_can_stream_bytes_input are true, the CodecFactory channel will

close.

If this is false, the client must feed separate AUs on the fuchsia.ui.input. This

must be false for a video encoder, and if true the CodecFactory channel

will close.

Unless a client demands a decoder capable of taking concatenated AUs

(require_can_stream_bytes_input true), the client must feed a decoder

separate AUs. This means the client cannot have parts of two separate AUs

in the same packet, unless require_can_stream_bytes_input is true.

If not set, interpreted as false.

Defined at line 206 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool has_require_can_stream_bytes_input ()

Defined at line 210 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool * mutable_require_can_stream_bytes_input ()

Require that the selected codec be capable of accepting input where

AUs are not separated into separate packets.

This does not imply that the decoder can find the start of the first AU;

for that see require_can_find_start. This does not imply that the decoder

can re-sync on its own if the stream data is damaged; for that see

require_can_re_sync.

If both promise_separate_access_units_on_input and

require_can_stream_bytes_input are true, the CodecFactory channel will

close.

If this is false, the client must feed separate AUs on the fuchsia.ui.input. This

must be false for a video encoder, and if true the CodecFactory channel

will close.

Unless a client demands a decoder capable of taking concatenated AUs

(require_can_stream_bytes_input true), the client must feed a decoder

separate AUs. This means the client cannot have parts of two separate AUs

in the same packet, unless require_can_stream_bytes_input is true.

If not set, interpreted as false.

Defined at line 236 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

void clear_require_can_stream_bytes_input ()

Defined at line 244 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

const bool & require_can_find_start ()

A decoder is allowed to be capable of streaming bytes but not capable of

searching for the start of the first usable AU. To require both, set both

require_can_stream_bytes_input and require_can_find_start. Setting

require_can_find_start without require_can_stream_bytes_input is invalid.

With require_can_stream_bytes_input true but require_can_find_start false,

the client must start the first packet with the start of an AU, but can

send a stream of bytes after that.

If not set, interpreted as false.

Defined at line 262 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool has_require_can_find_start ()

Defined at line 266 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool * mutable_require_can_find_start ()

A decoder is allowed to be capable of streaming bytes but not capable of

searching for the start of the first usable AU. To require both, set both

require_can_stream_bytes_input and require_can_find_start. Setting

require_can_find_start without require_can_stream_bytes_input is invalid.

With require_can_stream_bytes_input true but require_can_find_start false,

the client must start the first packet with the start of an AU, but can

send a stream of bytes after that.

If not set, interpreted as false.

Defined at line 280 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

void clear_require_can_find_start ()

Defined at line 288 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

const bool & require_can_re_sync ()

On problematic input data, all decoders are expected to at least be able to

close the channel rather than getting stuck in a failed and/or broken

state.

A decoder returned from a request with require_can_re_sync is potentially

able to handle damaged input without closing the Codec channel. Such a

Codec is encouraged, but not required, to also satisfy requirements of

require_report_all_detected_errors.

If not set, interpreted as false.

Defined at line 306 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool has_require_can_re_sync ()

Defined at line 310 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool * mutable_require_can_re_sync ()

On problematic input data, all decoders are expected to at least be able to

close the channel rather than getting stuck in a failed and/or broken

state.

A decoder returned from a request with require_can_re_sync is potentially

able to handle damaged input without closing the Codec channel. Such a

Codec is encouraged, but not required, to also satisfy requirements of

require_report_all_detected_errors.

If not set, interpreted as false.

Defined at line 324 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

void clear_require_can_re_sync ()

Defined at line 332 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

const bool & require_report_all_detected_errors ()

Sometimes a client would rather fail an overall use of a decoder than fail

to notice data corruption. For such scenarios, the client can specify

require_report_all_detected_errors. For any codec returned from a

request with require_report_all_detected_errors set, on detection of

any input data corruption the codec will report in one or more of these

ways:

* closing the Codec channel

* OnStreamFailed()

* error_detected_before

* error_detected_during

If false, a codec may silently skip past corrupted input data.

No decoder can detect all corruption, because some corruption can look like

valid stream data. This requirement is only to request a codec that

is written to attempt to detect _and report_ input stream corruption.

This flag is not intended to be 100% bulletproof. If a client needs robust

assurance that _all_ detectable stream corruption is _always_ detected,

this flag is not enough of a guarantee to achieve that. Since some stream

corruption is inherently non-detectable in any case, such a client should

consider using stronger techniques upstream to ensure that corruption can

be detected with the needed probability very close to 1.

This flag being true doesn't imply anything about whether the codec will

discard damaged data vs. producing corresponding damaged output. Only that

the codec will set error_detected_* bools to true when appropriate.

Regardless of this setting, not all timestamp_ish values provided on input

are guaranteed to show up on output.

If not set, interpreted as false.

Defined at line 372 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool has_require_report_all_detected_errors ()

Defined at line 376 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool * mutable_require_report_all_detected_errors ()

Sometimes a client would rather fail an overall use of a decoder than fail

to notice data corruption. For such scenarios, the client can specify

require_report_all_detected_errors. For any codec returned from a

request with require_report_all_detected_errors set, on detection of

any input data corruption the codec will report in one or more of these

ways:

* closing the Codec channel

* OnStreamFailed()

* error_detected_before

* error_detected_during

If false, a codec may silently skip past corrupted input data.

No decoder can detect all corruption, because some corruption can look like

valid stream data. This requirement is only to request a codec that

is written to attempt to detect _and report_ input stream corruption.

This flag is not intended to be 100% bulletproof. If a client needs robust

assurance that _all_ detectable stream corruption is _always_ detected,

this flag is not enough of a guarantee to achieve that. Since some stream

corruption is inherently non-detectable in any case, such a client should

consider using stronger techniques upstream to ensure that corruption can

be detected with the needed probability very close to 1.

This flag being true doesn't imply anything about whether the codec will

discard damaged data vs. producing corresponding damaged output. Only that

the codec will set error_detected_* bools to true when appropriate.

Regardless of this setting, not all timestamp_ish values provided on input

are guaranteed to show up on output.

If not set, interpreted as false.

Defined at line 412 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

void clear_require_report_all_detected_errors ()

Defined at line 420 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

const bool & require_hw ()

If true, require that the returned codec is HW-accelerated. See also

`require_sw`.

If not set, interpreted as false.

Defined at line 432 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool has_require_hw ()

Defined at line 436 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool * mutable_require_hw ()

If true, require that the returned codec is HW-accelerated. See also

`require_sw`.

If not set, interpreted as false.

Defined at line 444 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

void clear_require_hw ()

Defined at line 452 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

const bool & permit_lack_of_split_header_handling ()

permit_lack_of_split_header_handling

This field is a temporary field that will be going away.

TODO(dustingreen): Remove this field once we're down to zero codecs with

problems handling split headers.

By default, a Codec instance is required to handle "split headers", meaning

that a client is allowed to deliver parts of an AU one byte at a time,

including parts near the beginning of the AU, and the codec is required to

tolerate and handle that properly. However, unfortunately not all codecs

properly support split headers. If a client is willing to permit such a

codec to be used, the client can set this to true. Clients are not

encouraged to set this, but setting it may be necessary to find a codec for

some formats _for now_. If a client sets this to true, the client should

deliver data of each AU with many contiguous non-split bytes from the start

of each AU. The client is not strictly required to deliver one AU at a

time, only to ensure that either all the AU bytes are in a single packet or

that many bytes at the start of each AU are in a single packet.

The specification for how a client should use this and how a client should

behave if setting this to true is intentionally vague, because lack of

support for header splitting is not ideal, and is expected to be

temporary, and all codecs should handle split headers in the long run.

The main intent of this field is to avoid giving an innocent client using

default value of false here a codec that can't properly handle split

headers. This is not an attempt at a mechanism to fully work around a

codec that doesn't handle split headers.

If not set, interpreted as false.

Defined at line 490 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool has_permit_lack_of_split_header_handling ()

Defined at line 494 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool * mutable_permit_lack_of_split_header_handling ()

permit_lack_of_split_header_handling

This field is a temporary field that will be going away.

TODO(dustingreen): Remove this field once we're down to zero codecs with

problems handling split headers.

By default, a Codec instance is required to handle "split headers", meaning

that a client is allowed to deliver parts of an AU one byte at a time,

including parts near the beginning of the AU, and the codec is required to

tolerate and handle that properly. However, unfortunately not all codecs

properly support split headers. If a client is willing to permit such a

codec to be used, the client can set this to true. Clients are not

encouraged to set this, but setting it may be necessary to find a codec for

some formats _for now_. If a client sets this to true, the client should

deliver data of each AU with many contiguous non-split bytes from the start

of each AU. The client is not strictly required to deliver one AU at a

time, only to ensure that either all the AU bytes are in a single packet or

that many bytes at the start of each AU are in a single packet.

The specification for how a client should use this and how a client should

behave if setting this to true is intentionally vague, because lack of

support for header splitting is not ideal, and is expected to be

temporary, and all codecs should handle split headers in the long run.

The main intent of this field is to avoid giving an innocent client using

default value of false here a codec that can't properly handle split

headers. This is not an attempt at a mechanism to fully work around a

codec that doesn't handle split headers.

If not set, interpreted as false.

Defined at line 528 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

void clear_permit_lack_of_split_header_handling ()

Defined at line 536 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

const ::fuchsia::mediacodec::SecureMemoryMode & secure_output_mode ()

If set to ON, the decoder must support secure buffers on output, and

must reject non-secure buffers on output.

If set to OFF or not set, the created decoder will reject secure buffers

on output by closing the StreamProcessor channel.

If secure_input_mode ON, secure_output_mode must also be ON.

Defined at line 551 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool has_secure_output_mode ()

Defined at line 555 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

::fuchsia::mediacodec::SecureMemoryMode * mutable_secure_output_mode ()

If set to ON, the decoder must support secure buffers on output, and

must reject non-secure buffers on output.

If set to OFF or not set, the created decoder will reject secure buffers

on output by closing the StreamProcessor channel.

If secure_input_mode ON, secure_output_mode must also be ON.

Defined at line 566 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

void clear_secure_output_mode ()

Defined at line 574 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

const ::fuchsia::mediacodec::SecureMemoryMode & secure_input_mode ()

If set to ON, the decoder must support secure buffers on input and must

reject non-secure buffers on input.

If set to OFF or not set, the created decoder will reject secure buffers

on input by closing the StreamProcessor channel.

If secure_input_mode ON, secure_output_mode must also be ON.

Defined at line 589 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool has_secure_input_mode ()

Defined at line 593 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

::fuchsia::mediacodec::SecureMemoryMode * mutable_secure_input_mode ()

If set to ON, the decoder must support secure buffers on input and must

reject non-secure buffers on input.

If set to OFF or not set, the created decoder will reject secure buffers

on input by closing the StreamProcessor channel.

If secure_input_mode ON, secure_output_mode must also be ON.

Defined at line 604 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

void clear_secure_input_mode ()

Defined at line 612 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

const bool & require_sw ()

If true, require that the returned codec is entirely SW-based, not

HW-accelerated (other than possibly using vector CPU instructions).

This can be useful for testing purposes or other special scenarios, but

is not recommended for performance-sensitive scenarios. Also, some

builds may lack a SW-based decoder for some formats. See also

`require_hw`.

If not set, interpreted as false.

Defined at line 628 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool has_require_sw ()

Defined at line 632 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

bool * mutable_require_sw ()

If true, require that the returned codec is entirely SW-based, not

HW-accelerated (other than possibly using vector CPU instructions).

This can be useful for testing purposes or other special scenarios, but

is not recommended for performance-sensitive scenarios. Also, some

builds may lack a SW-based decoder for some formats. See also

`require_hw`.

If not set, interpreted as false.

Defined at line 644 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h

void clear_require_sw ()

Defined at line 652 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h