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)