class DetailedCodecDescription

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

Clients needing codec information prior to just requesting a codec with

CodecFactory.CreateDecoder or CodecFactory.CreateEncoder should use GetDetailedCodecDescriptions

to get this table, which has details re. the codec and the profile entries supported by the

codec.

Clients with no real need for codec information prior to requesting a codec can simply use

CodecFactory.CreateDecoder or CodecFactory.CreateEncoder with relevant requirements set in that

request, and then call StreamProcessor.Sync (round trip) to see if a codec was created

successfully.

Public Members

static const fidl_type_t * FidlType

Public Methods

bool IsEmpty ()

Returns whether no field is set.

void DetailedCodecDescription ()
void DetailedCodecDescription (DetailedCodecDescription && other)
const ::fuchsia::mediacodec::CodecType & codec_type ()

Decoder or encoder.

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

bool has_codec_type ()

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

::fuchsia::mediacodec::CodecType * mutable_codec_type ()

Decoder or encoder.

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

void clear_codec_type ()

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

const ::std::string & mime_type ()

The mime type of the compressed format. For decoders this is the mime

type of the input. For encoders, this is the mime type of the output.

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

bool has_mime_type ()

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

::std::string * mutable_mime_type ()

The mime type of the compressed format. For decoders this is the mime

type of the input. For encoders, this is the mime type of the output.

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

void clear_mime_type ()

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

const bool & is_hw ()

If this decoder/encoder uses underlying hardware to perform its operations.

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

bool has_is_hw ()

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

bool * mutable_is_hw ()

If this decoder/encoder uses underlying hardware to perform its operations.

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

void clear_is_hw ()

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

const ::fuchsia::mediacodec::ProfileDescriptions & profile_descriptions ()

A list of profile descriptions that describe what codec profiles this

encoder/decoder supports along with requirements for using each profile.

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

bool has_profile_descriptions ()

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

::fuchsia::mediacodec::ProfileDescriptions * mutable_profile_descriptions ()

A list of profile descriptions that describe what codec profiles this

encoder/decoder supports along with requirements for using each profile.

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

void clear_profile_descriptions ()

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

bool has_dynamic_buffers_input_max ()

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

uint32_t * mutable_dynamic_buffers_input_max ()

Having more than this many input buffers added and not yet completely

removed under the latest buffer_lifetime_ordinal will result in async

StreamProcessor channel closure.

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

void clear_dynamic_buffers_input_max ()

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

const uint32_t & dynamic_buffers_output_max ()

Having more than this many output buffers added and not yet completely

removed under the latest buffer_lifetime_ordinal will result in async

StreamProcessor channel closure.

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

bool has_dynamic_buffers_output_max ()

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

uint32_t * mutable_dynamic_buffers_output_max ()

Having more than this many output buffers added and not yet completely

removed under the latest buffer_lifetime_ordinal will result in async

StreamProcessor channel closure.

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

void clear_dynamic_buffers_output_max ()

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

const uint32_t & dynamic_buffers_video_decoder_output_safe ()

This field is set when a codec both supports dynamic buffers and is a

video decoder. Adding this many buffers to a video decoder's output, and

ensuring that the buffers will be usable by the decoder prior to the

whole pipeline blocking on lack of availability of usable output buffers

in the decoder, will ensure that the decoder doesn't get stuck waiting

for an available output buffer. See also

`[fuchsia.mediacodec/StreamBufferConstraints.buffer_count_for_server_current]`

which may occasionally indicate a lower number of output buffers needed,

based on headers of the bitstream. However, implementers of clients may

wish to first check if the relevant headers in relevant streams are

actually set, since this can be rare in practice unfortunately, making

paying attention to buffer_count_for_server_current potentially not

actually worthwhile, depending on the expected streams' headers.

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

bool has_dynamic_buffers_video_decoder_output_safe ()

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

uint32_t * mutable_dynamic_buffers_video_decoder_output_safe ()

This field is set when a codec both supports dynamic buffers and is a

video decoder. Adding this many buffers to a video decoder's output, and

ensuring that the buffers will be usable by the decoder prior to the

whole pipeline blocking on lack of availability of usable output buffers

in the decoder, will ensure that the decoder doesn't get stuck waiting

for an available output buffer. See also

`[fuchsia.mediacodec/StreamBufferConstraints.buffer_count_for_server_current]`

which may occasionally indicate a lower number of output buffers needed,

