// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.hardware.audio;

/// For an overview see
/// [Audio Driver Streaming Interface](https://fuchsia.dev/fuchsia-src/concepts/drivers/driver_architectures/audio_drivers/audio_streaming).
protocol StreamConfigConnector {
    /// Connect to a `StreamConfig` protocol.
    /// This method allows a component to serve FIDL outside the devhost's control.
    Connect(resource struct {
        protocol server_end:StreamConfig;
    });
};
