blob: 3c90304101a099c00b4fdd898f488f69ad2a122e [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.media.target
<p>A library of protocols for routing media between devices.</p>
<p>This library is based on &quot;targets&quot;, which are devices or groups of devices
which can render media sessions. See <code>fuchsia.media.sessions2</code> for media
session details.</p>
<p>Through the <code>Discovery</code> protocol, clients can discover what media targets
are available on the network, and select them to render media sessions.</p>
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div>
## **PROTOCOLS**
## Discovery {#Discovery}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=28)*
<p>A protocol for discovering media targets.</p>
### BindGroupTarget {#Discovery.BindGroupTarget}
<p>Renders the media session specified by <code>session_id</code> on the set of
targets specified by <code>target_ids</code>.</p>
<p>This may create a new group target which contains all the specified
targets as members, if one does not exist. The group target may be
temporary, only existing for the lifetime of playback, and not
discoverable through <code>Discovery</code>.</p>
#### Request {#Discovery.BindGroupTarget_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>session_id</code></td>
<td>
<code><a class='link' href='../fuchsia.media.sessions2/'>fuchsia.media.sessions2</a>/<a class='link' href='../fuchsia.media.sessions2/#SessionId'>SessionId</a></code>
</td>
</tr>
<tr>
<td><code>target_ids</code></td>
<td>
<code>vector&lt;uint64&gt;[100]</code>
</td>
</tr>
</table>
#### Response {#Discovery.BindGroupTarget_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Selector_BindGroupTarget_Result'>Selector_BindGroupTarget_Result</a></code>
</td>
</tr>
</table>
### BindTarget {#Discovery.BindTarget}
<p>Renders the media session specified by <code>session_id</code> on the target
specified by <code>target_id</code>.</p>
#### Request {#Discovery.BindTarget_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>session_id</code></td>
<td>
<code><a class='link' href='../fuchsia.media.sessions2/'>fuchsia.media.sessions2</a>/<a class='link' href='../fuchsia.media.sessions2/#SessionId'>SessionId</a></code>
</td>
</tr>
<tr>
<td><code>target_id</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
</tr>
</table>
#### Response {#Discovery.BindTarget_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Selector_BindTarget_Result'>Selector_BindTarget_Result</a></code>
</td>
</tr>
</table>
### ConnectToTarget {#Discovery.ConnectToTarget}
<p>Connects to a target by id. Drops the given channel if no such
target exists.</p>
#### Request {#Discovery.ConnectToTarget_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>target_id</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
</tr>
<tr>
<td><code>target_request</code></td>
<td>
<code>request&lt;<a class='link' href='#Target'>Target</a>&gt;</code>
</td>
</tr>
</table>
### WatchSessionBindings {#Discovery.WatchSessionBindings}
<p>Watches for bindings of media sessions to targets.</p>
<p>A media session is rendered on the target to which it is bound.</p>
<p>Bindings are returned as deltas between the watch calls, leave a
request hanging to get the latest updates.</p>
#### Request {#Discovery.WatchSessionBindings_Request}
&lt;EMPTY&gt;
#### Response {#Discovery.WatchSessionBindings_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>event</code></td>
<td>
<code><a class='link' href='#SessionBindingsWatchEvent'>SessionBindingsWatchEvent</a></code>
</td>
</tr>
</table>
### WatchTargets {#Discovery.WatchTargets}
<p>Watches for changes to the set of registered targets. Leave a request
hanging to get replies when changes occur. New clients will be caught
up with the state of the world.</p>
<p>Targets are returned as deltas between the watch calls.</p>
#### Request {#Discovery.WatchTargets_Request}
&lt;EMPTY&gt;
#### Response {#Discovery.WatchTargets_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>targets_watch_event</code></td>
<td>
<code><a class='link' href='#TargetsWatchEvent'>TargetsWatchEvent</a></code>
</td>
</tr>
</table>
## Group {#Group}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=104)*
<p>A protocol for watching the members of a group.</p>
### WatchTargets {#Group.WatchTargets}
<p>Watches for changes to the set of registered targets. Leave a request
hanging to get replies when changes occur. New clients will be caught
up with the state of the world.</p>
<p>Targets are returned as deltas between the watch calls.</p>
#### Request {#Group.WatchTargets_Request}
&lt;EMPTY&gt;
#### Response {#Group.WatchTargets_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>targets_watch_event</code></td>
<td>
<code><a class='link' href='#TargetsWatchEvent'>TargetsWatchEvent</a></code>
</td>
</tr>
</table>
## GroupEditor {#GroupEditor}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=80)*
<p>A protocol for adding and removing members of a group target.</p>
### AddTarget {#GroupEditor.AddTarget}
<p>Adds a target to this group target.</p>
<p>If the added target is a group of devices, all the devices in that group
are added to this group. A group itself cannot be a member of a group.</p>
<p>Returns the id of the new target if a new group was created to fulfill this
request.</p>
#### Request {#GroupEditor.AddTarget_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>target_id</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
</tr>
</table>
#### Response {#GroupEditor.AddTarget_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#GroupEditor_AddTarget_Result'>GroupEditor_AddTarget_Result</a></code>
</td>
</tr>
</table>
### RemoveTarget {#GroupEditor.RemoveTarget}
<p>Removes a target from this group. Returns the id of the new target
if a new group was created to fulfill this request.</p>
#### Request {#GroupEditor.RemoveTarget_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>target_id</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
</tr>
</table>
#### Response {#GroupEditor.RemoveTarget_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#GroupEditor_RemoveTarget_Result'>GroupEditor_RemoveTarget_Result</a></code>
</td>
</tr>
</table>
## Selector {#Selector}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=172)*
<p>A protocol for selecting a media target. Commands on this protocol can
change the target on which a media session is rendered.</p>
### BindGroupTarget {#Selector.BindGroupTarget}
<p>Renders the media session specified by <code>session_id</code> on the set of
targets specified by <code>target_ids</code>.</p>
<p>This may create a new group target which contains all the specified
targets as members, if one does not exist. The group target may be
temporary, only existing for the lifetime of playback, and not
discoverable through <code>Discovery</code>.</p>
#### Request {#Selector.BindGroupTarget_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>session_id</code></td>
<td>
<code><a class='link' href='../fuchsia.media.sessions2/'>fuchsia.media.sessions2</a>/<a class='link' href='../fuchsia.media.sessions2/#SessionId'>SessionId</a></code>
</td>
</tr>
<tr>
<td><code>target_ids</code></td>
<td>
<code>vector&lt;uint64&gt;[100]</code>
</td>
</tr>
</table>
#### Response {#Selector.BindGroupTarget_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Selector_BindGroupTarget_Result'>Selector_BindGroupTarget_Result</a></code>
</td>
</tr>
</table>
### BindTarget {#Selector.BindTarget}
<p>Renders the media session specified by <code>session_id</code> on the target
specified by <code>target_id</code>.</p>
#### Request {#Selector.BindTarget_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>session_id</code></td>
<td>
<code><a class='link' href='../fuchsia.media.sessions2/'>fuchsia.media.sessions2</a>/<a class='link' href='../fuchsia.media.sessions2/#SessionId'>SessionId</a></code>
</td>
</tr>
<tr>
<td><code>target_id</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
</tr>
</table>
#### Response {#Selector.BindTarget_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Selector_BindTarget_Result'>Selector_BindTarget_Result</a></code>
</td>
</tr>
</table>
## Target {#Target}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=69)*
<p>A target is a device or group of devices on which media can be rendered,
such as a speaker which renders audio.</p>
### AddTarget {#Target.AddTarget}
<p>Adds a target to this group target.</p>
<p>If the added target is a group of devices, all the devices in that group
are added to this group. A group itself cannot be a member of a group.</p>
<p>Returns the id of the new target if a new group was created to fulfill this
request.</p>
#### Request {#Target.AddTarget_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>target_id</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
</tr>
</table>
#### Response {#Target.AddTarget_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#GroupEditor_AddTarget_Result'>GroupEditor_AddTarget_Result</a></code>
</td>
</tr>
</table>
### BindMemberVolumeControl {#Target.BindMemberVolumeControl}
<p>Binds to the target's volume control as a member of the given group.
The request channel is dropped if the target is not a member of the group.</p>
<p>This volume control influences the volume of this target only when it is
participating as a member of the group. This is used to adjust the balance
of volume among members of a group. These settings persist for the lifetime
of the target</p>
#### Request {#Target.BindMemberVolumeControl_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>group</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
</tr>
<tr>
<td><code>volume_control_request</code></td>
<td>
<code>request&lt;<a class='link' href='../fuchsia.media.audio/'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/#VolumeControl'>VolumeControl</a>&gt;</code>
</td>
</tr>
</table>
### BindVolumeControl {#Target.BindVolumeControl}
<p>Binds to the target's volume control. If this target is a group,
all member volumes are influenced. These settings persist
for the lifetime of the target.</p>
#### Request {#Target.BindVolumeControl_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>volume_control_request</code></td>
<td>
<code>request&lt;<a class='link' href='../fuchsia.media.audio/'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/#VolumeControl'>VolumeControl</a>&gt;</code>
</td>
</tr>
</table>
### RemoveTarget {#Target.RemoveTarget}
<p>Removes a target from this group. Returns the id of the new target
if a new group was created to fulfill this request.</p>
#### Request {#Target.RemoveTarget_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>target_id</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
</tr>
</table>
#### Response {#Target.RemoveTarget_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#GroupEditor_RemoveTarget_Result'>GroupEditor_RemoveTarget_Result</a></code>
</td>
</tr>
</table>
### WatchTargets {#Target.WatchTargets}
<p>Watches for changes to the set of registered targets. Leave a request
hanging to get replies when changes occur. New clients will be caught
up with the state of the world.</p>
<p>Targets are returned as deltas between the watch calls.</p>
#### Request {#Target.WatchTargets_Request}
&lt;EMPTY&gt;
#### Response {#Target.WatchTargets_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>targets_watch_event</code></td>
<td>
<code><a class='link' href='#TargetsWatchEvent'>TargetsWatchEvent</a></code>
</td>
</tr>
</table>
## VolumeControl {#VolumeControl}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=124)*
<p>A protocol to control the volume of target.</p>
### BindMemberVolumeControl {#VolumeControl.BindMemberVolumeControl}
<p>Binds to the target's volume control as a member of the given group.
The request channel is dropped if the target is not a member of the group.</p>
<p>This volume control influences the volume of this target only when it is
participating as a member of the group. This is used to adjust the balance
of volume among members of a group. These settings persist for the lifetime
of the target</p>
#### Request {#VolumeControl.BindMemberVolumeControl_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>group</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
</tr>
<tr>
<td><code>volume_control_request</code></td>
<td>
<code>request&lt;<a class='link' href='../fuchsia.media.audio/'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/#VolumeControl'>VolumeControl</a>&gt;</code>
</td>
</tr>
</table>
### BindVolumeControl {#VolumeControl.BindVolumeControl}
<p>Binds to the target's volume control. If this target is a group,
all member volumes are influenced. These settings persist
for the lifetime of the target.</p>
#### Request {#VolumeControl.BindVolumeControl_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>volume_control_request</code></td>
<td>
<code>request&lt;<a class='link' href='../fuchsia.media.audio/'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/#VolumeControl'>VolumeControl</a>&gt;</code>
</td>
</tr>
</table>
## **STRUCTS**
### GroupEditor_AddTarget_Response {#GroupEditor_AddTarget_Response data-text="GroupEditor_AddTarget_Response"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=90)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="GroupEditor_AddTarget_Response.target_change">
<td><code>target_change</code></td>
<td>
<code><a class='link' href='#TargetChange'>TargetChange</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### GroupEditor_RemoveTarget_Response {#GroupEditor_RemoveTarget_Response data-text="GroupEditor_RemoveTarget_Response"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=98)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="GroupEditor_RemoveTarget_Response.target_change">
<td><code>target_change</code></td>
<td>
<code><a class='link' href='#TargetChange'>TargetChange</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Selector_BindGroupTarget_Response {#Selector_BindGroupTarget_Response data-text="Selector_BindGroupTarget_Response"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=190)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Selector_BindGroupTarget_Response.target_id">
<td><code>target_id</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Selector_BindTarget_Response {#Selector_BindTarget_Response data-text="Selector_BindTarget_Response"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=178)*
&lt;EMPTY&gt;
### SessionBinding {#SessionBinding data-text="SessionBinding"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=52)*
<p>A binding between a session and a target, indicating the media session
is rendered on the target.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SessionBinding.session_id">
<td><code>session_id</code></td>
<td>
<code><a class='link' href='../fuchsia.media.sessions2/'>fuchsia.media.sessions2</a>/<a class='link' href='../fuchsia.media.sessions2/#SessionId'>SessionId</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SessionBinding.target_id">
<td><code>target_id</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### TargetChange {#TargetChange data-text="TargetChange"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=75)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="TargetChange.new_target_id">
<td><code>new_target_id</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
## **ENUMS**
### Error [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Error data-text="Error"}
Type: <code>uint32</code>
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=195)*
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="Error.NOT_A_GROUP">
<td><h3 id="Error.NOT_A_GROUP" class="add-link hide-from-toc">NOT_A_GROUP</h3></td>
<td><code>0</code></td>
<td></td>
</tr>
<tr id="Error.UNKNOWN_ON_DOMAIN">
<td><h3 id="Error.UNKNOWN_ON_DOMAIN" class="add-link hide-from-toc">UNKNOWN_ON_DOMAIN</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
<tr id="Error.CANNOT_BE_GROUPED">
<td><h3 id="Error.CANNOT_BE_GROUPED" class="add-link hide-from-toc">CANNOT_BE_GROUPED</h3></td>
<td><code>2</code></td>
<td></td>
</tr>
<tr id="Error.NOT_MEMBER_OF_GROUP">
<td><h3 id="Error.NOT_MEMBER_OF_GROUP" class="add-link hide-from-toc">NOT_MEMBER_OF_GROUP</h3></td>
<td><code>3</code></td>
<td></td>
</tr>
<tr id="Error.TRANSFER_FROM_TARGET_UNSUPPORTED">
<td><h3 id="Error.TRANSFER_FROM_TARGET_UNSUPPORTED" class="add-link hide-from-toc">TRANSFER_FROM_TARGET_UNSUPPORTED</h3></td>
<td><code>4</code></td>
<td></td>
</tr>
<tr id="Error.TRANSFER_TO_TARGET_UNSUPPORTED">
<td><h3 id="Error.TRANSFER_TO_TARGET_UNSUPPORTED" class="add-link hide-from-toc">TRANSFER_TO_TARGET_UNSUPPORTED</h3></td>
<td><code>5</code></td>
<td></td>
</tr>
<tr id="Error.MULTI_TARGET_PLAYBACK_UNSUPPORTED">
<td><h3 id="Error.MULTI_TARGET_PLAYBACK_UNSUPPORTED" class="add-link hide-from-toc">MULTI_TARGET_PLAYBACK_UNSUPPORTED</h3></td>
<td><code>6</code></td>
<td></td>
</tr>
</table>
## **TABLES**
### Description {#Description data-text="Description"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=146)*
<p>A description of a target.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Description.target_id">
<td><h3 id="Description.target_id" class="add-link hide-from-toc">1</h3></td>
<td><code>target_id</code></td>
<td>
<code><a class='link' href='#Id'>Id</a></code>
</td>
<td><p>Identifies the target.</p>
</td>
</tr>
<tr id="Description.capability_flags">
<td><h3 id="Description.capability_flags" class="add-link hide-from-toc">2</h3></td>
<td><code>capability_flags</code></td>
<td>
<code><a class='link' href='#CapabilityFlags'>CapabilityFlags</a></code>
</td>
<td><p>Enumerates of the interoperability features the device supports.</p>
</td>
</tr>
<tr id="Description.display_name">
<td><h3 id="Description.display_name" class="add-link hide-from-toc">3</h3></td>
<td><code>display_name</code></td>
<td>
<code><a class='link' href='#DisplayName'>DisplayName</a></code>
</td>
<td></td>
</tr>
<tr id="Description.metadata">
<td><h3 id="Description.metadata" class="add-link hide-from-toc">4</h3></td>
<td><code>metadata</code></td>
<td>
<code><a class='link' href='../fuchsia.media/'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/#Metadata'>Metadata</a></code>
</td>
<td></td>
</tr>
</table>
### SessionBindingsWatchEvent {#SessionBindingsWatchEvent data-text="SessionBindingsWatchEvent"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=57)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="SessionBindingsWatchEvent.updated">
<td><h3 id="SessionBindingsWatchEvent.updated" class="add-link hide-from-toc">1</h3></td>
<td><code>updated</code></td>
<td>
<code>vector&lt;<a class='link' href='#SessionBinding'>SessionBinding</a>&gt;</code>
</td>
<td><p>A list of active session bindings added or updated in the network
at any point in time.</p>
</td>
</tr>
<tr id="SessionBindingsWatchEvent.removed">
<td><h3 id="SessionBindingsWatchEvent.removed" class="add-link hide-from-toc">2</h3></td>
<td><code>removed</code></td>
<td>
<code>vector&lt;<a class='link' href='#SessionBinding'>SessionBinding</a>&gt;</code>
</td>
<td><p>A list of session bindings that are removed in the network since
notified.</p>
</td>
</tr>
</table>
### TargetsWatchEvent {#TargetsWatchEvent data-text="TargetsWatchEvent"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=115)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="TargetsWatchEvent.updated">
<td><h3 id="TargetsWatchEvent.updated" class="add-link hide-from-toc">1</h3></td>
<td><code>updated</code></td>
<td>
<code>vector&lt;<a class='link' href='#Description'>Description</a>&gt;</code>
</td>
<td><p>Targets added or updated on the network at any point in time.</p>
</td>
</tr>
<tr id="TargetsWatchEvent.removed">
<td><h3 id="TargetsWatchEvent.removed" class="add-link hide-from-toc">2</h3></td>
<td><code>removed</code></td>
<td>
<code>vector&lt;uint64&gt;</code>
</td>
<td><p>Targets that are removed since last notified.</p>
</td>
</tr>
</table>
## **UNIONS**
### GroupEditor_AddTarget_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#GroupEditor_AddTarget_Result data-text="GroupEditor_AddTarget_Result"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=90)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="GroupEditor_AddTarget_Result.response">
<td><h3 id="GroupEditor_AddTarget_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#GroupEditor_AddTarget_Response'>GroupEditor_AddTarget_Response</a></code>
</td>
<td></td>
</tr>
<tr id="GroupEditor_AddTarget_Result.err">
<td><h3 id="GroupEditor_AddTarget_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#Error'>Error</a></code>
</td>
<td></td>
</tr>
</table>
### GroupEditor_RemoveTarget_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#GroupEditor_RemoveTarget_Result data-text="GroupEditor_RemoveTarget_Result"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=98)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="GroupEditor_RemoveTarget_Result.response">
<td><h3 id="GroupEditor_RemoveTarget_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#GroupEditor_RemoveTarget_Response'>GroupEditor_RemoveTarget_Response</a></code>
</td>
<td></td>
</tr>
<tr id="GroupEditor_RemoveTarget_Result.err">
<td><h3 id="GroupEditor_RemoveTarget_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#Error'>Error</a></code>
</td>
<td></td>
</tr>
</table>
### Selector_BindGroupTarget_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Selector_BindGroupTarget_Result data-text="Selector_BindGroupTarget_Result"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=190)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Selector_BindGroupTarget_Result.response">
<td><h3 id="Selector_BindGroupTarget_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Selector_BindGroupTarget_Response'>Selector_BindGroupTarget_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Selector_BindGroupTarget_Result.err">
<td><h3 id="Selector_BindGroupTarget_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#Error'>Error</a></code>
</td>
<td></td>
</tr>
</table>
### Selector_BindTarget_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Selector_BindTarget_Result data-text="Selector_BindTarget_Result"}
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=178)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Selector_BindTarget_Result.response">
<td><h3 id="Selector_BindTarget_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Selector_BindTarget_Response'>Selector_BindTarget_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Selector_BindTarget_Result.err">
<td><h3 id="Selector_BindTarget_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#Error'>Error</a></code>
</td>
<td></td>
</tr>
</table>
## **BITS**
### CapabilityFlags [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#CapabilityFlags}
Type: <code>uint64</code>
*Defined in [fuchsia.media.target/target_discovery.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=156)*
<p>Capabilities of the target.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="CapabilityFlags.TRANSFER_TO">
<td><h3 id="CapabilityFlags.TRANSFER_TO" class="add-link hide-from-toc">TRANSFER_TO</h3></td>
<td>1</td>
<td><p>Indicates the target can receive a transfer of a
media session from another target.</p>
</td>
</tr>
<tr id="CapabilityFlags.TRANSFER_FROM">
<td><h3 id="CapabilityFlags.TRANSFER_FROM" class="add-link hide-from-toc">TRANSFER_FROM</h3></td>
<td>2</td>
<td><p>Indicates the target can transfer a media session
to another target.</p>
</td>
</tr>
<tr id="CapabilityFlags.MULTI_TARGET_PLAYBACK">
<td><h3 id="CapabilityFlags.MULTI_TARGET_PLAYBACK" class="add-link hide-from-toc">MULTI_TARGET_PLAYBACK</h3></td>
<td>4</td>
<td><p>Indicates the target can participate in rendering
media with other devices.</p>
</td>
</tr>
<tr id="CapabilityFlags.VIDEO">
<td><h3 id="CapabilityFlags.VIDEO" class="add-link hide-from-toc">VIDEO</h3></td>
<td>8</td>
<td><p>Indicates the target can render video.</p>
</td>
</tr>
</table>
## **TYPE ALIASES**
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="DisplayName">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=24">DisplayName</a></td>
<td>
<code>string</code>[<code>200</code>]</td>
<td><p>A user-visible name for a target to display in user interface or read
in voice interfaces.</p>
</td>
</tr>
<tr id="Id">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.media.target/target_discovery.fidl;l=20">Id</a></td>
<td>
<code>uint64</code></td>
<td><p>A unique id for a target.</p>
</td>
</tr>
</table>