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