Skip to main content

fidl_fuchsia_audio_device_common/
fidl_fuchsia_audio_device_common.rs

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