A library of protocols for routing media between devices.
This library is based on "targets", which are devices or groups of devices
which can render media sessions. See fuchsia.media.sessions2 for media
session details.
Through the Discovery protocol, clients can discover what media targets
are available on the network, and select them to render media sessions.
PROTOCOLS
Discovery
Defined in fuchsia.media.target/target_discovery.fidl
A protocol for discovering media targets.
BindGroupTarget
Renders the media session specified by session_id on the set of
targets specified by target_ids.
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 Discovery.
Request
| Name | Type |
|---|---|
session_id |
fuchsia.media.sessions2/SessionId
|
target_ids |
vector<Id>:100
|
Response
| Name | Type |
|---|---|
payload |
Selector_BindGroupTarget_Result
|
BindTarget
Renders the media session specified by session_id on the target
specified by target_id.
Request
| Name | Type |
|---|---|
session_id |
fuchsia.media.sessions2/SessionId
|
target_id |
Id
|
Response
| Name | Type |
|---|---|
payload |
Selector_BindTarget_Result
|
ConnectToTarget
Connects to a target by id. Drops the given channel if no such target exists.
Request
| Name | Type |
|---|---|
target_id |
Id
|
target_request |
server_end:Target
|
WatchSessionBindings
Watches for bindings of media sessions to targets.
A media session is rendered on the target to which it is bound.
Bindings are returned as deltas between the watch calls, leave a request hanging to get the latest updates.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
event |
SessionBindingsWatchEvent
|
WatchTargets
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.
Targets are returned as deltas between the watch calls.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
targets_watch_event |
TargetsWatchEvent
|
Group
Defined in fuchsia.media.target/target_discovery.fidl
A protocol for watching the members of a group.
WatchTargets
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.
Targets are returned as deltas between the watch calls.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
targets_watch_event |
TargetsWatchEvent
|
GroupEditor
Defined in fuchsia.media.target/target_discovery.fidl
A protocol for adding and removing members of a group target.
AddTarget
Adds a target to this group target.
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.
Returns the id of the new target if a new group was created to fulfill this request.
Request
| Name | Type |
|---|---|
target_id |
Id
|
Response
| Name | Type |
|---|---|
payload |
GroupEditor_AddTarget_Result
|
RemoveTarget
Removes a target from this group. Returns the id of the new target if a new group was created to fulfill this request.
Request
| Name | Type |
|---|---|
target_id |
Id
|
Response
| Name | Type |
|---|---|
payload |
GroupEditor_RemoveTarget_Result
|
Selector
Defined in fuchsia.media.target/target_discovery.fidl
A protocol for selecting a media target. Commands on this protocol can change the target on which a media session is rendered.
BindGroupTarget
Renders the media session specified by session_id on the set of
targets specified by target_ids.
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 Discovery.
Request
| Name | Type |
|---|---|
session_id |
fuchsia.media.sessions2/SessionId
|
target_ids |
vector<Id>:100
|
Response
| Name | Type |
|---|---|
payload |
Selector_BindGroupTarget_Result
|
BindTarget
Renders the media session specified by session_id on the target
specified by target_id.
Request
| Name | Type |
|---|---|
session_id |
fuchsia.media.sessions2/SessionId
|
target_id |
Id
|
Response
| Name | Type |
|---|---|
payload |
Selector_BindTarget_Result
|
Target
Defined in fuchsia.media.target/target_discovery.fidl
A target is a device or group of devices on which media can be rendered, such as a speaker which renders audio.
AddTarget
Adds a target to this group target.
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.
Returns the id of the new target if a new group was created to fulfill this request.
Request
| Name | Type |
|---|---|
target_id |
Id
|
Response
| Name | Type |
|---|---|
payload |
GroupEditor_AddTarget_Result
|
BindMemberVolumeControl
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.
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
Request
| Name | Type |
|---|---|
group |
Id
|
volume_control_request |
server_end:fuchsia.media.audio/VolumeControl
|
BindVolumeControl
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.
Request
| Name | Type |
|---|---|
volume_control_request |
server_end:fuchsia.media.audio/VolumeControl
|
RemoveTarget
Removes a target from this group. Returns the id of the new target if a new group was created to fulfill this request.
Request
| Name | Type |
|---|---|
target_id |
Id
|
Response
| Name | Type |
|---|---|
payload |
GroupEditor_RemoveTarget_Result
|
WatchTargets
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.
Targets are returned as deltas between the watch calls.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
targets_watch_event |
TargetsWatchEvent
|
VolumeControl
Defined in fuchsia.media.target/target_discovery.fidl
A protocol to control the volume of target.
BindMemberVolumeControl
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.
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
Request
| Name | Type |
|---|---|
group |
Id
|
volume_control_request |
server_end:fuchsia.media.audio/VolumeControl
|
BindVolumeControl
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.
Request
| Name | Type |
|---|---|
volume_control_request |
server_end:fuchsia.media.audio/VolumeControl
|
STRUCTS
GroupEditor_AddTarget_Response
Defined in fuchsia.media.target/target_discovery.fidl
| Field | Type | Description | Default |
|---|---|---|---|
target_change |
TargetChange?
|
No default |
GroupEditor_RemoveTarget_Response
Defined in fuchsia.media.target/target_discovery.fidl
| Field | Type | Description | Default |
|---|---|---|---|
target_change |
TargetChange?
|
No default |
Selector_BindGroupTarget_Response
Defined in fuchsia.media.target/target_discovery.fidl
| Field | Type | Description | Default |
|---|---|---|---|
target_id |
Id
|
No default |
Selector_BindTarget_Response
Defined in fuchsia.media.target/target_discovery.fidl
<EMPTY>
SessionBinding
Defined in fuchsia.media.target/target_discovery.fidl
A binding between a session and a target, indicating the media session is rendered on the target.
| Field | Type | Description | Default |
|---|---|---|---|
session_id |
fuchsia.media.sessions2/SessionId
|
No default | |
target_id |
Id
|
No default |
TargetChange
Defined in fuchsia.media.target/target_discovery.fidl
| Field | Type | Description | Default |
|---|---|---|---|
new_target_id |
Id
|
No default |
ENUMS
Error strict
Type: uint32
Defined in fuchsia.media.target/target_discovery.fidl
| Name | Value | Description |
|---|---|---|
NOT_A_GROUP |
0 |
|
UNKNOWN_ON_DOMAIN |
1 |
|
CANNOT_BE_GROUPED |
2 |
|
NOT_MEMBER_OF_GROUP |
3 |
|
TRANSFER_FROM_TARGET_UNSUPPORTED |
4 |
|
TRANSFER_TO_TARGET_UNSUPPORTED |
5 |
|
MULTI_TARGET_PLAYBACK_UNSUPPORTED |
6 |
TABLES
Description
Defined in fuchsia.media.target/target_discovery.fidl
A description of a target.
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
target_id |
Id
|
Identifies the target. |
2 |
capability_flags |
CapabilityFlags
|
Enumerates of the interoperability features the device supports. |
3 |
display_name |
DisplayName
|
|
4 |
metadata |
fuchsia.media/Metadata
|
SessionBindingsWatchEvent
Defined in fuchsia.media.target/target_discovery.fidl
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
updated |
vector<SessionBinding>
|
A list of active session bindings added or updated in the network at any point in time. |
2 |
removed |
vector<SessionBinding>
|
A list of session bindings that are removed in the network since notified. |
TargetsWatchEvent
Defined in fuchsia.media.target/target_discovery.fidl
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
updated |
vector<Description>
|
Targets added or updated on the network at any point in time. |
2 |
removed |
vector<Id>
|
Targets that are removed since last notified. |
UNIONS
GroupEditor_AddTarget_Result strict
Defined in fuchsia.media.target/target_discovery.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
GroupEditor_AddTarget_Response
|
|
2 |
err |
Error
|
GroupEditor_RemoveTarget_Result strict
Defined in fuchsia.media.target/target_discovery.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
GroupEditor_RemoveTarget_Response
|
|
2 |
err |
Error
|
Selector_BindGroupTarget_Result strict
Defined in fuchsia.media.target/target_discovery.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
Selector_BindGroupTarget_Response
|
|
2 |
err |
Error
|
Selector_BindTarget_Result strict
Defined in fuchsia.media.target/target_discovery.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
Selector_BindTarget_Response
|
|
2 |
err |
Error
|
BITS
CapabilityFlags strict
Type: uint64
Defined in fuchsia.media.target/target_discovery.fidl
Capabilities of the target.
| Name | Value | Description |
|---|---|---|
TRANSFER_TO |
1 | Indicates the target can receive a transfer of a media session from another target. |
TRANSFER_FROM |
2 | Indicates the target can transfer a media session to another target. |
MULTI_TARGET_PLAYBACK |
4 | Indicates the target can participate in rendering media with other devices. |
VIDEO |
8 | Indicates the target can render video. |
ALIASES
| Name | Value | Description |
|---|---|---|
| DisplayName |
string[200] |
A user-visible name for a target to display in user interface or read in voice interfaces. |
| Id |
uint64 |
A unique id for a target. |