| // Copyright 2021 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.audio; |
| |
| // Note: These definitions are a temporary part of the vnext prototype. The current plan is to |
| // provide no product-generic access to audio rendering capability. |
| // TODO(dalesat): remove/update |
| |
| /// Used to create a local audio consumer with conversion capabilities. |
| @discoverable |
| protocol LocalConsumerCreator { |
| /// Creates a local audio consumer with conversion capabilities. |
| /// |
| /// + request `usage` the intended usage of the consumer. |
| /// + request `consumer_server_end` the server end of the `Consumer` channel connecting the |
| // client to the consumer. |
| CreateLocalConsumer(resource struct { |
| usage ConsumerUsage; |
| consumer_server_end server_end:Consumer; |
| }); |
| }; |
| |
| /// Used to create a local audio consumer with no conversion capabilities (renders uncompressed |
| /// streams only). |
| @discoverable |
| protocol BasicLocalConsumerCreator { |
| /// Creates a basic audio local consumer. |
| /// |
| /// + request `usage` the intended usage of the consumer. |
| /// + request `consumer_server_end` the server end of the `Consumer` channel connecting the |
| // client to the consumer. |
| CreateBasicLocalConsumer(resource struct { |
| usage ConsumerUsage; |
| consumer_server_end server_end:Consumer; |
| }); |
| }; |
| |
| /// Usage annotating the purpose of an audio stream. |
| type ConsumerUsage = strict enum { |
| /// Stream is intended to be used for ambient or background sound. Streams |
| /// that can be interrupted without consequence should use this. |
| BACKGROUND = 0; |
| |
| /// Stream is intended to be used for normal functionality. Streams that |
| /// are part of normal functionality should use this. |
| MEDIA = 1; |
| |
| /// Stream is intended to interrupt any ongoing function of the device. |
| /// Streams that are used for interruptions like notifications should use |
| /// this. |
| INTERRUPTION = 2; |
| |
| /// Stream is for interaction with a system agent. This should be used |
| /// in response to a user initiated trigger. |
| SYSTEM_AGENT = 3; |
| |
| /// Stream is intended to be used for some form of real time user to user |
| /// communication. Voice/Video chat should use this. |
| COMMUNICATION = 4; |
| }; |