based on headers of the bitstream. However, implementers of clients may

wish to first check if the relevant headers in relevant streams are

actually set, since this can be rare in practice unfortunately, making

paying attention to buffer_count_for_server_current potentially not

actually worthwhile, depending on the expected streams' headers.

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

void clear_dynamic_buffers_video_decoder_output_safe ()

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

const ::std::string & codec_specifier ()

Optionally set

`[fuchsia.mediacodec/CreateDecoder_Params.codec_specifier]` to this

string to require an instance of this specific codec. The created codec

will still be checked against other requirements specified there for the

codec to be created successfully.

This is only valid and specific per boot, not across boots. This allows

a discovered codec to be requested without any ambiguity, but is

intentionally not a way for clients to hard code which specific codec

implementation they want to connect to, as codec selection is by

properties / capabilities, not by specific codec implementation.

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

bool has_codec_specifier ()

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

::std::string * mutable_codec_specifier ()

Optionally set

`[fuchsia.mediacodec/CreateDecoder_Params.codec_specifier]` to this

string to require an instance of this specific codec. The created codec

will still be checked against other requirements specified there for the

codec to be created successfully.

This is only valid and specific per boot, not across boots. This allows

a discovered codec to be requested without any ambiguity, but is

intentionally not a way for clients to hard code which specific codec

implementation they want to connect to, as codec selection is by

properties / capabilities, not by specific codec implementation.

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

void clear_codec_specifier ()

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

DetailedCodecDescription & set_codec_type (::fuchsia::mediacodec::CodecType _value)
DetailedCodecDescription & set_mime_type (::std::string _value)
DetailedCodecDescription & set_is_hw (bool _value)
DetailedCodecDescription & set_profile_descriptions (::fuchsia::mediacodec::ProfileDescriptions _value)
DetailedCodecDescription & set_dynamic_buffers_input_max (uint32_t _value)
DetailedCodecDescription & set_dynamic_buffers_output_max (uint32_t _value)
DetailedCodecDescription & set_dynamic_buffers_video_decoder_output_safe (uint32_t _value)
DetailedCodecDescription & set_codec_specifier (::std::string _value)
const bool & supports_dynamic_buffers ()

If set to true, dynamic buffers are supported by the codec. See also

`[fuchsia.mediacodec/StreamProcessor.AddBuffer]` and

`[fuchsia.mediacodec/StreamProcessor.RemoveBuffer]` which are required

to use dynamic buffers.

Regardless of whether `AddBuffer` and `RemoveBuffer` are used (vs.

`SetInputBufferPartialSettings` / `SetOutputBufferPartialSettings`), see

`[fuchsia.mediacodec/StreamProcessor.EnableOldOutputBuffers]` and

`[fuchsia.mediacodec/StreamProcessor.EnableSameOutputBufferConcurrentlyInFlight]`

which are only permitted when `supports_dynamic_buffers` is true. Both

of those are required to achieve full bitstream spec compliance with

some video bitstream formats such as VP9 (when show_existing_frame is

used in unusual ways).

This does not imply support for non-sysmem-provided VMOs.

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

bool has_supports_dynamic_buffers ()

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

bool * mutable_supports_dynamic_buffers ()

If set to true, dynamic buffers are supported by the codec. See also

`[fuchsia.mediacodec/StreamProcessor.AddBuffer]` and

`[fuchsia.mediacodec/StreamProcessor.RemoveBuffer]` which are required

to use dynamic buffers.

Regardless of whether `AddBuffer` and `RemoveBuffer` are used (vs.

`SetInputBufferPartialSettings` / `SetOutputBufferPartialSettings`), see

`[fuchsia.mediacodec/StreamProcessor.EnableOldOutputBuffers]` and

`[fuchsia.mediacodec/StreamProcessor.EnableSameOutputBufferConcurrentlyInFlight]`

which are only permitted when `supports_dynamic_buffers` is true. Both

of those are required to achieve full bitstream spec compliance with

some video bitstream formats such as VP9 (when show_existing_frame is

used in unusual ways).

This does not imply support for non-sysmem-provided VMOs.

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

void clear_supports_dynamic_buffers ()

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

const uint32_t & dynamic_buffers_input_max ()

Having more than this many input buffers added and not yet completely

removed under the latest buffer_lifetime_ordinal will result in async

StreamProcessor channel closure.

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

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