Skip to main content

fidl_fuchsia_audio_device__common/
fidl_fuchsia_audio_device__common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub type ClockDomain = u32;
12
13pub type ElementId = u64;
14
15pub type TokenId = u64;
16
17pub type TopologyId = u64;
18
19/// For devices with Codec drivers, there is only one DAI_INTERCONNECT entity. When a method
20/// requires us to address the interconnect by ID, we use element_id 1. Codec drivers that
21/// implement signalprocessing should not assign this ID to other elements.
22pub const DEFAULT_DAI_INTERCONNECT_ELEMENT_ID: u64 = 1;
23
24/// Maximum number of channels that a device can report as supported.
25pub const MAX_CHANNEL_COUNT: u32 =
26    fidl_fuchsia_hardware_audio__common::MAX_COUNT_CHANNELS_IN_RING_BUFFER as u32;
27
28/// Maximum number of `ChannelSet`s that a device can report in a single PcmFormatSet.
29pub const MAX_CHANNEL_SET_COUNT: u32 =
30    fidl_fuchsia_hardware_audio__common::MAX_COUNT_CHANNEL_SETS as u32;
31
32pub const MAX_DAI_FORMAT_COUNT: u32 =
33    fidl_fuchsia_hardware_audio__common::MAX_COUNT_DAI_FORMATS as u32;
34
35/// Maximum number of audio devices in the system at any time.
36pub const MAX_DEVICE_COUNT: u32 = 256;
37
38/// Maximum number of `PcmFormatSet`s that a device can report as supported.
39pub const MAX_FORMAT_COUNT: u32 = fidl_fuchsia_hardware_audio__common::MAX_COUNT_FORMATS as u32;
40
41/// Maximum number of processing elements supported by a single device.
42pub const MAX_PROCESSING_ELEMENT_COUNT: u32 =
43    fidl_fuchsia_hardware_audio_signalprocessing__common::MAX_COUNT_PROCESSING_ELEMENTS as u32;
44
45/// Maximum number of frame rates that a device can report in a PcmFormatSet.
46pub const MAX_RATE_COUNT: u32 =
47    fidl_fuchsia_hardware_audio__common::MAX_COUNT_SUPPORTED_RATES as u32;
48
49/// Maximum number of distinct sample formats that a single PcmFormatSet can contain.
50pub const MAX_SAMPLE_TYPE_COUNT: u32 = 32;
51
52/// Maximum length of the strings for device, manufacturer and product names.
53pub const MAX_STRING_SIZE: u32 = fidl_fuchsia_hardware_audio__common::MAX_UI_STRING_SIZE as u32;
54
55/// The length of the device's unique ID, in bytes.
56pub const UNIQUE_INSTANCE_ID_SIZE: u32 = fidl_fuchsia_hardware_audio__common::UNIQUE_ID_SIZE as u32;
57
58/// Errors returned by `Control/CodecStart`.
59#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
60pub enum ControlCodecStartError {
61    /// This device has encountered an error and can no longer be controlled.
62    DeviceError,
63    /// This device type does not support the method that was called.
64    WrongDeviceType,
65    /// The previous `CodecStart` call has not yet completed.
66    AlreadyPending,
67    /// `SetDaiFormat` was not called before making this call.
68    DaiFormatNotSet,
69    /// The device was already started when this call was made.
70    AlreadyStarted,
71    /// The driver returned some other error. This call may be retried.
72    Other,
73    #[doc(hidden)]
74    __SourceBreaking { unknown_ordinal: u32 },
75}
76
77/// Pattern that matches an unknown `ControlCodecStartError` member.
78#[macro_export]
79macro_rules! ControlCodecStartErrorUnknown {
80    () => {
81        _
82    };
83}
84
85impl ControlCodecStartError {
86    #[inline]
87    pub fn from_primitive(prim: u32) -> Option<Self> {
88        match prim {
89            1 => Some(Self::DeviceError),
90            2 => Some(Self::WrongDeviceType),
91            3 => Some(Self::AlreadyPending),
92            4 => Some(Self::DaiFormatNotSet),
93            5 => Some(Self::AlreadyStarted),
94            6 => Some(Self::Other),
95            _ => None,
96        }
97    }
98
99    #[inline]
100    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
101        match prim {
102            1 => Self::DeviceError,
103            2 => Self::WrongDeviceType,
104            3 => Self::AlreadyPending,
105            4 => Self::DaiFormatNotSet,
106            5 => Self::AlreadyStarted,
107            6 => Self::Other,
108            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
109        }
110    }
111
112    #[inline]
113    pub fn unknown() -> Self {
114        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
115    }
116
117    #[inline]
118    pub const fn into_primitive(self) -> u32 {
119        match self {
120            Self::DeviceError => 1,
121            Self::WrongDeviceType => 2,
122            Self::AlreadyPending => 3,
123            Self::DaiFormatNotSet => 4,
124            Self::AlreadyStarted => 5,
125            Self::Other => 6,
126            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
127        }
128    }
129
130    #[inline]
131    pub fn is_unknown(&self) -> bool {
132        match self {
133            Self::__SourceBreaking { unknown_ordinal: _ } => true,
134            _ => false,
135        }
136    }
137}
138
139/// Errors returned by `Control/CodecStop`.
140#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
141pub enum ControlCodecStopError {
142    /// This device has encountered an error and can no longer be controlled.
143    DeviceError,
144    /// This device type does not support the method that was called.
145    WrongDeviceType,
146    /// The previous `CodecStop` call has not yet completed.
147    AlreadyPending,
148    /// `SetDaiFormat` was not called before making this call.
149    DaiFormatNotSet,
150    /// The device was already stopped when this call was made.
151    AlreadyStopped,
152    /// The driver returned some other error. This call may be retried.
153    Other,
154    #[doc(hidden)]
155    __SourceBreaking { unknown_ordinal: u32 },
156}
157
158/// Pattern that matches an unknown `ControlCodecStopError` member.
159#[macro_export]
160macro_rules! ControlCodecStopErrorUnknown {
161    () => {
162        _
163    };
164}
165
166impl ControlCodecStopError {
167    #[inline]
168    pub fn from_primitive(prim: u32) -> Option<Self> {
169        match prim {
170            1 => Some(Self::DeviceError),
171            2 => Some(Self::WrongDeviceType),
172            3 => Some(Self::AlreadyPending),
173            4 => Some(Self::DaiFormatNotSet),
174            5 => Some(Self::AlreadyStopped),
175            6 => Some(Self::Other),
176            _ => None,
177        }
178    }
179
180    #[inline]
181    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
182        match prim {
183            1 => Self::DeviceError,
184            2 => Self::WrongDeviceType,
185            3 => Self::AlreadyPending,
186            4 => Self::DaiFormatNotSet,
187            5 => Self::AlreadyStopped,
188            6 => Self::Other,
189            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
190        }
191    }
192
193    #[inline]
194    pub fn unknown() -> Self {
195        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
196    }
197
198    #[inline]
199    pub const fn into_primitive(self) -> u32 {
200        match self {
201            Self::DeviceError => 1,
202            Self::WrongDeviceType => 2,
203            Self::AlreadyPending => 3,
204            Self::DaiFormatNotSet => 4,
205            Self::AlreadyStopped => 5,
206            Self::Other => 6,
207            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
208        }
209    }
210
211    #[inline]
212    pub fn is_unknown(&self) -> bool {
213        match self {
214            Self::__SourceBreaking { unknown_ordinal: _ } => true,
215            _ => false,
216        }
217    }
218}
219
220/// Errors returned by `Control/CreatePacketStream`.
221#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
222pub enum ControlCreatePacketStreamError {
223    /// This device has encountered an error and can no longer be controlled.
224    DeviceError,
225    /// This device type does not support the method that was called.
226    WrongDeviceType,
227    /// The previous `CreatePacketStream` call has not yet completed.
228    AlreadyPending,
229    /// The required `element_id` is missing or does not refer to a `PACKET_STREAM` element.
230    InvalidElementId,
231    /// The required `options` is missing.
232    InvalidOptions,
233    /// The required `options.format` is missing.
234    InvalidFormat,
235    /// The required `packet_stream_server` is missing.
236    InvalidPacketStream,
237    /// An active `PacketStream` instance already exists for this `Control`.
238    AlreadyAllocated,
239    /// The device does not support the specified format.
240    FormatMismatch,
241    /// The device cannot create a packet stream with the specified options.
242    BadPacketStreamOption,
243    /// The driver returned some other error. This call may be retried.
244    Other,
245    #[doc(hidden)]
246    __SourceBreaking { unknown_ordinal: u32 },
247}
248
249/// Pattern that matches an unknown `ControlCreatePacketStreamError` member.
250#[macro_export]
251macro_rules! ControlCreatePacketStreamErrorUnknown {
252    () => {
253        _
254    };
255}
256
257impl ControlCreatePacketStreamError {
258    #[inline]
259    pub fn from_primitive(prim: u32) -> Option<Self> {
260        match prim {
261            1 => Some(Self::DeviceError),
262            2 => Some(Self::WrongDeviceType),
263            3 => Some(Self::AlreadyPending),
264            4 => Some(Self::InvalidElementId),
265            5 => Some(Self::InvalidOptions),
266            6 => Some(Self::InvalidFormat),
267            7 => Some(Self::InvalidPacketStream),
268            8 => Some(Self::AlreadyAllocated),
269            9 => Some(Self::FormatMismatch),
270            10 => Some(Self::BadPacketStreamOption),
271            11 => Some(Self::Other),
272            _ => None,
273        }
274    }
275
276    #[inline]
277    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
278        match prim {
279            1 => Self::DeviceError,
280            2 => Self::WrongDeviceType,
281            3 => Self::AlreadyPending,
282            4 => Self::InvalidElementId,
283            5 => Self::InvalidOptions,
284            6 => Self::InvalidFormat,
285            7 => Self::InvalidPacketStream,
286            8 => Self::AlreadyAllocated,
287            9 => Self::FormatMismatch,
288            10 => Self::BadPacketStreamOption,
289            11 => Self::Other,
290            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
291        }
292    }
293
294    #[inline]
295    pub fn unknown() -> Self {
296        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
297    }
298
299    #[inline]
300    pub const fn into_primitive(self) -> u32 {
301        match self {
302            Self::DeviceError => 1,
303            Self::WrongDeviceType => 2,
304            Self::AlreadyPending => 3,
305            Self::InvalidElementId => 4,
306            Self::InvalidOptions => 5,
307            Self::InvalidFormat => 6,
308            Self::InvalidPacketStream => 7,
309            Self::AlreadyAllocated => 8,
310            Self::FormatMismatch => 9,
311            Self::BadPacketStreamOption => 10,
312            Self::Other => 11,
313            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
314        }
315    }
316
317    #[inline]
318    pub fn is_unknown(&self) -> bool {
319        match self {
320            Self::__SourceBreaking { unknown_ordinal: _ } => true,
321            _ => false,
322        }
323    }
324}
325
326/// Errors returned by `Control/CreateRingBuffer`.
327#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
328pub enum ControlCreateRingBufferError {
329    /// This device has encountered an error and can no longer be controlled.
330    DeviceError,
331    /// This device type does not support the method that was called.
332    WrongDeviceType,
333    /// The previous `CreateRingBuffer` call has not yet completed.
334    AlreadyPending,
335    /// The required `element_id` is missing or does not refer to a `RING_BUFFER` element.
336    InvalidElementId,
337    /// The required `options` is missing.
338    InvalidOptions,
339    /// The required `options.format` is missing.
340    InvalidFormat,
341    /// The required `options.ring_buffer_min_bytes` is missing.
342    InvalidMinBytes,
343    /// The required `ring_buffer_server` is missing.
344    InvalidRingBuffer,
345    /// An active `RingBuffer` instance already exists for this `Control`.
346    AlreadyAllocated,
347    /// The device does not support the specified format.
348    FormatMismatch,
349    /// The device cannot create a ring buffer with the specified options.
350    BadRingBufferOption,
351    /// The driver returned some other error. This call may be retried.
352    Other,
353    #[doc(hidden)]
354    __SourceBreaking { unknown_ordinal: u32 },
355}
356
357/// Pattern that matches an unknown `ControlCreateRingBufferError` member.
358#[macro_export]
359macro_rules! ControlCreateRingBufferErrorUnknown {
360    () => {
361        _
362    };
363}
364
365impl ControlCreateRingBufferError {
366    #[inline]
367    pub fn from_primitive(prim: u32) -> Option<Self> {
368        match prim {
369            1 => Some(Self::DeviceError),
370            2 => Some(Self::WrongDeviceType),
371            3 => Some(Self::AlreadyPending),
372            4 => Some(Self::InvalidElementId),
373            5 => Some(Self::InvalidOptions),
374            6 => Some(Self::InvalidFormat),
375            7 => Some(Self::InvalidMinBytes),
376            8 => Some(Self::InvalidRingBuffer),
377            9 => Some(Self::AlreadyAllocated),
378            10 => Some(Self::FormatMismatch),
379            11 => Some(Self::BadRingBufferOption),
380            12 => Some(Self::Other),
381            _ => None,
382        }
383    }
384
385    #[inline]
386    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
387        match prim {
388            1 => Self::DeviceError,
389            2 => Self::WrongDeviceType,
390            3 => Self::AlreadyPending,
391            4 => Self::InvalidElementId,
392            5 => Self::InvalidOptions,
393            6 => Self::InvalidFormat,
394            7 => Self::InvalidMinBytes,
395            8 => Self::InvalidRingBuffer,
396            9 => Self::AlreadyAllocated,
397            10 => Self::FormatMismatch,
398            11 => Self::BadRingBufferOption,
399            12 => Self::Other,
400            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
401        }
402    }
403
404    #[inline]
405    pub fn unknown() -> Self {
406        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
407    }
408
409    #[inline]
410    pub const fn into_primitive(self) -> u32 {
411        match self {
412            Self::DeviceError => 1,
413            Self::WrongDeviceType => 2,
414            Self::AlreadyPending => 3,
415            Self::InvalidElementId => 4,
416            Self::InvalidOptions => 5,
417            Self::InvalidFormat => 6,
418            Self::InvalidMinBytes => 7,
419            Self::InvalidRingBuffer => 8,
420            Self::AlreadyAllocated => 9,
421            Self::FormatMismatch => 10,
422            Self::BadRingBufferOption => 11,
423            Self::Other => 12,
424            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
425        }
426    }
427
428    #[inline]
429    pub fn is_unknown(&self) -> bool {
430        match self {
431            Self::__SourceBreaking { unknown_ordinal: _ } => true,
432            _ => false,
433        }
434    }
435}
436
437/// Errors returned by `ControlCreator/Create`.
438#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
439pub enum ControlCreatorError {
440    /// The required `token_id` is missing.
441    InvalidTokenId,
442    /// The required `control_server` is missing.
443    InvalidControl,
444    /// No device with `token_id` was found. Either this token has never been
445    /// used, or the device with `token_id` has been removed.
446    DeviceNotFound,
447    /// The device with `token_id` encountered an error and cannot be controlled.
448    DeviceError,
449    /// A `Control` associated with `token_id` already exists. This device is
450    /// already being actively controlled.
451    AlreadyAllocated,
452    #[doc(hidden)]
453    __SourceBreaking { unknown_ordinal: u32 },
454}
455
456/// Pattern that matches an unknown `ControlCreatorError` member.
457#[macro_export]
458macro_rules! ControlCreatorErrorUnknown {
459    () => {
460        _
461    };
462}
463
464impl ControlCreatorError {
465    #[inline]
466    pub fn from_primitive(prim: u32) -> Option<Self> {
467        match prim {
468            1 => Some(Self::InvalidTokenId),
469            2 => Some(Self::InvalidControl),
470            3 => Some(Self::DeviceNotFound),
471            4 => Some(Self::DeviceError),
472            5 => Some(Self::AlreadyAllocated),
473            _ => None,
474        }
475    }
476
477    #[inline]
478    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
479        match prim {
480            1 => Self::InvalidTokenId,
481            2 => Self::InvalidControl,
482            3 => Self::DeviceNotFound,
483            4 => Self::DeviceError,
484            5 => Self::AlreadyAllocated,
485            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
486        }
487    }
488
489    #[inline]
490    pub fn unknown() -> Self {
491        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
492    }
493
494    #[inline]
495    pub const fn into_primitive(self) -> u32 {
496        match self {
497            Self::InvalidTokenId => 1,
498            Self::InvalidControl => 2,
499            Self::DeviceNotFound => 3,
500            Self::DeviceError => 4,
501            Self::AlreadyAllocated => 5,
502            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
503        }
504    }
505
506    #[inline]
507    pub fn is_unknown(&self) -> bool {
508        match self {
509            Self::__SourceBreaking { unknown_ordinal: _ } => true,
510            _ => false,
511        }
512    }
513}
514
515/// Errors returned by `Control/Reset`.
516#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
517pub enum ControlResetError {
518    /// This device has encountered an error and can no longer be controlled.
519    DeviceError,
520    /// This device type does not support the method that was called.
521    WrongDeviceType,
522    /// The previous `Reset` call has not yet completed.
523    AlreadyPending,
524    #[doc(hidden)]
525    __SourceBreaking { unknown_ordinal: u32 },
526}
527
528/// Pattern that matches an unknown `ControlResetError` member.
529#[macro_export]
530macro_rules! ControlResetErrorUnknown {
531    () => {
532        _
533    };
534}
535
536impl ControlResetError {
537    #[inline]
538    pub fn from_primitive(prim: u32) -> Option<Self> {
539        match prim {
540            1 => Some(Self::DeviceError),
541            2 => Some(Self::WrongDeviceType),
542            3 => Some(Self::AlreadyPending),
543            _ => None,
544        }
545    }
546
547    #[inline]
548    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
549        match prim {
550            1 => Self::DeviceError,
551            2 => Self::WrongDeviceType,
552            3 => Self::AlreadyPending,
553            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
554        }
555    }
556
557    #[inline]
558    pub fn unknown() -> Self {
559        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
560    }
561
562    #[inline]
563    pub const fn into_primitive(self) -> u32 {
564        match self {
565            Self::DeviceError => 1,
566            Self::WrongDeviceType => 2,
567            Self::AlreadyPending => 3,
568            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
569        }
570    }
571
572    #[inline]
573    pub fn is_unknown(&self) -> bool {
574        match self {
575            Self::__SourceBreaking { unknown_ordinal: _ } => true,
576            _ => false,
577        }
578    }
579}
580
581/// Errors returned by `Control/SetDaiFormat`.
582#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
583pub enum ControlSetDaiFormatError {
584    /// This device has encountered an error and can no longer be controlled.
585    DeviceError,
586    /// This device type does not support the method that was called.
587    WrongDeviceType,
588    /// The previous `SetDaiFormat` call has not yet completed.
589    AlreadyPending,
590    /// The required `element_id` is missing or does not refer to a `DAI_INTERCONNECT` element.
591    InvalidElementId,
592    /// The required `dai_format` is missing or invalid.
593    InvalidDaiFormat,
594    /// The device does not support the specified dai_format.
595    FormatMismatch,
596    /// The driver returned some other error. This call may be retried.
597    Other,
598    #[doc(hidden)]
599    __SourceBreaking { unknown_ordinal: u32 },
600}
601
602/// Pattern that matches an unknown `ControlSetDaiFormatError` member.
603#[macro_export]
604macro_rules! ControlSetDaiFormatErrorUnknown {
605    () => {
606        _
607    };
608}
609
610impl ControlSetDaiFormatError {
611    #[inline]
612    pub fn from_primitive(prim: u32) -> Option<Self> {
613        match prim {
614            1 => Some(Self::DeviceError),
615            2 => Some(Self::WrongDeviceType),
616            3 => Some(Self::AlreadyPending),
617            4 => Some(Self::InvalidElementId),
618            5 => Some(Self::InvalidDaiFormat),
619            6 => Some(Self::FormatMismatch),
620            7 => Some(Self::Other),
621            _ => None,
622        }
623    }
624
625    #[inline]
626    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
627        match prim {
628            1 => Self::DeviceError,
629            2 => Self::WrongDeviceType,
630            3 => Self::AlreadyPending,
631            4 => Self::InvalidElementId,
632            5 => Self::InvalidDaiFormat,
633            6 => Self::FormatMismatch,
634            7 => Self::Other,
635            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
636        }
637    }
638
639    #[inline]
640    pub fn unknown() -> Self {
641        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
642    }
643
644    #[inline]
645    pub const fn into_primitive(self) -> u32 {
646        match self {
647            Self::DeviceError => 1,
648            Self::WrongDeviceType => 2,
649            Self::AlreadyPending => 3,
650            Self::InvalidElementId => 4,
651            Self::InvalidDaiFormat => 5,
652            Self::FormatMismatch => 6,
653            Self::Other => 7,
654            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
655        }
656    }
657
658    #[inline]
659    pub fn is_unknown(&self) -> bool {
660        match self {
661            Self::__SourceBreaking { unknown_ordinal: _ } => true,
662            _ => false,
663        }
664    }
665}
666
667/// The protocol used by the driver.
668#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
669pub enum DeviceType {
670    /// The device uses the `fuchsia.hardware.audio/Codec` protocol.
671    Codec,
672    /// The device uses the `fuchsia.hardware.audio/Composite` protocol.
673    Composite,
674    #[doc(hidden)]
675    __SourceBreaking { unknown_ordinal: u32 },
676}
677
678/// Pattern that matches an unknown `DeviceType` member.
679#[macro_export]
680macro_rules! DeviceTypeUnknown {
681    () => {
682        _
683    };
684}
685
686impl DeviceType {
687    #[inline]
688    pub fn from_primitive(prim: u32) -> Option<Self> {
689        match prim {
690            1 => Some(Self::Codec),
691            2 => Some(Self::Composite),
692            _ => None,
693        }
694    }
695
696    #[inline]
697    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
698        match prim {
699            1 => Self::Codec,
700            2 => Self::Composite,
701            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
702        }
703    }
704
705    #[inline]
706    pub fn unknown() -> Self {
707        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
708    }
709
710    #[inline]
711    pub const fn into_primitive(self) -> u32 {
712        match self {
713            Self::Codec => 1,
714            Self::Composite => 2,
715            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
716        }
717    }
718
719    #[inline]
720    pub fn is_unknown(&self) -> bool {
721        match self {
722            Self::__SourceBreaking { unknown_ordinal: _ } => true,
723            _ => false,
724        }
725    }
726}
727
728/// Errors returned by `Observer/GetReferenceClock`.
729#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
730pub enum ObserverGetReferenceClockError {
731    /// This device has encountered an error and can no longer be observed.
732    DeviceError,
733    /// This device type does not support the method that was called.
734    WrongDeviceType,
735    /// The device's reference clock could not be returned.
736    DeviceClockUnavailable,
737    #[doc(hidden)]
738    __SourceBreaking { unknown_ordinal: u32 },
739}
740
741/// Pattern that matches an unknown `ObserverGetReferenceClockError` member.
742#[macro_export]
743macro_rules! ObserverGetReferenceClockErrorUnknown {
744    () => {
745        _
746    };
747}
748
749impl ObserverGetReferenceClockError {
750    #[inline]
751    pub fn from_primitive(prim: u32) -> Option<Self> {
752        match prim {
753            1 => Some(Self::DeviceError),
754            2 => Some(Self::WrongDeviceType),
755            3 => Some(Self::DeviceClockUnavailable),
756            _ => None,
757        }
758    }
759
760    #[inline]
761    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
762        match prim {
763            1 => Self::DeviceError,
764            2 => Self::WrongDeviceType,
765            3 => Self::DeviceClockUnavailable,
766            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
767        }
768    }
769
770    #[inline]
771    pub fn unknown() -> Self {
772        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
773    }
774
775    #[inline]
776    pub const fn into_primitive(self) -> u32 {
777        match self {
778            Self::DeviceError => 1,
779            Self::WrongDeviceType => 2,
780            Self::DeviceClockUnavailable => 3,
781            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
782        }
783    }
784
785    #[inline]
786    pub fn is_unknown(&self) -> bool {
787        match self {
788            Self::__SourceBreaking { unknown_ordinal: _ } => true,
789            _ => false,
790        }
791    }
792}
793
794/// Errors returned by `Observer/WatchPlugState`.
795#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
796pub enum ObserverWatchPlugStateError {
797    /// This device has encountered an error and can no longer be observed.
798    DeviceError,
799    /// This device type does not support the method that was called.
800    WrongDeviceType,
801    /// The previous `WatchPlugState` call has not yet completed.
802    AlreadyPending,
803    #[doc(hidden)]
804    __SourceBreaking { unknown_ordinal: u32 },
805}
806
807/// Pattern that matches an unknown `ObserverWatchPlugStateError` member.
808#[macro_export]
809macro_rules! ObserverWatchPlugStateErrorUnknown {
810    () => {
811        _
812    };
813}
814
815impl ObserverWatchPlugStateError {
816    #[inline]
817    pub fn from_primitive(prim: u32) -> Option<Self> {
818        match prim {
819            1 => Some(Self::DeviceError),
820            2 => Some(Self::WrongDeviceType),
821            3 => Some(Self::AlreadyPending),
822            _ => None,
823        }
824    }
825
826    #[inline]
827    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
828        match prim {
829            1 => Self::DeviceError,
830            2 => Self::WrongDeviceType,
831            3 => Self::AlreadyPending,
832            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
833        }
834    }
835
836    #[inline]
837    pub fn unknown() -> Self {
838        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
839    }
840
841    #[inline]
842    pub const fn into_primitive(self) -> u32 {
843        match self {
844            Self::DeviceError => 1,
845            Self::WrongDeviceType => 2,
846            Self::AlreadyPending => 3,
847            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
848        }
849    }
850
851    #[inline]
852    pub fn is_unknown(&self) -> bool {
853        match self {
854            Self::__SourceBreaking { unknown_ordinal: _ } => true,
855            _ => false,
856        }
857    }
858}
859
860/// Errors returned by `PacketStream/SetBuffer`.
861#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
862pub enum PacketStreamSetBufferError {
863    /// This device has encountered an error and can no longer be controlled.
864    DeviceError,
865    /// `SetBuffers` was called on a packet stream that is already started.
866    AlreadyStarted,
867    /// `SetBuffers` was called on a packet stream that already has buffers configured.
868    AlreadyConfigured,
869    /// The provided buffer type is not supported by this device.
870    BadStrategy,
871    /// The VMO information provided for setup is invalid or incompatible.
872    BadVmoConfig,
873    /// This device type does not support the method that was called.
874    WrongDeviceType,
875    /// The required element_id is missing or does not refer to a PACKET_STREAM element.
876    InvalidElementId,
877    /// A shared memory buffer does not have the required rights.
878    InsufficientRights,
879    /// A shared memory buffer is too small for its associated stream.
880    BufferTooSmall,
881    /// The driver returned some other error. This call may be retried.
882    Other,
883    #[doc(hidden)]
884    __SourceBreaking { unknown_ordinal: u32 },
885}
886
887/// Pattern that matches an unknown `PacketStreamSetBufferError` member.
888#[macro_export]
889macro_rules! PacketStreamSetBufferErrorUnknown {
890    () => {
891        _
892    };
893}
894
895impl PacketStreamSetBufferError {
896    #[inline]
897    pub fn from_primitive(prim: u32) -> Option<Self> {
898        match prim {
899            1 => Some(Self::DeviceError),
900            2 => Some(Self::AlreadyStarted),
901            3 => Some(Self::AlreadyConfigured),
902            4 => Some(Self::BadStrategy),
903            5 => Some(Self::BadVmoConfig),
904            6 => Some(Self::WrongDeviceType),
905            7 => Some(Self::InvalidElementId),
906            8 => Some(Self::InsufficientRights),
907            9 => Some(Self::BufferTooSmall),
908            10 => Some(Self::Other),
909            _ => None,
910        }
911    }
912
913    #[inline]
914    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
915        match prim {
916            1 => Self::DeviceError,
917            2 => Self::AlreadyStarted,
918            3 => Self::AlreadyConfigured,
919            4 => Self::BadStrategy,
920            5 => Self::BadVmoConfig,
921            6 => Self::WrongDeviceType,
922            7 => Self::InvalidElementId,
923            8 => Self::InsufficientRights,
924            9 => Self::BufferTooSmall,
925            10 => Self::Other,
926            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
927        }
928    }
929
930    #[inline]
931    pub fn unknown() -> Self {
932        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
933    }
934
935    #[inline]
936    pub const fn into_primitive(self) -> u32 {
937        match self {
938            Self::DeviceError => 1,
939            Self::AlreadyStarted => 2,
940            Self::AlreadyConfigured => 3,
941            Self::BadStrategy => 4,
942            Self::BadVmoConfig => 5,
943            Self::WrongDeviceType => 6,
944            Self::InvalidElementId => 7,
945            Self::InsufficientRights => 8,
946            Self::BufferTooSmall => 9,
947            Self::Other => 10,
948            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
949        }
950    }
951
952    #[inline]
953    pub fn is_unknown(&self) -> bool {
954        match self {
955            Self::__SourceBreaking { unknown_ordinal: _ } => true,
956            _ => false,
957        }
958    }
959}
960
961/// Errors returned by `PacketStream/Start`.
962#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
963pub enum PacketStreamStartError {
964    /// This device has encountered an error and can no longer be controlled.
965    DeviceError,
966    /// The previous `Start` call has not yet completed.
967    AlreadyPending,
968    /// `Start` was called on a packet stream that is already started.
969    AlreadyStarted,
970    #[doc(hidden)]
971    __SourceBreaking { unknown_ordinal: u32 },
972}
973
974/// Pattern that matches an unknown `PacketStreamStartError` member.
975#[macro_export]
976macro_rules! PacketStreamStartErrorUnknown {
977    () => {
978        _
979    };
980}
981
982impl PacketStreamStartError {
983    #[inline]
984    pub fn from_primitive(prim: u32) -> Option<Self> {
985        match prim {
986            1 => Some(Self::DeviceError),
987            2 => Some(Self::AlreadyPending),
988            3 => Some(Self::AlreadyStarted),
989            _ => None,
990        }
991    }
992
993    #[inline]
994    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
995        match prim {
996            1 => Self::DeviceError,
997            2 => Self::AlreadyPending,
998            3 => Self::AlreadyStarted,
999            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
1000        }
1001    }
1002
1003    #[inline]
1004    pub fn unknown() -> Self {
1005        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
1006    }
1007
1008    #[inline]
1009    pub const fn into_primitive(self) -> u32 {
1010        match self {
1011            Self::DeviceError => 1,
1012            Self::AlreadyPending => 2,
1013            Self::AlreadyStarted => 3,
1014            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1015        }
1016    }
1017
1018    #[inline]
1019    pub fn is_unknown(&self) -> bool {
1020        match self {
1021            Self::__SourceBreaking { unknown_ordinal: _ } => true,
1022            _ => false,
1023        }
1024    }
1025}
1026
1027/// Errors returned by `PacketStream/Stop`.
1028#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
1029pub enum PacketStreamStopError {
1030    /// This device has encountered an error and can no longer be controlled.
1031    DeviceError,
1032    /// The previous `Stop` call has not yet completed.
1033    AlreadyPending,
1034    /// `Stop` was called on a packet stream that is already stopped.
1035    AlreadyStopped,
1036    #[doc(hidden)]
1037    __SourceBreaking { unknown_ordinal: u32 },
1038}
1039
1040/// Pattern that matches an unknown `PacketStreamStopError` member.
1041#[macro_export]
1042macro_rules! PacketStreamStopErrorUnknown {
1043    () => {
1044        _
1045    };
1046}
1047
1048impl PacketStreamStopError {
1049    #[inline]
1050    pub fn from_primitive(prim: u32) -> Option<Self> {
1051        match prim {
1052            1 => Some(Self::DeviceError),
1053            2 => Some(Self::AlreadyPending),
1054            3 => Some(Self::AlreadyStopped),
1055            _ => None,
1056        }
1057    }
1058
1059    #[inline]
1060    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
1061        match prim {
1062            1 => Self::DeviceError,
1063            2 => Self::AlreadyPending,
1064            3 => Self::AlreadyStopped,
1065            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
1066        }
1067    }
1068
1069    #[inline]
1070    pub fn unknown() -> Self {
1071        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
1072    }
1073
1074    #[inline]
1075    pub const fn into_primitive(self) -> u32 {
1076        match self {
1077            Self::DeviceError => 1,
1078            Self::AlreadyPending => 2,
1079            Self::AlreadyStopped => 3,
1080            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1081        }
1082    }
1083
1084    #[inline]
1085    pub fn is_unknown(&self) -> bool {
1086        match self {
1087            Self::__SourceBreaking { unknown_ordinal: _ } => true,
1088            _ => false,
1089        }
1090    }
1091}
1092
1093/// The device's hot-plug capabilities.
1094#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
1095pub enum PlugDetectCapabilities {
1096    /// Device is always plugged in. Plug state cannot change.
1097    Hardwired,
1098    /// Device can be un/plugged and can asynchronously notify of changes.
1099    Pluggable,
1100    #[doc(hidden)]
1101    __SourceBreaking { unknown_ordinal: u32 },
1102}
1103
1104/// Pattern that matches an unknown `PlugDetectCapabilities` member.
1105#[macro_export]
1106macro_rules! PlugDetectCapabilitiesUnknown {
1107    () => {
1108        _
1109    };
1110}
1111
1112impl PlugDetectCapabilities {
1113    #[inline]
1114    pub fn from_primitive(prim: u32) -> Option<Self> {
1115        match prim {
1116            0 => Some(Self::Hardwired),
1117            1 => Some(Self::Pluggable),
1118            _ => None,
1119        }
1120    }
1121
1122    #[inline]
1123    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
1124        match prim {
1125            0 => Self::Hardwired,
1126            1 => Self::Pluggable,
1127            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
1128        }
1129    }
1130
1131    #[inline]
1132    pub fn unknown() -> Self {
1133        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
1134    }
1135
1136    #[inline]
1137    pub const fn into_primitive(self) -> u32 {
1138        match self {
1139            Self::Hardwired => 0,
1140            Self::Pluggable => 1,
1141            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1142        }
1143    }
1144
1145    #[inline]
1146    pub fn is_unknown(&self) -> bool {
1147        match self {
1148            Self::__SourceBreaking { unknown_ordinal: _ } => true,
1149            _ => false,
1150        }
1151    }
1152}
1153
1154/// The current plugged-in state for the device.
1155#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
1156pub enum PlugState {
1157    /// Connected and available for audio streaming.
1158    Plugged,
1159    /// Not connected; unavailable for audio streaming.
1160    Unplugged,
1161    #[doc(hidden)]
1162    __SourceBreaking { unknown_ordinal: u32 },
1163}
1164
1165/// Pattern that matches an unknown `PlugState` member.
1166#[macro_export]
1167macro_rules! PlugStateUnknown {
1168    () => {
1169        _
1170    };
1171}
1172
1173impl PlugState {
1174    #[inline]
1175    pub fn from_primitive(prim: u32) -> Option<Self> {
1176        match prim {
1177            1 => Some(Self::Plugged),
1178            2 => Some(Self::Unplugged),
1179            _ => None,
1180        }
1181    }
1182
1183    #[inline]
1184    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
1185        match prim {
1186            1 => Self::Plugged,
1187            2 => Self::Unplugged,
1188            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
1189        }
1190    }
1191
1192    #[inline]
1193    pub fn unknown() -> Self {
1194        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
1195    }
1196
1197    #[inline]
1198    pub const fn into_primitive(self) -> u32 {
1199        match self {
1200            Self::Plugged => 1,
1201            Self::Unplugged => 2,
1202            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1203        }
1204    }
1205
1206    #[inline]
1207    pub fn is_unknown(&self) -> bool {
1208        match self {
1209            Self::__SourceBreaking { unknown_ordinal: _ } => true,
1210            _ => false,
1211        }
1212    }
1213}
1214
1215/// Errors returned by the `Provider` protocol.
1216#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
1217pub enum ProviderAddDeviceError {
1218    /// The required `device_name` is incorrectly formed, empty or missing.
1219    InvalidName,
1220    /// The required `device_type` is missing.
1221    InvalidType,
1222    /// The required `driver_client` is invalid or missing.
1223    InvalidDriverClient,
1224    /// The protocol in `driver_client` is incompatible with `device_type` or is not supported yet.
1225    WrongClientType,
1226    #[doc(hidden)]
1227    __SourceBreaking { unknown_ordinal: u32 },
1228}
1229
1230/// Pattern that matches an unknown `ProviderAddDeviceError` member.
1231#[macro_export]
1232macro_rules! ProviderAddDeviceErrorUnknown {
1233    () => {
1234        _
1235    };
1236}
1237
1238impl ProviderAddDeviceError {
1239    #[inline]
1240    pub fn from_primitive(prim: u32) -> Option<Self> {
1241        match prim {
1242            1 => Some(Self::InvalidName),
1243            2 => Some(Self::InvalidType),
1244            3 => Some(Self::InvalidDriverClient),
1245            4 => Some(Self::WrongClientType),
1246            _ => None,
1247        }
1248    }
1249
1250    #[inline]
1251    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
1252        match prim {
1253            1 => Self::InvalidName,
1254            2 => Self::InvalidType,
1255            3 => Self::InvalidDriverClient,
1256            4 => Self::WrongClientType,
1257            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
1258        }
1259    }
1260
1261    #[inline]
1262    pub fn unknown() -> Self {
1263        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
1264    }
1265
1266    #[inline]
1267    pub const fn into_primitive(self) -> u32 {
1268        match self {
1269            Self::InvalidName => 1,
1270            Self::InvalidType => 2,
1271            Self::InvalidDriverClient => 3,
1272            Self::WrongClientType => 4,
1273            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1274        }
1275    }
1276
1277    #[inline]
1278    pub fn is_unknown(&self) -> bool {
1279        match self {
1280            Self::__SourceBreaking { unknown_ordinal: _ } => true,
1281            _ => false,
1282        }
1283    }
1284}
1285
1286/// Errors returned by `Registry/CreateObserver`.
1287#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
1288pub enum RegistryCreateObserverError {
1289    /// The required `token_id` is missing.
1290    InvalidTokenId,
1291    /// The required `observer_server` is missing.
1292    InvalidObserver,
1293    /// No device with `token_id` was found. Either this token has never been
1294    /// used, or the device with `token_id` has been removed.
1295    DeviceNotFound,
1296    /// The device with `token_id` has encountered an error and can no longer be observed.
1297    DeviceError,
1298    #[doc(hidden)]
1299    __SourceBreaking { unknown_ordinal: u32 },
1300}
1301
1302/// Pattern that matches an unknown `RegistryCreateObserverError` member.
1303#[macro_export]
1304macro_rules! RegistryCreateObserverErrorUnknown {
1305    () => {
1306        _
1307    };
1308}
1309
1310impl RegistryCreateObserverError {
1311    #[inline]
1312    pub fn from_primitive(prim: u32) -> Option<Self> {
1313        match prim {
1314            1 => Some(Self::InvalidTokenId),
1315            2 => Some(Self::InvalidObserver),
1316            3 => Some(Self::DeviceNotFound),
1317            4 => Some(Self::DeviceError),
1318            _ => None,
1319        }
1320    }
1321
1322    #[inline]
1323    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
1324        match prim {
1325            1 => Self::InvalidTokenId,
1326            2 => Self::InvalidObserver,
1327            3 => Self::DeviceNotFound,
1328            4 => Self::DeviceError,
1329            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
1330        }
1331    }
1332
1333    #[inline]
1334    pub fn unknown() -> Self {
1335        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
1336    }
1337
1338    #[inline]
1339    pub const fn into_primitive(self) -> u32 {
1340        match self {
1341            Self::InvalidTokenId => 1,
1342            Self::InvalidObserver => 2,
1343            Self::DeviceNotFound => 3,
1344            Self::DeviceError => 4,
1345            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1346        }
1347    }
1348
1349    #[inline]
1350    pub fn is_unknown(&self) -> bool {
1351        match self {
1352            Self::__SourceBreaking { unknown_ordinal: _ } => true,
1353            _ => false,
1354        }
1355    }
1356}
1357
1358/// Errors returned by `Registry/WatchDeviceRemoved`.
1359#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
1360pub enum RegistryWatchDeviceRemovedError {
1361    /// The previous `WatchDeviceRemoved` call has not yet completed.
1362    AlreadyPending,
1363    #[doc(hidden)]
1364    __SourceBreaking { unknown_ordinal: u32 },
1365}
1366
1367/// Pattern that matches an unknown `RegistryWatchDeviceRemovedError` member.
1368#[macro_export]
1369macro_rules! RegistryWatchDeviceRemovedErrorUnknown {
1370    () => {
1371        _
1372    };
1373}
1374
1375impl RegistryWatchDeviceRemovedError {
1376    #[inline]
1377    pub fn from_primitive(prim: u32) -> Option<Self> {
1378        match prim {
1379            1 => Some(Self::AlreadyPending),
1380            _ => None,
1381        }
1382    }
1383
1384    #[inline]
1385    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
1386        match prim {
1387            1 => Self::AlreadyPending,
1388            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
1389        }
1390    }
1391
1392    #[inline]
1393    pub fn unknown() -> Self {
1394        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
1395    }
1396
1397    #[inline]
1398    pub const fn into_primitive(self) -> u32 {
1399        match self {
1400            Self::AlreadyPending => 1,
1401            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1402        }
1403    }
1404
1405    #[inline]
1406    pub fn is_unknown(&self) -> bool {
1407        match self {
1408            Self::__SourceBreaking { unknown_ordinal: _ } => true,
1409            _ => false,
1410        }
1411    }
1412}
1413
1414/// Errors returned by `Registry/WatchDevicesAdded`.
1415#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
1416pub enum RegistryWatchDevicesAddedError {
1417    /// The previous `WatchDevicesAdded` call has not yet completed.
1418    AlreadyPending,
1419    #[doc(hidden)]
1420    __SourceBreaking { unknown_ordinal: u32 },
1421}
1422
1423/// Pattern that matches an unknown `RegistryWatchDevicesAddedError` member.
1424#[macro_export]
1425macro_rules! RegistryWatchDevicesAddedErrorUnknown {
1426    () => {
1427        _
1428    };
1429}
1430
1431impl RegistryWatchDevicesAddedError {
1432    #[inline]
1433    pub fn from_primitive(prim: u32) -> Option<Self> {
1434        match prim {
1435            1 => Some(Self::AlreadyPending),
1436            _ => None,
1437        }
1438    }
1439
1440    #[inline]
1441    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
1442        match prim {
1443            1 => Self::AlreadyPending,
1444            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
1445        }
1446    }
1447
1448    #[inline]
1449    pub fn unknown() -> Self {
1450        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
1451    }
1452
1453    #[inline]
1454    pub const fn into_primitive(self) -> u32 {
1455        match self {
1456            Self::AlreadyPending => 1,
1457            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1458        }
1459    }
1460
1461    #[inline]
1462    pub fn is_unknown(&self) -> bool {
1463        match self {
1464            Self::__SourceBreaking { unknown_ordinal: _ } => true,
1465            _ => false,
1466        }
1467    }
1468}
1469
1470/// Errors returned by `RingBuffer/SetActiveChannels`.
1471#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
1472pub enum RingBufferSetActiveChannelsError {
1473    /// This device has encountered an error and can no longer be controlled.
1474    DeviceError,
1475    /// The previous `SetActiveChannels` call has not yet completed.
1476    AlreadyPending,
1477    /// The device does not support `SetActiveChannels`. Individual channels
1478    /// cannot be deactivated (all channels are always active).
1479    MethodNotSupported,
1480    /// The required `channel_bitmask` is missing.
1481    InvalidChannelBitmask,
1482    /// The passed `channel_bitmask` specifies channels that are beyond the
1483    /// range of channels currently configured for this ring buffer.
1484    ChannelOutOfRange,
1485    #[doc(hidden)]
1486    __SourceBreaking { unknown_ordinal: u32 },
1487}
1488
1489/// Pattern that matches an unknown `RingBufferSetActiveChannelsError` member.
1490#[macro_export]
1491macro_rules! RingBufferSetActiveChannelsErrorUnknown {
1492    () => {
1493        _
1494    };
1495}
1496
1497impl RingBufferSetActiveChannelsError {
1498    #[inline]
1499    pub fn from_primitive(prim: u32) -> Option<Self> {
1500        match prim {
1501            1 => Some(Self::DeviceError),
1502            2 => Some(Self::AlreadyPending),
1503            3 => Some(Self::MethodNotSupported),
1504            4 => Some(Self::InvalidChannelBitmask),
1505            5 => Some(Self::ChannelOutOfRange),
1506            _ => None,
1507        }
1508    }
1509
1510    #[inline]
1511    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
1512        match prim {
1513            1 => Self::DeviceError,
1514            2 => Self::AlreadyPending,
1515            3 => Self::MethodNotSupported,
1516            4 => Self::InvalidChannelBitmask,
1517            5 => Self::ChannelOutOfRange,
1518            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
1519        }
1520    }
1521
1522    #[inline]
1523    pub fn unknown() -> Self {
1524        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
1525    }
1526
1527    #[inline]
1528    pub const fn into_primitive(self) -> u32 {
1529        match self {
1530            Self::DeviceError => 1,
1531            Self::AlreadyPending => 2,
1532            Self::MethodNotSupported => 3,
1533            Self::InvalidChannelBitmask => 4,
1534            Self::ChannelOutOfRange => 5,
1535            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1536        }
1537    }
1538
1539    #[inline]
1540    pub fn is_unknown(&self) -> bool {
1541        match self {
1542            Self::__SourceBreaking { unknown_ordinal: _ } => true,
1543            _ => false,
1544        }
1545    }
1546}
1547
1548/// Errors returned by `RingBuffer/Start`.
1549#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
1550pub enum RingBufferStartError {
1551    /// This device has encountered an error and can no longer be controlled.
1552    DeviceError,
1553    /// The previous `Start` call has not yet completed.
1554    AlreadyPending,
1555    /// `Start` was called on a ring buffer that is already started.
1556    AlreadyStarted,
1557    #[doc(hidden)]
1558    __SourceBreaking { unknown_ordinal: u32 },
1559}
1560
1561/// Pattern that matches an unknown `RingBufferStartError` member.
1562#[macro_export]
1563macro_rules! RingBufferStartErrorUnknown {
1564    () => {
1565        _
1566    };
1567}
1568
1569impl RingBufferStartError {
1570    #[inline]
1571    pub fn from_primitive(prim: u32) -> Option<Self> {
1572        match prim {
1573            1 => Some(Self::DeviceError),
1574            2 => Some(Self::AlreadyPending),
1575            3 => Some(Self::AlreadyStarted),
1576            _ => None,
1577        }
1578    }
1579
1580    #[inline]
1581    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
1582        match prim {
1583            1 => Self::DeviceError,
1584            2 => Self::AlreadyPending,
1585            3 => Self::AlreadyStarted,
1586            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
1587        }
1588    }
1589
1590    #[inline]
1591    pub fn unknown() -> Self {
1592        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
1593    }
1594
1595    #[inline]
1596    pub const fn into_primitive(self) -> u32 {
1597        match self {
1598            Self::DeviceError => 1,
1599            Self::AlreadyPending => 2,
1600            Self::AlreadyStarted => 3,
1601            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1602        }
1603    }
1604
1605    #[inline]
1606    pub fn is_unknown(&self) -> bool {
1607        match self {
1608            Self::__SourceBreaking { unknown_ordinal: _ } => true,
1609            _ => false,
1610        }
1611    }
1612}
1613
1614/// Errors returned by `RingBuffer/Stop`.
1615#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
1616pub enum RingBufferStopError {
1617    /// This device has encountered an error and can no longer be controlled.
1618    DeviceError,
1619    /// The previous `Stop` call has not yet completed.
1620    AlreadyPending,
1621    /// `Stop` was called on a ring buffer that is already stopped.
1622    AlreadyStopped,
1623    #[doc(hidden)]
1624    __SourceBreaking { unknown_ordinal: u32 },
1625}
1626
1627/// Pattern that matches an unknown `RingBufferStopError` member.
1628#[macro_export]
1629macro_rules! RingBufferStopErrorUnknown {
1630    () => {
1631        _
1632    };
1633}
1634
1635impl RingBufferStopError {
1636    #[inline]
1637    pub fn from_primitive(prim: u32) -> Option<Self> {
1638        match prim {
1639            1 => Some(Self::DeviceError),
1640            2 => Some(Self::AlreadyPending),
1641            3 => Some(Self::AlreadyStopped),
1642            _ => None,
1643        }
1644    }
1645
1646    #[inline]
1647    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
1648        match prim {
1649            1 => Self::DeviceError,
1650            2 => Self::AlreadyPending,
1651            3 => Self::AlreadyStopped,
1652            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
1653        }
1654    }
1655
1656    #[inline]
1657    pub fn unknown() -> Self {
1658        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
1659    }
1660
1661    #[inline]
1662    pub const fn into_primitive(self) -> u32 {
1663        match self {
1664            Self::DeviceError => 1,
1665            Self::AlreadyPending => 2,
1666            Self::AlreadyStopped => 3,
1667            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1668        }
1669    }
1670
1671    #[inline]
1672    pub fn is_unknown(&self) -> bool {
1673        match self {
1674            Self::__SourceBreaking { unknown_ordinal: _ } => true,
1675            _ => false,
1676        }
1677    }
1678}
1679
1680/// Errors returned by `RingBuffer/WatchDelayInfo`.
1681#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
1682pub enum RingBufferWatchDelayInfoError {
1683    /// This device has encountered an error and can no longer be observed.
1684    DeviceError,
1685    /// The previous `WatchDelayInfo` call has not yet completed.
1686    AlreadyPending,
1687    #[doc(hidden)]
1688    __SourceBreaking { unknown_ordinal: u32 },
1689}
1690
1691/// Pattern that matches an unknown `RingBufferWatchDelayInfoError` member.
1692#[macro_export]
1693macro_rules! RingBufferWatchDelayInfoErrorUnknown {
1694    () => {
1695        _
1696    };
1697}
1698
1699impl RingBufferWatchDelayInfoError {
1700    #[inline]
1701    pub fn from_primitive(prim: u32) -> Option<Self> {
1702        match prim {
1703            1 => Some(Self::DeviceError),
1704            2 => Some(Self::AlreadyPending),
1705            _ => None,
1706        }
1707    }
1708
1709    #[inline]
1710    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
1711        match prim {
1712            1 => Self::DeviceError,
1713            2 => Self::AlreadyPending,
1714            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
1715        }
1716    }
1717
1718    #[inline]
1719    pub fn unknown() -> Self {
1720        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
1721    }
1722
1723    #[inline]
1724    pub const fn into_primitive(self) -> u32 {
1725        match self {
1726            Self::DeviceError => 1,
1727            Self::AlreadyPending => 2,
1728            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1729        }
1730    }
1731
1732    #[inline]
1733    pub fn is_unknown(&self) -> bool {
1734        match self {
1735            Self::__SourceBreaking { unknown_ordinal: _ } => true,
1736            _ => false,
1737        }
1738    }
1739}
1740
1741/// The attributes (e.g. frequency range) of a single channel.
1742#[derive(Clone, Debug, Default, PartialEq)]
1743pub struct ChannelAttributes {
1744    /// Minimum frequency that this channel guarantees to emit/capture, in Hz.
1745    /// If absent, this channel extends to the bottom of the device range.
1746    ///
1747    /// Optional.
1748    pub min_frequency: Option<u32>,
1749    /// Maximum frequency that this channel guarantees to emit/capture, in Hz.
1750    /// If absent, this channel extends to the top of the device range.
1751    ///
1752    /// Optional.
1753    pub max_frequency: Option<u32>,
1754    #[doc(hidden)]
1755    pub __source_breaking: fidl::marker::SourceBreaking,
1756}
1757
1758impl fidl::Persistable for ChannelAttributes {}
1759
1760/// One possible channel configuration for the device.
1761#[derive(Clone, Debug, Default, PartialEq)]
1762pub struct ChannelSet {
1763    /// Each item in this vector describes the attributes (e.g. frequency range)
1764    /// of that channel. The length of this vector defines the number of
1765    /// channels supported by this ChannelSet. Must contain at least one entry.
1766    ///
1767    /// Required.
1768    pub attributes: Option<Vec<ChannelAttributes>>,
1769    #[doc(hidden)]
1770    pub __source_breaking: fidl::marker::SourceBreaking,
1771}
1772
1773impl fidl::Persistable for ChannelSet {}
1774
1775#[derive(Clone, Debug, Default, PartialEq)]
1776pub struct ControlCreatorCreateResponse {
1777    #[doc(hidden)]
1778    pub __source_breaking: fidl::marker::SourceBreaking,
1779}
1780
1781impl fidl::Persistable for ControlCreatorCreateResponse {}
1782
1783#[derive(Clone, Debug, Default, PartialEq)]
1784pub struct ControlSetDaiFormatRequest {
1785    /// The ID for an element of type `DAI_INTERCONNECT`.
1786    ///
1787    /// Required for Composite; ignored for Codec.
1788    pub element_id: Option<u64>,
1789    pub dai_format: Option<fidl_fuchsia_hardware_audio__common::DaiFormat>,
1790    #[doc(hidden)]
1791    pub __source_breaking: fidl::marker::SourceBreaking,
1792}
1793
1794impl fidl::Persistable for ControlSetDaiFormatRequest {}
1795
1796#[derive(Clone, Debug, Default, PartialEq)]
1797pub struct ControlCodecStartResponse {
1798    pub start_time: Option<i64>,
1799    #[doc(hidden)]
1800    pub __source_breaking: fidl::marker::SourceBreaking,
1801}
1802
1803impl fidl::Persistable for ControlCodecStartResponse {}
1804
1805#[derive(Clone, Debug, Default, PartialEq)]
1806pub struct ControlCodecStopResponse {
1807    pub stop_time: Option<i64>,
1808    #[doc(hidden)]
1809    pub __source_breaking: fidl::marker::SourceBreaking,
1810}
1811
1812impl fidl::Persistable for ControlCodecStopResponse {}
1813
1814#[derive(Clone, Debug, Default, PartialEq)]
1815pub struct ControlResetResponse {
1816    #[doc(hidden)]
1817    pub __source_breaking: fidl::marker::SourceBreaking,
1818}
1819
1820impl fidl::Persistable for ControlResetResponse {}
1821
1822#[derive(Clone, Debug, Default, PartialEq)]
1823pub struct ControlSetDaiFormatResponse {
1824    pub state: Option<fidl_fuchsia_hardware_audio__common::CodecFormatInfo>,
1825    #[doc(hidden)]
1826    pub __source_breaking: fidl::marker::SourceBreaking,
1827}
1828
1829impl fidl::Persistable for ControlSetDaiFormatResponse {}
1830
1831#[derive(Clone, Debug, Default, PartialEq)]
1832pub struct DelayInfo {
1833    /// The driver's best estimate of the delay internal to the hardware it abstracts for
1834    /// the chosen format. This duration must be non-negative.
1835    ///
1836    /// Required.
1837    pub internal_delay: Option<i64>,
1838    /// The amount of pipeline delay beyond the interconnect (subsequent to the
1839    /// DMA "read" position for output devices, or prior to the DMA "write"
1840    /// position for input devices). If present, this duration must be non-negative.
1841    ///
1842    /// Optional.
1843    pub external_delay: Option<i64>,
1844    #[doc(hidden)]
1845    pub __source_breaking: fidl::marker::SourceBreaking,
1846}
1847
1848impl fidl::Persistable for DelayInfo {}
1849
1850/// This table represents the possible Dai formats that this transport can support.
1851#[derive(Clone, Debug, Default, PartialEq)]
1852pub struct ElementDaiFormatSet {
1853    /// The ID of the element being described. This must match a DAI_INTERCONNECT
1854    /// entry in the list of elements contained in the device's `Info` table. If describing the
1855    /// supported DAI formats for a Codec device, this value should be
1856    /// `DEFAULT_DAI_INTERCONNECT_ELEMENT_ID` (1).
1857    ///
1858    /// Required.
1859    pub element_id: Option<u64>,
1860    /// The dai_format_set entries that this element supports.
1861    ///
1862    /// Required. Must contain at least one entry.
1863    pub format_sets: Option<Vec<fidl_fuchsia_hardware_audio__common::DaiSupportedFormats>>,
1864    #[doc(hidden)]
1865    pub __source_breaking: fidl::marker::SourceBreaking,
1866}
1867
1868impl fidl::Persistable for ElementDaiFormatSet {}
1869
1870/// This table represents the possible Packet Stream formats that this element can support.
1871#[derive(Clone, Debug, Default, PartialEq)]
1872pub struct ElementPacketStreamFormatSet {
1873    /// The ID of the element being described. This must match a PACKET_STREAM
1874    /// entry in the list of elements contained in the device's `Info` table.
1875    ///
1876    /// Required.
1877    pub element_id: Option<u64>,
1878    /// The format sets that this element supports.
1879    ///
1880    /// Required. Must contain at least one entry.
1881    pub format_sets: Option<Vec<PacketStreamSupportedFormats>>,
1882    #[doc(hidden)]
1883    pub __source_breaking: fidl::marker::SourceBreaking,
1884}
1885
1886impl fidl::Persistable for ElementPacketStreamFormatSet {}
1887
1888/// This table represents the possible RingBuffer formats that this transport can support.
1889#[derive(Clone, Debug, Default, PartialEq)]
1890pub struct ElementRingBufferFormatSet {
1891    /// The ID of the element being described. This must match an RING_BUFFER entry
1892    /// in the list of elements contained in the device's `Info` table.
1893    ///
1894    /// Required.
1895    pub element_id: Option<u64>,
1896    /// The ring_buffer_format_set entries that this element supports.
1897    ///
1898    /// Required. Must contain at least one entry.
1899    pub format_sets: Option<Vec<PcmFormatSet>>,
1900    #[doc(hidden)]
1901    pub __source_breaking: fidl::marker::SourceBreaking,
1902}
1903
1904impl fidl::Persistable for ElementRingBufferFormatSet {}
1905
1906/// When a device is detected (or added via `Provider/AddDevice`), it is
1907/// queried for its properties and capabilities. Once this enumeration process
1908/// completes, it is announced to clients that are watching for device arrivals
1909/// via `Registry/WatchDevicesAdded`.
1910///
1911/// An `Info` table is returned for each audio device that has been added.
1912#[derive(Clone, Debug, Default, PartialEq)]
1913pub struct Info {
1914    /// A device identifier that is guaranteed unique for this boot session, but
1915    /// may change across reboots.
1916    ///
1917    /// Required.
1918    pub token_id: Option<u64>,
1919    /// The protocol used by the driver.
1920    ///
1921    /// Required.
1922    pub device_type: Option<DeviceType>,
1923    /// The device's high-level name, as received from devfs or the `Provider/AddDevice` caller.
1924    /// This string must be non-empty.
1925    ///
1926    /// Required.
1927    pub device_name: Option<String>,
1928    /// The name of the device's manufacturer.
1929    /// If present, this string must be non-empty.
1930    ///
1931    /// Optional.
1932    pub manufacturer: Option<String>,
1933    /// The device's high-level product name.
1934    /// If present, this string must be non-empty.
1935    ///
1936    /// Optional.
1937    pub product: Option<String>,
1938    /// A 16-character ID provided by the driver that (if present) can be used
1939    /// to differentiate instances of the same device. This value should not
1940    /// change across system reboots.
1941    ///
1942    /// Optional.
1943    pub unique_instance_id: Option<[u8; 16]>,
1944    /// Whether the device is a source (is_input TRUE) or destination (is_input FALSE) of audio.
1945    ///
1946    /// Optional for Codec; absent for Composite.
1947    pub is_input: Option<bool>,
1948    /// The union of all formats the device can support, across all combinations of device
1949    /// configuration settings.
1950    /// If the device exposes one or more RingBuffer elements, this field must be present
1951    /// and its vector must contain exactly one entry for each relevant RingBuffer element.
1952    /// If the device exposes NO RingBuffer elements, this field must be omitted (entirely
1953    /// absent, rather than populated with an empty vector).
1954    /// If present, must contain at least one element.
1955    ///
1956    /// Optional for Composite; absent for Codec.
1957    pub ring_buffer_format_sets: Option<Vec<ElementRingBufferFormatSet>>,
1958    /// The union of all DAI formats the device can support, across all combinations
1959    /// of device configuration settings.
1960    /// If the device exposes one or more Dai elements, this field must be present and its
1961    /// vector must contain exactly one entry for each relevant Dai element.
1962    /// If the device exposes NO Dai elements, this field must be omitted (entirely absent,
1963    /// rather than populated with an empty vector).
1964    /// If present, must contain at least one element.
1965    ///
1966    /// Required for Codec; optional for Composite.
1967    pub dai_format_sets: Option<Vec<ElementDaiFormatSet>>,
1968    /// The device's hot-plug capabilities.
1969    ///
1970    /// Required for Codec; absent for Composite.
1971    pub plug_detect_caps: Option<PlugDetectCapabilities>,
1972    /// An identifier for the clock domain in which the device's clock hardware
1973    /// operates. Devices in the same clock domain remain perfectly
1974    /// synchronized. They may drift relative to some other clock domain, but
1975    /// all clocks in that domain will do so perfectly  _together_. Although
1976    /// their clocks have the same rate, their positions may be offset by an
1977    /// arbitrary, fixed amount.
1978    ///
1979    /// There are two special values for clock domain:
1980    ///
1981    /// *  `CLOCK_DOMAIN_MONOTONIC` means the hardware is driven by the system
1982    ///    montonic clock and will always be synchronized with that timeline.
1983    ///
1984    /// *  `CLOCK_DOMAIN_EXTERNAL` means the hardware is not synchronized with any
1985    ///    other known clocks (even any other clocks in `CLOCK_DOMAIN_EXTERNAL`).
1986    ///
1987    /// Required for Composite; absent for Codec.
1988    pub clock_domain: Option<u32>,
1989    /// The vector of supported signal-processing elements.
1990    /// If present, must contain at least one element.
1991    ///
1992    /// Required for Composite; optional for Codec.
1993    pub signal_processing_elements:
1994        Option<Vec<fidl_fuchsia_hardware_audio_signalprocessing__common::Element>>,
1995    /// The vector of supported signal-processing topologies.
1996    /// If present, must contain at least one element.
1997    ///
1998    /// Required for Composite; optional for Codec.
1999    pub signal_processing_topologies:
2000        Option<Vec<fidl_fuchsia_hardware_audio_signalprocessing__common::Topology>>,
2001    /// The union of all PacketStream formats the device can support, across all combinations
2002    /// of device configuration settings.
2003    /// If the device exposes one or more PacketStream elements, this field must be present
2004    /// and its vector must contain one entry for each relevant PacketStream element.
2005    /// If the device exposes NO PacketStream elements, this field must be omitted
2006    /// (entirely absent, rather than populated with an empty vector).
2007    /// If present, must contain at least one element.
2008    ///
2009    /// Optional for Composite; absent for Codec.
2010    pub packet_stream_format_sets: Option<Vec<ElementPacketStreamFormatSet>>,
2011    #[doc(hidden)]
2012    pub __source_breaking: fidl::marker::SourceBreaking,
2013}
2014
2015impl fidl::Persistable for Info {}
2016
2017#[derive(Clone, Debug, Default, PartialEq)]
2018pub struct ObserverWatchPlugStateResponse {
2019    /// The device's current plug state.
2020    pub state: Option<PlugState>,
2021    /// The time (in CLOCK_MONOTONIC) of the most-recent change in plug state.
2022    pub plug_time: Option<i64>,
2023    #[doc(hidden)]
2024    pub __source_breaking: fidl::marker::SourceBreaking,
2025}
2026
2027impl fidl::Persistable for ObserverWatchPlugStateResponse {}
2028
2029#[derive(Clone, Debug, Default, PartialEq)]
2030pub struct PacketStreamStartRequest {
2031    #[doc(hidden)]
2032    pub __source_breaking: fidl::marker::SourceBreaking,
2033}
2034
2035impl fidl::Persistable for PacketStreamStartRequest {}
2036
2037#[derive(Clone, Debug, Default, PartialEq)]
2038pub struct PacketStreamStopRequest {
2039    #[doc(hidden)]
2040    pub __source_breaking: fidl::marker::SourceBreaking,
2041}
2042
2043impl fidl::Persistable for PacketStreamStopRequest {}
2044
2045#[derive(Clone, Debug, Default, PartialEq)]
2046pub struct PacketStreamStartResponse {
2047    #[doc(hidden)]
2048    pub __source_breaking: fidl::marker::SourceBreaking,
2049}
2050
2051impl fidl::Persistable for PacketStreamStartResponse {}
2052
2053#[derive(Clone, Debug, Default, PartialEq)]
2054pub struct PacketStreamStopResponse {
2055    #[doc(hidden)]
2056    pub __source_breaking: fidl::marker::SourceBreaking,
2057}
2058
2059impl fidl::Persistable for PacketStreamStopResponse {}
2060
2061/// This table contains vectors representing three dimensions of device
2062/// configuration (channelization, sample format, frame rate). The device should
2063/// support all combinations of the items in these vectors.
2064#[derive(Clone, Debug, Default, PartialEq)]
2065pub struct PcmFormatSet {
2066    /// The number of channel sets that the device supports. This must contain
2067    /// at least one `ChannelSet` entry.
2068    ///
2069    /// Required.
2070    pub channel_sets: Option<Vec<ChannelSet>>,
2071    /// The number of sample formats that the device supports. This must
2072    /// contain least one `AudioSampleFormat` entry.
2073    ///
2074    /// Required.
2075    pub sample_types: Option<Vec<fidl_fuchsia_audio__common::SampleType>>,
2076    /// The number of frame rates that the device supports. This must contain at
2077    /// least one frame rate entry.
2078    ///
2079    /// Required.
2080    pub frame_rates: Option<Vec<u32>>,
2081    #[doc(hidden)]
2082    pub __source_breaking: fidl::marker::SourceBreaking,
2083}
2084
2085impl fidl::Persistable for PcmFormatSet {}
2086
2087#[derive(Clone, Debug, Default, PartialEq)]
2088pub struct ProviderAddDeviceResponse {
2089    #[doc(hidden)]
2090    pub __source_breaking: fidl::marker::SourceBreaking,
2091}
2092
2093impl fidl::Persistable for ProviderAddDeviceResponse {}
2094
2095#[derive(Clone, Debug, Default, PartialEq)]
2096pub struct RegistryCreateObserverResponse {
2097    #[doc(hidden)]
2098    pub __source_breaking: fidl::marker::SourceBreaking,
2099}
2100
2101impl fidl::Persistable for RegistryCreateObserverResponse {}
2102
2103#[derive(Clone, Debug, Default, PartialEq)]
2104pub struct RegistryWatchDeviceRemovedResponse {
2105    /// The token of the device least-recently removed.
2106    pub token_id: Option<u64>,
2107    #[doc(hidden)]
2108    pub __source_breaking: fidl::marker::SourceBreaking,
2109}
2110
2111impl fidl::Persistable for RegistryWatchDeviceRemovedResponse {}
2112
2113#[derive(Clone, Debug, Default, PartialEq)]
2114pub struct RegistryWatchDevicesAddedResponse {
2115    /// Devices added since `WatchDevicesAdded` was last called. When called
2116    /// for the first time, this method returns all available audio devices
2117    /// (even an empty vector, if no audio devices are present). Subsequent
2118    /// calls will pend until additional devices become available.
2119    pub devices: Option<Vec<Info>>,
2120    #[doc(hidden)]
2121    pub __source_breaking: fidl::marker::SourceBreaking,
2122}
2123
2124impl fidl::Persistable for RegistryWatchDevicesAddedResponse {}
2125
2126/// Parameters specified by a caller when creating a ring buffer.
2127#[derive(Clone, Debug, Default, PartialEq)]
2128pub struct RingBufferOptions {
2129    /// The format (sample format, channelization, frame rate) of the ring
2130    /// buffer to be created.
2131    ///
2132    /// Required.
2133    pub format: Option<fidl_fuchsia_audio__common::Format>,
2134    /// The minimum number of bytes required in the ring buffer. The actual
2135    /// buffer may be larger, as required by the encoding, driver, device or OS.
2136    ///
2137    /// Required.
2138    pub ring_buffer_min_bytes: Option<u32>,
2139    #[doc(hidden)]
2140    pub __source_breaking: fidl::marker::SourceBreaking,
2141}
2142
2143impl fidl::Persistable for RingBufferOptions {}
2144
2145/// Information about the ring buffer or associated audio stream.
2146#[derive(Clone, Debug, Default, PartialEq)]
2147pub struct RingBufferProperties {
2148    /// The number of bits (starting with the most significant) that are valid,
2149    /// within each individual sample. This may be be smaller than the actual
2150    /// sample size, in the case of an input ring buffer fed by an 18-bit ADC
2151    /// for example. Any additional bits of precision should be ignored.
2152    ///
2153    /// Required.
2154    pub valid_bits_per_sample: Option<u8>,
2155    /// The maximum delay until disabled channels become fully operational,
2156    /// after calling `SetActiveChannels`. This is the worst-case duration when
2157    /// reenabling all channels. The value must be non-negative.
2158    ///
2159    /// Required.
2160    pub turn_on_delay: Option<i64>,
2161    #[doc(hidden)]
2162    pub __source_breaking: fidl::marker::SourceBreaking,
2163}
2164
2165impl fidl::Persistable for RingBufferProperties {}
2166
2167#[derive(Clone, Debug, Default, PartialEq)]
2168pub struct RingBufferSetActiveChannelsRequest {
2169    /// The channels to be activated (all others should be deactivated). No
2170    /// bit should be set above the `channel_count` specified in the ring
2171    /// buffer format (e.g. for a four-channel stream, `channel_bitmask`
2172    /// must be in the [0x00, 0x0F] range).
2173    ///
2174    /// Required.
2175    pub channel_bitmask: Option<u64>,
2176    #[doc(hidden)]
2177    pub __source_breaking: fidl::marker::SourceBreaking,
2178}
2179
2180impl fidl::Persistable for RingBufferSetActiveChannelsRequest {}
2181
2182#[derive(Clone, Debug, Default, PartialEq)]
2183pub struct RingBufferStartRequest {
2184    #[doc(hidden)]
2185    pub __source_breaking: fidl::marker::SourceBreaking,
2186}
2187
2188impl fidl::Persistable for RingBufferStartRequest {}
2189
2190#[derive(Clone, Debug, Default, PartialEq)]
2191pub struct RingBufferStopRequest {
2192    #[doc(hidden)]
2193    pub __source_breaking: fidl::marker::SourceBreaking,
2194}
2195
2196impl fidl::Persistable for RingBufferStopRequest {}
2197
2198#[derive(Clone, Debug, Default, PartialEq)]
2199pub struct RingBufferSetActiveChannelsResponse {
2200    /// The CLOCK_MONOTONIC time when the hardware was configured. Note:
2201    /// this does not include the effects of `turn_on_delay` on streams.
2202    ///
2203    /// Required.
2204    pub set_time: Option<i64>,
2205    #[doc(hidden)]
2206    pub __source_breaking: fidl::marker::SourceBreaking,
2207}
2208
2209impl fidl::Persistable for RingBufferSetActiveChannelsResponse {}
2210
2211#[derive(Clone, Debug, Default, PartialEq)]
2212pub struct RingBufferStartResponse {
2213    /// The CLOCK_MONOTONIC time when the stream was started.
2214    ///
2215    /// Required.
2216    pub start_time: Option<i64>,
2217    #[doc(hidden)]
2218    pub __source_breaking: fidl::marker::SourceBreaking,
2219}
2220
2221impl fidl::Persistable for RingBufferStartResponse {}
2222
2223#[derive(Clone, Debug, Default, PartialEq)]
2224pub struct RingBufferStopResponse {
2225    #[doc(hidden)]
2226    pub __source_breaking: fidl::marker::SourceBreaking,
2227}
2228
2229impl fidl::Persistable for RingBufferStopResponse {}
2230
2231#[derive(Clone, Debug, Default, PartialEq)]
2232pub struct RingBufferWatchDelayInfoResponse {
2233    /// Required.
2234    pub delay_info: Option<DelayInfo>,
2235    #[doc(hidden)]
2236    pub __source_breaking: fidl::marker::SourceBreaking,
2237}
2238
2239impl fidl::Persistable for RingBufferWatchDelayInfoResponse {}
2240
2241/// The data format of the packet stream.
2242#[derive(Clone, Debug)]
2243pub enum PacketStreamFormat {
2244    /// Format for uncompressed PCM audio.
2245    PcmFormat(fidl_fuchsia_audio__common::Format),
2246    /// Format for encoded audio (e.g., AAC, SBC).
2247    Encoding(fidl_fuchsia_hardware_audio__common::Encoding),
2248    #[doc(hidden)]
2249    __SourceBreaking { unknown_ordinal: u64 },
2250}
2251
2252/// Pattern that matches an unknown `PacketStreamFormat` member.
2253#[macro_export]
2254macro_rules! PacketStreamFormatUnknown {
2255    () => {
2256        _
2257    };
2258}
2259
2260// Custom PartialEq so that unknown variants are not equal to themselves.
2261impl PartialEq for PacketStreamFormat {
2262    fn eq(&self, other: &Self) -> bool {
2263        match (self, other) {
2264            (Self::PcmFormat(x), Self::PcmFormat(y)) => *x == *y,
2265            (Self::Encoding(x), Self::Encoding(y)) => *x == *y,
2266            _ => false,
2267        }
2268    }
2269}
2270
2271impl PacketStreamFormat {
2272    #[inline]
2273    pub fn ordinal(&self) -> u64 {
2274        match *self {
2275            Self::PcmFormat(_) => 1,
2276            Self::Encoding(_) => 2,
2277            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2278        }
2279    }
2280
2281    #[inline]
2282    pub fn unknown_variant_for_testing() -> Self {
2283        Self::__SourceBreaking { unknown_ordinal: 0 }
2284    }
2285
2286    #[inline]
2287    pub fn is_unknown(&self) -> bool {
2288        match self {
2289            Self::__SourceBreaking { .. } => true,
2290            _ => false,
2291        }
2292    }
2293}
2294
2295impl fidl::Persistable for PacketStreamFormat {}
2296
2297/// This union represents a specific set of formats supported by a packet stream.
2298/// A packet stream may support uncompressed PCM, encoded audio, or both.
2299/// A vector of this union is used to describe the possible formats that a
2300/// packet stream can support.
2301#[derive(Clone, Debug)]
2302pub enum PacketStreamSupportedFormats {
2303    /// Supported formats for uncompressed PCM audio.
2304    PcmFormat(PcmFormatSet),
2305    /// Supported formats for encoded audio (e.g. AAC, SBC).
2306    SupportedEncodings(fidl_fuchsia_hardware_audio__common::SupportedEncodings),
2307    #[doc(hidden)]
2308    __SourceBreaking { unknown_ordinal: u64 },
2309}
2310
2311/// Pattern that matches an unknown `PacketStreamSupportedFormats` member.
2312#[macro_export]
2313macro_rules! PacketStreamSupportedFormatsUnknown {
2314    () => {
2315        _
2316    };
2317}
2318
2319// Custom PartialEq so that unknown variants are not equal to themselves.
2320impl PartialEq for PacketStreamSupportedFormats {
2321    fn eq(&self, other: &Self) -> bool {
2322        match (self, other) {
2323            (Self::PcmFormat(x), Self::PcmFormat(y)) => *x == *y,
2324            (Self::SupportedEncodings(x), Self::SupportedEncodings(y)) => *x == *y,
2325            _ => false,
2326        }
2327    }
2328}
2329
2330impl PacketStreamSupportedFormats {
2331    #[inline]
2332    pub fn ordinal(&self) -> u64 {
2333        match *self {
2334            Self::PcmFormat(_) => 1,
2335            Self::SupportedEncodings(_) => 2,
2336            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2337        }
2338    }
2339
2340    #[inline]
2341    pub fn unknown_variant_for_testing() -> Self {
2342        Self::__SourceBreaking { unknown_ordinal: 0 }
2343    }
2344
2345    #[inline]
2346    pub fn is_unknown(&self) -> bool {
2347        match self {
2348            Self::__SourceBreaking { .. } => true,
2349            _ => false,
2350        }
2351    }
2352}
2353
2354impl fidl::Persistable for PacketStreamSupportedFormats {}
2355
2356pub mod control_ordinals {
2357    pub const GET_ELEMENTS: u64 = 0x1b14ff4adf5dc6f8;
2358    pub const WATCH_ELEMENT_STATE: u64 = 0x524da8772a69056f;
2359    pub const GET_TOPOLOGIES: u64 = 0x73ffb73af24d30b6;
2360    pub const WATCH_TOPOLOGY: u64 = 0x66d172acdb36a729;
2361    pub const SET_TOPOLOGY: u64 = 0x1d9a7f9b8fee790c;
2362    pub const SET_ELEMENT_STATE: u64 = 0x38c3b2d4bae698f4;
2363    pub const CREATE_RING_BUFFER: u64 = 0x7462941cedb333db;
2364    pub const CREATE_PACKET_STREAM: u64 = 0x5b2eacb5ad7df289;
2365    pub const SET_DAI_FORMAT: u64 = 0x1d84f5a456a92216;
2366    pub const CODEC_START: u64 = 0x2a90a9d2958b997b;
2367    pub const CODEC_STOP: u64 = 0x387297bb6bcad25f;
2368    pub const RESET: u64 = 0x49840db00a698996;
2369}
2370
2371pub mod control_creator_ordinals {
2372    pub const CREATE: u64 = 0x341bdc9f49103a31;
2373}
2374
2375pub mod observer_ordinals {
2376    pub const GET_ELEMENTS: u64 = 0x1b14ff4adf5dc6f8;
2377    pub const WATCH_ELEMENT_STATE: u64 = 0x524da8772a69056f;
2378    pub const GET_TOPOLOGIES: u64 = 0x73ffb73af24d30b6;
2379    pub const WATCH_TOPOLOGY: u64 = 0x66d172acdb36a729;
2380    pub const WATCH_PLUG_STATE: u64 = 0x6312bce495d2907a;
2381    pub const GET_REFERENCE_CLOCK: u64 = 0x3819c5e0f9574c39;
2382}
2383
2384pub mod packet_stream_ordinals {
2385    pub const SET_BUFFERS: u64 = 0x5ccdec88e71cf564;
2386    pub const START: u64 = 0x70710dba352debdd;
2387    pub const STOP: u64 = 0x11db078485b7d51e;
2388}
2389
2390pub mod provider_ordinals {
2391    pub const ADD_DEVICE: u64 = 0x685fdfd91937758b;
2392}
2393
2394pub mod registry_ordinals {
2395    pub const WATCH_DEVICES_ADDED: u64 = 0x562ca31f7c149def;
2396    pub const WATCH_DEVICE_REMOVED: u64 = 0x6e67aabc99a502af;
2397    pub const CREATE_OBSERVER: u64 = 0x577bc322eb8d2bd1;
2398}
2399
2400pub mod ring_buffer_ordinals {
2401    pub const SET_ACTIVE_CHANNELS: u64 = 0x4276c43e4a3b59ee;
2402    pub const START: u64 = 0x5365a8609dc2dc5;
2403    pub const STOP: u64 = 0x5a238810af11e6e1;
2404    pub const WATCH_DELAY_INFO: u64 = 0x6d1dc5a928f38ad6;
2405}
2406
2407mod internal {
2408    use super::*;
2409    unsafe impl fidl::encoding::TypeMarker for ControlCodecStartError {
2410        type Owned = Self;
2411
2412        #[inline(always)]
2413        fn inline_align(_context: fidl::encoding::Context) -> usize {
2414            std::mem::align_of::<u32>()
2415        }
2416
2417        #[inline(always)]
2418        fn inline_size(_context: fidl::encoding::Context) -> usize {
2419            std::mem::size_of::<u32>()
2420        }
2421
2422        #[inline(always)]
2423        fn encode_is_copy() -> bool {
2424            false
2425        }
2426
2427        #[inline(always)]
2428        fn decode_is_copy() -> bool {
2429            false
2430        }
2431    }
2432
2433    impl fidl::encoding::ValueTypeMarker for ControlCodecStartError {
2434        type Borrowed<'a> = Self;
2435        #[inline(always)]
2436        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2437            *value
2438        }
2439    }
2440
2441    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2442        for ControlCodecStartError
2443    {
2444        #[inline]
2445        unsafe fn encode(
2446            self,
2447            encoder: &mut fidl::encoding::Encoder<'_, D>,
2448            offset: usize,
2449            _depth: fidl::encoding::Depth,
2450        ) -> fidl::Result<()> {
2451            encoder.debug_check_bounds::<Self>(offset);
2452            encoder.write_num(self.into_primitive(), offset);
2453            Ok(())
2454        }
2455    }
2456
2457    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2458        for ControlCodecStartError
2459    {
2460        #[inline(always)]
2461        fn new_empty() -> Self {
2462            Self::unknown()
2463        }
2464
2465        #[inline]
2466        unsafe fn decode(
2467            &mut self,
2468            decoder: &mut fidl::encoding::Decoder<'_, D>,
2469            offset: usize,
2470            _depth: fidl::encoding::Depth,
2471        ) -> fidl::Result<()> {
2472            decoder.debug_check_bounds::<Self>(offset);
2473            let prim = decoder.read_num::<u32>(offset);
2474
2475            *self = Self::from_primitive_allow_unknown(prim);
2476            Ok(())
2477        }
2478    }
2479    unsafe impl fidl::encoding::TypeMarker for ControlCodecStopError {
2480        type Owned = Self;
2481
2482        #[inline(always)]
2483        fn inline_align(_context: fidl::encoding::Context) -> usize {
2484            std::mem::align_of::<u32>()
2485        }
2486
2487        #[inline(always)]
2488        fn inline_size(_context: fidl::encoding::Context) -> usize {
2489            std::mem::size_of::<u32>()
2490        }
2491
2492        #[inline(always)]
2493        fn encode_is_copy() -> bool {
2494            false
2495        }
2496
2497        #[inline(always)]
2498        fn decode_is_copy() -> bool {
2499            false
2500        }
2501    }
2502
2503    impl fidl::encoding::ValueTypeMarker for ControlCodecStopError {
2504        type Borrowed<'a> = Self;
2505        #[inline(always)]
2506        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2507            *value
2508        }
2509    }
2510
2511    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2512        for ControlCodecStopError
2513    {
2514        #[inline]
2515        unsafe fn encode(
2516            self,
2517            encoder: &mut fidl::encoding::Encoder<'_, D>,
2518            offset: usize,
2519            _depth: fidl::encoding::Depth,
2520        ) -> fidl::Result<()> {
2521            encoder.debug_check_bounds::<Self>(offset);
2522            encoder.write_num(self.into_primitive(), offset);
2523            Ok(())
2524        }
2525    }
2526
2527    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlCodecStopError {
2528        #[inline(always)]
2529        fn new_empty() -> Self {
2530            Self::unknown()
2531        }
2532
2533        #[inline]
2534        unsafe fn decode(
2535            &mut self,
2536            decoder: &mut fidl::encoding::Decoder<'_, D>,
2537            offset: usize,
2538            _depth: fidl::encoding::Depth,
2539        ) -> fidl::Result<()> {
2540            decoder.debug_check_bounds::<Self>(offset);
2541            let prim = decoder.read_num::<u32>(offset);
2542
2543            *self = Self::from_primitive_allow_unknown(prim);
2544            Ok(())
2545        }
2546    }
2547    unsafe impl fidl::encoding::TypeMarker for ControlCreatePacketStreamError {
2548        type Owned = Self;
2549
2550        #[inline(always)]
2551        fn inline_align(_context: fidl::encoding::Context) -> usize {
2552            std::mem::align_of::<u32>()
2553        }
2554
2555        #[inline(always)]
2556        fn inline_size(_context: fidl::encoding::Context) -> usize {
2557            std::mem::size_of::<u32>()
2558        }
2559
2560        #[inline(always)]
2561        fn encode_is_copy() -> bool {
2562            false
2563        }
2564
2565        #[inline(always)]
2566        fn decode_is_copy() -> bool {
2567            false
2568        }
2569    }
2570
2571    impl fidl::encoding::ValueTypeMarker for ControlCreatePacketStreamError {
2572        type Borrowed<'a> = Self;
2573        #[inline(always)]
2574        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2575            *value
2576        }
2577    }
2578
2579    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2580        for ControlCreatePacketStreamError
2581    {
2582        #[inline]
2583        unsafe fn encode(
2584            self,
2585            encoder: &mut fidl::encoding::Encoder<'_, D>,
2586            offset: usize,
2587            _depth: fidl::encoding::Depth,
2588        ) -> fidl::Result<()> {
2589            encoder.debug_check_bounds::<Self>(offset);
2590            encoder.write_num(self.into_primitive(), offset);
2591            Ok(())
2592        }
2593    }
2594
2595    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2596        for ControlCreatePacketStreamError
2597    {
2598        #[inline(always)]
2599        fn new_empty() -> Self {
2600            Self::unknown()
2601        }
2602
2603        #[inline]
2604        unsafe fn decode(
2605            &mut self,
2606            decoder: &mut fidl::encoding::Decoder<'_, D>,
2607            offset: usize,
2608            _depth: fidl::encoding::Depth,
2609        ) -> fidl::Result<()> {
2610            decoder.debug_check_bounds::<Self>(offset);
2611            let prim = decoder.read_num::<u32>(offset);
2612
2613            *self = Self::from_primitive_allow_unknown(prim);
2614            Ok(())
2615        }
2616    }
2617    unsafe impl fidl::encoding::TypeMarker for ControlCreateRingBufferError {
2618        type Owned = Self;
2619
2620        #[inline(always)]
2621        fn inline_align(_context: fidl::encoding::Context) -> usize {
2622            std::mem::align_of::<u32>()
2623        }
2624
2625        #[inline(always)]
2626        fn inline_size(_context: fidl::encoding::Context) -> usize {
2627            std::mem::size_of::<u32>()
2628        }
2629
2630        #[inline(always)]
2631        fn encode_is_copy() -> bool {
2632            false
2633        }
2634
2635        #[inline(always)]
2636        fn decode_is_copy() -> bool {
2637            false
2638        }
2639    }
2640
2641    impl fidl::encoding::ValueTypeMarker for ControlCreateRingBufferError {
2642        type Borrowed<'a> = Self;
2643        #[inline(always)]
2644        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2645            *value
2646        }
2647    }
2648
2649    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2650        for ControlCreateRingBufferError
2651    {
2652        #[inline]
2653        unsafe fn encode(
2654            self,
2655            encoder: &mut fidl::encoding::Encoder<'_, D>,
2656            offset: usize,
2657            _depth: fidl::encoding::Depth,
2658        ) -> fidl::Result<()> {
2659            encoder.debug_check_bounds::<Self>(offset);
2660            encoder.write_num(self.into_primitive(), offset);
2661            Ok(())
2662        }
2663    }
2664
2665    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2666        for ControlCreateRingBufferError
2667    {
2668        #[inline(always)]
2669        fn new_empty() -> Self {
2670            Self::unknown()
2671        }
2672
2673        #[inline]
2674        unsafe fn decode(
2675            &mut self,
2676            decoder: &mut fidl::encoding::Decoder<'_, D>,
2677            offset: usize,
2678            _depth: fidl::encoding::Depth,
2679        ) -> fidl::Result<()> {
2680            decoder.debug_check_bounds::<Self>(offset);
2681            let prim = decoder.read_num::<u32>(offset);
2682
2683            *self = Self::from_primitive_allow_unknown(prim);
2684            Ok(())
2685        }
2686    }
2687    unsafe impl fidl::encoding::TypeMarker for ControlCreatorError {
2688        type Owned = Self;
2689
2690        #[inline(always)]
2691        fn inline_align(_context: fidl::encoding::Context) -> usize {
2692            std::mem::align_of::<u32>()
2693        }
2694
2695        #[inline(always)]
2696        fn inline_size(_context: fidl::encoding::Context) -> usize {
2697            std::mem::size_of::<u32>()
2698        }
2699
2700        #[inline(always)]
2701        fn encode_is_copy() -> bool {
2702            false
2703        }
2704
2705        #[inline(always)]
2706        fn decode_is_copy() -> bool {
2707            false
2708        }
2709    }
2710
2711    impl fidl::encoding::ValueTypeMarker for ControlCreatorError {
2712        type Borrowed<'a> = Self;
2713        #[inline(always)]
2714        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2715            *value
2716        }
2717    }
2718
2719    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2720        for ControlCreatorError
2721    {
2722        #[inline]
2723        unsafe fn encode(
2724            self,
2725            encoder: &mut fidl::encoding::Encoder<'_, D>,
2726            offset: usize,
2727            _depth: fidl::encoding::Depth,
2728        ) -> fidl::Result<()> {
2729            encoder.debug_check_bounds::<Self>(offset);
2730            encoder.write_num(self.into_primitive(), offset);
2731            Ok(())
2732        }
2733    }
2734
2735    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlCreatorError {
2736        #[inline(always)]
2737        fn new_empty() -> Self {
2738            Self::unknown()
2739        }
2740
2741        #[inline]
2742        unsafe fn decode(
2743            &mut self,
2744            decoder: &mut fidl::encoding::Decoder<'_, D>,
2745            offset: usize,
2746            _depth: fidl::encoding::Depth,
2747        ) -> fidl::Result<()> {
2748            decoder.debug_check_bounds::<Self>(offset);
2749            let prim = decoder.read_num::<u32>(offset);
2750
2751            *self = Self::from_primitive_allow_unknown(prim);
2752            Ok(())
2753        }
2754    }
2755    unsafe impl fidl::encoding::TypeMarker for ControlResetError {
2756        type Owned = Self;
2757
2758        #[inline(always)]
2759        fn inline_align(_context: fidl::encoding::Context) -> usize {
2760            std::mem::align_of::<u32>()
2761        }
2762
2763        #[inline(always)]
2764        fn inline_size(_context: fidl::encoding::Context) -> usize {
2765            std::mem::size_of::<u32>()
2766        }
2767
2768        #[inline(always)]
2769        fn encode_is_copy() -> bool {
2770            false
2771        }
2772
2773        #[inline(always)]
2774        fn decode_is_copy() -> bool {
2775            false
2776        }
2777    }
2778
2779    impl fidl::encoding::ValueTypeMarker for ControlResetError {
2780        type Borrowed<'a> = Self;
2781        #[inline(always)]
2782        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2783            *value
2784        }
2785    }
2786
2787    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2788        for ControlResetError
2789    {
2790        #[inline]
2791        unsafe fn encode(
2792            self,
2793            encoder: &mut fidl::encoding::Encoder<'_, D>,
2794            offset: usize,
2795            _depth: fidl::encoding::Depth,
2796        ) -> fidl::Result<()> {
2797            encoder.debug_check_bounds::<Self>(offset);
2798            encoder.write_num(self.into_primitive(), offset);
2799            Ok(())
2800        }
2801    }
2802
2803    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlResetError {
2804        #[inline(always)]
2805        fn new_empty() -> Self {
2806            Self::unknown()
2807        }
2808
2809        #[inline]
2810        unsafe fn decode(
2811            &mut self,
2812            decoder: &mut fidl::encoding::Decoder<'_, D>,
2813            offset: usize,
2814            _depth: fidl::encoding::Depth,
2815        ) -> fidl::Result<()> {
2816            decoder.debug_check_bounds::<Self>(offset);
2817            let prim = decoder.read_num::<u32>(offset);
2818
2819            *self = Self::from_primitive_allow_unknown(prim);
2820            Ok(())
2821        }
2822    }
2823    unsafe impl fidl::encoding::TypeMarker for ControlSetDaiFormatError {
2824        type Owned = Self;
2825
2826        #[inline(always)]
2827        fn inline_align(_context: fidl::encoding::Context) -> usize {
2828            std::mem::align_of::<u32>()
2829        }
2830
2831        #[inline(always)]
2832        fn inline_size(_context: fidl::encoding::Context) -> usize {
2833            std::mem::size_of::<u32>()
2834        }
2835
2836        #[inline(always)]
2837        fn encode_is_copy() -> bool {
2838            false
2839        }
2840
2841        #[inline(always)]
2842        fn decode_is_copy() -> bool {
2843            false
2844        }
2845    }
2846
2847    impl fidl::encoding::ValueTypeMarker for ControlSetDaiFormatError {
2848        type Borrowed<'a> = Self;
2849        #[inline(always)]
2850        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2851            *value
2852        }
2853    }
2854
2855    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2856        for ControlSetDaiFormatError
2857    {
2858        #[inline]
2859        unsafe fn encode(
2860            self,
2861            encoder: &mut fidl::encoding::Encoder<'_, D>,
2862            offset: usize,
2863            _depth: fidl::encoding::Depth,
2864        ) -> fidl::Result<()> {
2865            encoder.debug_check_bounds::<Self>(offset);
2866            encoder.write_num(self.into_primitive(), offset);
2867            Ok(())
2868        }
2869    }
2870
2871    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2872        for ControlSetDaiFormatError
2873    {
2874        #[inline(always)]
2875        fn new_empty() -> Self {
2876            Self::unknown()
2877        }
2878
2879        #[inline]
2880        unsafe fn decode(
2881            &mut self,
2882            decoder: &mut fidl::encoding::Decoder<'_, D>,
2883            offset: usize,
2884            _depth: fidl::encoding::Depth,
2885        ) -> fidl::Result<()> {
2886            decoder.debug_check_bounds::<Self>(offset);
2887            let prim = decoder.read_num::<u32>(offset);
2888
2889            *self = Self::from_primitive_allow_unknown(prim);
2890            Ok(())
2891        }
2892    }
2893    unsafe impl fidl::encoding::TypeMarker for DeviceType {
2894        type Owned = Self;
2895
2896        #[inline(always)]
2897        fn inline_align(_context: fidl::encoding::Context) -> usize {
2898            std::mem::align_of::<u32>()
2899        }
2900
2901        #[inline(always)]
2902        fn inline_size(_context: fidl::encoding::Context) -> usize {
2903            std::mem::size_of::<u32>()
2904        }
2905
2906        #[inline(always)]
2907        fn encode_is_copy() -> bool {
2908            false
2909        }
2910
2911        #[inline(always)]
2912        fn decode_is_copy() -> bool {
2913            false
2914        }
2915    }
2916
2917    impl fidl::encoding::ValueTypeMarker for DeviceType {
2918        type Borrowed<'a> = Self;
2919        #[inline(always)]
2920        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2921            *value
2922        }
2923    }
2924
2925    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DeviceType {
2926        #[inline]
2927        unsafe fn encode(
2928            self,
2929            encoder: &mut fidl::encoding::Encoder<'_, D>,
2930            offset: usize,
2931            _depth: fidl::encoding::Depth,
2932        ) -> fidl::Result<()> {
2933            encoder.debug_check_bounds::<Self>(offset);
2934            encoder.write_num(self.into_primitive(), offset);
2935            Ok(())
2936        }
2937    }
2938
2939    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceType {
2940        #[inline(always)]
2941        fn new_empty() -> Self {
2942            Self::unknown()
2943        }
2944
2945        #[inline]
2946        unsafe fn decode(
2947            &mut self,
2948            decoder: &mut fidl::encoding::Decoder<'_, D>,
2949            offset: usize,
2950            _depth: fidl::encoding::Depth,
2951        ) -> fidl::Result<()> {
2952            decoder.debug_check_bounds::<Self>(offset);
2953            let prim = decoder.read_num::<u32>(offset);
2954
2955            *self = Self::from_primitive_allow_unknown(prim);
2956            Ok(())
2957        }
2958    }
2959    unsafe impl fidl::encoding::TypeMarker for ObserverGetReferenceClockError {
2960        type Owned = Self;
2961
2962        #[inline(always)]
2963        fn inline_align(_context: fidl::encoding::Context) -> usize {
2964            std::mem::align_of::<u32>()
2965        }
2966
2967        #[inline(always)]
2968        fn inline_size(_context: fidl::encoding::Context) -> usize {
2969            std::mem::size_of::<u32>()
2970        }
2971
2972        #[inline(always)]
2973        fn encode_is_copy() -> bool {
2974            false
2975        }
2976
2977        #[inline(always)]
2978        fn decode_is_copy() -> bool {
2979            false
2980        }
2981    }
2982
2983    impl fidl::encoding::ValueTypeMarker for ObserverGetReferenceClockError {
2984        type Borrowed<'a> = Self;
2985        #[inline(always)]
2986        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2987            *value
2988        }
2989    }
2990
2991    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2992        for ObserverGetReferenceClockError
2993    {
2994        #[inline]
2995        unsafe fn encode(
2996            self,
2997            encoder: &mut fidl::encoding::Encoder<'_, D>,
2998            offset: usize,
2999            _depth: fidl::encoding::Depth,
3000        ) -> fidl::Result<()> {
3001            encoder.debug_check_bounds::<Self>(offset);
3002            encoder.write_num(self.into_primitive(), offset);
3003            Ok(())
3004        }
3005    }
3006
3007    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3008        for ObserverGetReferenceClockError
3009    {
3010        #[inline(always)]
3011        fn new_empty() -> Self {
3012            Self::unknown()
3013        }
3014
3015        #[inline]
3016        unsafe fn decode(
3017            &mut self,
3018            decoder: &mut fidl::encoding::Decoder<'_, D>,
3019            offset: usize,
3020            _depth: fidl::encoding::Depth,
3021        ) -> fidl::Result<()> {
3022            decoder.debug_check_bounds::<Self>(offset);
3023            let prim = decoder.read_num::<u32>(offset);
3024
3025            *self = Self::from_primitive_allow_unknown(prim);
3026            Ok(())
3027        }
3028    }
3029    unsafe impl fidl::encoding::TypeMarker for ObserverWatchPlugStateError {
3030        type Owned = Self;
3031
3032        #[inline(always)]
3033        fn inline_align(_context: fidl::encoding::Context) -> usize {
3034            std::mem::align_of::<u32>()
3035        }
3036
3037        #[inline(always)]
3038        fn inline_size(_context: fidl::encoding::Context) -> usize {
3039            std::mem::size_of::<u32>()
3040        }
3041
3042        #[inline(always)]
3043        fn encode_is_copy() -> bool {
3044            false
3045        }
3046
3047        #[inline(always)]
3048        fn decode_is_copy() -> bool {
3049            false
3050        }
3051    }
3052
3053    impl fidl::encoding::ValueTypeMarker for ObserverWatchPlugStateError {
3054        type Borrowed<'a> = Self;
3055        #[inline(always)]
3056        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3057            *value
3058        }
3059    }
3060
3061    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3062        for ObserverWatchPlugStateError
3063    {
3064        #[inline]
3065        unsafe fn encode(
3066            self,
3067            encoder: &mut fidl::encoding::Encoder<'_, D>,
3068            offset: usize,
3069            _depth: fidl::encoding::Depth,
3070        ) -> fidl::Result<()> {
3071            encoder.debug_check_bounds::<Self>(offset);
3072            encoder.write_num(self.into_primitive(), offset);
3073            Ok(())
3074        }
3075    }
3076
3077    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3078        for ObserverWatchPlugStateError
3079    {
3080        #[inline(always)]
3081        fn new_empty() -> Self {
3082            Self::unknown()
3083        }
3084
3085        #[inline]
3086        unsafe fn decode(
3087            &mut self,
3088            decoder: &mut fidl::encoding::Decoder<'_, D>,
3089            offset: usize,
3090            _depth: fidl::encoding::Depth,
3091        ) -> fidl::Result<()> {
3092            decoder.debug_check_bounds::<Self>(offset);
3093            let prim = decoder.read_num::<u32>(offset);
3094
3095            *self = Self::from_primitive_allow_unknown(prim);
3096            Ok(())
3097        }
3098    }
3099    unsafe impl fidl::encoding::TypeMarker for PacketStreamSetBufferError {
3100        type Owned = Self;
3101
3102        #[inline(always)]
3103        fn inline_align(_context: fidl::encoding::Context) -> usize {
3104            std::mem::align_of::<u32>()
3105        }
3106
3107        #[inline(always)]
3108        fn inline_size(_context: fidl::encoding::Context) -> usize {
3109            std::mem::size_of::<u32>()
3110        }
3111
3112        #[inline(always)]
3113        fn encode_is_copy() -> bool {
3114            false
3115        }
3116
3117        #[inline(always)]
3118        fn decode_is_copy() -> bool {
3119            false
3120        }
3121    }
3122
3123    impl fidl::encoding::ValueTypeMarker for PacketStreamSetBufferError {
3124        type Borrowed<'a> = Self;
3125        #[inline(always)]
3126        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3127            *value
3128        }
3129    }
3130
3131    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3132        for PacketStreamSetBufferError
3133    {
3134        #[inline]
3135        unsafe fn encode(
3136            self,
3137            encoder: &mut fidl::encoding::Encoder<'_, D>,
3138            offset: usize,
3139            _depth: fidl::encoding::Depth,
3140        ) -> fidl::Result<()> {
3141            encoder.debug_check_bounds::<Self>(offset);
3142            encoder.write_num(self.into_primitive(), offset);
3143            Ok(())
3144        }
3145    }
3146
3147    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3148        for PacketStreamSetBufferError
3149    {
3150        #[inline(always)]
3151        fn new_empty() -> Self {
3152            Self::unknown()
3153        }
3154
3155        #[inline]
3156        unsafe fn decode(
3157            &mut self,
3158            decoder: &mut fidl::encoding::Decoder<'_, D>,
3159            offset: usize,
3160            _depth: fidl::encoding::Depth,
3161        ) -> fidl::Result<()> {
3162            decoder.debug_check_bounds::<Self>(offset);
3163            let prim = decoder.read_num::<u32>(offset);
3164
3165            *self = Self::from_primitive_allow_unknown(prim);
3166            Ok(())
3167        }
3168    }
3169    unsafe impl fidl::encoding::TypeMarker for PacketStreamStartError {
3170        type Owned = Self;
3171
3172        #[inline(always)]
3173        fn inline_align(_context: fidl::encoding::Context) -> usize {
3174            std::mem::align_of::<u32>()
3175        }
3176
3177        #[inline(always)]
3178        fn inline_size(_context: fidl::encoding::Context) -> usize {
3179            std::mem::size_of::<u32>()
3180        }
3181
3182        #[inline(always)]
3183        fn encode_is_copy() -> bool {
3184            false
3185        }
3186
3187        #[inline(always)]
3188        fn decode_is_copy() -> bool {
3189            false
3190        }
3191    }
3192
3193    impl fidl::encoding::ValueTypeMarker for PacketStreamStartError {
3194        type Borrowed<'a> = Self;
3195        #[inline(always)]
3196        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3197            *value
3198        }
3199    }
3200
3201    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3202        for PacketStreamStartError
3203    {
3204        #[inline]
3205        unsafe fn encode(
3206            self,
3207            encoder: &mut fidl::encoding::Encoder<'_, D>,
3208            offset: usize,
3209            _depth: fidl::encoding::Depth,
3210        ) -> fidl::Result<()> {
3211            encoder.debug_check_bounds::<Self>(offset);
3212            encoder.write_num(self.into_primitive(), offset);
3213            Ok(())
3214        }
3215    }
3216
3217    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3218        for PacketStreamStartError
3219    {
3220        #[inline(always)]
3221        fn new_empty() -> Self {
3222            Self::unknown()
3223        }
3224
3225        #[inline]
3226        unsafe fn decode(
3227            &mut self,
3228            decoder: &mut fidl::encoding::Decoder<'_, D>,
3229            offset: usize,
3230            _depth: fidl::encoding::Depth,
3231        ) -> fidl::Result<()> {
3232            decoder.debug_check_bounds::<Self>(offset);
3233            let prim = decoder.read_num::<u32>(offset);
3234
3235            *self = Self::from_primitive_allow_unknown(prim);
3236            Ok(())
3237        }
3238    }
3239    unsafe impl fidl::encoding::TypeMarker for PacketStreamStopError {
3240        type Owned = Self;
3241
3242        #[inline(always)]
3243        fn inline_align(_context: fidl::encoding::Context) -> usize {
3244            std::mem::align_of::<u32>()
3245        }
3246
3247        #[inline(always)]
3248        fn inline_size(_context: fidl::encoding::Context) -> usize {
3249            std::mem::size_of::<u32>()
3250        }
3251
3252        #[inline(always)]
3253        fn encode_is_copy() -> bool {
3254            false
3255        }
3256
3257        #[inline(always)]
3258        fn decode_is_copy() -> bool {
3259            false
3260        }
3261    }
3262
3263    impl fidl::encoding::ValueTypeMarker for PacketStreamStopError {
3264        type Borrowed<'a> = Self;
3265        #[inline(always)]
3266        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3267            *value
3268        }
3269    }
3270
3271    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3272        for PacketStreamStopError
3273    {
3274        #[inline]
3275        unsafe fn encode(
3276            self,
3277            encoder: &mut fidl::encoding::Encoder<'_, D>,
3278            offset: usize,
3279            _depth: fidl::encoding::Depth,
3280        ) -> fidl::Result<()> {
3281            encoder.debug_check_bounds::<Self>(offset);
3282            encoder.write_num(self.into_primitive(), offset);
3283            Ok(())
3284        }
3285    }
3286
3287    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PacketStreamStopError {
3288        #[inline(always)]
3289        fn new_empty() -> Self {
3290            Self::unknown()
3291        }
3292
3293        #[inline]
3294        unsafe fn decode(
3295            &mut self,
3296            decoder: &mut fidl::encoding::Decoder<'_, D>,
3297            offset: usize,
3298            _depth: fidl::encoding::Depth,
3299        ) -> fidl::Result<()> {
3300            decoder.debug_check_bounds::<Self>(offset);
3301            let prim = decoder.read_num::<u32>(offset);
3302
3303            *self = Self::from_primitive_allow_unknown(prim);
3304            Ok(())
3305        }
3306    }
3307    unsafe impl fidl::encoding::TypeMarker for PlugDetectCapabilities {
3308        type Owned = Self;
3309
3310        #[inline(always)]
3311        fn inline_align(_context: fidl::encoding::Context) -> usize {
3312            std::mem::align_of::<u32>()
3313        }
3314
3315        #[inline(always)]
3316        fn inline_size(_context: fidl::encoding::Context) -> usize {
3317            std::mem::size_of::<u32>()
3318        }
3319
3320        #[inline(always)]
3321        fn encode_is_copy() -> bool {
3322            false
3323        }
3324
3325        #[inline(always)]
3326        fn decode_is_copy() -> bool {
3327            false
3328        }
3329    }
3330
3331    impl fidl::encoding::ValueTypeMarker for PlugDetectCapabilities {
3332        type Borrowed<'a> = Self;
3333        #[inline(always)]
3334        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3335            *value
3336        }
3337    }
3338
3339    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3340        for PlugDetectCapabilities
3341    {
3342        #[inline]
3343        unsafe fn encode(
3344            self,
3345            encoder: &mut fidl::encoding::Encoder<'_, D>,
3346            offset: usize,
3347            _depth: fidl::encoding::Depth,
3348        ) -> fidl::Result<()> {
3349            encoder.debug_check_bounds::<Self>(offset);
3350            encoder.write_num(self.into_primitive(), offset);
3351            Ok(())
3352        }
3353    }
3354
3355    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3356        for PlugDetectCapabilities
3357    {
3358        #[inline(always)]
3359        fn new_empty() -> Self {
3360            Self::unknown()
3361        }
3362
3363        #[inline]
3364        unsafe fn decode(
3365            &mut self,
3366            decoder: &mut fidl::encoding::Decoder<'_, D>,
3367            offset: usize,
3368            _depth: fidl::encoding::Depth,
3369        ) -> fidl::Result<()> {
3370            decoder.debug_check_bounds::<Self>(offset);
3371            let prim = decoder.read_num::<u32>(offset);
3372
3373            *self = Self::from_primitive_allow_unknown(prim);
3374            Ok(())
3375        }
3376    }
3377    unsafe impl fidl::encoding::TypeMarker for PlugState {
3378        type Owned = Self;
3379
3380        #[inline(always)]
3381        fn inline_align(_context: fidl::encoding::Context) -> usize {
3382            std::mem::align_of::<u32>()
3383        }
3384
3385        #[inline(always)]
3386        fn inline_size(_context: fidl::encoding::Context) -> usize {
3387            std::mem::size_of::<u32>()
3388        }
3389
3390        #[inline(always)]
3391        fn encode_is_copy() -> bool {
3392            false
3393        }
3394
3395        #[inline(always)]
3396        fn decode_is_copy() -> bool {
3397            false
3398        }
3399    }
3400
3401    impl fidl::encoding::ValueTypeMarker for PlugState {
3402        type Borrowed<'a> = Self;
3403        #[inline(always)]
3404        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3405            *value
3406        }
3407    }
3408
3409    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PlugState {
3410        #[inline]
3411        unsafe fn encode(
3412            self,
3413            encoder: &mut fidl::encoding::Encoder<'_, D>,
3414            offset: usize,
3415            _depth: fidl::encoding::Depth,
3416        ) -> fidl::Result<()> {
3417            encoder.debug_check_bounds::<Self>(offset);
3418            encoder.write_num(self.into_primitive(), offset);
3419            Ok(())
3420        }
3421    }
3422
3423    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PlugState {
3424        #[inline(always)]
3425        fn new_empty() -> Self {
3426            Self::unknown()
3427        }
3428
3429        #[inline]
3430        unsafe fn decode(
3431            &mut self,
3432            decoder: &mut fidl::encoding::Decoder<'_, D>,
3433            offset: usize,
3434            _depth: fidl::encoding::Depth,
3435        ) -> fidl::Result<()> {
3436            decoder.debug_check_bounds::<Self>(offset);
3437            let prim = decoder.read_num::<u32>(offset);
3438
3439            *self = Self::from_primitive_allow_unknown(prim);
3440            Ok(())
3441        }
3442    }
3443    unsafe impl fidl::encoding::TypeMarker for ProviderAddDeviceError {
3444        type Owned = Self;
3445
3446        #[inline(always)]
3447        fn inline_align(_context: fidl::encoding::Context) -> usize {
3448            std::mem::align_of::<u32>()
3449        }
3450
3451        #[inline(always)]
3452        fn inline_size(_context: fidl::encoding::Context) -> usize {
3453            std::mem::size_of::<u32>()
3454        }
3455
3456        #[inline(always)]
3457        fn encode_is_copy() -> bool {
3458            false
3459        }
3460
3461        #[inline(always)]
3462        fn decode_is_copy() -> bool {
3463            false
3464        }
3465    }
3466
3467    impl fidl::encoding::ValueTypeMarker for ProviderAddDeviceError {
3468        type Borrowed<'a> = Self;
3469        #[inline(always)]
3470        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3471            *value
3472        }
3473    }
3474
3475    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3476        for ProviderAddDeviceError
3477    {
3478        #[inline]
3479        unsafe fn encode(
3480            self,
3481            encoder: &mut fidl::encoding::Encoder<'_, D>,
3482            offset: usize,
3483            _depth: fidl::encoding::Depth,
3484        ) -> fidl::Result<()> {
3485            encoder.debug_check_bounds::<Self>(offset);
3486            encoder.write_num(self.into_primitive(), offset);
3487            Ok(())
3488        }
3489    }
3490
3491    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3492        for ProviderAddDeviceError
3493    {
3494        #[inline(always)]
3495        fn new_empty() -> Self {
3496            Self::unknown()
3497        }
3498
3499        #[inline]
3500        unsafe fn decode(
3501            &mut self,
3502            decoder: &mut fidl::encoding::Decoder<'_, D>,
3503            offset: usize,
3504            _depth: fidl::encoding::Depth,
3505        ) -> fidl::Result<()> {
3506            decoder.debug_check_bounds::<Self>(offset);
3507            let prim = decoder.read_num::<u32>(offset);
3508
3509            *self = Self::from_primitive_allow_unknown(prim);
3510            Ok(())
3511        }
3512    }
3513    unsafe impl fidl::encoding::TypeMarker for RegistryCreateObserverError {
3514        type Owned = Self;
3515
3516        #[inline(always)]
3517        fn inline_align(_context: fidl::encoding::Context) -> usize {
3518            std::mem::align_of::<u32>()
3519        }
3520
3521        #[inline(always)]
3522        fn inline_size(_context: fidl::encoding::Context) -> usize {
3523            std::mem::size_of::<u32>()
3524        }
3525
3526        #[inline(always)]
3527        fn encode_is_copy() -> bool {
3528            false
3529        }
3530
3531        #[inline(always)]
3532        fn decode_is_copy() -> bool {
3533            false
3534        }
3535    }
3536
3537    impl fidl::encoding::ValueTypeMarker for RegistryCreateObserverError {
3538        type Borrowed<'a> = Self;
3539        #[inline(always)]
3540        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3541            *value
3542        }
3543    }
3544
3545    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3546        for RegistryCreateObserverError
3547    {
3548        #[inline]
3549        unsafe fn encode(
3550            self,
3551            encoder: &mut fidl::encoding::Encoder<'_, D>,
3552            offset: usize,
3553            _depth: fidl::encoding::Depth,
3554        ) -> fidl::Result<()> {
3555            encoder.debug_check_bounds::<Self>(offset);
3556            encoder.write_num(self.into_primitive(), offset);
3557            Ok(())
3558        }
3559    }
3560
3561    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3562        for RegistryCreateObserverError
3563    {
3564        #[inline(always)]
3565        fn new_empty() -> Self {
3566            Self::unknown()
3567        }
3568
3569        #[inline]
3570        unsafe fn decode(
3571            &mut self,
3572            decoder: &mut fidl::encoding::Decoder<'_, D>,
3573            offset: usize,
3574            _depth: fidl::encoding::Depth,
3575        ) -> fidl::Result<()> {
3576            decoder.debug_check_bounds::<Self>(offset);
3577            let prim = decoder.read_num::<u32>(offset);
3578
3579            *self = Self::from_primitive_allow_unknown(prim);
3580            Ok(())
3581        }
3582    }
3583    unsafe impl fidl::encoding::TypeMarker for RegistryWatchDeviceRemovedError {
3584        type Owned = Self;
3585
3586        #[inline(always)]
3587        fn inline_align(_context: fidl::encoding::Context) -> usize {
3588            std::mem::align_of::<u32>()
3589        }
3590
3591        #[inline(always)]
3592        fn inline_size(_context: fidl::encoding::Context) -> usize {
3593            std::mem::size_of::<u32>()
3594        }
3595
3596        #[inline(always)]
3597        fn encode_is_copy() -> bool {
3598            false
3599        }
3600
3601        #[inline(always)]
3602        fn decode_is_copy() -> bool {
3603            false
3604        }
3605    }
3606
3607    impl fidl::encoding::ValueTypeMarker for RegistryWatchDeviceRemovedError {
3608        type Borrowed<'a> = Self;
3609        #[inline(always)]
3610        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3611            *value
3612        }
3613    }
3614
3615    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3616        for RegistryWatchDeviceRemovedError
3617    {
3618        #[inline]
3619        unsafe fn encode(
3620            self,
3621            encoder: &mut fidl::encoding::Encoder<'_, D>,
3622            offset: usize,
3623            _depth: fidl::encoding::Depth,
3624        ) -> fidl::Result<()> {
3625            encoder.debug_check_bounds::<Self>(offset);
3626            encoder.write_num(self.into_primitive(), offset);
3627            Ok(())
3628        }
3629    }
3630
3631    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3632        for RegistryWatchDeviceRemovedError
3633    {
3634        #[inline(always)]
3635        fn new_empty() -> Self {
3636            Self::unknown()
3637        }
3638
3639        #[inline]
3640        unsafe fn decode(
3641            &mut self,
3642            decoder: &mut fidl::encoding::Decoder<'_, D>,
3643            offset: usize,
3644            _depth: fidl::encoding::Depth,
3645        ) -> fidl::Result<()> {
3646            decoder.debug_check_bounds::<Self>(offset);
3647            let prim = decoder.read_num::<u32>(offset);
3648
3649            *self = Self::from_primitive_allow_unknown(prim);
3650            Ok(())
3651        }
3652    }
3653    unsafe impl fidl::encoding::TypeMarker for RegistryWatchDevicesAddedError {
3654        type Owned = Self;
3655
3656        #[inline(always)]
3657        fn inline_align(_context: fidl::encoding::Context) -> usize {
3658            std::mem::align_of::<u32>()
3659        }
3660
3661        #[inline(always)]
3662        fn inline_size(_context: fidl::encoding::Context) -> usize {
3663            std::mem::size_of::<u32>()
3664        }
3665
3666        #[inline(always)]
3667        fn encode_is_copy() -> bool {
3668            false
3669        }
3670
3671        #[inline(always)]
3672        fn decode_is_copy() -> bool {
3673            false
3674        }
3675    }
3676
3677    impl fidl::encoding::ValueTypeMarker for RegistryWatchDevicesAddedError {
3678        type Borrowed<'a> = Self;
3679        #[inline(always)]
3680        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3681            *value
3682        }
3683    }
3684
3685    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3686        for RegistryWatchDevicesAddedError
3687    {
3688        #[inline]
3689        unsafe fn encode(
3690            self,
3691            encoder: &mut fidl::encoding::Encoder<'_, D>,
3692            offset: usize,
3693            _depth: fidl::encoding::Depth,
3694        ) -> fidl::Result<()> {
3695            encoder.debug_check_bounds::<Self>(offset);
3696            encoder.write_num(self.into_primitive(), offset);
3697            Ok(())
3698        }
3699    }
3700
3701    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3702        for RegistryWatchDevicesAddedError
3703    {
3704        #[inline(always)]
3705        fn new_empty() -> Self {
3706            Self::unknown()
3707        }
3708
3709        #[inline]
3710        unsafe fn decode(
3711            &mut self,
3712            decoder: &mut fidl::encoding::Decoder<'_, D>,
3713            offset: usize,
3714            _depth: fidl::encoding::Depth,
3715        ) -> fidl::Result<()> {
3716            decoder.debug_check_bounds::<Self>(offset);
3717            let prim = decoder.read_num::<u32>(offset);
3718
3719            *self = Self::from_primitive_allow_unknown(prim);
3720            Ok(())
3721        }
3722    }
3723    unsafe impl fidl::encoding::TypeMarker for RingBufferSetActiveChannelsError {
3724        type Owned = Self;
3725
3726        #[inline(always)]
3727        fn inline_align(_context: fidl::encoding::Context) -> usize {
3728            std::mem::align_of::<u32>()
3729        }
3730
3731        #[inline(always)]
3732        fn inline_size(_context: fidl::encoding::Context) -> usize {
3733            std::mem::size_of::<u32>()
3734        }
3735
3736        #[inline(always)]
3737        fn encode_is_copy() -> bool {
3738            false
3739        }
3740
3741        #[inline(always)]
3742        fn decode_is_copy() -> bool {
3743            false
3744        }
3745    }
3746
3747    impl fidl::encoding::ValueTypeMarker for RingBufferSetActiveChannelsError {
3748        type Borrowed<'a> = Self;
3749        #[inline(always)]
3750        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3751            *value
3752        }
3753    }
3754
3755    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3756        for RingBufferSetActiveChannelsError
3757    {
3758        #[inline]
3759        unsafe fn encode(
3760            self,
3761            encoder: &mut fidl::encoding::Encoder<'_, D>,
3762            offset: usize,
3763            _depth: fidl::encoding::Depth,
3764        ) -> fidl::Result<()> {
3765            encoder.debug_check_bounds::<Self>(offset);
3766            encoder.write_num(self.into_primitive(), offset);
3767            Ok(())
3768        }
3769    }
3770
3771    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3772        for RingBufferSetActiveChannelsError
3773    {
3774        #[inline(always)]
3775        fn new_empty() -> Self {
3776            Self::unknown()
3777        }
3778
3779        #[inline]
3780        unsafe fn decode(
3781            &mut self,
3782            decoder: &mut fidl::encoding::Decoder<'_, D>,
3783            offset: usize,
3784            _depth: fidl::encoding::Depth,
3785        ) -> fidl::Result<()> {
3786            decoder.debug_check_bounds::<Self>(offset);
3787            let prim = decoder.read_num::<u32>(offset);
3788
3789            *self = Self::from_primitive_allow_unknown(prim);
3790            Ok(())
3791        }
3792    }
3793    unsafe impl fidl::encoding::TypeMarker for RingBufferStartError {
3794        type Owned = Self;
3795
3796        #[inline(always)]
3797        fn inline_align(_context: fidl::encoding::Context) -> usize {
3798            std::mem::align_of::<u32>()
3799        }
3800
3801        #[inline(always)]
3802        fn inline_size(_context: fidl::encoding::Context) -> usize {
3803            std::mem::size_of::<u32>()
3804        }
3805
3806        #[inline(always)]
3807        fn encode_is_copy() -> bool {
3808            false
3809        }
3810
3811        #[inline(always)]
3812        fn decode_is_copy() -> bool {
3813            false
3814        }
3815    }
3816
3817    impl fidl::encoding::ValueTypeMarker for RingBufferStartError {
3818        type Borrowed<'a> = Self;
3819        #[inline(always)]
3820        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3821            *value
3822        }
3823    }
3824
3825    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3826        for RingBufferStartError
3827    {
3828        #[inline]
3829        unsafe fn encode(
3830            self,
3831            encoder: &mut fidl::encoding::Encoder<'_, D>,
3832            offset: usize,
3833            _depth: fidl::encoding::Depth,
3834        ) -> fidl::Result<()> {
3835            encoder.debug_check_bounds::<Self>(offset);
3836            encoder.write_num(self.into_primitive(), offset);
3837            Ok(())
3838        }
3839    }
3840
3841    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RingBufferStartError {
3842        #[inline(always)]
3843        fn new_empty() -> Self {
3844            Self::unknown()
3845        }
3846
3847        #[inline]
3848        unsafe fn decode(
3849            &mut self,
3850            decoder: &mut fidl::encoding::Decoder<'_, D>,
3851            offset: usize,
3852            _depth: fidl::encoding::Depth,
3853        ) -> fidl::Result<()> {
3854            decoder.debug_check_bounds::<Self>(offset);
3855            let prim = decoder.read_num::<u32>(offset);
3856
3857            *self = Self::from_primitive_allow_unknown(prim);
3858            Ok(())
3859        }
3860    }
3861    unsafe impl fidl::encoding::TypeMarker for RingBufferStopError {
3862        type Owned = Self;
3863
3864        #[inline(always)]
3865        fn inline_align(_context: fidl::encoding::Context) -> usize {
3866            std::mem::align_of::<u32>()
3867        }
3868
3869        #[inline(always)]
3870        fn inline_size(_context: fidl::encoding::Context) -> usize {
3871            std::mem::size_of::<u32>()
3872        }
3873
3874        #[inline(always)]
3875        fn encode_is_copy() -> bool {
3876            false
3877        }
3878
3879        #[inline(always)]
3880        fn decode_is_copy() -> bool {
3881            false
3882        }
3883    }
3884
3885    impl fidl::encoding::ValueTypeMarker for RingBufferStopError {
3886        type Borrowed<'a> = Self;
3887        #[inline(always)]
3888        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3889            *value
3890        }
3891    }
3892
3893    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3894        for RingBufferStopError
3895    {
3896        #[inline]
3897        unsafe fn encode(
3898            self,
3899            encoder: &mut fidl::encoding::Encoder<'_, D>,
3900            offset: usize,
3901            _depth: fidl::encoding::Depth,
3902        ) -> fidl::Result<()> {
3903            encoder.debug_check_bounds::<Self>(offset);
3904            encoder.write_num(self.into_primitive(), offset);
3905            Ok(())
3906        }
3907    }
3908
3909    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RingBufferStopError {
3910        #[inline(always)]
3911        fn new_empty() -> Self {
3912            Self::unknown()
3913        }
3914
3915        #[inline]
3916        unsafe fn decode(
3917            &mut self,
3918            decoder: &mut fidl::encoding::Decoder<'_, D>,
3919            offset: usize,
3920            _depth: fidl::encoding::Depth,
3921        ) -> fidl::Result<()> {
3922            decoder.debug_check_bounds::<Self>(offset);
3923            let prim = decoder.read_num::<u32>(offset);
3924
3925            *self = Self::from_primitive_allow_unknown(prim);
3926            Ok(())
3927        }
3928    }
3929    unsafe impl fidl::encoding::TypeMarker for RingBufferWatchDelayInfoError {
3930        type Owned = Self;
3931
3932        #[inline(always)]
3933        fn inline_align(_context: fidl::encoding::Context) -> usize {
3934            std::mem::align_of::<u32>()
3935        }
3936
3937        #[inline(always)]
3938        fn inline_size(_context: fidl::encoding::Context) -> usize {
3939            std::mem::size_of::<u32>()
3940        }
3941
3942        #[inline(always)]
3943        fn encode_is_copy() -> bool {
3944            false
3945        }
3946
3947        #[inline(always)]
3948        fn decode_is_copy() -> bool {
3949            false
3950        }
3951    }
3952
3953    impl fidl::encoding::ValueTypeMarker for RingBufferWatchDelayInfoError {
3954        type Borrowed<'a> = Self;
3955        #[inline(always)]
3956        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3957            *value
3958        }
3959    }
3960
3961    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3962        for RingBufferWatchDelayInfoError
3963    {
3964        #[inline]
3965        unsafe fn encode(
3966            self,
3967            encoder: &mut fidl::encoding::Encoder<'_, D>,
3968            offset: usize,
3969            _depth: fidl::encoding::Depth,
3970        ) -> fidl::Result<()> {
3971            encoder.debug_check_bounds::<Self>(offset);
3972            encoder.write_num(self.into_primitive(), offset);
3973            Ok(())
3974        }
3975    }
3976
3977    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3978        for RingBufferWatchDelayInfoError
3979    {
3980        #[inline(always)]
3981        fn new_empty() -> Self {
3982            Self::unknown()
3983        }
3984
3985        #[inline]
3986        unsafe fn decode(
3987            &mut self,
3988            decoder: &mut fidl::encoding::Decoder<'_, D>,
3989            offset: usize,
3990            _depth: fidl::encoding::Depth,
3991        ) -> fidl::Result<()> {
3992            decoder.debug_check_bounds::<Self>(offset);
3993            let prim = decoder.read_num::<u32>(offset);
3994
3995            *self = Self::from_primitive_allow_unknown(prim);
3996            Ok(())
3997        }
3998    }
3999
4000    impl ChannelAttributes {
4001        #[inline(always)]
4002        fn max_ordinal_present(&self) -> u64 {
4003            if let Some(_) = self.max_frequency {
4004                return 2;
4005            }
4006            if let Some(_) = self.min_frequency {
4007                return 1;
4008            }
4009            0
4010        }
4011    }
4012
4013    impl fidl::encoding::ValueTypeMarker for ChannelAttributes {
4014        type Borrowed<'a> = &'a Self;
4015        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4016            value
4017        }
4018    }
4019
4020    unsafe impl fidl::encoding::TypeMarker for ChannelAttributes {
4021        type Owned = Self;
4022
4023        #[inline(always)]
4024        fn inline_align(_context: fidl::encoding::Context) -> usize {
4025            8
4026        }
4027
4028        #[inline(always)]
4029        fn inline_size(_context: fidl::encoding::Context) -> usize {
4030            16
4031        }
4032    }
4033
4034    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChannelAttributes, D>
4035        for &ChannelAttributes
4036    {
4037        unsafe fn encode(
4038            self,
4039            encoder: &mut fidl::encoding::Encoder<'_, D>,
4040            offset: usize,
4041            mut depth: fidl::encoding::Depth,
4042        ) -> fidl::Result<()> {
4043            encoder.debug_check_bounds::<ChannelAttributes>(offset);
4044            // Vector header
4045            let max_ordinal: u64 = self.max_ordinal_present();
4046            encoder.write_num(max_ordinal, offset);
4047            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4048            // Calling encoder.out_of_line_offset(0) is not allowed.
4049            if max_ordinal == 0 {
4050                return Ok(());
4051            }
4052            depth.increment()?;
4053            let envelope_size = 8;
4054            let bytes_len = max_ordinal as usize * envelope_size;
4055            #[allow(unused_variables)]
4056            let offset = encoder.out_of_line_offset(bytes_len);
4057            let mut _prev_end_offset: usize = 0;
4058            if 1 > max_ordinal {
4059                return Ok(());
4060            }
4061
4062            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4063            // are envelope_size bytes.
4064            let cur_offset: usize = (1 - 1) * envelope_size;
4065
4066            // Zero reserved fields.
4067            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4068
4069            // Safety:
4070            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4071            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4072            //   envelope_size bytes, there is always sufficient room.
4073            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4074                self.min_frequency.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4075                encoder,
4076                offset + cur_offset,
4077                depth,
4078            )?;
4079
4080            _prev_end_offset = cur_offset + envelope_size;
4081            if 2 > max_ordinal {
4082                return Ok(());
4083            }
4084
4085            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4086            // are envelope_size bytes.
4087            let cur_offset: usize = (2 - 1) * envelope_size;
4088
4089            // Zero reserved fields.
4090            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4091
4092            // Safety:
4093            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4094            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4095            //   envelope_size bytes, there is always sufficient room.
4096            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4097                self.max_frequency.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4098                encoder,
4099                offset + cur_offset,
4100                depth,
4101            )?;
4102
4103            _prev_end_offset = cur_offset + envelope_size;
4104
4105            Ok(())
4106        }
4107    }
4108
4109    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelAttributes {
4110        #[inline(always)]
4111        fn new_empty() -> Self {
4112            Self::default()
4113        }
4114
4115        unsafe fn decode(
4116            &mut self,
4117            decoder: &mut fidl::encoding::Decoder<'_, D>,
4118            offset: usize,
4119            mut depth: fidl::encoding::Depth,
4120        ) -> fidl::Result<()> {
4121            decoder.debug_check_bounds::<Self>(offset);
4122            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4123                None => return Err(fidl::Error::NotNullable),
4124                Some(len) => len,
4125            };
4126            // Calling decoder.out_of_line_offset(0) is not allowed.
4127            if len == 0 {
4128                return Ok(());
4129            };
4130            depth.increment()?;
4131            let envelope_size = 8;
4132            let bytes_len = len * envelope_size;
4133            let offset = decoder.out_of_line_offset(bytes_len)?;
4134            // Decode the envelope for each type.
4135            let mut _next_ordinal_to_read = 0;
4136            let mut next_offset = offset;
4137            let end_offset = offset + bytes_len;
4138            _next_ordinal_to_read += 1;
4139            if next_offset >= end_offset {
4140                return Ok(());
4141            }
4142
4143            // Decode unknown envelopes for gaps in ordinals.
4144            while _next_ordinal_to_read < 1 {
4145                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4146                _next_ordinal_to_read += 1;
4147                next_offset += envelope_size;
4148            }
4149
4150            let next_out_of_line = decoder.next_out_of_line();
4151            let handles_before = decoder.remaining_handles();
4152            if let Some((inlined, num_bytes, num_handles)) =
4153                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4154            {
4155                let member_inline_size =
4156                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4157                if inlined != (member_inline_size <= 4) {
4158                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4159                }
4160                let inner_offset;
4161                let mut inner_depth = depth.clone();
4162                if inlined {
4163                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4164                    inner_offset = next_offset;
4165                } else {
4166                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4167                    inner_depth.increment()?;
4168                }
4169                let val_ref = self.min_frequency.get_or_insert_with(|| fidl::new_empty!(u32, D));
4170                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4171                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4172                {
4173                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4174                }
4175                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4176                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4177                }
4178            }
4179
4180            next_offset += envelope_size;
4181            _next_ordinal_to_read += 1;
4182            if next_offset >= end_offset {
4183                return Ok(());
4184            }
4185
4186            // Decode unknown envelopes for gaps in ordinals.
4187            while _next_ordinal_to_read < 2 {
4188                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4189                _next_ordinal_to_read += 1;
4190                next_offset += envelope_size;
4191            }
4192
4193            let next_out_of_line = decoder.next_out_of_line();
4194            let handles_before = decoder.remaining_handles();
4195            if let Some((inlined, num_bytes, num_handles)) =
4196                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4197            {
4198                let member_inline_size =
4199                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4200                if inlined != (member_inline_size <= 4) {
4201                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4202                }
4203                let inner_offset;
4204                let mut inner_depth = depth.clone();
4205                if inlined {
4206                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4207                    inner_offset = next_offset;
4208                } else {
4209                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4210                    inner_depth.increment()?;
4211                }
4212                let val_ref = self.max_frequency.get_or_insert_with(|| fidl::new_empty!(u32, D));
4213                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4214                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4215                {
4216                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4217                }
4218                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4219                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4220                }
4221            }
4222
4223            next_offset += envelope_size;
4224
4225            // Decode the remaining unknown envelopes.
4226            while next_offset < end_offset {
4227                _next_ordinal_to_read += 1;
4228                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4229                next_offset += envelope_size;
4230            }
4231
4232            Ok(())
4233        }
4234    }
4235
4236    impl ChannelSet {
4237        #[inline(always)]
4238        fn max_ordinal_present(&self) -> u64 {
4239            if let Some(_) = self.attributes {
4240                return 1;
4241            }
4242            0
4243        }
4244    }
4245
4246    impl fidl::encoding::ValueTypeMarker for ChannelSet {
4247        type Borrowed<'a> = &'a Self;
4248        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4249            value
4250        }
4251    }
4252
4253    unsafe impl fidl::encoding::TypeMarker for ChannelSet {
4254        type Owned = Self;
4255
4256        #[inline(always)]
4257        fn inline_align(_context: fidl::encoding::Context) -> usize {
4258            8
4259        }
4260
4261        #[inline(always)]
4262        fn inline_size(_context: fidl::encoding::Context) -> usize {
4263            16
4264        }
4265    }
4266
4267    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChannelSet, D>
4268        for &ChannelSet
4269    {
4270        unsafe fn encode(
4271            self,
4272            encoder: &mut fidl::encoding::Encoder<'_, D>,
4273            offset: usize,
4274            mut depth: fidl::encoding::Depth,
4275        ) -> fidl::Result<()> {
4276            encoder.debug_check_bounds::<ChannelSet>(offset);
4277            // Vector header
4278            let max_ordinal: u64 = self.max_ordinal_present();
4279            encoder.write_num(max_ordinal, offset);
4280            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4281            // Calling encoder.out_of_line_offset(0) is not allowed.
4282            if max_ordinal == 0 {
4283                return Ok(());
4284            }
4285            depth.increment()?;
4286            let envelope_size = 8;
4287            let bytes_len = max_ordinal as usize * envelope_size;
4288            #[allow(unused_variables)]
4289            let offset = encoder.out_of_line_offset(bytes_len);
4290            let mut _prev_end_offset: usize = 0;
4291            if 1 > max_ordinal {
4292                return Ok(());
4293            }
4294
4295            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4296            // are envelope_size bytes.
4297            let cur_offset: usize = (1 - 1) * envelope_size;
4298
4299            // Zero reserved fields.
4300            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4301
4302            // Safety:
4303            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4304            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4305            //   envelope_size bytes, there is always sufficient room.
4306            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ChannelAttributes, 64>, D>(
4307            self.attributes.as_ref().map(<fidl::encoding::Vector<ChannelAttributes, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4308            encoder, offset + cur_offset, depth
4309        )?;
4310
4311            _prev_end_offset = cur_offset + envelope_size;
4312
4313            Ok(())
4314        }
4315    }
4316
4317    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelSet {
4318        #[inline(always)]
4319        fn new_empty() -> Self {
4320            Self::default()
4321        }
4322
4323        unsafe fn decode(
4324            &mut self,
4325            decoder: &mut fidl::encoding::Decoder<'_, D>,
4326            offset: usize,
4327            mut depth: fidl::encoding::Depth,
4328        ) -> fidl::Result<()> {
4329            decoder.debug_check_bounds::<Self>(offset);
4330            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4331                None => return Err(fidl::Error::NotNullable),
4332                Some(len) => len,
4333            };
4334            // Calling decoder.out_of_line_offset(0) is not allowed.
4335            if len == 0 {
4336                return Ok(());
4337            };
4338            depth.increment()?;
4339            let envelope_size = 8;
4340            let bytes_len = len * envelope_size;
4341            let offset = decoder.out_of_line_offset(bytes_len)?;
4342            // Decode the envelope for each type.
4343            let mut _next_ordinal_to_read = 0;
4344            let mut next_offset = offset;
4345            let end_offset = offset + bytes_len;
4346            _next_ordinal_to_read += 1;
4347            if next_offset >= end_offset {
4348                return Ok(());
4349            }
4350
4351            // Decode unknown envelopes for gaps in ordinals.
4352            while _next_ordinal_to_read < 1 {
4353                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4354                _next_ordinal_to_read += 1;
4355                next_offset += envelope_size;
4356            }
4357
4358            let next_out_of_line = decoder.next_out_of_line();
4359            let handles_before = decoder.remaining_handles();
4360            if let Some((inlined, num_bytes, num_handles)) =
4361                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4362            {
4363                let member_inline_size = <fidl::encoding::Vector<ChannelAttributes, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4364                if inlined != (member_inline_size <= 4) {
4365                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4366                }
4367                let inner_offset;
4368                let mut inner_depth = depth.clone();
4369                if inlined {
4370                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4371                    inner_offset = next_offset;
4372                } else {
4373                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4374                    inner_depth.increment()?;
4375                }
4376                let val_ref = self.attributes.get_or_insert_with(
4377                    || fidl::new_empty!(fidl::encoding::Vector<ChannelAttributes, 64>, D),
4378                );
4379                fidl::decode!(fidl::encoding::Vector<ChannelAttributes, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4380                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4381                {
4382                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4383                }
4384                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4385                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4386                }
4387            }
4388
4389            next_offset += envelope_size;
4390
4391            // Decode the remaining unknown envelopes.
4392            while next_offset < end_offset {
4393                _next_ordinal_to_read += 1;
4394                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4395                next_offset += envelope_size;
4396            }
4397
4398            Ok(())
4399        }
4400    }
4401
4402    impl ControlCreatorCreateResponse {
4403        #[inline(always)]
4404        fn max_ordinal_present(&self) -> u64 {
4405            0
4406        }
4407    }
4408
4409    impl fidl::encoding::ValueTypeMarker for ControlCreatorCreateResponse {
4410        type Borrowed<'a> = &'a Self;
4411        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4412            value
4413        }
4414    }
4415
4416    unsafe impl fidl::encoding::TypeMarker for ControlCreatorCreateResponse {
4417        type Owned = Self;
4418
4419        #[inline(always)]
4420        fn inline_align(_context: fidl::encoding::Context) -> usize {
4421            8
4422        }
4423
4424        #[inline(always)]
4425        fn inline_size(_context: fidl::encoding::Context) -> usize {
4426            16
4427        }
4428    }
4429
4430    unsafe impl<D: fidl::encoding::ResourceDialect>
4431        fidl::encoding::Encode<ControlCreatorCreateResponse, D> for &ControlCreatorCreateResponse
4432    {
4433        unsafe fn encode(
4434            self,
4435            encoder: &mut fidl::encoding::Encoder<'_, D>,
4436            offset: usize,
4437            mut depth: fidl::encoding::Depth,
4438        ) -> fidl::Result<()> {
4439            encoder.debug_check_bounds::<ControlCreatorCreateResponse>(offset);
4440            // Vector header
4441            let max_ordinal: u64 = self.max_ordinal_present();
4442            encoder.write_num(max_ordinal, offset);
4443            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4444            // Calling encoder.out_of_line_offset(0) is not allowed.
4445            if max_ordinal == 0 {
4446                return Ok(());
4447            }
4448            depth.increment()?;
4449            let envelope_size = 8;
4450            let bytes_len = max_ordinal as usize * envelope_size;
4451            #[allow(unused_variables)]
4452            let offset = encoder.out_of_line_offset(bytes_len);
4453            let mut _prev_end_offset: usize = 0;
4454
4455            Ok(())
4456        }
4457    }
4458
4459    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4460        for ControlCreatorCreateResponse
4461    {
4462        #[inline(always)]
4463        fn new_empty() -> Self {
4464            Self::default()
4465        }
4466
4467        unsafe fn decode(
4468            &mut self,
4469            decoder: &mut fidl::encoding::Decoder<'_, D>,
4470            offset: usize,
4471            mut depth: fidl::encoding::Depth,
4472        ) -> fidl::Result<()> {
4473            decoder.debug_check_bounds::<Self>(offset);
4474            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4475                None => return Err(fidl::Error::NotNullable),
4476                Some(len) => len,
4477            };
4478            // Calling decoder.out_of_line_offset(0) is not allowed.
4479            if len == 0 {
4480                return Ok(());
4481            };
4482            depth.increment()?;
4483            let envelope_size = 8;
4484            let bytes_len = len * envelope_size;
4485            let offset = decoder.out_of_line_offset(bytes_len)?;
4486            // Decode the envelope for each type.
4487            let mut _next_ordinal_to_read = 0;
4488            let mut next_offset = offset;
4489            let end_offset = offset + bytes_len;
4490
4491            // Decode the remaining unknown envelopes.
4492            while next_offset < end_offset {
4493                _next_ordinal_to_read += 1;
4494                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4495                next_offset += envelope_size;
4496            }
4497
4498            Ok(())
4499        }
4500    }
4501
4502    impl ControlSetDaiFormatRequest {
4503        #[inline(always)]
4504        fn max_ordinal_present(&self) -> u64 {
4505            if let Some(_) = self.dai_format {
4506                return 2;
4507            }
4508            if let Some(_) = self.element_id {
4509                return 1;
4510            }
4511            0
4512        }
4513    }
4514
4515    impl fidl::encoding::ValueTypeMarker for ControlSetDaiFormatRequest {
4516        type Borrowed<'a> = &'a Self;
4517        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4518            value
4519        }
4520    }
4521
4522    unsafe impl fidl::encoding::TypeMarker for ControlSetDaiFormatRequest {
4523        type Owned = Self;
4524
4525        #[inline(always)]
4526        fn inline_align(_context: fidl::encoding::Context) -> usize {
4527            8
4528        }
4529
4530        #[inline(always)]
4531        fn inline_size(_context: fidl::encoding::Context) -> usize {
4532            16
4533        }
4534    }
4535
4536    unsafe impl<D: fidl::encoding::ResourceDialect>
4537        fidl::encoding::Encode<ControlSetDaiFormatRequest, D> for &ControlSetDaiFormatRequest
4538    {
4539        unsafe fn encode(
4540            self,
4541            encoder: &mut fidl::encoding::Encoder<'_, D>,
4542            offset: usize,
4543            mut depth: fidl::encoding::Depth,
4544        ) -> fidl::Result<()> {
4545            encoder.debug_check_bounds::<ControlSetDaiFormatRequest>(offset);
4546            // Vector header
4547            let max_ordinal: u64 = self.max_ordinal_present();
4548            encoder.write_num(max_ordinal, offset);
4549            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4550            // Calling encoder.out_of_line_offset(0) is not allowed.
4551            if max_ordinal == 0 {
4552                return Ok(());
4553            }
4554            depth.increment()?;
4555            let envelope_size = 8;
4556            let bytes_len = max_ordinal as usize * envelope_size;
4557            #[allow(unused_variables)]
4558            let offset = encoder.out_of_line_offset(bytes_len);
4559            let mut _prev_end_offset: usize = 0;
4560            if 1 > max_ordinal {
4561                return Ok(());
4562            }
4563
4564            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4565            // are envelope_size bytes.
4566            let cur_offset: usize = (1 - 1) * envelope_size;
4567
4568            // Zero reserved fields.
4569            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4570
4571            // Safety:
4572            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4573            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4574            //   envelope_size bytes, there is always sufficient room.
4575            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4576                self.element_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4577                encoder,
4578                offset + cur_offset,
4579                depth,
4580            )?;
4581
4582            _prev_end_offset = cur_offset + envelope_size;
4583            if 2 > max_ordinal {
4584                return Ok(());
4585            }
4586
4587            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4588            // are envelope_size bytes.
4589            let cur_offset: usize = (2 - 1) * envelope_size;
4590
4591            // Zero reserved fields.
4592            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4593
4594            // Safety:
4595            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4596            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4597            //   envelope_size bytes, there is always sufficient room.
4598            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_audio__common::DaiFormat, D>(
4599            self.dai_format.as_ref().map(<fidl_fuchsia_hardware_audio__common::DaiFormat as fidl::encoding::ValueTypeMarker>::borrow),
4600            encoder, offset + cur_offset, depth
4601        )?;
4602
4603            _prev_end_offset = cur_offset + envelope_size;
4604
4605            Ok(())
4606        }
4607    }
4608
4609    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4610        for ControlSetDaiFormatRequest
4611    {
4612        #[inline(always)]
4613        fn new_empty() -> Self {
4614            Self::default()
4615        }
4616
4617        unsafe fn decode(
4618            &mut self,
4619            decoder: &mut fidl::encoding::Decoder<'_, D>,
4620            offset: usize,
4621            mut depth: fidl::encoding::Depth,
4622        ) -> fidl::Result<()> {
4623            decoder.debug_check_bounds::<Self>(offset);
4624            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4625                None => return Err(fidl::Error::NotNullable),
4626                Some(len) => len,
4627            };
4628            // Calling decoder.out_of_line_offset(0) is not allowed.
4629            if len == 0 {
4630                return Ok(());
4631            };
4632            depth.increment()?;
4633            let envelope_size = 8;
4634            let bytes_len = len * envelope_size;
4635            let offset = decoder.out_of_line_offset(bytes_len)?;
4636            // Decode the envelope for each type.
4637            let mut _next_ordinal_to_read = 0;
4638            let mut next_offset = offset;
4639            let end_offset = offset + bytes_len;
4640            _next_ordinal_to_read += 1;
4641            if next_offset >= end_offset {
4642                return Ok(());
4643            }
4644
4645            // Decode unknown envelopes for gaps in ordinals.
4646            while _next_ordinal_to_read < 1 {
4647                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4648                _next_ordinal_to_read += 1;
4649                next_offset += envelope_size;
4650            }
4651
4652            let next_out_of_line = decoder.next_out_of_line();
4653            let handles_before = decoder.remaining_handles();
4654            if let Some((inlined, num_bytes, num_handles)) =
4655                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4656            {
4657                let member_inline_size =
4658                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4659                if inlined != (member_inline_size <= 4) {
4660                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4661                }
4662                let inner_offset;
4663                let mut inner_depth = depth.clone();
4664                if inlined {
4665                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4666                    inner_offset = next_offset;
4667                } else {
4668                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4669                    inner_depth.increment()?;
4670                }
4671                let val_ref = self.element_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
4672                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4673                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4674                {
4675                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4676                }
4677                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4678                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4679                }
4680            }
4681
4682            next_offset += envelope_size;
4683            _next_ordinal_to_read += 1;
4684            if next_offset >= end_offset {
4685                return Ok(());
4686            }
4687
4688            // Decode unknown envelopes for gaps in ordinals.
4689            while _next_ordinal_to_read < 2 {
4690                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4691                _next_ordinal_to_read += 1;
4692                next_offset += envelope_size;
4693            }
4694
4695            let next_out_of_line = decoder.next_out_of_line();
4696            let handles_before = decoder.remaining_handles();
4697            if let Some((inlined, num_bytes, num_handles)) =
4698                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4699            {
4700                let member_inline_size = <fidl_fuchsia_hardware_audio__common::DaiFormat as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4701                if inlined != (member_inline_size <= 4) {
4702                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4703                }
4704                let inner_offset;
4705                let mut inner_depth = depth.clone();
4706                if inlined {
4707                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4708                    inner_offset = next_offset;
4709                } else {
4710                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4711                    inner_depth.increment()?;
4712                }
4713                let val_ref = self.dai_format.get_or_insert_with(|| {
4714                    fidl::new_empty!(fidl_fuchsia_hardware_audio__common::DaiFormat, D)
4715                });
4716                fidl::decode!(
4717                    fidl_fuchsia_hardware_audio__common::DaiFormat,
4718                    D,
4719                    val_ref,
4720                    decoder,
4721                    inner_offset,
4722                    inner_depth
4723                )?;
4724                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4725                {
4726                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4727                }
4728                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4729                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4730                }
4731            }
4732
4733            next_offset += envelope_size;
4734
4735            // Decode the remaining unknown envelopes.
4736            while next_offset < end_offset {
4737                _next_ordinal_to_read += 1;
4738                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4739                next_offset += envelope_size;
4740            }
4741
4742            Ok(())
4743        }
4744    }
4745
4746    impl ControlCodecStartResponse {
4747        #[inline(always)]
4748        fn max_ordinal_present(&self) -> u64 {
4749            if let Some(_) = self.start_time {
4750                return 1;
4751            }
4752            0
4753        }
4754    }
4755
4756    impl fidl::encoding::ValueTypeMarker for ControlCodecStartResponse {
4757        type Borrowed<'a> = &'a Self;
4758        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4759            value
4760        }
4761    }
4762
4763    unsafe impl fidl::encoding::TypeMarker for ControlCodecStartResponse {
4764        type Owned = Self;
4765
4766        #[inline(always)]
4767        fn inline_align(_context: fidl::encoding::Context) -> usize {
4768            8
4769        }
4770
4771        #[inline(always)]
4772        fn inline_size(_context: fidl::encoding::Context) -> usize {
4773            16
4774        }
4775    }
4776
4777    unsafe impl<D: fidl::encoding::ResourceDialect>
4778        fidl::encoding::Encode<ControlCodecStartResponse, D> for &ControlCodecStartResponse
4779    {
4780        unsafe fn encode(
4781            self,
4782            encoder: &mut fidl::encoding::Encoder<'_, D>,
4783            offset: usize,
4784            mut depth: fidl::encoding::Depth,
4785        ) -> fidl::Result<()> {
4786            encoder.debug_check_bounds::<ControlCodecStartResponse>(offset);
4787            // Vector header
4788            let max_ordinal: u64 = self.max_ordinal_present();
4789            encoder.write_num(max_ordinal, offset);
4790            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4791            // Calling encoder.out_of_line_offset(0) is not allowed.
4792            if max_ordinal == 0 {
4793                return Ok(());
4794            }
4795            depth.increment()?;
4796            let envelope_size = 8;
4797            let bytes_len = max_ordinal as usize * envelope_size;
4798            #[allow(unused_variables)]
4799            let offset = encoder.out_of_line_offset(bytes_len);
4800            let mut _prev_end_offset: usize = 0;
4801            if 1 > max_ordinal {
4802                return Ok(());
4803            }
4804
4805            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4806            // are envelope_size bytes.
4807            let cur_offset: usize = (1 - 1) * envelope_size;
4808
4809            // Zero reserved fields.
4810            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4811
4812            // Safety:
4813            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4814            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4815            //   envelope_size bytes, there is always sufficient room.
4816            fidl::encoding::encode_in_envelope_optional::<i64, D>(
4817                self.start_time.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
4818                encoder,
4819                offset + cur_offset,
4820                depth,
4821            )?;
4822
4823            _prev_end_offset = cur_offset + envelope_size;
4824
4825            Ok(())
4826        }
4827    }
4828
4829    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4830        for ControlCodecStartResponse
4831    {
4832        #[inline(always)]
4833        fn new_empty() -> Self {
4834            Self::default()
4835        }
4836
4837        unsafe fn decode(
4838            &mut self,
4839            decoder: &mut fidl::encoding::Decoder<'_, D>,
4840            offset: usize,
4841            mut depth: fidl::encoding::Depth,
4842        ) -> fidl::Result<()> {
4843            decoder.debug_check_bounds::<Self>(offset);
4844            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4845                None => return Err(fidl::Error::NotNullable),
4846                Some(len) => len,
4847            };
4848            // Calling decoder.out_of_line_offset(0) is not allowed.
4849            if len == 0 {
4850                return Ok(());
4851            };
4852            depth.increment()?;
4853            let envelope_size = 8;
4854            let bytes_len = len * envelope_size;
4855            let offset = decoder.out_of_line_offset(bytes_len)?;
4856            // Decode the envelope for each type.
4857            let mut _next_ordinal_to_read = 0;
4858            let mut next_offset = offset;
4859            let end_offset = offset + bytes_len;
4860            _next_ordinal_to_read += 1;
4861            if next_offset >= end_offset {
4862                return Ok(());
4863            }
4864
4865            // Decode unknown envelopes for gaps in ordinals.
4866            while _next_ordinal_to_read < 1 {
4867                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4868                _next_ordinal_to_read += 1;
4869                next_offset += envelope_size;
4870            }
4871
4872            let next_out_of_line = decoder.next_out_of_line();
4873            let handles_before = decoder.remaining_handles();
4874            if let Some((inlined, num_bytes, num_handles)) =
4875                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4876            {
4877                let member_inline_size =
4878                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4879                if inlined != (member_inline_size <= 4) {
4880                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4881                }
4882                let inner_offset;
4883                let mut inner_depth = depth.clone();
4884                if inlined {
4885                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4886                    inner_offset = next_offset;
4887                } else {
4888                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4889                    inner_depth.increment()?;
4890                }
4891                let val_ref = self.start_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
4892                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
4893                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4894                {
4895                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4896                }
4897                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4898                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4899                }
4900            }
4901
4902            next_offset += envelope_size;
4903
4904            // Decode the remaining unknown envelopes.
4905            while next_offset < end_offset {
4906                _next_ordinal_to_read += 1;
4907                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4908                next_offset += envelope_size;
4909            }
4910
4911            Ok(())
4912        }
4913    }
4914
4915    impl ControlCodecStopResponse {
4916        #[inline(always)]
4917        fn max_ordinal_present(&self) -> u64 {
4918            if let Some(_) = self.stop_time {
4919                return 1;
4920            }
4921            0
4922        }
4923    }
4924
4925    impl fidl::encoding::ValueTypeMarker for ControlCodecStopResponse {
4926        type Borrowed<'a> = &'a Self;
4927        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4928            value
4929        }
4930    }
4931
4932    unsafe impl fidl::encoding::TypeMarker for ControlCodecStopResponse {
4933        type Owned = Self;
4934
4935        #[inline(always)]
4936        fn inline_align(_context: fidl::encoding::Context) -> usize {
4937            8
4938        }
4939
4940        #[inline(always)]
4941        fn inline_size(_context: fidl::encoding::Context) -> usize {
4942            16
4943        }
4944    }
4945
4946    unsafe impl<D: fidl::encoding::ResourceDialect>
4947        fidl::encoding::Encode<ControlCodecStopResponse, D> for &ControlCodecStopResponse
4948    {
4949        unsafe fn encode(
4950            self,
4951            encoder: &mut fidl::encoding::Encoder<'_, D>,
4952            offset: usize,
4953            mut depth: fidl::encoding::Depth,
4954        ) -> fidl::Result<()> {
4955            encoder.debug_check_bounds::<ControlCodecStopResponse>(offset);
4956            // Vector header
4957            let max_ordinal: u64 = self.max_ordinal_present();
4958            encoder.write_num(max_ordinal, offset);
4959            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4960            // Calling encoder.out_of_line_offset(0) is not allowed.
4961            if max_ordinal == 0 {
4962                return Ok(());
4963            }
4964            depth.increment()?;
4965            let envelope_size = 8;
4966            let bytes_len = max_ordinal as usize * envelope_size;
4967            #[allow(unused_variables)]
4968            let offset = encoder.out_of_line_offset(bytes_len);
4969            let mut _prev_end_offset: usize = 0;
4970            if 1 > max_ordinal {
4971                return Ok(());
4972            }
4973
4974            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4975            // are envelope_size bytes.
4976            let cur_offset: usize = (1 - 1) * envelope_size;
4977
4978            // Zero reserved fields.
4979            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4980
4981            // Safety:
4982            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4983            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4984            //   envelope_size bytes, there is always sufficient room.
4985            fidl::encoding::encode_in_envelope_optional::<i64, D>(
4986                self.stop_time.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
4987                encoder,
4988                offset + cur_offset,
4989                depth,
4990            )?;
4991
4992            _prev_end_offset = cur_offset + envelope_size;
4993
4994            Ok(())
4995        }
4996    }
4997
4998    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4999        for ControlCodecStopResponse
5000    {
5001        #[inline(always)]
5002        fn new_empty() -> Self {
5003            Self::default()
5004        }
5005
5006        unsafe fn decode(
5007            &mut self,
5008            decoder: &mut fidl::encoding::Decoder<'_, D>,
5009            offset: usize,
5010            mut depth: fidl::encoding::Depth,
5011        ) -> fidl::Result<()> {
5012            decoder.debug_check_bounds::<Self>(offset);
5013            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5014                None => return Err(fidl::Error::NotNullable),
5015                Some(len) => len,
5016            };
5017            // Calling decoder.out_of_line_offset(0) is not allowed.
5018            if len == 0 {
5019                return Ok(());
5020            };
5021            depth.increment()?;
5022            let envelope_size = 8;
5023            let bytes_len = len * envelope_size;
5024            let offset = decoder.out_of_line_offset(bytes_len)?;
5025            // Decode the envelope for each type.
5026            let mut _next_ordinal_to_read = 0;
5027            let mut next_offset = offset;
5028            let end_offset = offset + bytes_len;
5029            _next_ordinal_to_read += 1;
5030            if next_offset >= end_offset {
5031                return Ok(());
5032            }
5033
5034            // Decode unknown envelopes for gaps in ordinals.
5035            while _next_ordinal_to_read < 1 {
5036                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5037                _next_ordinal_to_read += 1;
5038                next_offset += envelope_size;
5039            }
5040
5041            let next_out_of_line = decoder.next_out_of_line();
5042            let handles_before = decoder.remaining_handles();
5043            if let Some((inlined, num_bytes, num_handles)) =
5044                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5045            {
5046                let member_inline_size =
5047                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5048                if inlined != (member_inline_size <= 4) {
5049                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5050                }
5051                let inner_offset;
5052                let mut inner_depth = depth.clone();
5053                if inlined {
5054                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5055                    inner_offset = next_offset;
5056                } else {
5057                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5058                    inner_depth.increment()?;
5059                }
5060                let val_ref = self.stop_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
5061                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5062                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5063                {
5064                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5065                }
5066                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5067                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5068                }
5069            }
5070
5071            next_offset += envelope_size;
5072
5073            // Decode the remaining unknown envelopes.
5074            while next_offset < end_offset {
5075                _next_ordinal_to_read += 1;
5076                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5077                next_offset += envelope_size;
5078            }
5079
5080            Ok(())
5081        }
5082    }
5083
5084    impl ControlResetResponse {
5085        #[inline(always)]
5086        fn max_ordinal_present(&self) -> u64 {
5087            0
5088        }
5089    }
5090
5091    impl fidl::encoding::ValueTypeMarker for ControlResetResponse {
5092        type Borrowed<'a> = &'a Self;
5093        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5094            value
5095        }
5096    }
5097
5098    unsafe impl fidl::encoding::TypeMarker for ControlResetResponse {
5099        type Owned = Self;
5100
5101        #[inline(always)]
5102        fn inline_align(_context: fidl::encoding::Context) -> usize {
5103            8
5104        }
5105
5106        #[inline(always)]
5107        fn inline_size(_context: fidl::encoding::Context) -> usize {
5108            16
5109        }
5110    }
5111
5112    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ControlResetResponse, D>
5113        for &ControlResetResponse
5114    {
5115        unsafe fn encode(
5116            self,
5117            encoder: &mut fidl::encoding::Encoder<'_, D>,
5118            offset: usize,
5119            mut depth: fidl::encoding::Depth,
5120        ) -> fidl::Result<()> {
5121            encoder.debug_check_bounds::<ControlResetResponse>(offset);
5122            // Vector header
5123            let max_ordinal: u64 = self.max_ordinal_present();
5124            encoder.write_num(max_ordinal, offset);
5125            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5126            // Calling encoder.out_of_line_offset(0) is not allowed.
5127            if max_ordinal == 0 {
5128                return Ok(());
5129            }
5130            depth.increment()?;
5131            let envelope_size = 8;
5132            let bytes_len = max_ordinal as usize * envelope_size;
5133            #[allow(unused_variables)]
5134            let offset = encoder.out_of_line_offset(bytes_len);
5135            let mut _prev_end_offset: usize = 0;
5136
5137            Ok(())
5138        }
5139    }
5140
5141    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlResetResponse {
5142        #[inline(always)]
5143        fn new_empty() -> Self {
5144            Self::default()
5145        }
5146
5147        unsafe fn decode(
5148            &mut self,
5149            decoder: &mut fidl::encoding::Decoder<'_, D>,
5150            offset: usize,
5151            mut depth: fidl::encoding::Depth,
5152        ) -> fidl::Result<()> {
5153            decoder.debug_check_bounds::<Self>(offset);
5154            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5155                None => return Err(fidl::Error::NotNullable),
5156                Some(len) => len,
5157            };
5158            // Calling decoder.out_of_line_offset(0) is not allowed.
5159            if len == 0 {
5160                return Ok(());
5161            };
5162            depth.increment()?;
5163            let envelope_size = 8;
5164            let bytes_len = len * envelope_size;
5165            let offset = decoder.out_of_line_offset(bytes_len)?;
5166            // Decode the envelope for each type.
5167            let mut _next_ordinal_to_read = 0;
5168            let mut next_offset = offset;
5169            let end_offset = offset + bytes_len;
5170
5171            // Decode the remaining unknown envelopes.
5172            while next_offset < end_offset {
5173                _next_ordinal_to_read += 1;
5174                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5175                next_offset += envelope_size;
5176            }
5177
5178            Ok(())
5179        }
5180    }
5181
5182    impl ControlSetDaiFormatResponse {
5183        #[inline(always)]
5184        fn max_ordinal_present(&self) -> u64 {
5185            if let Some(_) = self.state {
5186                return 1;
5187            }
5188            0
5189        }
5190    }
5191
5192    impl fidl::encoding::ValueTypeMarker for ControlSetDaiFormatResponse {
5193        type Borrowed<'a> = &'a Self;
5194        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5195            value
5196        }
5197    }
5198
5199    unsafe impl fidl::encoding::TypeMarker for ControlSetDaiFormatResponse {
5200        type Owned = Self;
5201
5202        #[inline(always)]
5203        fn inline_align(_context: fidl::encoding::Context) -> usize {
5204            8
5205        }
5206
5207        #[inline(always)]
5208        fn inline_size(_context: fidl::encoding::Context) -> usize {
5209            16
5210        }
5211    }
5212
5213    unsafe impl<D: fidl::encoding::ResourceDialect>
5214        fidl::encoding::Encode<ControlSetDaiFormatResponse, D> for &ControlSetDaiFormatResponse
5215    {
5216        unsafe fn encode(
5217            self,
5218            encoder: &mut fidl::encoding::Encoder<'_, D>,
5219            offset: usize,
5220            mut depth: fidl::encoding::Depth,
5221        ) -> fidl::Result<()> {
5222            encoder.debug_check_bounds::<ControlSetDaiFormatResponse>(offset);
5223            // Vector header
5224            let max_ordinal: u64 = self.max_ordinal_present();
5225            encoder.write_num(max_ordinal, offset);
5226            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5227            // Calling encoder.out_of_line_offset(0) is not allowed.
5228            if max_ordinal == 0 {
5229                return Ok(());
5230            }
5231            depth.increment()?;
5232            let envelope_size = 8;
5233            let bytes_len = max_ordinal as usize * envelope_size;
5234            #[allow(unused_variables)]
5235            let offset = encoder.out_of_line_offset(bytes_len);
5236            let mut _prev_end_offset: usize = 0;
5237            if 1 > max_ordinal {
5238                return Ok(());
5239            }
5240
5241            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5242            // are envelope_size bytes.
5243            let cur_offset: usize = (1 - 1) * envelope_size;
5244
5245            // Zero reserved fields.
5246            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5247
5248            // Safety:
5249            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5250            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5251            //   envelope_size bytes, there is always sufficient room.
5252            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_audio__common::CodecFormatInfo, D>(
5253            self.state.as_ref().map(<fidl_fuchsia_hardware_audio__common::CodecFormatInfo as fidl::encoding::ValueTypeMarker>::borrow),
5254            encoder, offset + cur_offset, depth
5255        )?;
5256
5257            _prev_end_offset = cur_offset + envelope_size;
5258
5259            Ok(())
5260        }
5261    }
5262
5263    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5264        for ControlSetDaiFormatResponse
5265    {
5266        #[inline(always)]
5267        fn new_empty() -> Self {
5268            Self::default()
5269        }
5270
5271        unsafe fn decode(
5272            &mut self,
5273            decoder: &mut fidl::encoding::Decoder<'_, D>,
5274            offset: usize,
5275            mut depth: fidl::encoding::Depth,
5276        ) -> fidl::Result<()> {
5277            decoder.debug_check_bounds::<Self>(offset);
5278            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5279                None => return Err(fidl::Error::NotNullable),
5280                Some(len) => len,
5281            };
5282            // Calling decoder.out_of_line_offset(0) is not allowed.
5283            if len == 0 {
5284                return Ok(());
5285            };
5286            depth.increment()?;
5287            let envelope_size = 8;
5288            let bytes_len = len * envelope_size;
5289            let offset = decoder.out_of_line_offset(bytes_len)?;
5290            // Decode the envelope for each type.
5291            let mut _next_ordinal_to_read = 0;
5292            let mut next_offset = offset;
5293            let end_offset = offset + bytes_len;
5294            _next_ordinal_to_read += 1;
5295            if next_offset >= end_offset {
5296                return Ok(());
5297            }
5298
5299            // Decode unknown envelopes for gaps in ordinals.
5300            while _next_ordinal_to_read < 1 {
5301                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5302                _next_ordinal_to_read += 1;
5303                next_offset += envelope_size;
5304            }
5305
5306            let next_out_of_line = decoder.next_out_of_line();
5307            let handles_before = decoder.remaining_handles();
5308            if let Some((inlined, num_bytes, num_handles)) =
5309                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5310            {
5311                let member_inline_size = <fidl_fuchsia_hardware_audio__common::CodecFormatInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5312                if inlined != (member_inline_size <= 4) {
5313                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5314                }
5315                let inner_offset;
5316                let mut inner_depth = depth.clone();
5317                if inlined {
5318                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5319                    inner_offset = next_offset;
5320                } else {
5321                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5322                    inner_depth.increment()?;
5323                }
5324                let val_ref = self.state.get_or_insert_with(|| {
5325                    fidl::new_empty!(fidl_fuchsia_hardware_audio__common::CodecFormatInfo, D)
5326                });
5327                fidl::decode!(
5328                    fidl_fuchsia_hardware_audio__common::CodecFormatInfo,
5329                    D,
5330                    val_ref,
5331                    decoder,
5332                    inner_offset,
5333                    inner_depth
5334                )?;
5335                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5336                {
5337                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5338                }
5339                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5340                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5341                }
5342            }
5343
5344            next_offset += envelope_size;
5345
5346            // Decode the remaining unknown envelopes.
5347            while next_offset < end_offset {
5348                _next_ordinal_to_read += 1;
5349                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5350                next_offset += envelope_size;
5351            }
5352
5353            Ok(())
5354        }
5355    }
5356
5357    impl DelayInfo {
5358        #[inline(always)]
5359        fn max_ordinal_present(&self) -> u64 {
5360            if let Some(_) = self.external_delay {
5361                return 2;
5362            }
5363            if let Some(_) = self.internal_delay {
5364                return 1;
5365            }
5366            0
5367        }
5368    }
5369
5370    impl fidl::encoding::ValueTypeMarker for DelayInfo {
5371        type Borrowed<'a> = &'a Self;
5372        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5373            value
5374        }
5375    }
5376
5377    unsafe impl fidl::encoding::TypeMarker for DelayInfo {
5378        type Owned = Self;
5379
5380        #[inline(always)]
5381        fn inline_align(_context: fidl::encoding::Context) -> usize {
5382            8
5383        }
5384
5385        #[inline(always)]
5386        fn inline_size(_context: fidl::encoding::Context) -> usize {
5387            16
5388        }
5389    }
5390
5391    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DelayInfo, D>
5392        for &DelayInfo
5393    {
5394        unsafe fn encode(
5395            self,
5396            encoder: &mut fidl::encoding::Encoder<'_, D>,
5397            offset: usize,
5398            mut depth: fidl::encoding::Depth,
5399        ) -> fidl::Result<()> {
5400            encoder.debug_check_bounds::<DelayInfo>(offset);
5401            // Vector header
5402            let max_ordinal: u64 = self.max_ordinal_present();
5403            encoder.write_num(max_ordinal, offset);
5404            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5405            // Calling encoder.out_of_line_offset(0) is not allowed.
5406            if max_ordinal == 0 {
5407                return Ok(());
5408            }
5409            depth.increment()?;
5410            let envelope_size = 8;
5411            let bytes_len = max_ordinal as usize * envelope_size;
5412            #[allow(unused_variables)]
5413            let offset = encoder.out_of_line_offset(bytes_len);
5414            let mut _prev_end_offset: usize = 0;
5415            if 1 > max_ordinal {
5416                return Ok(());
5417            }
5418
5419            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5420            // are envelope_size bytes.
5421            let cur_offset: usize = (1 - 1) * envelope_size;
5422
5423            // Zero reserved fields.
5424            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5425
5426            // Safety:
5427            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5428            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5429            //   envelope_size bytes, there is always sufficient room.
5430            fidl::encoding::encode_in_envelope_optional::<i64, D>(
5431                self.internal_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5432                encoder,
5433                offset + cur_offset,
5434                depth,
5435            )?;
5436
5437            _prev_end_offset = cur_offset + envelope_size;
5438            if 2 > max_ordinal {
5439                return Ok(());
5440            }
5441
5442            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5443            // are envelope_size bytes.
5444            let cur_offset: usize = (2 - 1) * envelope_size;
5445
5446            // Zero reserved fields.
5447            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5448
5449            // Safety:
5450            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5451            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5452            //   envelope_size bytes, there is always sufficient room.
5453            fidl::encoding::encode_in_envelope_optional::<i64, D>(
5454                self.external_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5455                encoder,
5456                offset + cur_offset,
5457                depth,
5458            )?;
5459
5460            _prev_end_offset = cur_offset + envelope_size;
5461
5462            Ok(())
5463        }
5464    }
5465
5466    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DelayInfo {
5467        #[inline(always)]
5468        fn new_empty() -> Self {
5469            Self::default()
5470        }
5471
5472        unsafe fn decode(
5473            &mut self,
5474            decoder: &mut fidl::encoding::Decoder<'_, D>,
5475            offset: usize,
5476            mut depth: fidl::encoding::Depth,
5477        ) -> fidl::Result<()> {
5478            decoder.debug_check_bounds::<Self>(offset);
5479            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5480                None => return Err(fidl::Error::NotNullable),
5481                Some(len) => len,
5482            };
5483            // Calling decoder.out_of_line_offset(0) is not allowed.
5484            if len == 0 {
5485                return Ok(());
5486            };
5487            depth.increment()?;
5488            let envelope_size = 8;
5489            let bytes_len = len * envelope_size;
5490            let offset = decoder.out_of_line_offset(bytes_len)?;
5491            // Decode the envelope for each type.
5492            let mut _next_ordinal_to_read = 0;
5493            let mut next_offset = offset;
5494            let end_offset = offset + bytes_len;
5495            _next_ordinal_to_read += 1;
5496            if next_offset >= end_offset {
5497                return Ok(());
5498            }
5499
5500            // Decode unknown envelopes for gaps in ordinals.
5501            while _next_ordinal_to_read < 1 {
5502                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5503                _next_ordinal_to_read += 1;
5504                next_offset += envelope_size;
5505            }
5506
5507            let next_out_of_line = decoder.next_out_of_line();
5508            let handles_before = decoder.remaining_handles();
5509            if let Some((inlined, num_bytes, num_handles)) =
5510                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5511            {
5512                let member_inline_size =
5513                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5514                if inlined != (member_inline_size <= 4) {
5515                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5516                }
5517                let inner_offset;
5518                let mut inner_depth = depth.clone();
5519                if inlined {
5520                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5521                    inner_offset = next_offset;
5522                } else {
5523                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5524                    inner_depth.increment()?;
5525                }
5526                let val_ref = self.internal_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
5527                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5528                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5529                {
5530                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5531                }
5532                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5533                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5534                }
5535            }
5536
5537            next_offset += envelope_size;
5538            _next_ordinal_to_read += 1;
5539            if next_offset >= end_offset {
5540                return Ok(());
5541            }
5542
5543            // Decode unknown envelopes for gaps in ordinals.
5544            while _next_ordinal_to_read < 2 {
5545                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5546                _next_ordinal_to_read += 1;
5547                next_offset += envelope_size;
5548            }
5549
5550            let next_out_of_line = decoder.next_out_of_line();
5551            let handles_before = decoder.remaining_handles();
5552            if let Some((inlined, num_bytes, num_handles)) =
5553                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5554            {
5555                let member_inline_size =
5556                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5557                if inlined != (member_inline_size <= 4) {
5558                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5559                }
5560                let inner_offset;
5561                let mut inner_depth = depth.clone();
5562                if inlined {
5563                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5564                    inner_offset = next_offset;
5565                } else {
5566                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5567                    inner_depth.increment()?;
5568                }
5569                let val_ref = self.external_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
5570                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5571                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5572                {
5573                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5574                }
5575                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5576                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5577                }
5578            }
5579
5580            next_offset += envelope_size;
5581
5582            // Decode the remaining unknown envelopes.
5583            while next_offset < end_offset {
5584                _next_ordinal_to_read += 1;
5585                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5586                next_offset += envelope_size;
5587            }
5588
5589            Ok(())
5590        }
5591    }
5592
5593    impl ElementDaiFormatSet {
5594        #[inline(always)]
5595        fn max_ordinal_present(&self) -> u64 {
5596            if let Some(_) = self.format_sets {
5597                return 2;
5598            }
5599            if let Some(_) = self.element_id {
5600                return 1;
5601            }
5602            0
5603        }
5604    }
5605
5606    impl fidl::encoding::ValueTypeMarker for ElementDaiFormatSet {
5607        type Borrowed<'a> = &'a Self;
5608        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5609            value
5610        }
5611    }
5612
5613    unsafe impl fidl::encoding::TypeMarker for ElementDaiFormatSet {
5614        type Owned = Self;
5615
5616        #[inline(always)]
5617        fn inline_align(_context: fidl::encoding::Context) -> usize {
5618            8
5619        }
5620
5621        #[inline(always)]
5622        fn inline_size(_context: fidl::encoding::Context) -> usize {
5623            16
5624        }
5625    }
5626
5627    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ElementDaiFormatSet, D>
5628        for &ElementDaiFormatSet
5629    {
5630        unsafe fn encode(
5631            self,
5632            encoder: &mut fidl::encoding::Encoder<'_, D>,
5633            offset: usize,
5634            mut depth: fidl::encoding::Depth,
5635        ) -> fidl::Result<()> {
5636            encoder.debug_check_bounds::<ElementDaiFormatSet>(offset);
5637            // Vector header
5638            let max_ordinal: u64 = self.max_ordinal_present();
5639            encoder.write_num(max_ordinal, offset);
5640            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5641            // Calling encoder.out_of_line_offset(0) is not allowed.
5642            if max_ordinal == 0 {
5643                return Ok(());
5644            }
5645            depth.increment()?;
5646            let envelope_size = 8;
5647            let bytes_len = max_ordinal as usize * envelope_size;
5648            #[allow(unused_variables)]
5649            let offset = encoder.out_of_line_offset(bytes_len);
5650            let mut _prev_end_offset: usize = 0;
5651            if 1 > max_ordinal {
5652                return Ok(());
5653            }
5654
5655            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5656            // are envelope_size bytes.
5657            let cur_offset: usize = (1 - 1) * envelope_size;
5658
5659            // Zero reserved fields.
5660            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5661
5662            // Safety:
5663            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5664            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5665            //   envelope_size bytes, there is always sufficient room.
5666            fidl::encoding::encode_in_envelope_optional::<u64, D>(
5667                self.element_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5668                encoder,
5669                offset + cur_offset,
5670                depth,
5671            )?;
5672
5673            _prev_end_offset = cur_offset + envelope_size;
5674            if 2 > max_ordinal {
5675                return Ok(());
5676            }
5677
5678            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5679            // are envelope_size bytes.
5680            let cur_offset: usize = (2 - 1) * envelope_size;
5681
5682            // Zero reserved fields.
5683            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5684
5685            // Safety:
5686            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5687            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5688            //   envelope_size bytes, there is always sufficient room.
5689            fidl::encoding::encode_in_envelope_optional::<
5690                fidl::encoding::Vector<
5691                    fidl_fuchsia_hardware_audio__common::DaiSupportedFormats,
5692                    64,
5693                >,
5694                D,
5695            >(
5696                self.format_sets.as_ref().map(
5697                    <fidl::encoding::Vector<
5698                        fidl_fuchsia_hardware_audio__common::DaiSupportedFormats,
5699                        64,
5700                    > as fidl::encoding::ValueTypeMarker>::borrow,
5701                ),
5702                encoder,
5703                offset + cur_offset,
5704                depth,
5705            )?;
5706
5707            _prev_end_offset = cur_offset + envelope_size;
5708
5709            Ok(())
5710        }
5711    }
5712
5713    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ElementDaiFormatSet {
5714        #[inline(always)]
5715        fn new_empty() -> Self {
5716            Self::default()
5717        }
5718
5719        unsafe fn decode(
5720            &mut self,
5721            decoder: &mut fidl::encoding::Decoder<'_, D>,
5722            offset: usize,
5723            mut depth: fidl::encoding::Depth,
5724        ) -> fidl::Result<()> {
5725            decoder.debug_check_bounds::<Self>(offset);
5726            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5727                None => return Err(fidl::Error::NotNullable),
5728                Some(len) => len,
5729            };
5730            // Calling decoder.out_of_line_offset(0) is not allowed.
5731            if len == 0 {
5732                return Ok(());
5733            };
5734            depth.increment()?;
5735            let envelope_size = 8;
5736            let bytes_len = len * envelope_size;
5737            let offset = decoder.out_of_line_offset(bytes_len)?;
5738            // Decode the envelope for each type.
5739            let mut _next_ordinal_to_read = 0;
5740            let mut next_offset = offset;
5741            let end_offset = offset + bytes_len;
5742            _next_ordinal_to_read += 1;
5743            if next_offset >= end_offset {
5744                return Ok(());
5745            }
5746
5747            // Decode unknown envelopes for gaps in ordinals.
5748            while _next_ordinal_to_read < 1 {
5749                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5750                _next_ordinal_to_read += 1;
5751                next_offset += envelope_size;
5752            }
5753
5754            let next_out_of_line = decoder.next_out_of_line();
5755            let handles_before = decoder.remaining_handles();
5756            if let Some((inlined, num_bytes, num_handles)) =
5757                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5758            {
5759                let member_inline_size =
5760                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5761                if inlined != (member_inline_size <= 4) {
5762                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5763                }
5764                let inner_offset;
5765                let mut inner_depth = depth.clone();
5766                if inlined {
5767                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5768                    inner_offset = next_offset;
5769                } else {
5770                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5771                    inner_depth.increment()?;
5772                }
5773                let val_ref = self.element_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
5774                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5775                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5776                {
5777                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5778                }
5779                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5780                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5781                }
5782            }
5783
5784            next_offset += envelope_size;
5785            _next_ordinal_to_read += 1;
5786            if next_offset >= end_offset {
5787                return Ok(());
5788            }
5789
5790            // Decode unknown envelopes for gaps in ordinals.
5791            while _next_ordinal_to_read < 2 {
5792                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5793                _next_ordinal_to_read += 1;
5794                next_offset += envelope_size;
5795            }
5796
5797            let next_out_of_line = decoder.next_out_of_line();
5798            let handles_before = decoder.remaining_handles();
5799            if let Some((inlined, num_bytes, num_handles)) =
5800                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5801            {
5802                let member_inline_size = <fidl::encoding::Vector<
5803                    fidl_fuchsia_hardware_audio__common::DaiSupportedFormats,
5804                    64,
5805                > as fidl::encoding::TypeMarker>::inline_size(
5806                    decoder.context
5807                );
5808                if inlined != (member_inline_size <= 4) {
5809                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5810                }
5811                let inner_offset;
5812                let mut inner_depth = depth.clone();
5813                if inlined {
5814                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5815                    inner_offset = next_offset;
5816                } else {
5817                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5818                    inner_depth.increment()?;
5819                }
5820                let val_ref =
5821                self.format_sets.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_hardware_audio__common::DaiSupportedFormats, 64>, D));
5822                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_hardware_audio__common::DaiSupportedFormats, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
5823                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5824                {
5825                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5826                }
5827                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5828                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5829                }
5830            }
5831
5832            next_offset += envelope_size;
5833
5834            // Decode the remaining unknown envelopes.
5835            while next_offset < end_offset {
5836                _next_ordinal_to_read += 1;
5837                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5838                next_offset += envelope_size;
5839            }
5840
5841            Ok(())
5842        }
5843    }
5844
5845    impl ElementPacketStreamFormatSet {
5846        #[inline(always)]
5847        fn max_ordinal_present(&self) -> u64 {
5848            if let Some(_) = self.format_sets {
5849                return 2;
5850            }
5851            if let Some(_) = self.element_id {
5852                return 1;
5853            }
5854            0
5855        }
5856    }
5857
5858    impl fidl::encoding::ValueTypeMarker for ElementPacketStreamFormatSet {
5859        type Borrowed<'a> = &'a Self;
5860        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5861            value
5862        }
5863    }
5864
5865    unsafe impl fidl::encoding::TypeMarker for ElementPacketStreamFormatSet {
5866        type Owned = Self;
5867
5868        #[inline(always)]
5869        fn inline_align(_context: fidl::encoding::Context) -> usize {
5870            8
5871        }
5872
5873        #[inline(always)]
5874        fn inline_size(_context: fidl::encoding::Context) -> usize {
5875            16
5876        }
5877    }
5878
5879    unsafe impl<D: fidl::encoding::ResourceDialect>
5880        fidl::encoding::Encode<ElementPacketStreamFormatSet, D> for &ElementPacketStreamFormatSet
5881    {
5882        unsafe fn encode(
5883            self,
5884            encoder: &mut fidl::encoding::Encoder<'_, D>,
5885            offset: usize,
5886            mut depth: fidl::encoding::Depth,
5887        ) -> fidl::Result<()> {
5888            encoder.debug_check_bounds::<ElementPacketStreamFormatSet>(offset);
5889            // Vector header
5890            let max_ordinal: u64 = self.max_ordinal_present();
5891            encoder.write_num(max_ordinal, offset);
5892            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5893            // Calling encoder.out_of_line_offset(0) is not allowed.
5894            if max_ordinal == 0 {
5895                return Ok(());
5896            }
5897            depth.increment()?;
5898            let envelope_size = 8;
5899            let bytes_len = max_ordinal as usize * envelope_size;
5900            #[allow(unused_variables)]
5901            let offset = encoder.out_of_line_offset(bytes_len);
5902            let mut _prev_end_offset: usize = 0;
5903            if 1 > max_ordinal {
5904                return Ok(());
5905            }
5906
5907            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5908            // are envelope_size bytes.
5909            let cur_offset: usize = (1 - 1) * envelope_size;
5910
5911            // Zero reserved fields.
5912            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5913
5914            // Safety:
5915            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5916            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5917            //   envelope_size bytes, there is always sufficient room.
5918            fidl::encoding::encode_in_envelope_optional::<u64, D>(
5919                self.element_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5920                encoder,
5921                offset + cur_offset,
5922                depth,
5923            )?;
5924
5925            _prev_end_offset = cur_offset + envelope_size;
5926            if 2 > max_ordinal {
5927                return Ok(());
5928            }
5929
5930            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5931            // are envelope_size bytes.
5932            let cur_offset: usize = (2 - 1) * envelope_size;
5933
5934            // Zero reserved fields.
5935            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5936
5937            // Safety:
5938            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5939            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5940            //   envelope_size bytes, there is always sufficient room.
5941            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<PacketStreamSupportedFormats, 64>, D>(
5942            self.format_sets.as_ref().map(<fidl::encoding::Vector<PacketStreamSupportedFormats, 64> as fidl::encoding::ValueTypeMarker>::borrow),
5943            encoder, offset + cur_offset, depth
5944        )?;
5945
5946            _prev_end_offset = cur_offset + envelope_size;
5947
5948            Ok(())
5949        }
5950    }
5951
5952    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5953        for ElementPacketStreamFormatSet
5954    {
5955        #[inline(always)]
5956        fn new_empty() -> Self {
5957            Self::default()
5958        }
5959
5960        unsafe fn decode(
5961            &mut self,
5962            decoder: &mut fidl::encoding::Decoder<'_, D>,
5963            offset: usize,
5964            mut depth: fidl::encoding::Depth,
5965        ) -> fidl::Result<()> {
5966            decoder.debug_check_bounds::<Self>(offset);
5967            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5968                None => return Err(fidl::Error::NotNullable),
5969                Some(len) => len,
5970            };
5971            // Calling decoder.out_of_line_offset(0) is not allowed.
5972            if len == 0 {
5973                return Ok(());
5974            };
5975            depth.increment()?;
5976            let envelope_size = 8;
5977            let bytes_len = len * envelope_size;
5978            let offset = decoder.out_of_line_offset(bytes_len)?;
5979            // Decode the envelope for each type.
5980            let mut _next_ordinal_to_read = 0;
5981            let mut next_offset = offset;
5982            let end_offset = offset + bytes_len;
5983            _next_ordinal_to_read += 1;
5984            if next_offset >= end_offset {
5985                return Ok(());
5986            }
5987
5988            // Decode unknown envelopes for gaps in ordinals.
5989            while _next_ordinal_to_read < 1 {
5990                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5991                _next_ordinal_to_read += 1;
5992                next_offset += envelope_size;
5993            }
5994
5995            let next_out_of_line = decoder.next_out_of_line();
5996            let handles_before = decoder.remaining_handles();
5997            if let Some((inlined, num_bytes, num_handles)) =
5998                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5999            {
6000                let member_inline_size =
6001                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6002                if inlined != (member_inline_size <= 4) {
6003                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6004                }
6005                let inner_offset;
6006                let mut inner_depth = depth.clone();
6007                if inlined {
6008                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6009                    inner_offset = next_offset;
6010                } else {
6011                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6012                    inner_depth.increment()?;
6013                }
6014                let val_ref = self.element_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
6015                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6016                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6017                {
6018                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6019                }
6020                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6021                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6022                }
6023            }
6024
6025            next_offset += envelope_size;
6026            _next_ordinal_to_read += 1;
6027            if next_offset >= end_offset {
6028                return Ok(());
6029            }
6030
6031            // Decode unknown envelopes for gaps in ordinals.
6032            while _next_ordinal_to_read < 2 {
6033                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6034                _next_ordinal_to_read += 1;
6035                next_offset += envelope_size;
6036            }
6037
6038            let next_out_of_line = decoder.next_out_of_line();
6039            let handles_before = decoder.remaining_handles();
6040            if let Some((inlined, num_bytes, num_handles)) =
6041                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6042            {
6043                let member_inline_size = <fidl::encoding::Vector<PacketStreamSupportedFormats, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6044                if inlined != (member_inline_size <= 4) {
6045                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6046                }
6047                let inner_offset;
6048                let mut inner_depth = depth.clone();
6049                if inlined {
6050                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6051                    inner_offset = next_offset;
6052                } else {
6053                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6054                    inner_depth.increment()?;
6055                }
6056                let val_ref =
6057                self.format_sets.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<PacketStreamSupportedFormats, 64>, D));
6058                fidl::decode!(fidl::encoding::Vector<PacketStreamSupportedFormats, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
6059                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6060                {
6061                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6062                }
6063                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6064                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6065                }
6066            }
6067
6068            next_offset += envelope_size;
6069
6070            // Decode the remaining unknown envelopes.
6071            while next_offset < end_offset {
6072                _next_ordinal_to_read += 1;
6073                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6074                next_offset += envelope_size;
6075            }
6076
6077            Ok(())
6078        }
6079    }
6080
6081    impl ElementRingBufferFormatSet {
6082        #[inline(always)]
6083        fn max_ordinal_present(&self) -> u64 {
6084            if let Some(_) = self.format_sets {
6085                return 2;
6086            }
6087            if let Some(_) = self.element_id {
6088                return 1;
6089            }
6090            0
6091        }
6092    }
6093
6094    impl fidl::encoding::ValueTypeMarker for ElementRingBufferFormatSet {
6095        type Borrowed<'a> = &'a Self;
6096        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6097            value
6098        }
6099    }
6100
6101    unsafe impl fidl::encoding::TypeMarker for ElementRingBufferFormatSet {
6102        type Owned = Self;
6103
6104        #[inline(always)]
6105        fn inline_align(_context: fidl::encoding::Context) -> usize {
6106            8
6107        }
6108
6109        #[inline(always)]
6110        fn inline_size(_context: fidl::encoding::Context) -> usize {
6111            16
6112        }
6113    }
6114
6115    unsafe impl<D: fidl::encoding::ResourceDialect>
6116        fidl::encoding::Encode<ElementRingBufferFormatSet, D> for &ElementRingBufferFormatSet
6117    {
6118        unsafe fn encode(
6119            self,
6120            encoder: &mut fidl::encoding::Encoder<'_, D>,
6121            offset: usize,
6122            mut depth: fidl::encoding::Depth,
6123        ) -> fidl::Result<()> {
6124            encoder.debug_check_bounds::<ElementRingBufferFormatSet>(offset);
6125            // Vector header
6126            let max_ordinal: u64 = self.max_ordinal_present();
6127            encoder.write_num(max_ordinal, offset);
6128            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6129            // Calling encoder.out_of_line_offset(0) is not allowed.
6130            if max_ordinal == 0 {
6131                return Ok(());
6132            }
6133            depth.increment()?;
6134            let envelope_size = 8;
6135            let bytes_len = max_ordinal as usize * envelope_size;
6136            #[allow(unused_variables)]
6137            let offset = encoder.out_of_line_offset(bytes_len);
6138            let mut _prev_end_offset: usize = 0;
6139            if 1 > max_ordinal {
6140                return Ok(());
6141            }
6142
6143            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6144            // are envelope_size bytes.
6145            let cur_offset: usize = (1 - 1) * envelope_size;
6146
6147            // Zero reserved fields.
6148            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6149
6150            // Safety:
6151            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6152            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6153            //   envelope_size bytes, there is always sufficient room.
6154            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6155                self.element_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6156                encoder,
6157                offset + cur_offset,
6158                depth,
6159            )?;
6160
6161            _prev_end_offset = cur_offset + envelope_size;
6162            if 2 > max_ordinal {
6163                return Ok(());
6164            }
6165
6166            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6167            // are envelope_size bytes.
6168            let cur_offset: usize = (2 - 1) * envelope_size;
6169
6170            // Zero reserved fields.
6171            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6172
6173            // Safety:
6174            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6175            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6176            //   envelope_size bytes, there is always sufficient room.
6177            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<PcmFormatSet, 64>, D>(
6178            self.format_sets.as_ref().map(<fidl::encoding::Vector<PcmFormatSet, 64> as fidl::encoding::ValueTypeMarker>::borrow),
6179            encoder, offset + cur_offset, depth
6180        )?;
6181
6182            _prev_end_offset = cur_offset + envelope_size;
6183
6184            Ok(())
6185        }
6186    }
6187
6188    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6189        for ElementRingBufferFormatSet
6190    {
6191        #[inline(always)]
6192        fn new_empty() -> Self {
6193            Self::default()
6194        }
6195
6196        unsafe fn decode(
6197            &mut self,
6198            decoder: &mut fidl::encoding::Decoder<'_, D>,
6199            offset: usize,
6200            mut depth: fidl::encoding::Depth,
6201        ) -> fidl::Result<()> {
6202            decoder.debug_check_bounds::<Self>(offset);
6203            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6204                None => return Err(fidl::Error::NotNullable),
6205                Some(len) => len,
6206            };
6207            // Calling decoder.out_of_line_offset(0) is not allowed.
6208            if len == 0 {
6209                return Ok(());
6210            };
6211            depth.increment()?;
6212            let envelope_size = 8;
6213            let bytes_len = len * envelope_size;
6214            let offset = decoder.out_of_line_offset(bytes_len)?;
6215            // Decode the envelope for each type.
6216            let mut _next_ordinal_to_read = 0;
6217            let mut next_offset = offset;
6218            let end_offset = offset + bytes_len;
6219            _next_ordinal_to_read += 1;
6220            if next_offset >= end_offset {
6221                return Ok(());
6222            }
6223
6224            // Decode unknown envelopes for gaps in ordinals.
6225            while _next_ordinal_to_read < 1 {
6226                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6227                _next_ordinal_to_read += 1;
6228                next_offset += envelope_size;
6229            }
6230
6231            let next_out_of_line = decoder.next_out_of_line();
6232            let handles_before = decoder.remaining_handles();
6233            if let Some((inlined, num_bytes, num_handles)) =
6234                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6235            {
6236                let member_inline_size =
6237                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6238                if inlined != (member_inline_size <= 4) {
6239                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6240                }
6241                let inner_offset;
6242                let mut inner_depth = depth.clone();
6243                if inlined {
6244                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6245                    inner_offset = next_offset;
6246                } else {
6247                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6248                    inner_depth.increment()?;
6249                }
6250                let val_ref = self.element_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
6251                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6252                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6253                {
6254                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6255                }
6256                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6257                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6258                }
6259            }
6260
6261            next_offset += envelope_size;
6262            _next_ordinal_to_read += 1;
6263            if next_offset >= end_offset {
6264                return Ok(());
6265            }
6266
6267            // Decode unknown envelopes for gaps in ordinals.
6268            while _next_ordinal_to_read < 2 {
6269                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6270                _next_ordinal_to_read += 1;
6271                next_offset += envelope_size;
6272            }
6273
6274            let next_out_of_line = decoder.next_out_of_line();
6275            let handles_before = decoder.remaining_handles();
6276            if let Some((inlined, num_bytes, num_handles)) =
6277                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6278            {
6279                let member_inline_size = <fidl::encoding::Vector<PcmFormatSet, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6280                if inlined != (member_inline_size <= 4) {
6281                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6282                }
6283                let inner_offset;
6284                let mut inner_depth = depth.clone();
6285                if inlined {
6286                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6287                    inner_offset = next_offset;
6288                } else {
6289                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6290                    inner_depth.increment()?;
6291                }
6292                let val_ref = self.format_sets.get_or_insert_with(
6293                    || fidl::new_empty!(fidl::encoding::Vector<PcmFormatSet, 64>, D),
6294                );
6295                fidl::decode!(fidl::encoding::Vector<PcmFormatSet, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
6296                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6297                {
6298                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6299                }
6300                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6301                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6302                }
6303            }
6304
6305            next_offset += envelope_size;
6306
6307            // Decode the remaining unknown envelopes.
6308            while next_offset < end_offset {
6309                _next_ordinal_to_read += 1;
6310                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6311                next_offset += envelope_size;
6312            }
6313
6314            Ok(())
6315        }
6316    }
6317
6318    impl Info {
6319        #[inline(always)]
6320        fn max_ordinal_present(&self) -> u64 {
6321            if let Some(_) = self.packet_stream_format_sets {
6322                return 14;
6323            }
6324            if let Some(_) = self.signal_processing_topologies {
6325                return 13;
6326            }
6327            if let Some(_) = self.signal_processing_elements {
6328                return 12;
6329            }
6330            if let Some(_) = self.clock_domain {
6331                return 11;
6332            }
6333            if let Some(_) = self.plug_detect_caps {
6334                return 10;
6335            }
6336            if let Some(_) = self.dai_format_sets {
6337                return 9;
6338            }
6339            if let Some(_) = self.ring_buffer_format_sets {
6340                return 8;
6341            }
6342            if let Some(_) = self.is_input {
6343                return 7;
6344            }
6345            if let Some(_) = self.unique_instance_id {
6346                return 6;
6347            }
6348            if let Some(_) = self.product {
6349                return 5;
6350            }
6351            if let Some(_) = self.manufacturer {
6352                return 4;
6353            }
6354            if let Some(_) = self.device_name {
6355                return 3;
6356            }
6357            if let Some(_) = self.device_type {
6358                return 2;
6359            }
6360            if let Some(_) = self.token_id {
6361                return 1;
6362            }
6363            0
6364        }
6365    }
6366
6367    impl fidl::encoding::ValueTypeMarker for Info {
6368        type Borrowed<'a> = &'a Self;
6369        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6370            value
6371        }
6372    }
6373
6374    unsafe impl fidl::encoding::TypeMarker for Info {
6375        type Owned = Self;
6376
6377        #[inline(always)]
6378        fn inline_align(_context: fidl::encoding::Context) -> usize {
6379            8
6380        }
6381
6382        #[inline(always)]
6383        fn inline_size(_context: fidl::encoding::Context) -> usize {
6384            16
6385        }
6386    }
6387
6388    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Info, D> for &Info {
6389        unsafe fn encode(
6390            self,
6391            encoder: &mut fidl::encoding::Encoder<'_, D>,
6392            offset: usize,
6393            mut depth: fidl::encoding::Depth,
6394        ) -> fidl::Result<()> {
6395            encoder.debug_check_bounds::<Info>(offset);
6396            // Vector header
6397            let max_ordinal: u64 = self.max_ordinal_present();
6398            encoder.write_num(max_ordinal, offset);
6399            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6400            // Calling encoder.out_of_line_offset(0) is not allowed.
6401            if max_ordinal == 0 {
6402                return Ok(());
6403            }
6404            depth.increment()?;
6405            let envelope_size = 8;
6406            let bytes_len = max_ordinal as usize * envelope_size;
6407            #[allow(unused_variables)]
6408            let offset = encoder.out_of_line_offset(bytes_len);
6409            let mut _prev_end_offset: usize = 0;
6410            if 1 > max_ordinal {
6411                return Ok(());
6412            }
6413
6414            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6415            // are envelope_size bytes.
6416            let cur_offset: usize = (1 - 1) * envelope_size;
6417
6418            // Zero reserved fields.
6419            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6420
6421            // Safety:
6422            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6423            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6424            //   envelope_size bytes, there is always sufficient room.
6425            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6426                self.token_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6427                encoder,
6428                offset + cur_offset,
6429                depth,
6430            )?;
6431
6432            _prev_end_offset = cur_offset + envelope_size;
6433            if 2 > max_ordinal {
6434                return Ok(());
6435            }
6436
6437            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6438            // are envelope_size bytes.
6439            let cur_offset: usize = (2 - 1) * envelope_size;
6440
6441            // Zero reserved fields.
6442            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6443
6444            // Safety:
6445            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6446            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6447            //   envelope_size bytes, there is always sufficient room.
6448            fidl::encoding::encode_in_envelope_optional::<DeviceType, D>(
6449                self.device_type
6450                    .as_ref()
6451                    .map(<DeviceType as fidl::encoding::ValueTypeMarker>::borrow),
6452                encoder,
6453                offset + cur_offset,
6454                depth,
6455            )?;
6456
6457            _prev_end_offset = cur_offset + envelope_size;
6458            if 3 > max_ordinal {
6459                return Ok(());
6460            }
6461
6462            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6463            // are envelope_size bytes.
6464            let cur_offset: usize = (3 - 1) * envelope_size;
6465
6466            // Zero reserved fields.
6467            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6468
6469            // Safety:
6470            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6471            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6472            //   envelope_size bytes, there is always sufficient room.
6473            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
6474                self.device_name.as_ref().map(
6475                    <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
6476                ),
6477                encoder,
6478                offset + cur_offset,
6479                depth,
6480            )?;
6481
6482            _prev_end_offset = cur_offset + envelope_size;
6483            if 4 > max_ordinal {
6484                return Ok(());
6485            }
6486
6487            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6488            // are envelope_size bytes.
6489            let cur_offset: usize = (4 - 1) * envelope_size;
6490
6491            // Zero reserved fields.
6492            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6493
6494            // Safety:
6495            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6496            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6497            //   envelope_size bytes, there is always sufficient room.
6498            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
6499                self.manufacturer.as_ref().map(
6500                    <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
6501                ),
6502                encoder,
6503                offset + cur_offset,
6504                depth,
6505            )?;
6506
6507            _prev_end_offset = cur_offset + envelope_size;
6508            if 5 > max_ordinal {
6509                return Ok(());
6510            }
6511
6512            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6513            // are envelope_size bytes.
6514            let cur_offset: usize = (5 - 1) * envelope_size;
6515
6516            // Zero reserved fields.
6517            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6518
6519            // Safety:
6520            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6521            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6522            //   envelope_size bytes, there is always sufficient room.
6523            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
6524                self.product.as_ref().map(
6525                    <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
6526                ),
6527                encoder,
6528                offset + cur_offset,
6529                depth,
6530            )?;
6531
6532            _prev_end_offset = cur_offset + envelope_size;
6533            if 6 > max_ordinal {
6534                return Ok(());
6535            }
6536
6537            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6538            // are envelope_size bytes.
6539            let cur_offset: usize = (6 - 1) * envelope_size;
6540
6541            // Zero reserved fields.
6542            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6543
6544            // Safety:
6545            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6546            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6547            //   envelope_size bytes, there is always sufficient room.
6548            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 16>, D>(
6549                self.unique_instance_id.as_ref().map(
6550                    <fidl::encoding::Array<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
6551                ),
6552                encoder,
6553                offset + cur_offset,
6554                depth,
6555            )?;
6556
6557            _prev_end_offset = cur_offset + envelope_size;
6558            if 7 > max_ordinal {
6559                return Ok(());
6560            }
6561
6562            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6563            // are envelope_size bytes.
6564            let cur_offset: usize = (7 - 1) * envelope_size;
6565
6566            // Zero reserved fields.
6567            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6568
6569            // Safety:
6570            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6571            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6572            //   envelope_size bytes, there is always sufficient room.
6573            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6574                self.is_input.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6575                encoder,
6576                offset + cur_offset,
6577                depth,
6578            )?;
6579
6580            _prev_end_offset = cur_offset + envelope_size;
6581            if 8 > max_ordinal {
6582                return Ok(());
6583            }
6584
6585            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6586            // are envelope_size bytes.
6587            let cur_offset: usize = (8 - 1) * envelope_size;
6588
6589            // Zero reserved fields.
6590            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6591
6592            // Safety:
6593            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6594            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6595            //   envelope_size bytes, there is always sufficient room.
6596            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ElementRingBufferFormatSet, 64>, D>(
6597            self.ring_buffer_format_sets.as_ref().map(<fidl::encoding::Vector<ElementRingBufferFormatSet, 64> as fidl::encoding::ValueTypeMarker>::borrow),
6598            encoder, offset + cur_offset, depth
6599        )?;
6600
6601            _prev_end_offset = cur_offset + envelope_size;
6602            if 9 > max_ordinal {
6603                return Ok(());
6604            }
6605
6606            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6607            // are envelope_size bytes.
6608            let cur_offset: usize = (9 - 1) * envelope_size;
6609
6610            // Zero reserved fields.
6611            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6612
6613            // Safety:
6614            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6615            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6616            //   envelope_size bytes, there is always sufficient room.
6617            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ElementDaiFormatSet, 64>, D>(
6618            self.dai_format_sets.as_ref().map(<fidl::encoding::Vector<ElementDaiFormatSet, 64> as fidl::encoding::ValueTypeMarker>::borrow),
6619            encoder, offset + cur_offset, depth
6620        )?;
6621
6622            _prev_end_offset = cur_offset + envelope_size;
6623            if 10 > max_ordinal {
6624                return Ok(());
6625            }
6626
6627            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6628            // are envelope_size bytes.
6629            let cur_offset: usize = (10 - 1) * envelope_size;
6630
6631            // Zero reserved fields.
6632            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6633
6634            // Safety:
6635            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6636            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6637            //   envelope_size bytes, there is always sufficient room.
6638            fidl::encoding::encode_in_envelope_optional::<PlugDetectCapabilities, D>(
6639                self.plug_detect_caps
6640                    .as_ref()
6641                    .map(<PlugDetectCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
6642                encoder,
6643                offset + cur_offset,
6644                depth,
6645            )?;
6646
6647            _prev_end_offset = cur_offset + envelope_size;
6648            if 11 > max_ordinal {
6649                return Ok(());
6650            }
6651
6652            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6653            // are envelope_size bytes.
6654            let cur_offset: usize = (11 - 1) * envelope_size;
6655
6656            // Zero reserved fields.
6657            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6658
6659            // Safety:
6660            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6661            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6662            //   envelope_size bytes, there is always sufficient room.
6663            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6664                self.clock_domain.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6665                encoder,
6666                offset + cur_offset,
6667                depth,
6668            )?;
6669
6670            _prev_end_offset = cur_offset + envelope_size;
6671            if 12 > max_ordinal {
6672                return Ok(());
6673            }
6674
6675            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6676            // are envelope_size bytes.
6677            let cur_offset: usize = (12 - 1) * envelope_size;
6678
6679            // Zero reserved fields.
6680            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6681
6682            // Safety:
6683            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6684            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6685            //   envelope_size bytes, there is always sufficient room.
6686            fidl::encoding::encode_in_envelope_optional::<
6687                fidl::encoding::Vector<
6688                    fidl_fuchsia_hardware_audio_signalprocessing__common::Element,
6689                    64,
6690                >,
6691                D,
6692            >(
6693                self.signal_processing_elements.as_ref().map(
6694                    <fidl::encoding::Vector<
6695                        fidl_fuchsia_hardware_audio_signalprocessing__common::Element,
6696                        64,
6697                    > as fidl::encoding::ValueTypeMarker>::borrow,
6698                ),
6699                encoder,
6700                offset + cur_offset,
6701                depth,
6702            )?;
6703
6704            _prev_end_offset = cur_offset + envelope_size;
6705            if 13 > max_ordinal {
6706                return Ok(());
6707            }
6708
6709            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6710            // are envelope_size bytes.
6711            let cur_offset: usize = (13 - 1) * envelope_size;
6712
6713            // Zero reserved fields.
6714            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6715
6716            // Safety:
6717            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6718            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6719            //   envelope_size bytes, there is always sufficient room.
6720            fidl::encoding::encode_in_envelope_optional::<
6721                fidl::encoding::Vector<
6722                    fidl_fuchsia_hardware_audio_signalprocessing__common::Topology,
6723                    64,
6724                >,
6725                D,
6726            >(
6727                self.signal_processing_topologies.as_ref().map(
6728                    <fidl::encoding::Vector<
6729                        fidl_fuchsia_hardware_audio_signalprocessing__common::Topology,
6730                        64,
6731                    > as fidl::encoding::ValueTypeMarker>::borrow,
6732                ),
6733                encoder,
6734                offset + cur_offset,
6735                depth,
6736            )?;
6737
6738            _prev_end_offset = cur_offset + envelope_size;
6739            if 14 > max_ordinal {
6740                return Ok(());
6741            }
6742
6743            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6744            // are envelope_size bytes.
6745            let cur_offset: usize = (14 - 1) * envelope_size;
6746
6747            // Zero reserved fields.
6748            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6749
6750            // Safety:
6751            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6752            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6753            //   envelope_size bytes, there is always sufficient room.
6754            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ElementPacketStreamFormatSet, 64>, D>(
6755            self.packet_stream_format_sets.as_ref().map(<fidl::encoding::Vector<ElementPacketStreamFormatSet, 64> as fidl::encoding::ValueTypeMarker>::borrow),
6756            encoder, offset + cur_offset, depth
6757        )?;
6758
6759            _prev_end_offset = cur_offset + envelope_size;
6760
6761            Ok(())
6762        }
6763    }
6764
6765    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Info {
6766        #[inline(always)]
6767        fn new_empty() -> Self {
6768            Self::default()
6769        }
6770
6771        unsafe fn decode(
6772            &mut self,
6773            decoder: &mut fidl::encoding::Decoder<'_, D>,
6774            offset: usize,
6775            mut depth: fidl::encoding::Depth,
6776        ) -> fidl::Result<()> {
6777            decoder.debug_check_bounds::<Self>(offset);
6778            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6779                None => return Err(fidl::Error::NotNullable),
6780                Some(len) => len,
6781            };
6782            // Calling decoder.out_of_line_offset(0) is not allowed.
6783            if len == 0 {
6784                return Ok(());
6785            };
6786            depth.increment()?;
6787            let envelope_size = 8;
6788            let bytes_len = len * envelope_size;
6789            let offset = decoder.out_of_line_offset(bytes_len)?;
6790            // Decode the envelope for each type.
6791            let mut _next_ordinal_to_read = 0;
6792            let mut next_offset = offset;
6793            let end_offset = offset + bytes_len;
6794            _next_ordinal_to_read += 1;
6795            if next_offset >= end_offset {
6796                return Ok(());
6797            }
6798
6799            // Decode unknown envelopes for gaps in ordinals.
6800            while _next_ordinal_to_read < 1 {
6801                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6802                _next_ordinal_to_read += 1;
6803                next_offset += envelope_size;
6804            }
6805
6806            let next_out_of_line = decoder.next_out_of_line();
6807            let handles_before = decoder.remaining_handles();
6808            if let Some((inlined, num_bytes, num_handles)) =
6809                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6810            {
6811                let member_inline_size =
6812                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6813                if inlined != (member_inline_size <= 4) {
6814                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6815                }
6816                let inner_offset;
6817                let mut inner_depth = depth.clone();
6818                if inlined {
6819                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6820                    inner_offset = next_offset;
6821                } else {
6822                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6823                    inner_depth.increment()?;
6824                }
6825                let val_ref = self.token_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
6826                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6827                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6828                {
6829                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6830                }
6831                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6832                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6833                }
6834            }
6835
6836            next_offset += envelope_size;
6837            _next_ordinal_to_read += 1;
6838            if next_offset >= end_offset {
6839                return Ok(());
6840            }
6841
6842            // Decode unknown envelopes for gaps in ordinals.
6843            while _next_ordinal_to_read < 2 {
6844                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6845                _next_ordinal_to_read += 1;
6846                next_offset += envelope_size;
6847            }
6848
6849            let next_out_of_line = decoder.next_out_of_line();
6850            let handles_before = decoder.remaining_handles();
6851            if let Some((inlined, num_bytes, num_handles)) =
6852                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6853            {
6854                let member_inline_size =
6855                    <DeviceType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6856                if inlined != (member_inline_size <= 4) {
6857                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6858                }
6859                let inner_offset;
6860                let mut inner_depth = depth.clone();
6861                if inlined {
6862                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6863                    inner_offset = next_offset;
6864                } else {
6865                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6866                    inner_depth.increment()?;
6867                }
6868                let val_ref =
6869                    self.device_type.get_or_insert_with(|| fidl::new_empty!(DeviceType, D));
6870                fidl::decode!(DeviceType, D, val_ref, decoder, inner_offset, inner_depth)?;
6871                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6872                {
6873                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6874                }
6875                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6876                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6877                }
6878            }
6879
6880            next_offset += envelope_size;
6881            _next_ordinal_to_read += 1;
6882            if next_offset >= end_offset {
6883                return Ok(());
6884            }
6885
6886            // Decode unknown envelopes for gaps in ordinals.
6887            while _next_ordinal_to_read < 3 {
6888                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6889                _next_ordinal_to_read += 1;
6890                next_offset += envelope_size;
6891            }
6892
6893            let next_out_of_line = decoder.next_out_of_line();
6894            let handles_before = decoder.remaining_handles();
6895            if let Some((inlined, num_bytes, num_handles)) =
6896                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6897            {
6898                let member_inline_size =
6899                    <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
6900                        decoder.context,
6901                    );
6902                if inlined != (member_inline_size <= 4) {
6903                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6904                }
6905                let inner_offset;
6906                let mut inner_depth = depth.clone();
6907                if inlined {
6908                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6909                    inner_offset = next_offset;
6910                } else {
6911                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6912                    inner_depth.increment()?;
6913                }
6914                let val_ref = self
6915                    .device_name
6916                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
6917                fidl::decode!(
6918                    fidl::encoding::BoundedString<256>,
6919                    D,
6920                    val_ref,
6921                    decoder,
6922                    inner_offset,
6923                    inner_depth
6924                )?;
6925                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6926                {
6927                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6928                }
6929                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6930                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6931                }
6932            }
6933
6934            next_offset += envelope_size;
6935            _next_ordinal_to_read += 1;
6936            if next_offset >= end_offset {
6937                return Ok(());
6938            }
6939
6940            // Decode unknown envelopes for gaps in ordinals.
6941            while _next_ordinal_to_read < 4 {
6942                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6943                _next_ordinal_to_read += 1;
6944                next_offset += envelope_size;
6945            }
6946
6947            let next_out_of_line = decoder.next_out_of_line();
6948            let handles_before = decoder.remaining_handles();
6949            if let Some((inlined, num_bytes, num_handles)) =
6950                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6951            {
6952                let member_inline_size =
6953                    <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
6954                        decoder.context,
6955                    );
6956                if inlined != (member_inline_size <= 4) {
6957                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6958                }
6959                let inner_offset;
6960                let mut inner_depth = depth.clone();
6961                if inlined {
6962                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6963                    inner_offset = next_offset;
6964                } else {
6965                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6966                    inner_depth.increment()?;
6967                }
6968                let val_ref = self
6969                    .manufacturer
6970                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
6971                fidl::decode!(
6972                    fidl::encoding::BoundedString<256>,
6973                    D,
6974                    val_ref,
6975                    decoder,
6976                    inner_offset,
6977                    inner_depth
6978                )?;
6979                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6980                {
6981                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6982                }
6983                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6984                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6985                }
6986            }
6987
6988            next_offset += envelope_size;
6989            _next_ordinal_to_read += 1;
6990            if next_offset >= end_offset {
6991                return Ok(());
6992            }
6993
6994            // Decode unknown envelopes for gaps in ordinals.
6995            while _next_ordinal_to_read < 5 {
6996                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6997                _next_ordinal_to_read += 1;
6998                next_offset += envelope_size;
6999            }
7000
7001            let next_out_of_line = decoder.next_out_of_line();
7002            let handles_before = decoder.remaining_handles();
7003            if let Some((inlined, num_bytes, num_handles)) =
7004                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7005            {
7006                let member_inline_size =
7007                    <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
7008                        decoder.context,
7009                    );
7010                if inlined != (member_inline_size <= 4) {
7011                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7012                }
7013                let inner_offset;
7014                let mut inner_depth = depth.clone();
7015                if inlined {
7016                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7017                    inner_offset = next_offset;
7018                } else {
7019                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7020                    inner_depth.increment()?;
7021                }
7022                let val_ref = self
7023                    .product
7024                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
7025                fidl::decode!(
7026                    fidl::encoding::BoundedString<256>,
7027                    D,
7028                    val_ref,
7029                    decoder,
7030                    inner_offset,
7031                    inner_depth
7032                )?;
7033                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7034                {
7035                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7036                }
7037                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7038                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7039                }
7040            }
7041
7042            next_offset += envelope_size;
7043            _next_ordinal_to_read += 1;
7044            if next_offset >= end_offset {
7045                return Ok(());
7046            }
7047
7048            // Decode unknown envelopes for gaps in ordinals.
7049            while _next_ordinal_to_read < 6 {
7050                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7051                _next_ordinal_to_read += 1;
7052                next_offset += envelope_size;
7053            }
7054
7055            let next_out_of_line = decoder.next_out_of_line();
7056            let handles_before = decoder.remaining_handles();
7057            if let Some((inlined, num_bytes, num_handles)) =
7058                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7059            {
7060                let member_inline_size =
7061                    <fidl::encoding::Array<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
7062                        decoder.context,
7063                    );
7064                if inlined != (member_inline_size <= 4) {
7065                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7066                }
7067                let inner_offset;
7068                let mut inner_depth = depth.clone();
7069                if inlined {
7070                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7071                    inner_offset = next_offset;
7072                } else {
7073                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7074                    inner_depth.increment()?;
7075                }
7076                let val_ref = self
7077                    .unique_instance_id
7078                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 16>, D));
7079                fidl::decode!(fidl::encoding::Array<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
7080                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7081                {
7082                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7083                }
7084                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7085                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7086                }
7087            }
7088
7089            next_offset += envelope_size;
7090            _next_ordinal_to_read += 1;
7091            if next_offset >= end_offset {
7092                return Ok(());
7093            }
7094
7095            // Decode unknown envelopes for gaps in ordinals.
7096            while _next_ordinal_to_read < 7 {
7097                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7098                _next_ordinal_to_read += 1;
7099                next_offset += envelope_size;
7100            }
7101
7102            let next_out_of_line = decoder.next_out_of_line();
7103            let handles_before = decoder.remaining_handles();
7104            if let Some((inlined, num_bytes, num_handles)) =
7105                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7106            {
7107                let member_inline_size =
7108                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7109                if inlined != (member_inline_size <= 4) {
7110                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7111                }
7112                let inner_offset;
7113                let mut inner_depth = depth.clone();
7114                if inlined {
7115                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7116                    inner_offset = next_offset;
7117                } else {
7118                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7119                    inner_depth.increment()?;
7120                }
7121                let val_ref = self.is_input.get_or_insert_with(|| fidl::new_empty!(bool, D));
7122                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7123                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7124                {
7125                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7126                }
7127                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7128                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7129                }
7130            }
7131
7132            next_offset += envelope_size;
7133            _next_ordinal_to_read += 1;
7134            if next_offset >= end_offset {
7135                return Ok(());
7136            }
7137
7138            // Decode unknown envelopes for gaps in ordinals.
7139            while _next_ordinal_to_read < 8 {
7140                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7141                _next_ordinal_to_read += 1;
7142                next_offset += envelope_size;
7143            }
7144
7145            let next_out_of_line = decoder.next_out_of_line();
7146            let handles_before = decoder.remaining_handles();
7147            if let Some((inlined, num_bytes, num_handles)) =
7148                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7149            {
7150                let member_inline_size = <fidl::encoding::Vector<ElementRingBufferFormatSet, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7151                if inlined != (member_inline_size <= 4) {
7152                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7153                }
7154                let inner_offset;
7155                let mut inner_depth = depth.clone();
7156                if inlined {
7157                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7158                    inner_offset = next_offset;
7159                } else {
7160                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7161                    inner_depth.increment()?;
7162                }
7163                let val_ref = self.ring_buffer_format_sets.get_or_insert_with(
7164                    || fidl::new_empty!(fidl::encoding::Vector<ElementRingBufferFormatSet, 64>, D),
7165                );
7166                fidl::decode!(fidl::encoding::Vector<ElementRingBufferFormatSet, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
7167                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7168                {
7169                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7170                }
7171                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7172                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7173                }
7174            }
7175
7176            next_offset += envelope_size;
7177            _next_ordinal_to_read += 1;
7178            if next_offset >= end_offset {
7179                return Ok(());
7180            }
7181
7182            // Decode unknown envelopes for gaps in ordinals.
7183            while _next_ordinal_to_read < 9 {
7184                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7185                _next_ordinal_to_read += 1;
7186                next_offset += envelope_size;
7187            }
7188
7189            let next_out_of_line = decoder.next_out_of_line();
7190            let handles_before = decoder.remaining_handles();
7191            if let Some((inlined, num_bytes, num_handles)) =
7192                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7193            {
7194                let member_inline_size = <fidl::encoding::Vector<ElementDaiFormatSet, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7195                if inlined != (member_inline_size <= 4) {
7196                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7197                }
7198                let inner_offset;
7199                let mut inner_depth = depth.clone();
7200                if inlined {
7201                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7202                    inner_offset = next_offset;
7203                } else {
7204                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7205                    inner_depth.increment()?;
7206                }
7207                let val_ref = self.dai_format_sets.get_or_insert_with(
7208                    || fidl::new_empty!(fidl::encoding::Vector<ElementDaiFormatSet, 64>, D),
7209                );
7210                fidl::decode!(fidl::encoding::Vector<ElementDaiFormatSet, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
7211                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7212                {
7213                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7214                }
7215                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7216                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7217                }
7218            }
7219
7220            next_offset += envelope_size;
7221            _next_ordinal_to_read += 1;
7222            if next_offset >= end_offset {
7223                return Ok(());
7224            }
7225
7226            // Decode unknown envelopes for gaps in ordinals.
7227            while _next_ordinal_to_read < 10 {
7228                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7229                _next_ordinal_to_read += 1;
7230                next_offset += envelope_size;
7231            }
7232
7233            let next_out_of_line = decoder.next_out_of_line();
7234            let handles_before = decoder.remaining_handles();
7235            if let Some((inlined, num_bytes, num_handles)) =
7236                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7237            {
7238                let member_inline_size =
7239                    <PlugDetectCapabilities as fidl::encoding::TypeMarker>::inline_size(
7240                        decoder.context,
7241                    );
7242                if inlined != (member_inline_size <= 4) {
7243                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7244                }
7245                let inner_offset;
7246                let mut inner_depth = depth.clone();
7247                if inlined {
7248                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7249                    inner_offset = next_offset;
7250                } else {
7251                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7252                    inner_depth.increment()?;
7253                }
7254                let val_ref = self
7255                    .plug_detect_caps
7256                    .get_or_insert_with(|| fidl::new_empty!(PlugDetectCapabilities, D));
7257                fidl::decode!(
7258                    PlugDetectCapabilities,
7259                    D,
7260                    val_ref,
7261                    decoder,
7262                    inner_offset,
7263                    inner_depth
7264                )?;
7265                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7266                {
7267                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7268                }
7269                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7270                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7271                }
7272            }
7273
7274            next_offset += envelope_size;
7275            _next_ordinal_to_read += 1;
7276            if next_offset >= end_offset {
7277                return Ok(());
7278            }
7279
7280            // Decode unknown envelopes for gaps in ordinals.
7281            while _next_ordinal_to_read < 11 {
7282                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7283                _next_ordinal_to_read += 1;
7284                next_offset += envelope_size;
7285            }
7286
7287            let next_out_of_line = decoder.next_out_of_line();
7288            let handles_before = decoder.remaining_handles();
7289            if let Some((inlined, num_bytes, num_handles)) =
7290                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7291            {
7292                let member_inline_size =
7293                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7294                if inlined != (member_inline_size <= 4) {
7295                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7296                }
7297                let inner_offset;
7298                let mut inner_depth = depth.clone();
7299                if inlined {
7300                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7301                    inner_offset = next_offset;
7302                } else {
7303                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7304                    inner_depth.increment()?;
7305                }
7306                let val_ref = self.clock_domain.get_or_insert_with(|| fidl::new_empty!(u32, D));
7307                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7308                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7309                {
7310                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7311                }
7312                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7313                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7314                }
7315            }
7316
7317            next_offset += envelope_size;
7318            _next_ordinal_to_read += 1;
7319            if next_offset >= end_offset {
7320                return Ok(());
7321            }
7322
7323            // Decode unknown envelopes for gaps in ordinals.
7324            while _next_ordinal_to_read < 12 {
7325                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7326                _next_ordinal_to_read += 1;
7327                next_offset += envelope_size;
7328            }
7329
7330            let next_out_of_line = decoder.next_out_of_line();
7331            let handles_before = decoder.remaining_handles();
7332            if let Some((inlined, num_bytes, num_handles)) =
7333                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7334            {
7335                let member_inline_size = <fidl::encoding::Vector<
7336                    fidl_fuchsia_hardware_audio_signalprocessing__common::Element,
7337                    64,
7338                > as fidl::encoding::TypeMarker>::inline_size(
7339                    decoder.context
7340                );
7341                if inlined != (member_inline_size <= 4) {
7342                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7343                }
7344                let inner_offset;
7345                let mut inner_depth = depth.clone();
7346                if inlined {
7347                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7348                    inner_offset = next_offset;
7349                } else {
7350                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7351                    inner_depth.increment()?;
7352                }
7353                let val_ref =
7354                self.signal_processing_elements.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_hardware_audio_signalprocessing__common::Element, 64>, D));
7355                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_hardware_audio_signalprocessing__common::Element, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
7356                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7357                {
7358                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7359                }
7360                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7361                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7362                }
7363            }
7364
7365            next_offset += envelope_size;
7366            _next_ordinal_to_read += 1;
7367            if next_offset >= end_offset {
7368                return Ok(());
7369            }
7370
7371            // Decode unknown envelopes for gaps in ordinals.
7372            while _next_ordinal_to_read < 13 {
7373                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7374                _next_ordinal_to_read += 1;
7375                next_offset += envelope_size;
7376            }
7377
7378            let next_out_of_line = decoder.next_out_of_line();
7379            let handles_before = decoder.remaining_handles();
7380            if let Some((inlined, num_bytes, num_handles)) =
7381                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7382            {
7383                let member_inline_size = <fidl::encoding::Vector<
7384                    fidl_fuchsia_hardware_audio_signalprocessing__common::Topology,
7385                    64,
7386                > as fidl::encoding::TypeMarker>::inline_size(
7387                    decoder.context
7388                );
7389                if inlined != (member_inline_size <= 4) {
7390                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7391                }
7392                let inner_offset;
7393                let mut inner_depth = depth.clone();
7394                if inlined {
7395                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7396                    inner_offset = next_offset;
7397                } else {
7398                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7399                    inner_depth.increment()?;
7400                }
7401                let val_ref =
7402                self.signal_processing_topologies.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_hardware_audio_signalprocessing__common::Topology, 64>, D));
7403                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_hardware_audio_signalprocessing__common::Topology, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
7404                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7405                {
7406                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7407                }
7408                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7409                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7410                }
7411            }
7412
7413            next_offset += envelope_size;
7414            _next_ordinal_to_read += 1;
7415            if next_offset >= end_offset {
7416                return Ok(());
7417            }
7418
7419            // Decode unknown envelopes for gaps in ordinals.
7420            while _next_ordinal_to_read < 14 {
7421                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7422                _next_ordinal_to_read += 1;
7423                next_offset += envelope_size;
7424            }
7425
7426            let next_out_of_line = decoder.next_out_of_line();
7427            let handles_before = decoder.remaining_handles();
7428            if let Some((inlined, num_bytes, num_handles)) =
7429                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7430            {
7431                let member_inline_size = <fidl::encoding::Vector<ElementPacketStreamFormatSet, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7432                if inlined != (member_inline_size <= 4) {
7433                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7434                }
7435                let inner_offset;
7436                let mut inner_depth = depth.clone();
7437                if inlined {
7438                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7439                    inner_offset = next_offset;
7440                } else {
7441                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7442                    inner_depth.increment()?;
7443                }
7444                let val_ref =
7445                self.packet_stream_format_sets.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<ElementPacketStreamFormatSet, 64>, D));
7446                fidl::decode!(fidl::encoding::Vector<ElementPacketStreamFormatSet, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
7447                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7448                {
7449                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7450                }
7451                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7452                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7453                }
7454            }
7455
7456            next_offset += envelope_size;
7457
7458            // Decode the remaining unknown envelopes.
7459            while next_offset < end_offset {
7460                _next_ordinal_to_read += 1;
7461                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7462                next_offset += envelope_size;
7463            }
7464
7465            Ok(())
7466        }
7467    }
7468
7469    impl ObserverWatchPlugStateResponse {
7470        #[inline(always)]
7471        fn max_ordinal_present(&self) -> u64 {
7472            if let Some(_) = self.plug_time {
7473                return 2;
7474            }
7475            if let Some(_) = self.state {
7476                return 1;
7477            }
7478            0
7479        }
7480    }
7481
7482    impl fidl::encoding::ValueTypeMarker for ObserverWatchPlugStateResponse {
7483        type Borrowed<'a> = &'a Self;
7484        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7485            value
7486        }
7487    }
7488
7489    unsafe impl fidl::encoding::TypeMarker for ObserverWatchPlugStateResponse {
7490        type Owned = Self;
7491
7492        #[inline(always)]
7493        fn inline_align(_context: fidl::encoding::Context) -> usize {
7494            8
7495        }
7496
7497        #[inline(always)]
7498        fn inline_size(_context: fidl::encoding::Context) -> usize {
7499            16
7500        }
7501    }
7502
7503    unsafe impl<D: fidl::encoding::ResourceDialect>
7504        fidl::encoding::Encode<ObserverWatchPlugStateResponse, D>
7505        for &ObserverWatchPlugStateResponse
7506    {
7507        unsafe fn encode(
7508            self,
7509            encoder: &mut fidl::encoding::Encoder<'_, D>,
7510            offset: usize,
7511            mut depth: fidl::encoding::Depth,
7512        ) -> fidl::Result<()> {
7513            encoder.debug_check_bounds::<ObserverWatchPlugStateResponse>(offset);
7514            // Vector header
7515            let max_ordinal: u64 = self.max_ordinal_present();
7516            encoder.write_num(max_ordinal, offset);
7517            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7518            // Calling encoder.out_of_line_offset(0) is not allowed.
7519            if max_ordinal == 0 {
7520                return Ok(());
7521            }
7522            depth.increment()?;
7523            let envelope_size = 8;
7524            let bytes_len = max_ordinal as usize * envelope_size;
7525            #[allow(unused_variables)]
7526            let offset = encoder.out_of_line_offset(bytes_len);
7527            let mut _prev_end_offset: usize = 0;
7528            if 1 > max_ordinal {
7529                return Ok(());
7530            }
7531
7532            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7533            // are envelope_size bytes.
7534            let cur_offset: usize = (1 - 1) * envelope_size;
7535
7536            // Zero reserved fields.
7537            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7538
7539            // Safety:
7540            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7541            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7542            //   envelope_size bytes, there is always sufficient room.
7543            fidl::encoding::encode_in_envelope_optional::<PlugState, D>(
7544                self.state.as_ref().map(<PlugState as fidl::encoding::ValueTypeMarker>::borrow),
7545                encoder,
7546                offset + cur_offset,
7547                depth,
7548            )?;
7549
7550            _prev_end_offset = cur_offset + envelope_size;
7551            if 2 > max_ordinal {
7552                return Ok(());
7553            }
7554
7555            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7556            // are envelope_size bytes.
7557            let cur_offset: usize = (2 - 1) * envelope_size;
7558
7559            // Zero reserved fields.
7560            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7561
7562            // Safety:
7563            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7564            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7565            //   envelope_size bytes, there is always sufficient room.
7566            fidl::encoding::encode_in_envelope_optional::<i64, D>(
7567                self.plug_time.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
7568                encoder,
7569                offset + cur_offset,
7570                depth,
7571            )?;
7572
7573            _prev_end_offset = cur_offset + envelope_size;
7574
7575            Ok(())
7576        }
7577    }
7578
7579    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7580        for ObserverWatchPlugStateResponse
7581    {
7582        #[inline(always)]
7583        fn new_empty() -> Self {
7584            Self::default()
7585        }
7586
7587        unsafe fn decode(
7588            &mut self,
7589            decoder: &mut fidl::encoding::Decoder<'_, D>,
7590            offset: usize,
7591            mut depth: fidl::encoding::Depth,
7592        ) -> fidl::Result<()> {
7593            decoder.debug_check_bounds::<Self>(offset);
7594            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7595                None => return Err(fidl::Error::NotNullable),
7596                Some(len) => len,
7597            };
7598            // Calling decoder.out_of_line_offset(0) is not allowed.
7599            if len == 0 {
7600                return Ok(());
7601            };
7602            depth.increment()?;
7603            let envelope_size = 8;
7604            let bytes_len = len * envelope_size;
7605            let offset = decoder.out_of_line_offset(bytes_len)?;
7606            // Decode the envelope for each type.
7607            let mut _next_ordinal_to_read = 0;
7608            let mut next_offset = offset;
7609            let end_offset = offset + bytes_len;
7610            _next_ordinal_to_read += 1;
7611            if next_offset >= end_offset {
7612                return Ok(());
7613            }
7614
7615            // Decode unknown envelopes for gaps in ordinals.
7616            while _next_ordinal_to_read < 1 {
7617                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7618                _next_ordinal_to_read += 1;
7619                next_offset += envelope_size;
7620            }
7621
7622            let next_out_of_line = decoder.next_out_of_line();
7623            let handles_before = decoder.remaining_handles();
7624            if let Some((inlined, num_bytes, num_handles)) =
7625                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7626            {
7627                let member_inline_size =
7628                    <PlugState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7629                if inlined != (member_inline_size <= 4) {
7630                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7631                }
7632                let inner_offset;
7633                let mut inner_depth = depth.clone();
7634                if inlined {
7635                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7636                    inner_offset = next_offset;
7637                } else {
7638                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7639                    inner_depth.increment()?;
7640                }
7641                let val_ref = self.state.get_or_insert_with(|| fidl::new_empty!(PlugState, D));
7642                fidl::decode!(PlugState, D, val_ref, decoder, inner_offset, inner_depth)?;
7643                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7644                {
7645                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7646                }
7647                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7648                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7649                }
7650            }
7651
7652            next_offset += envelope_size;
7653            _next_ordinal_to_read += 1;
7654            if next_offset >= end_offset {
7655                return Ok(());
7656            }
7657
7658            // Decode unknown envelopes for gaps in ordinals.
7659            while _next_ordinal_to_read < 2 {
7660                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7661                _next_ordinal_to_read += 1;
7662                next_offset += envelope_size;
7663            }
7664
7665            let next_out_of_line = decoder.next_out_of_line();
7666            let handles_before = decoder.remaining_handles();
7667            if let Some((inlined, num_bytes, num_handles)) =
7668                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7669            {
7670                let member_inline_size =
7671                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7672                if inlined != (member_inline_size <= 4) {
7673                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7674                }
7675                let inner_offset;
7676                let mut inner_depth = depth.clone();
7677                if inlined {
7678                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7679                    inner_offset = next_offset;
7680                } else {
7681                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7682                    inner_depth.increment()?;
7683                }
7684                let val_ref = self.plug_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
7685                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
7686                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7687                {
7688                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7689                }
7690                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7691                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7692                }
7693            }
7694
7695            next_offset += envelope_size;
7696
7697            // Decode the remaining unknown envelopes.
7698            while next_offset < end_offset {
7699                _next_ordinal_to_read += 1;
7700                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7701                next_offset += envelope_size;
7702            }
7703
7704            Ok(())
7705        }
7706    }
7707
7708    impl PacketStreamStartRequest {
7709        #[inline(always)]
7710        fn max_ordinal_present(&self) -> u64 {
7711            0
7712        }
7713    }
7714
7715    impl fidl::encoding::ValueTypeMarker for PacketStreamStartRequest {
7716        type Borrowed<'a> = &'a Self;
7717        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7718            value
7719        }
7720    }
7721
7722    unsafe impl fidl::encoding::TypeMarker for PacketStreamStartRequest {
7723        type Owned = Self;
7724
7725        #[inline(always)]
7726        fn inline_align(_context: fidl::encoding::Context) -> usize {
7727            8
7728        }
7729
7730        #[inline(always)]
7731        fn inline_size(_context: fidl::encoding::Context) -> usize {
7732            16
7733        }
7734    }
7735
7736    unsafe impl<D: fidl::encoding::ResourceDialect>
7737        fidl::encoding::Encode<PacketStreamStartRequest, D> for &PacketStreamStartRequest
7738    {
7739        unsafe fn encode(
7740            self,
7741            encoder: &mut fidl::encoding::Encoder<'_, D>,
7742            offset: usize,
7743            mut depth: fidl::encoding::Depth,
7744        ) -> fidl::Result<()> {
7745            encoder.debug_check_bounds::<PacketStreamStartRequest>(offset);
7746            // Vector header
7747            let max_ordinal: u64 = self.max_ordinal_present();
7748            encoder.write_num(max_ordinal, offset);
7749            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7750            // Calling encoder.out_of_line_offset(0) is not allowed.
7751            if max_ordinal == 0 {
7752                return Ok(());
7753            }
7754            depth.increment()?;
7755            let envelope_size = 8;
7756            let bytes_len = max_ordinal as usize * envelope_size;
7757            #[allow(unused_variables)]
7758            let offset = encoder.out_of_line_offset(bytes_len);
7759            let mut _prev_end_offset: usize = 0;
7760
7761            Ok(())
7762        }
7763    }
7764
7765    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7766        for PacketStreamStartRequest
7767    {
7768        #[inline(always)]
7769        fn new_empty() -> Self {
7770            Self::default()
7771        }
7772
7773        unsafe fn decode(
7774            &mut self,
7775            decoder: &mut fidl::encoding::Decoder<'_, D>,
7776            offset: usize,
7777            mut depth: fidl::encoding::Depth,
7778        ) -> fidl::Result<()> {
7779            decoder.debug_check_bounds::<Self>(offset);
7780            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7781                None => return Err(fidl::Error::NotNullable),
7782                Some(len) => len,
7783            };
7784            // Calling decoder.out_of_line_offset(0) is not allowed.
7785            if len == 0 {
7786                return Ok(());
7787            };
7788            depth.increment()?;
7789            let envelope_size = 8;
7790            let bytes_len = len * envelope_size;
7791            let offset = decoder.out_of_line_offset(bytes_len)?;
7792            // Decode the envelope for each type.
7793            let mut _next_ordinal_to_read = 0;
7794            let mut next_offset = offset;
7795            let end_offset = offset + bytes_len;
7796
7797            // Decode the remaining unknown envelopes.
7798            while next_offset < end_offset {
7799                _next_ordinal_to_read += 1;
7800                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7801                next_offset += envelope_size;
7802            }
7803
7804            Ok(())
7805        }
7806    }
7807
7808    impl PacketStreamStopRequest {
7809        #[inline(always)]
7810        fn max_ordinal_present(&self) -> u64 {
7811            0
7812        }
7813    }
7814
7815    impl fidl::encoding::ValueTypeMarker for PacketStreamStopRequest {
7816        type Borrowed<'a> = &'a Self;
7817        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7818            value
7819        }
7820    }
7821
7822    unsafe impl fidl::encoding::TypeMarker for PacketStreamStopRequest {
7823        type Owned = Self;
7824
7825        #[inline(always)]
7826        fn inline_align(_context: fidl::encoding::Context) -> usize {
7827            8
7828        }
7829
7830        #[inline(always)]
7831        fn inline_size(_context: fidl::encoding::Context) -> usize {
7832            16
7833        }
7834    }
7835
7836    unsafe impl<D: fidl::encoding::ResourceDialect>
7837        fidl::encoding::Encode<PacketStreamStopRequest, D> for &PacketStreamStopRequest
7838    {
7839        unsafe fn encode(
7840            self,
7841            encoder: &mut fidl::encoding::Encoder<'_, D>,
7842            offset: usize,
7843            mut depth: fidl::encoding::Depth,
7844        ) -> fidl::Result<()> {
7845            encoder.debug_check_bounds::<PacketStreamStopRequest>(offset);
7846            // Vector header
7847            let max_ordinal: u64 = self.max_ordinal_present();
7848            encoder.write_num(max_ordinal, offset);
7849            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7850            // Calling encoder.out_of_line_offset(0) is not allowed.
7851            if max_ordinal == 0 {
7852                return Ok(());
7853            }
7854            depth.increment()?;
7855            let envelope_size = 8;
7856            let bytes_len = max_ordinal as usize * envelope_size;
7857            #[allow(unused_variables)]
7858            let offset = encoder.out_of_line_offset(bytes_len);
7859            let mut _prev_end_offset: usize = 0;
7860
7861            Ok(())
7862        }
7863    }
7864
7865    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7866        for PacketStreamStopRequest
7867    {
7868        #[inline(always)]
7869        fn new_empty() -> Self {
7870            Self::default()
7871        }
7872
7873        unsafe fn decode(
7874            &mut self,
7875            decoder: &mut fidl::encoding::Decoder<'_, D>,
7876            offset: usize,
7877            mut depth: fidl::encoding::Depth,
7878        ) -> fidl::Result<()> {
7879            decoder.debug_check_bounds::<Self>(offset);
7880            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7881                None => return Err(fidl::Error::NotNullable),
7882                Some(len) => len,
7883            };
7884            // Calling decoder.out_of_line_offset(0) is not allowed.
7885            if len == 0 {
7886                return Ok(());
7887            };
7888            depth.increment()?;
7889            let envelope_size = 8;
7890            let bytes_len = len * envelope_size;
7891            let offset = decoder.out_of_line_offset(bytes_len)?;
7892            // Decode the envelope for each type.
7893            let mut _next_ordinal_to_read = 0;
7894            let mut next_offset = offset;
7895            let end_offset = offset + bytes_len;
7896
7897            // Decode the remaining unknown envelopes.
7898            while next_offset < end_offset {
7899                _next_ordinal_to_read += 1;
7900                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7901                next_offset += envelope_size;
7902            }
7903
7904            Ok(())
7905        }
7906    }
7907
7908    impl PacketStreamStartResponse {
7909        #[inline(always)]
7910        fn max_ordinal_present(&self) -> u64 {
7911            0
7912        }
7913    }
7914
7915    impl fidl::encoding::ValueTypeMarker for PacketStreamStartResponse {
7916        type Borrowed<'a> = &'a Self;
7917        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7918            value
7919        }
7920    }
7921
7922    unsafe impl fidl::encoding::TypeMarker for PacketStreamStartResponse {
7923        type Owned = Self;
7924
7925        #[inline(always)]
7926        fn inline_align(_context: fidl::encoding::Context) -> usize {
7927            8
7928        }
7929
7930        #[inline(always)]
7931        fn inline_size(_context: fidl::encoding::Context) -> usize {
7932            16
7933        }
7934    }
7935
7936    unsafe impl<D: fidl::encoding::ResourceDialect>
7937        fidl::encoding::Encode<PacketStreamStartResponse, D> for &PacketStreamStartResponse
7938    {
7939        unsafe fn encode(
7940            self,
7941            encoder: &mut fidl::encoding::Encoder<'_, D>,
7942            offset: usize,
7943            mut depth: fidl::encoding::Depth,
7944        ) -> fidl::Result<()> {
7945            encoder.debug_check_bounds::<PacketStreamStartResponse>(offset);
7946            // Vector header
7947            let max_ordinal: u64 = self.max_ordinal_present();
7948            encoder.write_num(max_ordinal, offset);
7949            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7950            // Calling encoder.out_of_line_offset(0) is not allowed.
7951            if max_ordinal == 0 {
7952                return Ok(());
7953            }
7954            depth.increment()?;
7955            let envelope_size = 8;
7956            let bytes_len = max_ordinal as usize * envelope_size;
7957            #[allow(unused_variables)]
7958            let offset = encoder.out_of_line_offset(bytes_len);
7959            let mut _prev_end_offset: usize = 0;
7960
7961            Ok(())
7962        }
7963    }
7964
7965    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7966        for PacketStreamStartResponse
7967    {
7968        #[inline(always)]
7969        fn new_empty() -> Self {
7970            Self::default()
7971        }
7972
7973        unsafe fn decode(
7974            &mut self,
7975            decoder: &mut fidl::encoding::Decoder<'_, D>,
7976            offset: usize,
7977            mut depth: fidl::encoding::Depth,
7978        ) -> fidl::Result<()> {
7979            decoder.debug_check_bounds::<Self>(offset);
7980            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7981                None => return Err(fidl::Error::NotNullable),
7982                Some(len) => len,
7983            };
7984            // Calling decoder.out_of_line_offset(0) is not allowed.
7985            if len == 0 {
7986                return Ok(());
7987            };
7988            depth.increment()?;
7989            let envelope_size = 8;
7990            let bytes_len = len * envelope_size;
7991            let offset = decoder.out_of_line_offset(bytes_len)?;
7992            // Decode the envelope for each type.
7993            let mut _next_ordinal_to_read = 0;
7994            let mut next_offset = offset;
7995            let end_offset = offset + bytes_len;
7996
7997            // Decode the remaining unknown envelopes.
7998            while next_offset < end_offset {
7999                _next_ordinal_to_read += 1;
8000                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8001                next_offset += envelope_size;
8002            }
8003
8004            Ok(())
8005        }
8006    }
8007
8008    impl PacketStreamStopResponse {
8009        #[inline(always)]
8010        fn max_ordinal_present(&self) -> u64 {
8011            0
8012        }
8013    }
8014
8015    impl fidl::encoding::ValueTypeMarker for PacketStreamStopResponse {
8016        type Borrowed<'a> = &'a Self;
8017        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8018            value
8019        }
8020    }
8021
8022    unsafe impl fidl::encoding::TypeMarker for PacketStreamStopResponse {
8023        type Owned = Self;
8024
8025        #[inline(always)]
8026        fn inline_align(_context: fidl::encoding::Context) -> usize {
8027            8
8028        }
8029
8030        #[inline(always)]
8031        fn inline_size(_context: fidl::encoding::Context) -> usize {
8032            16
8033        }
8034    }
8035
8036    unsafe impl<D: fidl::encoding::ResourceDialect>
8037        fidl::encoding::Encode<PacketStreamStopResponse, D> for &PacketStreamStopResponse
8038    {
8039        unsafe fn encode(
8040            self,
8041            encoder: &mut fidl::encoding::Encoder<'_, D>,
8042            offset: usize,
8043            mut depth: fidl::encoding::Depth,
8044        ) -> fidl::Result<()> {
8045            encoder.debug_check_bounds::<PacketStreamStopResponse>(offset);
8046            // Vector header
8047            let max_ordinal: u64 = self.max_ordinal_present();
8048            encoder.write_num(max_ordinal, offset);
8049            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8050            // Calling encoder.out_of_line_offset(0) is not allowed.
8051            if max_ordinal == 0 {
8052                return Ok(());
8053            }
8054            depth.increment()?;
8055            let envelope_size = 8;
8056            let bytes_len = max_ordinal as usize * envelope_size;
8057            #[allow(unused_variables)]
8058            let offset = encoder.out_of_line_offset(bytes_len);
8059            let mut _prev_end_offset: usize = 0;
8060
8061            Ok(())
8062        }
8063    }
8064
8065    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8066        for PacketStreamStopResponse
8067    {
8068        #[inline(always)]
8069        fn new_empty() -> Self {
8070            Self::default()
8071        }
8072
8073        unsafe fn decode(
8074            &mut self,
8075            decoder: &mut fidl::encoding::Decoder<'_, D>,
8076            offset: usize,
8077            mut depth: fidl::encoding::Depth,
8078        ) -> fidl::Result<()> {
8079            decoder.debug_check_bounds::<Self>(offset);
8080            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8081                None => return Err(fidl::Error::NotNullable),
8082                Some(len) => len,
8083            };
8084            // Calling decoder.out_of_line_offset(0) is not allowed.
8085            if len == 0 {
8086                return Ok(());
8087            };
8088            depth.increment()?;
8089            let envelope_size = 8;
8090            let bytes_len = len * envelope_size;
8091            let offset = decoder.out_of_line_offset(bytes_len)?;
8092            // Decode the envelope for each type.
8093            let mut _next_ordinal_to_read = 0;
8094            let mut next_offset = offset;
8095            let end_offset = offset + bytes_len;
8096
8097            // Decode the remaining unknown envelopes.
8098            while next_offset < end_offset {
8099                _next_ordinal_to_read += 1;
8100                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8101                next_offset += envelope_size;
8102            }
8103
8104            Ok(())
8105        }
8106    }
8107
8108    impl PcmFormatSet {
8109        #[inline(always)]
8110        fn max_ordinal_present(&self) -> u64 {
8111            if let Some(_) = self.frame_rates {
8112                return 3;
8113            }
8114            if let Some(_) = self.sample_types {
8115                return 2;
8116            }
8117            if let Some(_) = self.channel_sets {
8118                return 1;
8119            }
8120            0
8121        }
8122    }
8123
8124    impl fidl::encoding::ValueTypeMarker for PcmFormatSet {
8125        type Borrowed<'a> = &'a Self;
8126        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8127            value
8128        }
8129    }
8130
8131    unsafe impl fidl::encoding::TypeMarker for PcmFormatSet {
8132        type Owned = Self;
8133
8134        #[inline(always)]
8135        fn inline_align(_context: fidl::encoding::Context) -> usize {
8136            8
8137        }
8138
8139        #[inline(always)]
8140        fn inline_size(_context: fidl::encoding::Context) -> usize {
8141            16
8142        }
8143    }
8144
8145    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PcmFormatSet, D>
8146        for &PcmFormatSet
8147    {
8148        unsafe fn encode(
8149            self,
8150            encoder: &mut fidl::encoding::Encoder<'_, D>,
8151            offset: usize,
8152            mut depth: fidl::encoding::Depth,
8153        ) -> fidl::Result<()> {
8154            encoder.debug_check_bounds::<PcmFormatSet>(offset);
8155            // Vector header
8156            let max_ordinal: u64 = self.max_ordinal_present();
8157            encoder.write_num(max_ordinal, offset);
8158            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8159            // Calling encoder.out_of_line_offset(0) is not allowed.
8160            if max_ordinal == 0 {
8161                return Ok(());
8162            }
8163            depth.increment()?;
8164            let envelope_size = 8;
8165            let bytes_len = max_ordinal as usize * envelope_size;
8166            #[allow(unused_variables)]
8167            let offset = encoder.out_of_line_offset(bytes_len);
8168            let mut _prev_end_offset: usize = 0;
8169            if 1 > max_ordinal {
8170                return Ok(());
8171            }
8172
8173            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8174            // are envelope_size bytes.
8175            let cur_offset: usize = (1 - 1) * envelope_size;
8176
8177            // Zero reserved fields.
8178            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8179
8180            // Safety:
8181            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8182            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8183            //   envelope_size bytes, there is always sufficient room.
8184            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ChannelSet, 64>, D>(
8185            self.channel_sets.as_ref().map(<fidl::encoding::Vector<ChannelSet, 64> as fidl::encoding::ValueTypeMarker>::borrow),
8186            encoder, offset + cur_offset, depth
8187        )?;
8188
8189            _prev_end_offset = cur_offset + envelope_size;
8190            if 2 > max_ordinal {
8191                return Ok(());
8192            }
8193
8194            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8195            // are envelope_size bytes.
8196            let cur_offset: usize = (2 - 1) * envelope_size;
8197
8198            // Zero reserved fields.
8199            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8200
8201            // Safety:
8202            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8203            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8204            //   envelope_size bytes, there is always sufficient room.
8205            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_audio__common::SampleType, 32>, D>(
8206            self.sample_types.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_audio__common::SampleType, 32> as fidl::encoding::ValueTypeMarker>::borrow),
8207            encoder, offset + cur_offset, depth
8208        )?;
8209
8210            _prev_end_offset = cur_offset + envelope_size;
8211            if 3 > max_ordinal {
8212                return Ok(());
8213            }
8214
8215            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8216            // are envelope_size bytes.
8217            let cur_offset: usize = (3 - 1) * envelope_size;
8218
8219            // Zero reserved fields.
8220            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8221
8222            // Safety:
8223            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8224            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8225            //   envelope_size bytes, there is always sufficient room.
8226            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u32, 64>, D>(
8227                self.frame_rates.as_ref().map(
8228                    <fidl::encoding::Vector<u32, 64> as fidl::encoding::ValueTypeMarker>::borrow,
8229                ),
8230                encoder,
8231                offset + cur_offset,
8232                depth,
8233            )?;
8234
8235            _prev_end_offset = cur_offset + envelope_size;
8236
8237            Ok(())
8238        }
8239    }
8240
8241    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PcmFormatSet {
8242        #[inline(always)]
8243        fn new_empty() -> Self {
8244            Self::default()
8245        }
8246
8247        unsafe fn decode(
8248            &mut self,
8249            decoder: &mut fidl::encoding::Decoder<'_, D>,
8250            offset: usize,
8251            mut depth: fidl::encoding::Depth,
8252        ) -> fidl::Result<()> {
8253            decoder.debug_check_bounds::<Self>(offset);
8254            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8255                None => return Err(fidl::Error::NotNullable),
8256                Some(len) => len,
8257            };
8258            // Calling decoder.out_of_line_offset(0) is not allowed.
8259            if len == 0 {
8260                return Ok(());
8261            };
8262            depth.increment()?;
8263            let envelope_size = 8;
8264            let bytes_len = len * envelope_size;
8265            let offset = decoder.out_of_line_offset(bytes_len)?;
8266            // Decode the envelope for each type.
8267            let mut _next_ordinal_to_read = 0;
8268            let mut next_offset = offset;
8269            let end_offset = offset + bytes_len;
8270            _next_ordinal_to_read += 1;
8271            if next_offset >= end_offset {
8272                return Ok(());
8273            }
8274
8275            // Decode unknown envelopes for gaps in ordinals.
8276            while _next_ordinal_to_read < 1 {
8277                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8278                _next_ordinal_to_read += 1;
8279                next_offset += envelope_size;
8280            }
8281
8282            let next_out_of_line = decoder.next_out_of_line();
8283            let handles_before = decoder.remaining_handles();
8284            if let Some((inlined, num_bytes, num_handles)) =
8285                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8286            {
8287                let member_inline_size = <fidl::encoding::Vector<ChannelSet, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8288                if inlined != (member_inline_size <= 4) {
8289                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8290                }
8291                let inner_offset;
8292                let mut inner_depth = depth.clone();
8293                if inlined {
8294                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8295                    inner_offset = next_offset;
8296                } else {
8297                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8298                    inner_depth.increment()?;
8299                }
8300                let val_ref = self.channel_sets.get_or_insert_with(
8301                    || fidl::new_empty!(fidl::encoding::Vector<ChannelSet, 64>, D),
8302                );
8303                fidl::decode!(fidl::encoding::Vector<ChannelSet, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
8304                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8305                {
8306                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8307                }
8308                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8309                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8310                }
8311            }
8312
8313            next_offset += envelope_size;
8314            _next_ordinal_to_read += 1;
8315            if next_offset >= end_offset {
8316                return Ok(());
8317            }
8318
8319            // Decode unknown envelopes for gaps in ordinals.
8320            while _next_ordinal_to_read < 2 {
8321                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8322                _next_ordinal_to_read += 1;
8323                next_offset += envelope_size;
8324            }
8325
8326            let next_out_of_line = decoder.next_out_of_line();
8327            let handles_before = decoder.remaining_handles();
8328            if let Some((inlined, num_bytes, num_handles)) =
8329                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8330            {
8331                let member_inline_size = <fidl::encoding::Vector<
8332                    fidl_fuchsia_audio__common::SampleType,
8333                    32,
8334                > as fidl::encoding::TypeMarker>::inline_size(
8335                    decoder.context
8336                );
8337                if inlined != (member_inline_size <= 4) {
8338                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8339                }
8340                let inner_offset;
8341                let mut inner_depth = depth.clone();
8342                if inlined {
8343                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8344                    inner_offset = next_offset;
8345                } else {
8346                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8347                    inner_depth.increment()?;
8348                }
8349                let val_ref =
8350                self.sample_types.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_audio__common::SampleType, 32>, D));
8351                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_audio__common::SampleType, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
8352                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8353                {
8354                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8355                }
8356                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8357                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8358                }
8359            }
8360
8361            next_offset += envelope_size;
8362            _next_ordinal_to_read += 1;
8363            if next_offset >= end_offset {
8364                return Ok(());
8365            }
8366
8367            // Decode unknown envelopes for gaps in ordinals.
8368            while _next_ordinal_to_read < 3 {
8369                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8370                _next_ordinal_to_read += 1;
8371                next_offset += envelope_size;
8372            }
8373
8374            let next_out_of_line = decoder.next_out_of_line();
8375            let handles_before = decoder.remaining_handles();
8376            if let Some((inlined, num_bytes, num_handles)) =
8377                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8378            {
8379                let member_inline_size =
8380                    <fidl::encoding::Vector<u32, 64> as fidl::encoding::TypeMarker>::inline_size(
8381                        decoder.context,
8382                    );
8383                if inlined != (member_inline_size <= 4) {
8384                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8385                }
8386                let inner_offset;
8387                let mut inner_depth = depth.clone();
8388                if inlined {
8389                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8390                    inner_offset = next_offset;
8391                } else {
8392                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8393                    inner_depth.increment()?;
8394                }
8395                let val_ref = self
8396                    .frame_rates
8397                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u32, 64>, D));
8398                fidl::decode!(fidl::encoding::Vector<u32, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
8399                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8400                {
8401                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8402                }
8403                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8404                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8405                }
8406            }
8407
8408            next_offset += envelope_size;
8409
8410            // Decode the remaining unknown envelopes.
8411            while next_offset < end_offset {
8412                _next_ordinal_to_read += 1;
8413                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8414                next_offset += envelope_size;
8415            }
8416
8417            Ok(())
8418        }
8419    }
8420
8421    impl ProviderAddDeviceResponse {
8422        #[inline(always)]
8423        fn max_ordinal_present(&self) -> u64 {
8424            0
8425        }
8426    }
8427
8428    impl fidl::encoding::ValueTypeMarker for ProviderAddDeviceResponse {
8429        type Borrowed<'a> = &'a Self;
8430        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8431            value
8432        }
8433    }
8434
8435    unsafe impl fidl::encoding::TypeMarker for ProviderAddDeviceResponse {
8436        type Owned = Self;
8437
8438        #[inline(always)]
8439        fn inline_align(_context: fidl::encoding::Context) -> usize {
8440            8
8441        }
8442
8443        #[inline(always)]
8444        fn inline_size(_context: fidl::encoding::Context) -> usize {
8445            16
8446        }
8447    }
8448
8449    unsafe impl<D: fidl::encoding::ResourceDialect>
8450        fidl::encoding::Encode<ProviderAddDeviceResponse, D> for &ProviderAddDeviceResponse
8451    {
8452        unsafe fn encode(
8453            self,
8454            encoder: &mut fidl::encoding::Encoder<'_, D>,
8455            offset: usize,
8456            mut depth: fidl::encoding::Depth,
8457        ) -> fidl::Result<()> {
8458            encoder.debug_check_bounds::<ProviderAddDeviceResponse>(offset);
8459            // Vector header
8460            let max_ordinal: u64 = self.max_ordinal_present();
8461            encoder.write_num(max_ordinal, offset);
8462            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8463            // Calling encoder.out_of_line_offset(0) is not allowed.
8464            if max_ordinal == 0 {
8465                return Ok(());
8466            }
8467            depth.increment()?;
8468            let envelope_size = 8;
8469            let bytes_len = max_ordinal as usize * envelope_size;
8470            #[allow(unused_variables)]
8471            let offset = encoder.out_of_line_offset(bytes_len);
8472            let mut _prev_end_offset: usize = 0;
8473
8474            Ok(())
8475        }
8476    }
8477
8478    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8479        for ProviderAddDeviceResponse
8480    {
8481        #[inline(always)]
8482        fn new_empty() -> Self {
8483            Self::default()
8484        }
8485
8486        unsafe fn decode(
8487            &mut self,
8488            decoder: &mut fidl::encoding::Decoder<'_, D>,
8489            offset: usize,
8490            mut depth: fidl::encoding::Depth,
8491        ) -> fidl::Result<()> {
8492            decoder.debug_check_bounds::<Self>(offset);
8493            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8494                None => return Err(fidl::Error::NotNullable),
8495                Some(len) => len,
8496            };
8497            // Calling decoder.out_of_line_offset(0) is not allowed.
8498            if len == 0 {
8499                return Ok(());
8500            };
8501            depth.increment()?;
8502            let envelope_size = 8;
8503            let bytes_len = len * envelope_size;
8504            let offset = decoder.out_of_line_offset(bytes_len)?;
8505            // Decode the envelope for each type.
8506            let mut _next_ordinal_to_read = 0;
8507            let mut next_offset = offset;
8508            let end_offset = offset + bytes_len;
8509
8510            // Decode the remaining unknown envelopes.
8511            while next_offset < end_offset {
8512                _next_ordinal_to_read += 1;
8513                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8514                next_offset += envelope_size;
8515            }
8516
8517            Ok(())
8518        }
8519    }
8520
8521    impl RegistryCreateObserverResponse {
8522        #[inline(always)]
8523        fn max_ordinal_present(&self) -> u64 {
8524            0
8525        }
8526    }
8527
8528    impl fidl::encoding::ValueTypeMarker for RegistryCreateObserverResponse {
8529        type Borrowed<'a> = &'a Self;
8530        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8531            value
8532        }
8533    }
8534
8535    unsafe impl fidl::encoding::TypeMarker for RegistryCreateObserverResponse {
8536        type Owned = Self;
8537
8538        #[inline(always)]
8539        fn inline_align(_context: fidl::encoding::Context) -> usize {
8540            8
8541        }
8542
8543        #[inline(always)]
8544        fn inline_size(_context: fidl::encoding::Context) -> usize {
8545            16
8546        }
8547    }
8548
8549    unsafe impl<D: fidl::encoding::ResourceDialect>
8550        fidl::encoding::Encode<RegistryCreateObserverResponse, D>
8551        for &RegistryCreateObserverResponse
8552    {
8553        unsafe fn encode(
8554            self,
8555            encoder: &mut fidl::encoding::Encoder<'_, D>,
8556            offset: usize,
8557            mut depth: fidl::encoding::Depth,
8558        ) -> fidl::Result<()> {
8559            encoder.debug_check_bounds::<RegistryCreateObserverResponse>(offset);
8560            // Vector header
8561            let max_ordinal: u64 = self.max_ordinal_present();
8562            encoder.write_num(max_ordinal, offset);
8563            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8564            // Calling encoder.out_of_line_offset(0) is not allowed.
8565            if max_ordinal == 0 {
8566                return Ok(());
8567            }
8568            depth.increment()?;
8569            let envelope_size = 8;
8570            let bytes_len = max_ordinal as usize * envelope_size;
8571            #[allow(unused_variables)]
8572            let offset = encoder.out_of_line_offset(bytes_len);
8573            let mut _prev_end_offset: usize = 0;
8574
8575            Ok(())
8576        }
8577    }
8578
8579    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8580        for RegistryCreateObserverResponse
8581    {
8582        #[inline(always)]
8583        fn new_empty() -> Self {
8584            Self::default()
8585        }
8586
8587        unsafe fn decode(
8588            &mut self,
8589            decoder: &mut fidl::encoding::Decoder<'_, D>,
8590            offset: usize,
8591            mut depth: fidl::encoding::Depth,
8592        ) -> fidl::Result<()> {
8593            decoder.debug_check_bounds::<Self>(offset);
8594            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8595                None => return Err(fidl::Error::NotNullable),
8596                Some(len) => len,
8597            };
8598            // Calling decoder.out_of_line_offset(0) is not allowed.
8599            if len == 0 {
8600                return Ok(());
8601            };
8602            depth.increment()?;
8603            let envelope_size = 8;
8604            let bytes_len = len * envelope_size;
8605            let offset = decoder.out_of_line_offset(bytes_len)?;
8606            // Decode the envelope for each type.
8607            let mut _next_ordinal_to_read = 0;
8608            let mut next_offset = offset;
8609            let end_offset = offset + bytes_len;
8610
8611            // Decode the remaining unknown envelopes.
8612            while next_offset < end_offset {
8613                _next_ordinal_to_read += 1;
8614                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8615                next_offset += envelope_size;
8616            }
8617
8618            Ok(())
8619        }
8620    }
8621
8622    impl RegistryWatchDeviceRemovedResponse {
8623        #[inline(always)]
8624        fn max_ordinal_present(&self) -> u64 {
8625            if let Some(_) = self.token_id {
8626                return 1;
8627            }
8628            0
8629        }
8630    }
8631
8632    impl fidl::encoding::ValueTypeMarker for RegistryWatchDeviceRemovedResponse {
8633        type Borrowed<'a> = &'a Self;
8634        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8635            value
8636        }
8637    }
8638
8639    unsafe impl fidl::encoding::TypeMarker for RegistryWatchDeviceRemovedResponse {
8640        type Owned = Self;
8641
8642        #[inline(always)]
8643        fn inline_align(_context: fidl::encoding::Context) -> usize {
8644            8
8645        }
8646
8647        #[inline(always)]
8648        fn inline_size(_context: fidl::encoding::Context) -> usize {
8649            16
8650        }
8651    }
8652
8653    unsafe impl<D: fidl::encoding::ResourceDialect>
8654        fidl::encoding::Encode<RegistryWatchDeviceRemovedResponse, D>
8655        for &RegistryWatchDeviceRemovedResponse
8656    {
8657        unsafe fn encode(
8658            self,
8659            encoder: &mut fidl::encoding::Encoder<'_, D>,
8660            offset: usize,
8661            mut depth: fidl::encoding::Depth,
8662        ) -> fidl::Result<()> {
8663            encoder.debug_check_bounds::<RegistryWatchDeviceRemovedResponse>(offset);
8664            // Vector header
8665            let max_ordinal: u64 = self.max_ordinal_present();
8666            encoder.write_num(max_ordinal, offset);
8667            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8668            // Calling encoder.out_of_line_offset(0) is not allowed.
8669            if max_ordinal == 0 {
8670                return Ok(());
8671            }
8672            depth.increment()?;
8673            let envelope_size = 8;
8674            let bytes_len = max_ordinal as usize * envelope_size;
8675            #[allow(unused_variables)]
8676            let offset = encoder.out_of_line_offset(bytes_len);
8677            let mut _prev_end_offset: usize = 0;
8678            if 1 > max_ordinal {
8679                return Ok(());
8680            }
8681
8682            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8683            // are envelope_size bytes.
8684            let cur_offset: usize = (1 - 1) * envelope_size;
8685
8686            // Zero reserved fields.
8687            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8688
8689            // Safety:
8690            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8691            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8692            //   envelope_size bytes, there is always sufficient room.
8693            fidl::encoding::encode_in_envelope_optional::<u64, D>(
8694                self.token_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
8695                encoder,
8696                offset + cur_offset,
8697                depth,
8698            )?;
8699
8700            _prev_end_offset = cur_offset + envelope_size;
8701
8702            Ok(())
8703        }
8704    }
8705
8706    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8707        for RegistryWatchDeviceRemovedResponse
8708    {
8709        #[inline(always)]
8710        fn new_empty() -> Self {
8711            Self::default()
8712        }
8713
8714        unsafe fn decode(
8715            &mut self,
8716            decoder: &mut fidl::encoding::Decoder<'_, D>,
8717            offset: usize,
8718            mut depth: fidl::encoding::Depth,
8719        ) -> fidl::Result<()> {
8720            decoder.debug_check_bounds::<Self>(offset);
8721            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8722                None => return Err(fidl::Error::NotNullable),
8723                Some(len) => len,
8724            };
8725            // Calling decoder.out_of_line_offset(0) is not allowed.
8726            if len == 0 {
8727                return Ok(());
8728            };
8729            depth.increment()?;
8730            let envelope_size = 8;
8731            let bytes_len = len * envelope_size;
8732            let offset = decoder.out_of_line_offset(bytes_len)?;
8733            // Decode the envelope for each type.
8734            let mut _next_ordinal_to_read = 0;
8735            let mut next_offset = offset;
8736            let end_offset = offset + bytes_len;
8737            _next_ordinal_to_read += 1;
8738            if next_offset >= end_offset {
8739                return Ok(());
8740            }
8741
8742            // Decode unknown envelopes for gaps in ordinals.
8743            while _next_ordinal_to_read < 1 {
8744                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8745                _next_ordinal_to_read += 1;
8746                next_offset += envelope_size;
8747            }
8748
8749            let next_out_of_line = decoder.next_out_of_line();
8750            let handles_before = decoder.remaining_handles();
8751            if let Some((inlined, num_bytes, num_handles)) =
8752                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8753            {
8754                let member_inline_size =
8755                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8756                if inlined != (member_inline_size <= 4) {
8757                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8758                }
8759                let inner_offset;
8760                let mut inner_depth = depth.clone();
8761                if inlined {
8762                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8763                    inner_offset = next_offset;
8764                } else {
8765                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8766                    inner_depth.increment()?;
8767                }
8768                let val_ref = self.token_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
8769                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
8770                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8771                {
8772                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8773                }
8774                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8775                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8776                }
8777            }
8778
8779            next_offset += envelope_size;
8780
8781            // Decode the remaining unknown envelopes.
8782            while next_offset < end_offset {
8783                _next_ordinal_to_read += 1;
8784                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8785                next_offset += envelope_size;
8786            }
8787
8788            Ok(())
8789        }
8790    }
8791
8792    impl RegistryWatchDevicesAddedResponse {
8793        #[inline(always)]
8794        fn max_ordinal_present(&self) -> u64 {
8795            if let Some(_) = self.devices {
8796                return 1;
8797            }
8798            0
8799        }
8800    }
8801
8802    impl fidl::encoding::ValueTypeMarker for RegistryWatchDevicesAddedResponse {
8803        type Borrowed<'a> = &'a Self;
8804        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8805            value
8806        }
8807    }
8808
8809    unsafe impl fidl::encoding::TypeMarker for RegistryWatchDevicesAddedResponse {
8810        type Owned = Self;
8811
8812        #[inline(always)]
8813        fn inline_align(_context: fidl::encoding::Context) -> usize {
8814            8
8815        }
8816
8817        #[inline(always)]
8818        fn inline_size(_context: fidl::encoding::Context) -> usize {
8819            16
8820        }
8821    }
8822
8823    unsafe impl<D: fidl::encoding::ResourceDialect>
8824        fidl::encoding::Encode<RegistryWatchDevicesAddedResponse, D>
8825        for &RegistryWatchDevicesAddedResponse
8826    {
8827        unsafe fn encode(
8828            self,
8829            encoder: &mut fidl::encoding::Encoder<'_, D>,
8830            offset: usize,
8831            mut depth: fidl::encoding::Depth,
8832        ) -> fidl::Result<()> {
8833            encoder.debug_check_bounds::<RegistryWatchDevicesAddedResponse>(offset);
8834            // Vector header
8835            let max_ordinal: u64 = self.max_ordinal_present();
8836            encoder.write_num(max_ordinal, offset);
8837            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8838            // Calling encoder.out_of_line_offset(0) is not allowed.
8839            if max_ordinal == 0 {
8840                return Ok(());
8841            }
8842            depth.increment()?;
8843            let envelope_size = 8;
8844            let bytes_len = max_ordinal as usize * envelope_size;
8845            #[allow(unused_variables)]
8846            let offset = encoder.out_of_line_offset(bytes_len);
8847            let mut _prev_end_offset: usize = 0;
8848            if 1 > max_ordinal {
8849                return Ok(());
8850            }
8851
8852            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8853            // are envelope_size bytes.
8854            let cur_offset: usize = (1 - 1) * envelope_size;
8855
8856            // Zero reserved fields.
8857            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8858
8859            // Safety:
8860            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8861            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8862            //   envelope_size bytes, there is always sufficient room.
8863            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Info, 256>, D>(
8864                self.devices.as_ref().map(
8865                    <fidl::encoding::Vector<Info, 256> as fidl::encoding::ValueTypeMarker>::borrow,
8866                ),
8867                encoder,
8868                offset + cur_offset,
8869                depth,
8870            )?;
8871
8872            _prev_end_offset = cur_offset + envelope_size;
8873
8874            Ok(())
8875        }
8876    }
8877
8878    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8879        for RegistryWatchDevicesAddedResponse
8880    {
8881        #[inline(always)]
8882        fn new_empty() -> Self {
8883            Self::default()
8884        }
8885
8886        unsafe fn decode(
8887            &mut self,
8888            decoder: &mut fidl::encoding::Decoder<'_, D>,
8889            offset: usize,
8890            mut depth: fidl::encoding::Depth,
8891        ) -> fidl::Result<()> {
8892            decoder.debug_check_bounds::<Self>(offset);
8893            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8894                None => return Err(fidl::Error::NotNullable),
8895                Some(len) => len,
8896            };
8897            // Calling decoder.out_of_line_offset(0) is not allowed.
8898            if len == 0 {
8899                return Ok(());
8900            };
8901            depth.increment()?;
8902            let envelope_size = 8;
8903            let bytes_len = len * envelope_size;
8904            let offset = decoder.out_of_line_offset(bytes_len)?;
8905            // Decode the envelope for each type.
8906            let mut _next_ordinal_to_read = 0;
8907            let mut next_offset = offset;
8908            let end_offset = offset + bytes_len;
8909            _next_ordinal_to_read += 1;
8910            if next_offset >= end_offset {
8911                return Ok(());
8912            }
8913
8914            // Decode unknown envelopes for gaps in ordinals.
8915            while _next_ordinal_to_read < 1 {
8916                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8917                _next_ordinal_to_read += 1;
8918                next_offset += envelope_size;
8919            }
8920
8921            let next_out_of_line = decoder.next_out_of_line();
8922            let handles_before = decoder.remaining_handles();
8923            if let Some((inlined, num_bytes, num_handles)) =
8924                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8925            {
8926                let member_inline_size =
8927                    <fidl::encoding::Vector<Info, 256> as fidl::encoding::TypeMarker>::inline_size(
8928                        decoder.context,
8929                    );
8930                if inlined != (member_inline_size <= 4) {
8931                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8932                }
8933                let inner_offset;
8934                let mut inner_depth = depth.clone();
8935                if inlined {
8936                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8937                    inner_offset = next_offset;
8938                } else {
8939                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8940                    inner_depth.increment()?;
8941                }
8942                let val_ref = self
8943                    .devices
8944                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Info, 256>, D));
8945                fidl::decode!(fidl::encoding::Vector<Info, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
8946                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8947                {
8948                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8949                }
8950                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8951                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8952                }
8953            }
8954
8955            next_offset += envelope_size;
8956
8957            // Decode the remaining unknown envelopes.
8958            while next_offset < end_offset {
8959                _next_ordinal_to_read += 1;
8960                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8961                next_offset += envelope_size;
8962            }
8963
8964            Ok(())
8965        }
8966    }
8967
8968    impl RingBufferOptions {
8969        #[inline(always)]
8970        fn max_ordinal_present(&self) -> u64 {
8971            if let Some(_) = self.ring_buffer_min_bytes {
8972                return 2;
8973            }
8974            if let Some(_) = self.format {
8975                return 1;
8976            }
8977            0
8978        }
8979    }
8980
8981    impl fidl::encoding::ValueTypeMarker for RingBufferOptions {
8982        type Borrowed<'a> = &'a Self;
8983        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8984            value
8985        }
8986    }
8987
8988    unsafe impl fidl::encoding::TypeMarker for RingBufferOptions {
8989        type Owned = Self;
8990
8991        #[inline(always)]
8992        fn inline_align(_context: fidl::encoding::Context) -> usize {
8993            8
8994        }
8995
8996        #[inline(always)]
8997        fn inline_size(_context: fidl::encoding::Context) -> usize {
8998            16
8999        }
9000    }
9001
9002    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RingBufferOptions, D>
9003        for &RingBufferOptions
9004    {
9005        unsafe fn encode(
9006            self,
9007            encoder: &mut fidl::encoding::Encoder<'_, D>,
9008            offset: usize,
9009            mut depth: fidl::encoding::Depth,
9010        ) -> fidl::Result<()> {
9011            encoder.debug_check_bounds::<RingBufferOptions>(offset);
9012            // Vector header
9013            let max_ordinal: u64 = self.max_ordinal_present();
9014            encoder.write_num(max_ordinal, offset);
9015            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9016            // Calling encoder.out_of_line_offset(0) is not allowed.
9017            if max_ordinal == 0 {
9018                return Ok(());
9019            }
9020            depth.increment()?;
9021            let envelope_size = 8;
9022            let bytes_len = max_ordinal as usize * envelope_size;
9023            #[allow(unused_variables)]
9024            let offset = encoder.out_of_line_offset(bytes_len);
9025            let mut _prev_end_offset: usize = 0;
9026            if 1 > max_ordinal {
9027                return Ok(());
9028            }
9029
9030            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9031            // are envelope_size bytes.
9032            let cur_offset: usize = (1 - 1) * envelope_size;
9033
9034            // Zero reserved fields.
9035            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9036
9037            // Safety:
9038            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9039            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9040            //   envelope_size bytes, there is always sufficient room.
9041            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_audio__common::Format, D>(
9042                self.format.as_ref().map(
9043                    <fidl_fuchsia_audio__common::Format as fidl::encoding::ValueTypeMarker>::borrow,
9044                ),
9045                encoder,
9046                offset + cur_offset,
9047                depth,
9048            )?;
9049
9050            _prev_end_offset = cur_offset + envelope_size;
9051            if 2 > max_ordinal {
9052                return Ok(());
9053            }
9054
9055            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9056            // are envelope_size bytes.
9057            let cur_offset: usize = (2 - 1) * envelope_size;
9058
9059            // Zero reserved fields.
9060            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9061
9062            // Safety:
9063            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9064            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9065            //   envelope_size bytes, there is always sufficient room.
9066            fidl::encoding::encode_in_envelope_optional::<u32, D>(
9067                self.ring_buffer_min_bytes
9068                    .as_ref()
9069                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9070                encoder,
9071                offset + cur_offset,
9072                depth,
9073            )?;
9074
9075            _prev_end_offset = cur_offset + envelope_size;
9076
9077            Ok(())
9078        }
9079    }
9080
9081    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RingBufferOptions {
9082        #[inline(always)]
9083        fn new_empty() -> Self {
9084            Self::default()
9085        }
9086
9087        unsafe fn decode(
9088            &mut self,
9089            decoder: &mut fidl::encoding::Decoder<'_, D>,
9090            offset: usize,
9091            mut depth: fidl::encoding::Depth,
9092        ) -> fidl::Result<()> {
9093            decoder.debug_check_bounds::<Self>(offset);
9094            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9095                None => return Err(fidl::Error::NotNullable),
9096                Some(len) => len,
9097            };
9098            // Calling decoder.out_of_line_offset(0) is not allowed.
9099            if len == 0 {
9100                return Ok(());
9101            };
9102            depth.increment()?;
9103            let envelope_size = 8;
9104            let bytes_len = len * envelope_size;
9105            let offset = decoder.out_of_line_offset(bytes_len)?;
9106            // Decode the envelope for each type.
9107            let mut _next_ordinal_to_read = 0;
9108            let mut next_offset = offset;
9109            let end_offset = offset + bytes_len;
9110            _next_ordinal_to_read += 1;
9111            if next_offset >= end_offset {
9112                return Ok(());
9113            }
9114
9115            // Decode unknown envelopes for gaps in ordinals.
9116            while _next_ordinal_to_read < 1 {
9117                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9118                _next_ordinal_to_read += 1;
9119                next_offset += envelope_size;
9120            }
9121
9122            let next_out_of_line = decoder.next_out_of_line();
9123            let handles_before = decoder.remaining_handles();
9124            if let Some((inlined, num_bytes, num_handles)) =
9125                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9126            {
9127                let member_inline_size =
9128                    <fidl_fuchsia_audio__common::Format as fidl::encoding::TypeMarker>::inline_size(
9129                        decoder.context,
9130                    );
9131                if inlined != (member_inline_size <= 4) {
9132                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9133                }
9134                let inner_offset;
9135                let mut inner_depth = depth.clone();
9136                if inlined {
9137                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9138                    inner_offset = next_offset;
9139                } else {
9140                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9141                    inner_depth.increment()?;
9142                }
9143                let val_ref = self
9144                    .format
9145                    .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_audio__common::Format, D));
9146                fidl::decode!(
9147                    fidl_fuchsia_audio__common::Format,
9148                    D,
9149                    val_ref,
9150                    decoder,
9151                    inner_offset,
9152                    inner_depth
9153                )?;
9154                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9155                {
9156                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9157                }
9158                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9159                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9160                }
9161            }
9162
9163            next_offset += envelope_size;
9164            _next_ordinal_to_read += 1;
9165            if next_offset >= end_offset {
9166                return Ok(());
9167            }
9168
9169            // Decode unknown envelopes for gaps in ordinals.
9170            while _next_ordinal_to_read < 2 {
9171                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9172                _next_ordinal_to_read += 1;
9173                next_offset += envelope_size;
9174            }
9175
9176            let next_out_of_line = decoder.next_out_of_line();
9177            let handles_before = decoder.remaining_handles();
9178            if let Some((inlined, num_bytes, num_handles)) =
9179                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9180            {
9181                let member_inline_size =
9182                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9183                if inlined != (member_inline_size <= 4) {
9184                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9185                }
9186                let inner_offset;
9187                let mut inner_depth = depth.clone();
9188                if inlined {
9189                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9190                    inner_offset = next_offset;
9191                } else {
9192                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9193                    inner_depth.increment()?;
9194                }
9195                let val_ref =
9196                    self.ring_buffer_min_bytes.get_or_insert_with(|| fidl::new_empty!(u32, D));
9197                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9198                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9199                {
9200                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9201                }
9202                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9203                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9204                }
9205            }
9206
9207            next_offset += envelope_size;
9208
9209            // Decode the remaining unknown envelopes.
9210            while next_offset < end_offset {
9211                _next_ordinal_to_read += 1;
9212                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9213                next_offset += envelope_size;
9214            }
9215
9216            Ok(())
9217        }
9218    }
9219
9220    impl RingBufferProperties {
9221        #[inline(always)]
9222        fn max_ordinal_present(&self) -> u64 {
9223            if let Some(_) = self.turn_on_delay {
9224                return 2;
9225            }
9226            if let Some(_) = self.valid_bits_per_sample {
9227                return 1;
9228            }
9229            0
9230        }
9231    }
9232
9233    impl fidl::encoding::ValueTypeMarker for RingBufferProperties {
9234        type Borrowed<'a> = &'a Self;
9235        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9236            value
9237        }
9238    }
9239
9240    unsafe impl fidl::encoding::TypeMarker for RingBufferProperties {
9241        type Owned = Self;
9242
9243        #[inline(always)]
9244        fn inline_align(_context: fidl::encoding::Context) -> usize {
9245            8
9246        }
9247
9248        #[inline(always)]
9249        fn inline_size(_context: fidl::encoding::Context) -> usize {
9250            16
9251        }
9252    }
9253
9254    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RingBufferProperties, D>
9255        for &RingBufferProperties
9256    {
9257        unsafe fn encode(
9258            self,
9259            encoder: &mut fidl::encoding::Encoder<'_, D>,
9260            offset: usize,
9261            mut depth: fidl::encoding::Depth,
9262        ) -> fidl::Result<()> {
9263            encoder.debug_check_bounds::<RingBufferProperties>(offset);
9264            // Vector header
9265            let max_ordinal: u64 = self.max_ordinal_present();
9266            encoder.write_num(max_ordinal, offset);
9267            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9268            // Calling encoder.out_of_line_offset(0) is not allowed.
9269            if max_ordinal == 0 {
9270                return Ok(());
9271            }
9272            depth.increment()?;
9273            let envelope_size = 8;
9274            let bytes_len = max_ordinal as usize * envelope_size;
9275            #[allow(unused_variables)]
9276            let offset = encoder.out_of_line_offset(bytes_len);
9277            let mut _prev_end_offset: usize = 0;
9278            if 1 > max_ordinal {
9279                return Ok(());
9280            }
9281
9282            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9283            // are envelope_size bytes.
9284            let cur_offset: usize = (1 - 1) * envelope_size;
9285
9286            // Zero reserved fields.
9287            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9288
9289            // Safety:
9290            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9291            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9292            //   envelope_size bytes, there is always sufficient room.
9293            fidl::encoding::encode_in_envelope_optional::<u8, D>(
9294                self.valid_bits_per_sample
9295                    .as_ref()
9296                    .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9297                encoder,
9298                offset + cur_offset,
9299                depth,
9300            )?;
9301
9302            _prev_end_offset = cur_offset + envelope_size;
9303            if 2 > max_ordinal {
9304                return Ok(());
9305            }
9306
9307            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9308            // are envelope_size bytes.
9309            let cur_offset: usize = (2 - 1) * envelope_size;
9310
9311            // Zero reserved fields.
9312            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9313
9314            // Safety:
9315            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9316            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9317            //   envelope_size bytes, there is always sufficient room.
9318            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9319                self.turn_on_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9320                encoder,
9321                offset + cur_offset,
9322                depth,
9323            )?;
9324
9325            _prev_end_offset = cur_offset + envelope_size;
9326
9327            Ok(())
9328        }
9329    }
9330
9331    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RingBufferProperties {
9332        #[inline(always)]
9333        fn new_empty() -> Self {
9334            Self::default()
9335        }
9336
9337        unsafe fn decode(
9338            &mut self,
9339            decoder: &mut fidl::encoding::Decoder<'_, D>,
9340            offset: usize,
9341            mut depth: fidl::encoding::Depth,
9342        ) -> fidl::Result<()> {
9343            decoder.debug_check_bounds::<Self>(offset);
9344            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9345                None => return Err(fidl::Error::NotNullable),
9346                Some(len) => len,
9347            };
9348            // Calling decoder.out_of_line_offset(0) is not allowed.
9349            if len == 0 {
9350                return Ok(());
9351            };
9352            depth.increment()?;
9353            let envelope_size = 8;
9354            let bytes_len = len * envelope_size;
9355            let offset = decoder.out_of_line_offset(bytes_len)?;
9356            // Decode the envelope for each type.
9357            let mut _next_ordinal_to_read = 0;
9358            let mut next_offset = offset;
9359            let end_offset = offset + bytes_len;
9360            _next_ordinal_to_read += 1;
9361            if next_offset >= end_offset {
9362                return Ok(());
9363            }
9364
9365            // Decode unknown envelopes for gaps in ordinals.
9366            while _next_ordinal_to_read < 1 {
9367                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9368                _next_ordinal_to_read += 1;
9369                next_offset += envelope_size;
9370            }
9371
9372            let next_out_of_line = decoder.next_out_of_line();
9373            let handles_before = decoder.remaining_handles();
9374            if let Some((inlined, num_bytes, num_handles)) =
9375                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9376            {
9377                let member_inline_size =
9378                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9379                if inlined != (member_inline_size <= 4) {
9380                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9381                }
9382                let inner_offset;
9383                let mut inner_depth = depth.clone();
9384                if inlined {
9385                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9386                    inner_offset = next_offset;
9387                } else {
9388                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9389                    inner_depth.increment()?;
9390                }
9391                let val_ref =
9392                    self.valid_bits_per_sample.get_or_insert_with(|| fidl::new_empty!(u8, D));
9393                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9394                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9395                {
9396                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9397                }
9398                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9399                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9400                }
9401            }
9402
9403            next_offset += envelope_size;
9404            _next_ordinal_to_read += 1;
9405            if next_offset >= end_offset {
9406                return Ok(());
9407            }
9408
9409            // Decode unknown envelopes for gaps in ordinals.
9410            while _next_ordinal_to_read < 2 {
9411                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9412                _next_ordinal_to_read += 1;
9413                next_offset += envelope_size;
9414            }
9415
9416            let next_out_of_line = decoder.next_out_of_line();
9417            let handles_before = decoder.remaining_handles();
9418            if let Some((inlined, num_bytes, num_handles)) =
9419                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9420            {
9421                let member_inline_size =
9422                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9423                if inlined != (member_inline_size <= 4) {
9424                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9425                }
9426                let inner_offset;
9427                let mut inner_depth = depth.clone();
9428                if inlined {
9429                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9430                    inner_offset = next_offset;
9431                } else {
9432                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9433                    inner_depth.increment()?;
9434                }
9435                let val_ref = self.turn_on_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
9436                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9437                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9438                {
9439                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9440                }
9441                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9442                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9443                }
9444            }
9445
9446            next_offset += envelope_size;
9447
9448            // Decode the remaining unknown envelopes.
9449            while next_offset < end_offset {
9450                _next_ordinal_to_read += 1;
9451                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9452                next_offset += envelope_size;
9453            }
9454
9455            Ok(())
9456        }
9457    }
9458
9459    impl RingBufferSetActiveChannelsRequest {
9460        #[inline(always)]
9461        fn max_ordinal_present(&self) -> u64 {
9462            if let Some(_) = self.channel_bitmask {
9463                return 1;
9464            }
9465            0
9466        }
9467    }
9468
9469    impl fidl::encoding::ValueTypeMarker for RingBufferSetActiveChannelsRequest {
9470        type Borrowed<'a> = &'a Self;
9471        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9472            value
9473        }
9474    }
9475
9476    unsafe impl fidl::encoding::TypeMarker for RingBufferSetActiveChannelsRequest {
9477        type Owned = Self;
9478
9479        #[inline(always)]
9480        fn inline_align(_context: fidl::encoding::Context) -> usize {
9481            8
9482        }
9483
9484        #[inline(always)]
9485        fn inline_size(_context: fidl::encoding::Context) -> usize {
9486            16
9487        }
9488    }
9489
9490    unsafe impl<D: fidl::encoding::ResourceDialect>
9491        fidl::encoding::Encode<RingBufferSetActiveChannelsRequest, D>
9492        for &RingBufferSetActiveChannelsRequest
9493    {
9494        unsafe fn encode(
9495            self,
9496            encoder: &mut fidl::encoding::Encoder<'_, D>,
9497            offset: usize,
9498            mut depth: fidl::encoding::Depth,
9499        ) -> fidl::Result<()> {
9500            encoder.debug_check_bounds::<RingBufferSetActiveChannelsRequest>(offset);
9501            // Vector header
9502            let max_ordinal: u64 = self.max_ordinal_present();
9503            encoder.write_num(max_ordinal, offset);
9504            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9505            // Calling encoder.out_of_line_offset(0) is not allowed.
9506            if max_ordinal == 0 {
9507                return Ok(());
9508            }
9509            depth.increment()?;
9510            let envelope_size = 8;
9511            let bytes_len = max_ordinal as usize * envelope_size;
9512            #[allow(unused_variables)]
9513            let offset = encoder.out_of_line_offset(bytes_len);
9514            let mut _prev_end_offset: usize = 0;
9515            if 1 > max_ordinal {
9516                return Ok(());
9517            }
9518
9519            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9520            // are envelope_size bytes.
9521            let cur_offset: usize = (1 - 1) * envelope_size;
9522
9523            // Zero reserved fields.
9524            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9525
9526            // Safety:
9527            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9528            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9529            //   envelope_size bytes, there is always sufficient room.
9530            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9531                self.channel_bitmask.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9532                encoder,
9533                offset + cur_offset,
9534                depth,
9535            )?;
9536
9537            _prev_end_offset = cur_offset + envelope_size;
9538
9539            Ok(())
9540        }
9541    }
9542
9543    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9544        for RingBufferSetActiveChannelsRequest
9545    {
9546        #[inline(always)]
9547        fn new_empty() -> Self {
9548            Self::default()
9549        }
9550
9551        unsafe fn decode(
9552            &mut self,
9553            decoder: &mut fidl::encoding::Decoder<'_, D>,
9554            offset: usize,
9555            mut depth: fidl::encoding::Depth,
9556        ) -> fidl::Result<()> {
9557            decoder.debug_check_bounds::<Self>(offset);
9558            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9559                None => return Err(fidl::Error::NotNullable),
9560                Some(len) => len,
9561            };
9562            // Calling decoder.out_of_line_offset(0) is not allowed.
9563            if len == 0 {
9564                return Ok(());
9565            };
9566            depth.increment()?;
9567            let envelope_size = 8;
9568            let bytes_len = len * envelope_size;
9569            let offset = decoder.out_of_line_offset(bytes_len)?;
9570            // Decode the envelope for each type.
9571            let mut _next_ordinal_to_read = 0;
9572            let mut next_offset = offset;
9573            let end_offset = offset + bytes_len;
9574            _next_ordinal_to_read += 1;
9575            if next_offset >= end_offset {
9576                return Ok(());
9577            }
9578
9579            // Decode unknown envelopes for gaps in ordinals.
9580            while _next_ordinal_to_read < 1 {
9581                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9582                _next_ordinal_to_read += 1;
9583                next_offset += envelope_size;
9584            }
9585
9586            let next_out_of_line = decoder.next_out_of_line();
9587            let handles_before = decoder.remaining_handles();
9588            if let Some((inlined, num_bytes, num_handles)) =
9589                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9590            {
9591                let member_inline_size =
9592                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9593                if inlined != (member_inline_size <= 4) {
9594                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9595                }
9596                let inner_offset;
9597                let mut inner_depth = depth.clone();
9598                if inlined {
9599                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9600                    inner_offset = next_offset;
9601                } else {
9602                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9603                    inner_depth.increment()?;
9604                }
9605                let val_ref = self.channel_bitmask.get_or_insert_with(|| fidl::new_empty!(u64, D));
9606                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9607                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9608                {
9609                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9610                }
9611                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9612                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9613                }
9614            }
9615
9616            next_offset += envelope_size;
9617
9618            // Decode the remaining unknown envelopes.
9619            while next_offset < end_offset {
9620                _next_ordinal_to_read += 1;
9621                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9622                next_offset += envelope_size;
9623            }
9624
9625            Ok(())
9626        }
9627    }
9628
9629    impl RingBufferStartRequest {
9630        #[inline(always)]
9631        fn max_ordinal_present(&self) -> u64 {
9632            0
9633        }
9634    }
9635
9636    impl fidl::encoding::ValueTypeMarker for RingBufferStartRequest {
9637        type Borrowed<'a> = &'a Self;
9638        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9639            value
9640        }
9641    }
9642
9643    unsafe impl fidl::encoding::TypeMarker for RingBufferStartRequest {
9644        type Owned = Self;
9645
9646        #[inline(always)]
9647        fn inline_align(_context: fidl::encoding::Context) -> usize {
9648            8
9649        }
9650
9651        #[inline(always)]
9652        fn inline_size(_context: fidl::encoding::Context) -> usize {
9653            16
9654        }
9655    }
9656
9657    unsafe impl<D: fidl::encoding::ResourceDialect>
9658        fidl::encoding::Encode<RingBufferStartRequest, D> for &RingBufferStartRequest
9659    {
9660        unsafe fn encode(
9661            self,
9662            encoder: &mut fidl::encoding::Encoder<'_, D>,
9663            offset: usize,
9664            mut depth: fidl::encoding::Depth,
9665        ) -> fidl::Result<()> {
9666            encoder.debug_check_bounds::<RingBufferStartRequest>(offset);
9667            // Vector header
9668            let max_ordinal: u64 = self.max_ordinal_present();
9669            encoder.write_num(max_ordinal, offset);
9670            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9671            // Calling encoder.out_of_line_offset(0) is not allowed.
9672            if max_ordinal == 0 {
9673                return Ok(());
9674            }
9675            depth.increment()?;
9676            let envelope_size = 8;
9677            let bytes_len = max_ordinal as usize * envelope_size;
9678            #[allow(unused_variables)]
9679            let offset = encoder.out_of_line_offset(bytes_len);
9680            let mut _prev_end_offset: usize = 0;
9681
9682            Ok(())
9683        }
9684    }
9685
9686    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9687        for RingBufferStartRequest
9688    {
9689        #[inline(always)]
9690        fn new_empty() -> Self {
9691            Self::default()
9692        }
9693
9694        unsafe fn decode(
9695            &mut self,
9696            decoder: &mut fidl::encoding::Decoder<'_, D>,
9697            offset: usize,
9698            mut depth: fidl::encoding::Depth,
9699        ) -> fidl::Result<()> {
9700            decoder.debug_check_bounds::<Self>(offset);
9701            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9702                None => return Err(fidl::Error::NotNullable),
9703                Some(len) => len,
9704            };
9705            // Calling decoder.out_of_line_offset(0) is not allowed.
9706            if len == 0 {
9707                return Ok(());
9708            };
9709            depth.increment()?;
9710            let envelope_size = 8;
9711            let bytes_len = len * envelope_size;
9712            let offset = decoder.out_of_line_offset(bytes_len)?;
9713            // Decode the envelope for each type.
9714            let mut _next_ordinal_to_read = 0;
9715            let mut next_offset = offset;
9716            let end_offset = offset + bytes_len;
9717
9718            // Decode the remaining unknown envelopes.
9719            while next_offset < end_offset {
9720                _next_ordinal_to_read += 1;
9721                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9722                next_offset += envelope_size;
9723            }
9724
9725            Ok(())
9726        }
9727    }
9728
9729    impl RingBufferStopRequest {
9730        #[inline(always)]
9731        fn max_ordinal_present(&self) -> u64 {
9732            0
9733        }
9734    }
9735
9736    impl fidl::encoding::ValueTypeMarker for RingBufferStopRequest {
9737        type Borrowed<'a> = &'a Self;
9738        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9739            value
9740        }
9741    }
9742
9743    unsafe impl fidl::encoding::TypeMarker for RingBufferStopRequest {
9744        type Owned = Self;
9745
9746        #[inline(always)]
9747        fn inline_align(_context: fidl::encoding::Context) -> usize {
9748            8
9749        }
9750
9751        #[inline(always)]
9752        fn inline_size(_context: fidl::encoding::Context) -> usize {
9753            16
9754        }
9755    }
9756
9757    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RingBufferStopRequest, D>
9758        for &RingBufferStopRequest
9759    {
9760        unsafe fn encode(
9761            self,
9762            encoder: &mut fidl::encoding::Encoder<'_, D>,
9763            offset: usize,
9764            mut depth: fidl::encoding::Depth,
9765        ) -> fidl::Result<()> {
9766            encoder.debug_check_bounds::<RingBufferStopRequest>(offset);
9767            // Vector header
9768            let max_ordinal: u64 = self.max_ordinal_present();
9769            encoder.write_num(max_ordinal, offset);
9770            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9771            // Calling encoder.out_of_line_offset(0) is not allowed.
9772            if max_ordinal == 0 {
9773                return Ok(());
9774            }
9775            depth.increment()?;
9776            let envelope_size = 8;
9777            let bytes_len = max_ordinal as usize * envelope_size;
9778            #[allow(unused_variables)]
9779            let offset = encoder.out_of_line_offset(bytes_len);
9780            let mut _prev_end_offset: usize = 0;
9781
9782            Ok(())
9783        }
9784    }
9785
9786    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RingBufferStopRequest {
9787        #[inline(always)]
9788        fn new_empty() -> Self {
9789            Self::default()
9790        }
9791
9792        unsafe fn decode(
9793            &mut self,
9794            decoder: &mut fidl::encoding::Decoder<'_, D>,
9795            offset: usize,
9796            mut depth: fidl::encoding::Depth,
9797        ) -> fidl::Result<()> {
9798            decoder.debug_check_bounds::<Self>(offset);
9799            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9800                None => return Err(fidl::Error::NotNullable),
9801                Some(len) => len,
9802            };
9803            // Calling decoder.out_of_line_offset(0) is not allowed.
9804            if len == 0 {
9805                return Ok(());
9806            };
9807            depth.increment()?;
9808            let envelope_size = 8;
9809            let bytes_len = len * envelope_size;
9810            let offset = decoder.out_of_line_offset(bytes_len)?;
9811            // Decode the envelope for each type.
9812            let mut _next_ordinal_to_read = 0;
9813            let mut next_offset = offset;
9814            let end_offset = offset + bytes_len;
9815
9816            // Decode the remaining unknown envelopes.
9817            while next_offset < end_offset {
9818                _next_ordinal_to_read += 1;
9819                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9820                next_offset += envelope_size;
9821            }
9822
9823            Ok(())
9824        }
9825    }
9826
9827    impl RingBufferSetActiveChannelsResponse {
9828        #[inline(always)]
9829        fn max_ordinal_present(&self) -> u64 {
9830            if let Some(_) = self.set_time {
9831                return 1;
9832            }
9833            0
9834        }
9835    }
9836
9837    impl fidl::encoding::ValueTypeMarker for RingBufferSetActiveChannelsResponse {
9838        type Borrowed<'a> = &'a Self;
9839        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9840            value
9841        }
9842    }
9843
9844    unsafe impl fidl::encoding::TypeMarker for RingBufferSetActiveChannelsResponse {
9845        type Owned = Self;
9846
9847        #[inline(always)]
9848        fn inline_align(_context: fidl::encoding::Context) -> usize {
9849            8
9850        }
9851
9852        #[inline(always)]
9853        fn inline_size(_context: fidl::encoding::Context) -> usize {
9854            16
9855        }
9856    }
9857
9858    unsafe impl<D: fidl::encoding::ResourceDialect>
9859        fidl::encoding::Encode<RingBufferSetActiveChannelsResponse, D>
9860        for &RingBufferSetActiveChannelsResponse
9861    {
9862        unsafe fn encode(
9863            self,
9864            encoder: &mut fidl::encoding::Encoder<'_, D>,
9865            offset: usize,
9866            mut depth: fidl::encoding::Depth,
9867        ) -> fidl::Result<()> {
9868            encoder.debug_check_bounds::<RingBufferSetActiveChannelsResponse>(offset);
9869            // Vector header
9870            let max_ordinal: u64 = self.max_ordinal_present();
9871            encoder.write_num(max_ordinal, offset);
9872            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9873            // Calling encoder.out_of_line_offset(0) is not allowed.
9874            if max_ordinal == 0 {
9875                return Ok(());
9876            }
9877            depth.increment()?;
9878            let envelope_size = 8;
9879            let bytes_len = max_ordinal as usize * envelope_size;
9880            #[allow(unused_variables)]
9881            let offset = encoder.out_of_line_offset(bytes_len);
9882            let mut _prev_end_offset: usize = 0;
9883            if 1 > max_ordinal {
9884                return Ok(());
9885            }
9886
9887            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9888            // are envelope_size bytes.
9889            let cur_offset: usize = (1 - 1) * envelope_size;
9890
9891            // Zero reserved fields.
9892            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9893
9894            // Safety:
9895            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9896            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9897            //   envelope_size bytes, there is always sufficient room.
9898            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9899                self.set_time.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9900                encoder,
9901                offset + cur_offset,
9902                depth,
9903            )?;
9904
9905            _prev_end_offset = cur_offset + envelope_size;
9906
9907            Ok(())
9908        }
9909    }
9910
9911    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9912        for RingBufferSetActiveChannelsResponse
9913    {
9914        #[inline(always)]
9915        fn new_empty() -> Self {
9916            Self::default()
9917        }
9918
9919        unsafe fn decode(
9920            &mut self,
9921            decoder: &mut fidl::encoding::Decoder<'_, D>,
9922            offset: usize,
9923            mut depth: fidl::encoding::Depth,
9924        ) -> fidl::Result<()> {
9925            decoder.debug_check_bounds::<Self>(offset);
9926            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9927                None => return Err(fidl::Error::NotNullable),
9928                Some(len) => len,
9929            };
9930            // Calling decoder.out_of_line_offset(0) is not allowed.
9931            if len == 0 {
9932                return Ok(());
9933            };
9934            depth.increment()?;
9935            let envelope_size = 8;
9936            let bytes_len = len * envelope_size;
9937            let offset = decoder.out_of_line_offset(bytes_len)?;
9938            // Decode the envelope for each type.
9939            let mut _next_ordinal_to_read = 0;
9940            let mut next_offset = offset;
9941            let end_offset = offset + bytes_len;
9942            _next_ordinal_to_read += 1;
9943            if next_offset >= end_offset {
9944                return Ok(());
9945            }
9946
9947            // Decode unknown envelopes for gaps in ordinals.
9948            while _next_ordinal_to_read < 1 {
9949                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9950                _next_ordinal_to_read += 1;
9951                next_offset += envelope_size;
9952            }
9953
9954            let next_out_of_line = decoder.next_out_of_line();
9955            let handles_before = decoder.remaining_handles();
9956            if let Some((inlined, num_bytes, num_handles)) =
9957                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9958            {
9959                let member_inline_size =
9960                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9961                if inlined != (member_inline_size <= 4) {
9962                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9963                }
9964                let inner_offset;
9965                let mut inner_depth = depth.clone();
9966                if inlined {
9967                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9968                    inner_offset = next_offset;
9969                } else {
9970                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9971                    inner_depth.increment()?;
9972                }
9973                let val_ref = self.set_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
9974                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9975                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9976                {
9977                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9978                }
9979                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9980                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9981                }
9982            }
9983
9984            next_offset += envelope_size;
9985
9986            // Decode the remaining unknown envelopes.
9987            while next_offset < end_offset {
9988                _next_ordinal_to_read += 1;
9989                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9990                next_offset += envelope_size;
9991            }
9992
9993            Ok(())
9994        }
9995    }
9996
9997    impl RingBufferStartResponse {
9998        #[inline(always)]
9999        fn max_ordinal_present(&self) -> u64 {
10000            if let Some(_) = self.start_time {
10001                return 1;
10002            }
10003            0
10004        }
10005    }
10006
10007    impl fidl::encoding::ValueTypeMarker for RingBufferStartResponse {
10008        type Borrowed<'a> = &'a Self;
10009        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10010            value
10011        }
10012    }
10013
10014    unsafe impl fidl::encoding::TypeMarker for RingBufferStartResponse {
10015        type Owned = Self;
10016
10017        #[inline(always)]
10018        fn inline_align(_context: fidl::encoding::Context) -> usize {
10019            8
10020        }
10021
10022        #[inline(always)]
10023        fn inline_size(_context: fidl::encoding::Context) -> usize {
10024            16
10025        }
10026    }
10027
10028    unsafe impl<D: fidl::encoding::ResourceDialect>
10029        fidl::encoding::Encode<RingBufferStartResponse, D> for &RingBufferStartResponse
10030    {
10031        unsafe fn encode(
10032            self,
10033            encoder: &mut fidl::encoding::Encoder<'_, D>,
10034            offset: usize,
10035            mut depth: fidl::encoding::Depth,
10036        ) -> fidl::Result<()> {
10037            encoder.debug_check_bounds::<RingBufferStartResponse>(offset);
10038            // Vector header
10039            let max_ordinal: u64 = self.max_ordinal_present();
10040            encoder.write_num(max_ordinal, offset);
10041            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10042            // Calling encoder.out_of_line_offset(0) is not allowed.
10043            if max_ordinal == 0 {
10044                return Ok(());
10045            }
10046            depth.increment()?;
10047            let envelope_size = 8;
10048            let bytes_len = max_ordinal as usize * envelope_size;
10049            #[allow(unused_variables)]
10050            let offset = encoder.out_of_line_offset(bytes_len);
10051            let mut _prev_end_offset: usize = 0;
10052            if 1 > max_ordinal {
10053                return Ok(());
10054            }
10055
10056            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10057            // are envelope_size bytes.
10058            let cur_offset: usize = (1 - 1) * envelope_size;
10059
10060            // Zero reserved fields.
10061            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10062
10063            // Safety:
10064            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10065            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10066            //   envelope_size bytes, there is always sufficient room.
10067            fidl::encoding::encode_in_envelope_optional::<i64, D>(
10068                self.start_time.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
10069                encoder,
10070                offset + cur_offset,
10071                depth,
10072            )?;
10073
10074            _prev_end_offset = cur_offset + envelope_size;
10075
10076            Ok(())
10077        }
10078    }
10079
10080    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10081        for RingBufferStartResponse
10082    {
10083        #[inline(always)]
10084        fn new_empty() -> Self {
10085            Self::default()
10086        }
10087
10088        unsafe fn decode(
10089            &mut self,
10090            decoder: &mut fidl::encoding::Decoder<'_, D>,
10091            offset: usize,
10092            mut depth: fidl::encoding::Depth,
10093        ) -> fidl::Result<()> {
10094            decoder.debug_check_bounds::<Self>(offset);
10095            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10096                None => return Err(fidl::Error::NotNullable),
10097                Some(len) => len,
10098            };
10099            // Calling decoder.out_of_line_offset(0) is not allowed.
10100            if len == 0 {
10101                return Ok(());
10102            };
10103            depth.increment()?;
10104            let envelope_size = 8;
10105            let bytes_len = len * envelope_size;
10106            let offset = decoder.out_of_line_offset(bytes_len)?;
10107            // Decode the envelope for each type.
10108            let mut _next_ordinal_to_read = 0;
10109            let mut next_offset = offset;
10110            let end_offset = offset + bytes_len;
10111            _next_ordinal_to_read += 1;
10112            if next_offset >= end_offset {
10113                return Ok(());
10114            }
10115
10116            // Decode unknown envelopes for gaps in ordinals.
10117            while _next_ordinal_to_read < 1 {
10118                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10119                _next_ordinal_to_read += 1;
10120                next_offset += envelope_size;
10121            }
10122
10123            let next_out_of_line = decoder.next_out_of_line();
10124            let handles_before = decoder.remaining_handles();
10125            if let Some((inlined, num_bytes, num_handles)) =
10126                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10127            {
10128                let member_inline_size =
10129                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10130                if inlined != (member_inline_size <= 4) {
10131                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10132                }
10133                let inner_offset;
10134                let mut inner_depth = depth.clone();
10135                if inlined {
10136                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10137                    inner_offset = next_offset;
10138                } else {
10139                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10140                    inner_depth.increment()?;
10141                }
10142                let val_ref = self.start_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
10143                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
10144                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10145                {
10146                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10147                }
10148                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10149                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10150                }
10151            }
10152
10153            next_offset += envelope_size;
10154
10155            // Decode the remaining unknown envelopes.
10156            while next_offset < end_offset {
10157                _next_ordinal_to_read += 1;
10158                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10159                next_offset += envelope_size;
10160            }
10161
10162            Ok(())
10163        }
10164    }
10165
10166    impl RingBufferStopResponse {
10167        #[inline(always)]
10168        fn max_ordinal_present(&self) -> u64 {
10169            0
10170        }
10171    }
10172
10173    impl fidl::encoding::ValueTypeMarker for RingBufferStopResponse {
10174        type Borrowed<'a> = &'a Self;
10175        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10176            value
10177        }
10178    }
10179
10180    unsafe impl fidl::encoding::TypeMarker for RingBufferStopResponse {
10181        type Owned = Self;
10182
10183        #[inline(always)]
10184        fn inline_align(_context: fidl::encoding::Context) -> usize {
10185            8
10186        }
10187
10188        #[inline(always)]
10189        fn inline_size(_context: fidl::encoding::Context) -> usize {
10190            16
10191        }
10192    }
10193
10194    unsafe impl<D: fidl::encoding::ResourceDialect>
10195        fidl::encoding::Encode<RingBufferStopResponse, D> for &RingBufferStopResponse
10196    {
10197        unsafe fn encode(
10198            self,
10199            encoder: &mut fidl::encoding::Encoder<'_, D>,
10200            offset: usize,
10201            mut depth: fidl::encoding::Depth,
10202        ) -> fidl::Result<()> {
10203            encoder.debug_check_bounds::<RingBufferStopResponse>(offset);
10204            // Vector header
10205            let max_ordinal: u64 = self.max_ordinal_present();
10206            encoder.write_num(max_ordinal, offset);
10207            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10208            // Calling encoder.out_of_line_offset(0) is not allowed.
10209            if max_ordinal == 0 {
10210                return Ok(());
10211            }
10212            depth.increment()?;
10213            let envelope_size = 8;
10214            let bytes_len = max_ordinal as usize * envelope_size;
10215            #[allow(unused_variables)]
10216            let offset = encoder.out_of_line_offset(bytes_len);
10217            let mut _prev_end_offset: usize = 0;
10218
10219            Ok(())
10220        }
10221    }
10222
10223    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10224        for RingBufferStopResponse
10225    {
10226        #[inline(always)]
10227        fn new_empty() -> Self {
10228            Self::default()
10229        }
10230
10231        unsafe fn decode(
10232            &mut self,
10233            decoder: &mut fidl::encoding::Decoder<'_, D>,
10234            offset: usize,
10235            mut depth: fidl::encoding::Depth,
10236        ) -> fidl::Result<()> {
10237            decoder.debug_check_bounds::<Self>(offset);
10238            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10239                None => return Err(fidl::Error::NotNullable),
10240                Some(len) => len,
10241            };
10242            // Calling decoder.out_of_line_offset(0) is not allowed.
10243            if len == 0 {
10244                return Ok(());
10245            };
10246            depth.increment()?;
10247            let envelope_size = 8;
10248            let bytes_len = len * envelope_size;
10249            let offset = decoder.out_of_line_offset(bytes_len)?;
10250            // Decode the envelope for each type.
10251            let mut _next_ordinal_to_read = 0;
10252            let mut next_offset = offset;
10253            let end_offset = offset + bytes_len;
10254
10255            // Decode the remaining unknown envelopes.
10256            while next_offset < end_offset {
10257                _next_ordinal_to_read += 1;
10258                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10259                next_offset += envelope_size;
10260            }
10261
10262            Ok(())
10263        }
10264    }
10265
10266    impl RingBufferWatchDelayInfoResponse {
10267        #[inline(always)]
10268        fn max_ordinal_present(&self) -> u64 {
10269            if let Some(_) = self.delay_info {
10270                return 1;
10271            }
10272            0
10273        }
10274    }
10275
10276    impl fidl::encoding::ValueTypeMarker for RingBufferWatchDelayInfoResponse {
10277        type Borrowed<'a> = &'a Self;
10278        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10279            value
10280        }
10281    }
10282
10283    unsafe impl fidl::encoding::TypeMarker for RingBufferWatchDelayInfoResponse {
10284        type Owned = Self;
10285
10286        #[inline(always)]
10287        fn inline_align(_context: fidl::encoding::Context) -> usize {
10288            8
10289        }
10290
10291        #[inline(always)]
10292        fn inline_size(_context: fidl::encoding::Context) -> usize {
10293            16
10294        }
10295    }
10296
10297    unsafe impl<D: fidl::encoding::ResourceDialect>
10298        fidl::encoding::Encode<RingBufferWatchDelayInfoResponse, D>
10299        for &RingBufferWatchDelayInfoResponse
10300    {
10301        unsafe fn encode(
10302            self,
10303            encoder: &mut fidl::encoding::Encoder<'_, D>,
10304            offset: usize,
10305            mut depth: fidl::encoding::Depth,
10306        ) -> fidl::Result<()> {
10307            encoder.debug_check_bounds::<RingBufferWatchDelayInfoResponse>(offset);
10308            // Vector header
10309            let max_ordinal: u64 = self.max_ordinal_present();
10310            encoder.write_num(max_ordinal, offset);
10311            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10312            // Calling encoder.out_of_line_offset(0) is not allowed.
10313            if max_ordinal == 0 {
10314                return Ok(());
10315            }
10316            depth.increment()?;
10317            let envelope_size = 8;
10318            let bytes_len = max_ordinal as usize * envelope_size;
10319            #[allow(unused_variables)]
10320            let offset = encoder.out_of_line_offset(bytes_len);
10321            let mut _prev_end_offset: usize = 0;
10322            if 1 > max_ordinal {
10323                return Ok(());
10324            }
10325
10326            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10327            // are envelope_size bytes.
10328            let cur_offset: usize = (1 - 1) * envelope_size;
10329
10330            // Zero reserved fields.
10331            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10332
10333            // Safety:
10334            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10335            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10336            //   envelope_size bytes, there is always sufficient room.
10337            fidl::encoding::encode_in_envelope_optional::<DelayInfo, D>(
10338                self.delay_info
10339                    .as_ref()
10340                    .map(<DelayInfo as fidl::encoding::ValueTypeMarker>::borrow),
10341                encoder,
10342                offset + cur_offset,
10343                depth,
10344            )?;
10345
10346            _prev_end_offset = cur_offset + envelope_size;
10347
10348            Ok(())
10349        }
10350    }
10351
10352    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10353        for RingBufferWatchDelayInfoResponse
10354    {
10355        #[inline(always)]
10356        fn new_empty() -> Self {
10357            Self::default()
10358        }
10359
10360        unsafe fn decode(
10361            &mut self,
10362            decoder: &mut fidl::encoding::Decoder<'_, D>,
10363            offset: usize,
10364            mut depth: fidl::encoding::Depth,
10365        ) -> fidl::Result<()> {
10366            decoder.debug_check_bounds::<Self>(offset);
10367            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10368                None => return Err(fidl::Error::NotNullable),
10369                Some(len) => len,
10370            };
10371            // Calling decoder.out_of_line_offset(0) is not allowed.
10372            if len == 0 {
10373                return Ok(());
10374            };
10375            depth.increment()?;
10376            let envelope_size = 8;
10377            let bytes_len = len * envelope_size;
10378            let offset = decoder.out_of_line_offset(bytes_len)?;
10379            // Decode the envelope for each type.
10380            let mut _next_ordinal_to_read = 0;
10381            let mut next_offset = offset;
10382            let end_offset = offset + bytes_len;
10383            _next_ordinal_to_read += 1;
10384            if next_offset >= end_offset {
10385                return Ok(());
10386            }
10387
10388            // Decode unknown envelopes for gaps in ordinals.
10389            while _next_ordinal_to_read < 1 {
10390                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10391                _next_ordinal_to_read += 1;
10392                next_offset += envelope_size;
10393            }
10394
10395            let next_out_of_line = decoder.next_out_of_line();
10396            let handles_before = decoder.remaining_handles();
10397            if let Some((inlined, num_bytes, num_handles)) =
10398                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10399            {
10400                let member_inline_size =
10401                    <DelayInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10402                if inlined != (member_inline_size <= 4) {
10403                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10404                }
10405                let inner_offset;
10406                let mut inner_depth = depth.clone();
10407                if inlined {
10408                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10409                    inner_offset = next_offset;
10410                } else {
10411                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10412                    inner_depth.increment()?;
10413                }
10414                let val_ref = self.delay_info.get_or_insert_with(|| fidl::new_empty!(DelayInfo, D));
10415                fidl::decode!(DelayInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
10416                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10417                {
10418                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10419                }
10420                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10421                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10422                }
10423            }
10424
10425            next_offset += envelope_size;
10426
10427            // Decode the remaining unknown envelopes.
10428            while next_offset < end_offset {
10429                _next_ordinal_to_read += 1;
10430                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10431                next_offset += envelope_size;
10432            }
10433
10434            Ok(())
10435        }
10436    }
10437
10438    impl fidl::encoding::ValueTypeMarker for PacketStreamFormat {
10439        type Borrowed<'a> = &'a Self;
10440        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10441            value
10442        }
10443    }
10444
10445    unsafe impl fidl::encoding::TypeMarker for PacketStreamFormat {
10446        type Owned = Self;
10447
10448        #[inline(always)]
10449        fn inline_align(_context: fidl::encoding::Context) -> usize {
10450            8
10451        }
10452
10453        #[inline(always)]
10454        fn inline_size(_context: fidl::encoding::Context) -> usize {
10455            16
10456        }
10457    }
10458
10459    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PacketStreamFormat, D>
10460        for &PacketStreamFormat
10461    {
10462        #[inline]
10463        unsafe fn encode(
10464            self,
10465            encoder: &mut fidl::encoding::Encoder<'_, D>,
10466            offset: usize,
10467            _depth: fidl::encoding::Depth,
10468        ) -> fidl::Result<()> {
10469            encoder.debug_check_bounds::<PacketStreamFormat>(offset);
10470            encoder.write_num::<u64>(self.ordinal(), offset);
10471            match self {
10472            PacketStreamFormat::PcmFormat(ref val) => {
10473                fidl::encoding::encode_in_envelope::<fidl_fuchsia_audio__common::Format, D>(
10474                    <fidl_fuchsia_audio__common::Format as fidl::encoding::ValueTypeMarker>::borrow(val),
10475                    encoder, offset + 8, _depth
10476                )
10477            }
10478            PacketStreamFormat::Encoding(ref val) => {
10479                fidl::encoding::encode_in_envelope::<fidl_fuchsia_hardware_audio__common::Encoding, D>(
10480                    <fidl_fuchsia_hardware_audio__common::Encoding as fidl::encoding::ValueTypeMarker>::borrow(val),
10481                    encoder, offset + 8, _depth
10482                )
10483            }
10484            PacketStreamFormat::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
10485        }
10486        }
10487    }
10488
10489    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PacketStreamFormat {
10490        #[inline(always)]
10491        fn new_empty() -> Self {
10492            Self::__SourceBreaking { unknown_ordinal: 0 }
10493        }
10494
10495        #[inline]
10496        unsafe fn decode(
10497            &mut self,
10498            decoder: &mut fidl::encoding::Decoder<'_, D>,
10499            offset: usize,
10500            mut depth: fidl::encoding::Depth,
10501        ) -> fidl::Result<()> {
10502            decoder.debug_check_bounds::<Self>(offset);
10503            #[allow(unused_variables)]
10504            let next_out_of_line = decoder.next_out_of_line();
10505            let handles_before = decoder.remaining_handles();
10506            let (ordinal, inlined, num_bytes, num_handles) =
10507                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
10508
10509            let member_inline_size = match ordinal {
10510            1 => <fidl_fuchsia_audio__common::Format as fidl::encoding::TypeMarker>::inline_size(decoder.context),
10511            2 => <fidl_fuchsia_hardware_audio__common::Encoding as fidl::encoding::TypeMarker>::inline_size(decoder.context),
10512            0 => return Err(fidl::Error::UnknownUnionTag),
10513            _ => num_bytes as usize,
10514        };
10515
10516            if inlined != (member_inline_size <= 4) {
10517                return Err(fidl::Error::InvalidInlineBitInEnvelope);
10518            }
10519            let _inner_offset;
10520            if inlined {
10521                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
10522                _inner_offset = offset + 8;
10523            } else {
10524                depth.increment()?;
10525                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10526            }
10527            match ordinal {
10528                1 => {
10529                    #[allow(irrefutable_let_patterns)]
10530                    if let PacketStreamFormat::PcmFormat(_) = self {
10531                        // Do nothing, read the value into the object
10532                    } else {
10533                        // Initialize `self` to the right variant
10534                        *self = PacketStreamFormat::PcmFormat(fidl::new_empty!(
10535                            fidl_fuchsia_audio__common::Format,
10536                            D
10537                        ));
10538                    }
10539                    #[allow(irrefutable_let_patterns)]
10540                    if let PacketStreamFormat::PcmFormat(ref mut val) = self {
10541                        fidl::decode!(
10542                            fidl_fuchsia_audio__common::Format,
10543                            D,
10544                            val,
10545                            decoder,
10546                            _inner_offset,
10547                            depth
10548                        )?;
10549                    } else {
10550                        unreachable!()
10551                    }
10552                }
10553                2 => {
10554                    #[allow(irrefutable_let_patterns)]
10555                    if let PacketStreamFormat::Encoding(_) = self {
10556                        // Do nothing, read the value into the object
10557                    } else {
10558                        // Initialize `self` to the right variant
10559                        *self = PacketStreamFormat::Encoding(fidl::new_empty!(
10560                            fidl_fuchsia_hardware_audio__common::Encoding,
10561                            D
10562                        ));
10563                    }
10564                    #[allow(irrefutable_let_patterns)]
10565                    if let PacketStreamFormat::Encoding(ref mut val) = self {
10566                        fidl::decode!(
10567                            fidl_fuchsia_hardware_audio__common::Encoding,
10568                            D,
10569                            val,
10570                            decoder,
10571                            _inner_offset,
10572                            depth
10573                        )?;
10574                    } else {
10575                        unreachable!()
10576                    }
10577                }
10578                #[allow(deprecated)]
10579                ordinal => {
10580                    for _ in 0..num_handles {
10581                        decoder.drop_next_handle()?;
10582                    }
10583                    *self = PacketStreamFormat::__SourceBreaking { unknown_ordinal: ordinal };
10584                }
10585            }
10586            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
10587                return Err(fidl::Error::InvalidNumBytesInEnvelope);
10588            }
10589            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10590                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10591            }
10592            Ok(())
10593        }
10594    }
10595
10596    impl fidl::encoding::ValueTypeMarker for PacketStreamSupportedFormats {
10597        type Borrowed<'a> = &'a Self;
10598        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10599            value
10600        }
10601    }
10602
10603    unsafe impl fidl::encoding::TypeMarker for PacketStreamSupportedFormats {
10604        type Owned = Self;
10605
10606        #[inline(always)]
10607        fn inline_align(_context: fidl::encoding::Context) -> usize {
10608            8
10609        }
10610
10611        #[inline(always)]
10612        fn inline_size(_context: fidl::encoding::Context) -> usize {
10613            16
10614        }
10615    }
10616
10617    unsafe impl<D: fidl::encoding::ResourceDialect>
10618        fidl::encoding::Encode<PacketStreamSupportedFormats, D> for &PacketStreamSupportedFormats
10619    {
10620        #[inline]
10621        unsafe fn encode(
10622            self,
10623            encoder: &mut fidl::encoding::Encoder<'_, D>,
10624            offset: usize,
10625            _depth: fidl::encoding::Depth,
10626        ) -> fidl::Result<()> {
10627            encoder.debug_check_bounds::<PacketStreamSupportedFormats>(offset);
10628            encoder.write_num::<u64>(self.ordinal(), offset);
10629            match self {
10630            PacketStreamSupportedFormats::PcmFormat(ref val) => {
10631                fidl::encoding::encode_in_envelope::<PcmFormatSet, D>(
10632                    <PcmFormatSet as fidl::encoding::ValueTypeMarker>::borrow(val),
10633                    encoder, offset + 8, _depth
10634                )
10635            }
10636            PacketStreamSupportedFormats::SupportedEncodings(ref val) => {
10637                fidl::encoding::encode_in_envelope::<fidl_fuchsia_hardware_audio__common::SupportedEncodings, D>(
10638                    <fidl_fuchsia_hardware_audio__common::SupportedEncodings as fidl::encoding::ValueTypeMarker>::borrow(val),
10639                    encoder, offset + 8, _depth
10640                )
10641            }
10642            PacketStreamSupportedFormats::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
10643        }
10644        }
10645    }
10646
10647    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10648        for PacketStreamSupportedFormats
10649    {
10650        #[inline(always)]
10651        fn new_empty() -> Self {
10652            Self::__SourceBreaking { unknown_ordinal: 0 }
10653        }
10654
10655        #[inline]
10656        unsafe fn decode(
10657            &mut self,
10658            decoder: &mut fidl::encoding::Decoder<'_, D>,
10659            offset: usize,
10660            mut depth: fidl::encoding::Depth,
10661        ) -> fidl::Result<()> {
10662            decoder.debug_check_bounds::<Self>(offset);
10663            #[allow(unused_variables)]
10664            let next_out_of_line = decoder.next_out_of_line();
10665            let handles_before = decoder.remaining_handles();
10666            let (ordinal, inlined, num_bytes, num_handles) =
10667                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
10668
10669            let member_inline_size = match ordinal {
10670            1 => <PcmFormatSet as fidl::encoding::TypeMarker>::inline_size(decoder.context),
10671            2 => <fidl_fuchsia_hardware_audio__common::SupportedEncodings as fidl::encoding::TypeMarker>::inline_size(decoder.context),
10672            0 => return Err(fidl::Error::UnknownUnionTag),
10673            _ => num_bytes as usize,
10674        };
10675
10676            if inlined != (member_inline_size <= 4) {
10677                return Err(fidl::Error::InvalidInlineBitInEnvelope);
10678            }
10679            let _inner_offset;
10680            if inlined {
10681                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
10682                _inner_offset = offset + 8;
10683            } else {
10684                depth.increment()?;
10685                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10686            }
10687            match ordinal {
10688                1 => {
10689                    #[allow(irrefutable_let_patterns)]
10690                    if let PacketStreamSupportedFormats::PcmFormat(_) = self {
10691                        // Do nothing, read the value into the object
10692                    } else {
10693                        // Initialize `self` to the right variant
10694                        *self = PacketStreamSupportedFormats::PcmFormat(fidl::new_empty!(
10695                            PcmFormatSet,
10696                            D
10697                        ));
10698                    }
10699                    #[allow(irrefutable_let_patterns)]
10700                    if let PacketStreamSupportedFormats::PcmFormat(ref mut val) = self {
10701                        fidl::decode!(PcmFormatSet, D, val, decoder, _inner_offset, depth)?;
10702                    } else {
10703                        unreachable!()
10704                    }
10705                }
10706                2 => {
10707                    #[allow(irrefutable_let_patterns)]
10708                    if let PacketStreamSupportedFormats::SupportedEncodings(_) = self {
10709                        // Do nothing, read the value into the object
10710                    } else {
10711                        // Initialize `self` to the right variant
10712                        *self = PacketStreamSupportedFormats::SupportedEncodings(fidl::new_empty!(
10713                            fidl_fuchsia_hardware_audio__common::SupportedEncodings,
10714                            D
10715                        ));
10716                    }
10717                    #[allow(irrefutable_let_patterns)]
10718                    if let PacketStreamSupportedFormats::SupportedEncodings(ref mut val) = self {
10719                        fidl::decode!(
10720                            fidl_fuchsia_hardware_audio__common::SupportedEncodings,
10721                            D,
10722                            val,
10723                            decoder,
10724                            _inner_offset,
10725                            depth
10726                        )?;
10727                    } else {
10728                        unreachable!()
10729                    }
10730                }
10731                #[allow(deprecated)]
10732                ordinal => {
10733                    for _ in 0..num_handles {
10734                        decoder.drop_next_handle()?;
10735                    }
10736                    *self =
10737                        PacketStreamSupportedFormats::__SourceBreaking { unknown_ordinal: ordinal };
10738                }
10739            }
10740            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
10741                return Err(fidl::Error::InvalidNumBytesInEnvelope);
10742            }
10743            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10744                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10745            }
10746            Ok(())
10747        }
10748    }
10749}