class DecoderProfileDescription
Defined at line 1007 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
Specification of the supported parameters of a given video decoder.
Fields in this table with the same name as fields in CodecDescription have the same meaning as
the fields in the CodecDescription struct when the corresponding field in this table is set.
When a corresponding field is un-set, each of these fields is interpreted according to the
corresponding doc comment on the field in this table (doc comments on fields in the
CodecDescription struct re. struct field defaults are not relevant to the interpretation of
un-set fields of this table).
For video decoders, the following is always required:
* Handling split input payload (distinct from split header), when an input frame is too large
for a single input buffer. The next portion (possibly the remainder) of the timstamped
input chunk is delivered in the next input packet.
For audio decoders, the following is always required:
* Concatenation of multiple compressed audio chunks via the input is always permitted.
Public Members
static const fidl_type_t * FidlType
Public Methods
bool IsEmpty ()
Returns whether no field is set.
const ::fuchsia::media::CodecProfile & profile ()
The codec profile that this decoder supports. If the client wants to use this
profile, the requirements specified in this table must be adhered to.
Defined at line 1015 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool has_profile ()
Defined at line 1019 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
::fuchsia::media::CodecProfile * mutable_profile ()
The codec profile that this decoder supports. If the client wants to use this
profile, the requirements specified in this table must be adhered to.
Defined at line 1025 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void clear_profile ()
Defined at line 1033 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
const ::fuchsia::math::SizeU & min_image_size ()
The minimum image size this decoder supports for the given |profile|.
Decoders must set this field, and this field must specify a size that is
>= the min size defined for the profile in the codec spec.
This size refers to the pixel layout in memory, not the display_rect which can be smaller
than the fuchsia.Images2.ImageFormat.size / fuchsia.sysmem.ImageFormat2.coded_width/height.
Defined at line 1047 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool has_min_image_size ()
Defined at line 1051 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
::fuchsia::math::SizeU * mutable_min_image_size ()
The minimum image size this decoder supports for the given |profile|.
Decoders must set this field, and this field must specify a size that is
>= the min size defined for the profile in the codec spec.
This size refers to the pixel layout in memory, not the display_rect which can be smaller
than the fuchsia.Images2.ImageFormat.size / fuchsia.sysmem.ImageFormat2.coded_width/height.
Defined at line 1061 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void clear_min_image_size ()
Defined at line 1069 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
const ::fuchsia::math::SizeU & max_image_size ()
The maximum image size this decoder supports for the given |profile|.
Decoders must set this field, and this field must specify a size that is
<
= the max size
defined for the profile in the codec spec.
This size refers to the pixel layout in memory, not the display_rect which can be smaller
than the fuchsia.Images2.ImageFormat.size / fuchsia.sysmem.ImageFormat2.coded_width/height.
By setting this field, a decoder is not required to fail to decode a stream that specifies a
size that is larger than the profile of the stream would normally allow. The decoder may or
may not fail to decode a stream which is not a listed profile or not within the size bounds
of a listed profile.
Defined at line 1089 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool has_max_image_size ()
Defined at line 1093 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
::fuchsia::math::SizeU * mutable_max_image_size ()
The maximum image size this decoder supports for the given |profile|.
Decoders must set this field, and this field must specify a size that is
<
= the max size
defined for the profile in the codec spec.
This size refers to the pixel layout in memory, not the display_rect which can be smaller
than the fuchsia.Images2.ImageFormat.size / fuchsia.sysmem.ImageFormat2.coded_width/height.
By setting this field, a decoder is not required to fail to decode a stream that specifies a
size that is larger than the profile of the stream would normally allow. The decoder may or
may not fail to decode a stream which is not a listed profile or not within the size bounds
of a listed profile.
Defined at line 1109 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void clear_max_image_size ()
Defined at line 1117 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
const bool & allow_encryption ()
This |profile| entry can apply to encrypted input data. If require_encryption is false or
unset, this |profile| entry can also apply to unencrypted input data.
This will be un-set (even when allow_input_protection or require_input_protection are true)
until Fuchsia supports decryption as part of decode (in contrast to it being a separate step
involving protected memory in between). When allow_encryption is false/un-set but
allow_input_protection is true, a client setting up DRM decode should set up decryption as a
separate step prior to decode with protected memory in between the decrypt and decode.
Defined at line 1133 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool has_allow_encryption ()
Defined at line 1137 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool * mutable_allow_encryption ()
This |profile| entry can apply to encrypted input data. If require_encryption is false or
unset, this |profile| entry can also apply to unencrypted input data.
This will be un-set (even when allow_input_protection or require_input_protection are true)
until Fuchsia supports decryption as part of decode (in contrast to it being a separate step
involving protected memory in between). When allow_encryption is false/un-set but
allow_input_protection is true, a client setting up DRM decode should set up decryption as a
separate step prior to decode with protected memory in between the decrypt and decode.
Defined at line 1149 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void clear_allow_encryption ()
Defined at line 1157 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
const bool & require_encryption ()
This |profile| entry applies only when input data is encrypted. This |profile| entry does
not apply for unencrypted input data. Un-set is interepted as false.
If this is set to true and there is no profile with require_encryption false in the same
DetailedCodecDescription, then this decoder only supports encrypted input.
This will be un-set until Fuchsia supports decryption as part of decode (even when
allow_input_protection or require_input_protection are true). See also allow_encryption,
allow_input_protection, require_input_protection.
Defined at line 1174 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool has_require_encryption ()
Defined at line 1178 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool * mutable_require_encryption ()
This |profile| entry applies only when input data is encrypted. This |profile| entry does
not apply for unencrypted input data. Un-set is interepted as false.
If this is set to true and there is no profile with require_encryption false in the same
DetailedCodecDescription, then this decoder only supports encrypted input.
This will be un-set until Fuchsia supports decryption as part of decode (even when
allow_input_protection or require_input_protection are true). See also allow_encryption,
allow_input_protection, require_input_protection.
Defined at line 1191 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void clear_require_encryption ()
Defined at line 1199 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
const bool & allow_input_protection ()
This |profile| entry can apply when input data delivered via protected memory. Whether to
protect input and which protected "heap" to use (if protecting input) is determined during
sysmem constraints aggregation and via DRM mechanisms. See also require_input_protection,
allow_encryption, require_encryption.
Defined at line 1211 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool has_allow_input_protection ()
Defined at line 1215 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool * mutable_allow_input_protection ()
This |profile| entry can apply when input data delivered via protected memory. Whether to
protect input and which protected "heap" to use (if protecting input) is determined during
sysmem constraints aggregation and via DRM mechanisms. See also require_input_protection,
allow_encryption, require_encryption.
Defined at line 1223 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void clear_allow_input_protection ()
Defined at line 1231 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
const bool & require_input_protection ()
This |profile| entry applies only when input data is delivered via protected memory. Whether
to protect input and which protected "heap" to use (if protecting input) is determined
during sysmem constraints aggregation, and by separate DRM mechanisms.
If this is set to true and there is no profile with require_input_protection false in the
same DetailedCodecDescription, then this decoder only supports protected input.
Output protection is negotiated separately during output buffer constraints aggregation in
sysmem, and via DRM mechanisms.
See also allow_input_protection, allow_encryption, require_encryption.
Defined at line 1250 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool has_require_input_protection ()
Defined at line 1254 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool * mutable_require_input_protection ()
This |profile| entry applies only when input data is delivered via protected memory. Whether
to protect input and which protected "heap" to use (if protecting input) is determined
during sysmem constraints aggregation, and by separate DRM mechanisms.
If this is set to true and there is no profile with require_input_protection false in the
same DetailedCodecDescription, then this decoder only supports protected input.
Output protection is negotiated separately during output buffer constraints aggregation in
sysmem, and via DRM mechanisms.
See also allow_input_protection, allow_encryption, require_encryption.
Defined at line 1269 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void clear_require_input_protection ()
Defined at line 1277 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
const bool & can_stream_bytes_input ()
If set to true, the decoder can handle an input chunk payload (containing compressed data)
that's split across a packet boundary (between header and payload, or between payload
bytes), and the decoder can also handle more than one input chunk containing compressed
input data in a single input packet. See also split_header_handling to determine if the
decoder can also handle split headers.
Un-set means false.
While this field always indicates whether it's ok to split an input chunk across a packet
boundary or not, and this field being set always implies it's ok to have a single input
packet with bytes from more than one input chunk including when the input chunks contain
compressed input data, there is some additional somewhat-subtle meaning that differs between
video and audio decoders.
Audio decoders are always required to permit more than one input chunk in a single input
packet, including mulitple input chunks which each contain compressed input data (not just
prepended "context" headers), regardless of this field being set or unset. For audio
decoders, this field only indicates whether splitting an input chunk across packets is
allowed.
Audio decoders shouldn't set split_header_handling to true unless they also set
can_stream_bytes_input to true, since allowing splitting header bytes is meaningless unless
it's allowed to split an input chunk.
For video decoders, if this field is un-set or false, the decoder may not be able to handle
bytes of more than one input chunk in a single input packet. However, for all decoders
(both video and audio) it's always ok for preceding "context" headers such as the h264 SPS
and PPS headers to be in the same input packet as the following input chunk containing
compressed input data such as an h264 slice (for example). A video decoder is always
required to permit continuation of an input chunk in the next packet, with the split between
header byte and compressed input data byte or between two compressed input data bytes (but
not necessarily between two header bytes; see also split_header_handling).
It's expected to be fairly common for a decoder to set can_stream_bytes_input to true, but
leave split_header_handling un-set or set split_header_handling to false, due to parsing
limitations in the HW, FW, or driver. Decoders which set can_stream_bytes_input false or
leave can_stream_bytes_input un-set may be forcing input data to be re-packed in some
scenarios. Profiles which set allow_encryption are encouraged to also set
can_stream_bytes_input if feasible, as re-packing input data can be more difficult in some
scenarios involving encryption.
Defined at line 1325 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool has_can_stream_bytes_input ()
Defined at line 1329 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool * mutable_can_stream_bytes_input ()
If set to true, the decoder can handle an input chunk payload (containing compressed data)
that's split across a packet boundary (between header and payload, or between payload
bytes), and the decoder can also handle more than one input chunk containing compressed
input data in a single input packet. See also split_header_handling to determine if the
decoder can also handle split headers.
Un-set means false.
While this field always indicates whether it's ok to split an input chunk across a packet
boundary or not, and this field being set always implies it's ok to have a single input
packet with bytes from more than one input chunk including when the input chunks contain
compressed input data, there is some additional somewhat-subtle meaning that differs between
video and audio decoders.
Audio decoders are always required to permit more than one input chunk in a single input
packet, including mulitple input chunks which each contain compressed input data (not just
prepended "context" headers), regardless of this field being set or unset. For audio
decoders, this field only indicates whether splitting an input chunk across packets is
allowed.
Audio decoders shouldn't set split_header_handling to true unless they also set
can_stream_bytes_input to true, since allowing splitting header bytes is meaningless unless
it's allowed to split an input chunk.
For video decoders, if this field is un-set or false, the decoder may not be able to handle
bytes of more than one input chunk in a single input packet. However, for all decoders
(both video and audio) it's always ok for preceding "context" headers such as the h264 SPS
and PPS headers to be in the same input packet as the following input chunk containing
compressed input data such as an h264 slice (for example). A video decoder is always
required to permit continuation of an input chunk in the next packet, with the split between
header byte and compressed input data byte or between two compressed input data bytes (but
not necessarily between two header bytes; see also split_header_handling).
It's expected to be fairly common for a decoder to set can_stream_bytes_input to true, but
leave split_header_handling un-set or set split_header_handling to false, due to parsing
limitations in the HW, FW, or driver. Decoders which set can_stream_bytes_input false or
leave can_stream_bytes_input un-set may be forcing input data to be re-packed in some
scenarios. Profiles which set allow_encryption are encouraged to also set
can_stream_bytes_input if feasible, as re-packing input data can be more difficult in some
scenarios involving encryption.
Defined at line 1373 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void clear_can_stream_bytes_input ()
Defined at line 1381 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
const bool & can_find_start ()
If set to true, the decoder can scan forward at the start of a stream to find the start of
the first fully-present input chunk, even if the input data starts at a byte that's in the
middle of a chunk.
For both video and audio decoders, setting this field to true also indicates the ability to
handle (skip or only partly use) any input chunks that are not possible to decode (or not
possible to fully decode) due to lack of referenced prior data.
If un-set or false, the decoder may not be able to scan forward to sync up with the input
stream unless the input stream starts with the beginning of a suitable chunk.
Defined at line 1399 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool has_can_find_start ()
Defined at line 1403 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool * mutable_can_find_start ()
If set to true, the decoder can scan forward at the start of a stream to find the start of
the first fully-present input chunk, even if the input data starts at a byte that's in the
middle of a chunk.
For both video and audio decoders, setting this field to true also indicates the ability to
handle (skip or only partly use) any input chunks that are not possible to decode (or not
possible to fully decode) due to lack of referenced prior data.
If un-set or false, the decoder may not be able to scan forward to sync up with the input
stream unless the input stream starts with the beginning of a suitable chunk.
Defined at line 1417 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void clear_can_find_start ()
Defined at line 1425 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
const bool & can_re_sync ()
If set to true, the decoder can resynchronize with the input stream (eventually) despite a
missing input chunk, and can handle partial input chunks without failing the stream or the
StreamProcessor control connection.
Defined at line 1436 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool has_can_re_sync ()
Defined at line 1440 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool * mutable_can_re_sync ()
If set to true, the decoder can resynchronize with the input stream (eventually) despite a
missing input chunk, and can handle partial input chunks without failing the stream or the
StreamProcessor control connection.
Defined at line 1447 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void clear_can_re_sync ()
Defined at line 1455 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool has_will_report_all_detected_errors ()
Defined at line 1474 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool * mutable_will_report_all_detected_errors ()
If set to true, the decoder makes efforts to indicate partial or detected-as-missing or
detected-as-corrupt input chunks by setting error_detected_before and/or
error_detected_during as appropriate. Even when this field is set to true, it is worth
noting that in general it is not possible for a decoder to detect all possible data
corruptions, as codecs generally aren't inclined to include error detection bits within the
stream. This is not a replacment for a real (as in robust with high probability against
random bit flips and bit insertion/deletion) data integrity check.
Defined at line 1485 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void clear_will_report_all_detected_errors ()
Defined at line 1493 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool has_split_header_handling ()
Defined at line 1538 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
bool * mutable_split_header_handling ()
If set to true, the decoder can handle the bytes of any header being split across packet
boundaries. If false or un-set, the decoder requires all header bytes of a header to be
within the same packet.
Starting a new packet at the spec-defined boundary between two headers that are officially
in separate input chunks is always permitted.
For purposes of this field, headers like the h264 SPS and PPS headers are considered
separate input chunks, and so such headers that have their own input chunk can be delivered
in a separate packet regardless of the setting of this field, and a subsequent h264 slice
header can be in yet another packet.
It is always permissible regardless of the setting of this field for "context" headers (such
as h264 SPS and PPS headers) to be delivered in the same packet as the subsequent chunk
which conveys compressed image data (such as an h264 slice).
Splitting a single header between codec_oob_bytes and the stream data is never supported (as
in, never to be relied on by clients), not even when this field is set to true.
See also can_stream_bytes_input.
Video decoders with can_stream_bytes_input true but split_header_handling false can handle
continuing an chunk in the next packet when split between header and payload or between
payload bytes, and can handle bytes of more than one input chunk in a single input packet,
but cannot handle splitting a header across packets. Video decoders with
can_stream_bytes_input false and split_header_handling true cannot tolerate bytes of more
than one input chunk in a single packet, but can tolerate continuation of an input chunk in
a following packet regardless of where the split occurs (such as in the middle of an h264
SPS, PPS, or slice header).
Audio decoders shouldn't set split_header_handling to true unless they also set
can_stream_bytes_input to true, since for an audio decoder, allowing splitting header bytes
is meaningless (for audio decoders) unless also allowing splitting an input chunk.
Defined at line 1575 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void clear_split_header_handling ()
Defined at line 1583 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
DecoderProfileDescription & set_profile (::fuchsia::media::CodecProfile _value)
DecoderProfileDescription & set_min_image_size (::fuchsia::math::SizeU _value)
DecoderProfileDescription & set_max_image_size (::fuchsia::math::SizeU _value)
DecoderProfileDescription & set_allow_encryption (bool _value)
DecoderProfileDescription & set_require_encryption (bool _value)
DecoderProfileDescription & set_allow_input_protection (bool _value)
DecoderProfileDescription & set_require_input_protection (bool _value)
DecoderProfileDescription & set_can_stream_bytes_input (bool _value)
DecoderProfileDescription & set_can_find_start (bool _value)
DecoderProfileDescription & set_can_re_sync (bool _value)
DecoderProfileDescription & set_will_report_all_detected_errors (bool _value)
DecoderProfileDescription & set_split_header_handling (bool _value)
void DecoderProfileDescription ()
void DecoderProfileDescription (DecoderProfileDescription && other)
const bool & will_report_all_detected_errors ()
If set to true, the decoder makes efforts to indicate partial or detected-as-missing or
detected-as-corrupt input chunks by setting error_detected_before and/or
error_detected_during as appropriate. Even when this field is set to true, it is worth
noting that in general it is not possible for a decoder to detect all possible data
corruptions, as codecs generally aren't inclined to include error detection bits within the
stream. This is not a replacment for a real (as in robust with high probability against
random bit flips and bit insertion/deletion) data integrity check.
Defined at line 1470 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
const bool & split_header_handling ()
If set to true, the decoder can handle the bytes of any header being split across packet
boundaries. If false or un-set, the decoder requires all header bytes of a header to be
within the same packet.
Starting a new packet at the spec-defined boundary between two headers that are officially
in separate input chunks is always permitted.
For purposes of this field, headers like the h264 SPS and PPS headers are considered
separate input chunks, and so such headers that have their own input chunk can be delivered
in a separate packet regardless of the setting of this field, and a subsequent h264 slice
header can be in yet another packet.
It is always permissible regardless of the setting of this field for "context" headers (such
as h264 SPS and PPS headers) to be delivered in the same packet as the subsequent chunk
which conveys compressed image data (such as an h264 slice).
Splitting a single header between codec_oob_bytes and the stream data is never supported (as
in, never to be relied on by clients), not even when this field is set to true.
See also can_stream_bytes_input.
Video decoders with can_stream_bytes_input true but split_header_handling false can handle
continuing an chunk in the next packet when split between header and payload or between
payload bytes, and can handle bytes of more than one input chunk in a single input packet,
but cannot handle splitting a header across packets. Video decoders with
can_stream_bytes_input false and split_header_handling true cannot tolerate bytes of more
than one input chunk in a single packet, but can tolerate continuation of an input chunk in
a following packet regardless of where the split occurs (such as in the middle of an h264
SPS, PPS, or slice header).
Audio decoders shouldn't set split_header_handling to true unless they also set
can_stream_bytes_input to true, since for an audio decoder, allowing splitting header bytes
is meaningless (for audio decoders) unless also allowing splitting an input chunk.
Defined at line 1534 of file fidling/gen/sdk/fidl/fuchsia.mediacodec/fuchsia.mediacodec/hlcpp/fuchsia/mediacodec/cpp/fidl.h
void ~DecoderProfileDescription ()
DecoderProfileDescription & operator= (DecoderProfileDescription && other)
::std::unique_ptr<DecoderProfileDescription> New ()
void Encode (::fidl::Encoder * _encoder, size_t _offset, std::optional< ::fidl::HandleInformation> maybe_handle_info)
void Decode (::fidl::Decoder * _decoder, DecoderProfileDescription * _value, size_t _offset)
zx_status_t Clone (DecoderProfileDescription * _result)