fuchsia.media.sessions2

PROTOCOLS

SessionControl

Defined in fuchsia.media.sessions2/discovery.fidl

Controls a media session and views its status.

The channel will close if the media session is stopped.

Play

Plays media.

Request

NameType

Pause

Pauses playback and retains position in media

Request

NameType

Stop

Stops playback. The session should close.

Request

NameType

Seek

Seeks to a specific position in media. Implementations are free to enter an error state if the position is out of bounds. position is an offset from the beginning of the media.

Request

NameType
position zx/duration

SkipForward

Skips forward in media by the player's default skip amount.

Request

NameType

SkipReverse

Skips in reverse in media by the player's default skip amount.

Request

NameType

NextItem

Changes media to the next item (e.g. next song in playlist).

Request

NameType

PrevItem

Changes media to the previous item.

Request

NameType

SetPlaybackRate

Sets the playback rate of the media. This will not change the playback mode.

Request

NameType
playback_rate float32

SetRepeatMode

Sets repeat mode to any of the supported repeat modes.

Request

NameType
repeat_mode RepeatMode

SetShuffleMode

Sets shuffle mode.

Request

NameType
shuffle_on bool

BindVolumeControl

Binds to the session's volume control for control and notifications.

Request

NameType
volume_control_request request<fuchsia.media.audio/VolumeControl>

WatchStatus

Watches the session status. Leave a request hanging to receive a reply when the session status changes. The first request will be answered immediately with the current state.

Request

NameType

Response

NameType
session_info_delta SessionInfoDelta

SessionObserver

Defined in fuchsia.media.sessions2/discovery.fidl

Views a media session's status.

The channel will close if the media session is stopped.

WatchStatus

Watches the session status. Leave a request hanging to receive a reply when the session status changes. The first request will be answered immediately with the current state.

Request

NameType

Response

NameType
session_info_delta SessionInfoDelta

SessionsWatcher

Defined in fuchsia.media.sessions2/discovery.fidl

SessionsWatcher watches the collection of published sessions.

SessionUpdated

Called by the registry service when a session is updated. On first connection, this will be called as many times as needed to communicate the state of the world.

SessionsWatcher must reply to acknowledge receipt of the session info delta. Delinquent watchers who do not reply will eventually be disconnected.

Request

NameType
session_id SessionId
session_info_delta SessionInfoDelta

Response

NameType

SessionRemoved

Called by the registry service when a session is removed from the registered collection.

SessionsWatcher must reply to acknlowledge receipt of the session removal. Delinquent watchers who do not reply will eventually be disconnected.

Request

NameType
session_id SessionId

Response

NameType

Discovery

Defined in fuchsia.media.sessions2/discovery.fidl

Discovery observes the collection of published media sessions and connects clients to them.

WatchSessions

Connects a session watcher configured with the given options.

Request

NameType
watch_options WatchOptions
session_watcher SessionsWatcher

ConnectToSession

Connects to a SessionControl for session_id if present. Drops the given channel otherwise.

Request

NameType
session_id SessionId
session_control_request request<SessionControl>

ObserverDiscovery

Defined in fuchsia.media.sessions2/discovery.fidl

ObserverDiscovery observes the collection of published media sessions and connects clients to them for observation without playback controls.

WatchSessions

Connects a session watcher configured with the given options.

Request

NameType
watch_options WatchOptions
sessions_watcher SessionsWatcher

ConnectToSession

Connects to a SessionObserver for session_id if present. Drops the given channel otherwise.

Request

NameType
session_id SessionId
session_request request<SessionObserver>

ActiveSession

Defined in fuchsia.media.sessions2/discovery.fidl

A protocol for watching the current active media session on the device.

The currently active media session is the most recent existing media session to announce a "Playing" state on the local device, even if it is now paused.

WatchActiveSession

Watches the active session. The first request will be answered immediately with the current active session. Always leave a request hanging to receive a reply when the active session changes.

Request

NameType

Response

NameType
session SessionControl?

PlayerControl

Defined in fuchsia.media.sessions2/player.fidl

Controls for a media player.

Play

Plays media.

Request

NameType

Pause

Pauses playback and retains position in media

Request

NameType

Stop

Stops playback. The session should close.

Request

NameType

Seek

Seeks to a specific position in media. Implementations are free to enter an error state if the position is out of bounds. position is an offset from the beginning of the media.

Request

NameType
position zx/duration

SkipForward

Skips forward in media by the player's default skip amount.

Request

NameType

SkipReverse

Skips in reverse in media by the player's default skip amount.

Request

NameType

NextItem

Changes media to the next item (e.g. next song in playlist).

Request

NameType

PrevItem

Changes media to the previous item.

Request

NameType

SetPlaybackRate

Sets the playback rate of the media. This will not change the playback mode.

Request

NameType
playback_rate float32

SetRepeatMode

Sets repeat mode to any of the supported repeat modes.

Request

NameType
repeat_mode RepeatMode

SetShuffleMode

Sets shuffle mode.

Request

NameType
shuffle_on bool

BindVolumeControl

Binds to the session's volume control for control and notifications.

Request

NameType
volume_control_request request<fuchsia.media.audio/VolumeControl>

Player

Defined in fuchsia.media.sessions2/player.fidl

Player is a handle for a media player. Unsupported commands are no-ops. Consult PlaybackCapabilities, sent by to learn which commands are supported.

Play

Plays media.

Request

NameType

Pause

Pauses playback and retains position in media

Request

NameType

Stop

Stops playback. The session should close.

Request

NameType

Seek

Seeks to a specific position in media. Implementations are free to enter an error state if the position is out of bounds. position is an offset from the beginning of the media.

Request

NameType
position zx/duration

SkipForward

Skips forward in media by the player's default skip amount.

Request

NameType

SkipReverse

Skips in reverse in media by the player's default skip amount.

Request

NameType

NextItem

Changes media to the next item (e.g. next song in playlist).

Request

NameType

PrevItem

Changes media to the previous item.

Request

NameType

SetPlaybackRate

Sets the playback rate of the media. This will not change the playback mode.

Request

NameType
playback_rate float32

SetRepeatMode

Sets repeat mode to any of the supported repeat modes.

Request

NameType
repeat_mode RepeatMode

SetShuffleMode

Sets shuffle mode.

Request

NameType
shuffle_on bool

BindVolumeControl

Binds to the session's volume control for control and notifications.

Request

NameType
volume_control_request request<fuchsia.media.audio/VolumeControl>

WatchInfoChange

Leave hanging to receive a response when the player's status changes.

Request

NameType

Response

NameType
player_info_delta PlayerInfoDelta

Publisher

Defined in fuchsia.media.sessions2/publisher.fidl

Publisher publishes media players so they may be discovered and controlled by clients who have permission to do so.

PublishPlayer

Request

NameType
player Player
registration PlayerRegistration

Publish

Request

NameType
player Player
registration PlayerRegistration

Response

NameType
session_id SessionId

STRUCTS

ImageSizeVariant

Defined in fuchsia.media.sessions2/images.fidl

A variant of an image at a specific size.

NameTypeDescriptionDefault
url Url No default
width uint32 No default
height uint32 No default

ENUMS

MediaImageType

Type: uint32

Defined in fuchsia.media.sessions2/images.fidl

NameValueDescription
ARTWORK 0

Artwork for the playing media.

SOURCE_ICON 1

An icon for the source of the playing media (e.g. the player or streaming service).

ContentType

Type: uint32

Defined in fuchsia.media.sessions2/player.fidl

The type of content playing back, which should be set to the largest applicable value.

NameValueDescription
OTHER 1
AUDIO 2
VIDEO 3
MUSIC 4
TV_SHOW 5
MOVIE 6

PlayerState

Type: uint32

Defined in fuchsia.media.sessions2/player.fidl

State of a media player.

NameValueDescription
IDLE 0

The initial state of a session if there is no associated media.

PLAYING 1
PAUSED 2
BUFFERING 3
ERROR 4

The player cannot recover from this state and will close.

Error

Type: uint32

Defined in fuchsia.media.sessions2/player.fidl

NameValueDescription
OTHER 1

RepeatMode

Type: uint32

Defined in fuchsia.media.sessions2/player.fidl

Modes of repeating playback of the current media.

NameValueDescription
OFF 0

No repeat.

GROUP 1

Repeat the relevant group of media (e.g. playlist).

SINGLE 2

Repeat the currently playing media.

InterruptionBehavior

Type: uint32

Defined in fuchsia.media.sessions2/player.fidl

The behavior enforced on the player when it is interrupted, such as by an alarm.

Interruptions are detected using the player's usage.

By default the interruption behavior is NONE.

NameValueDescription
NONE 0

Interruptions have no effect on the player and it may continue in spite of reduced audibility.

PAUSE 1

With this behavior, when playback is interrupted, the player will be paused until the interruption is over, so the user does not miss any content.

TABLES

SessionInfoDelta

Defined in fuchsia.media.sessions2/discovery.fidl

SessionInfoDelta holds a description of a media session.

OrdinalNameTypeDescription
1 domain Domain

The domain on which the session takes place. A domain identifies a set of mutually compatible media targets and sessions; sessions on a domain may be played back on targets of the same domain.

This field is always present.

2 is_local bool

Whether the source of the media playback is on this device.

This field is present only if known.

3 is_locally_active bool

If this is true, the playback is taking place local to the device. Playing on the device speaker is local, playing on a remote speaker is not. This is only set when the session is playing back; a paused session is not active.

This field is always present.

4 player_status PlayerStatus

The status of the player.

This field is always present.

5 metadata fuchsia.media/Metadata

Metadata describing the media session.

This field is always present.

6 media_images vector<MediaImage>

Images associated with the media or its source.

This field is always present.

7 player_capabilities PlayerCapabilities

The capabilities the player of the media implements.

This field is always present.

WatchOptions

Defined in fuchsia.media.sessions2/discovery.fidl

Options that specify which sessions are watched when watching the collection.

The watched set is the set of sessions which satisfies all options.

OrdinalNameTypeDescription
1 only_active bool

Watch only the active session. Watches all if not set.

2 allowed_sessions vector<uint64>[1000]

Watch only sessions with these allowlisted ids. Watches all if not set.

MediaImage

Defined in fuchsia.media.sessions2/images.fidl

An image for playing media.

OrdinalNameTypeDescription
1 image_type MediaImageType
2 sizes vector<ImageSizeVariant>[16]

Available variants of the image.

PlayerStatus

Defined in fuchsia.media.sessions2/player.fidl

Status of a media player.

OrdinalNameTypeDescription
1 duration zx/duration

Total duration of playing media.

Omit if not known or not applicable.

8 is_live bool

Whether the playing media is live (such as television or a live stream).

If omitted, the default is false.

2 player_state PlayerState

State of the player.

Will always be present.

3 timeline_function fuchsia.media/TimelineFunction

A playback function that describes the position and rate of play through the media as a function of CLOCK_MONOTONIC.

Include in order to render a position in media timeline for users. Optional.

4 repeat_mode RepeatMode

Repeat mode of the player.

Will always be present.

5 shuffle_on bool

Shuffle mode of the player.

Will always be present.

6 content_type ContentType

The type of content playing back.

Will always be present.

7 error Error

An error the player may have encountered.

Should only be present in case of error.

PlayerCapabilities

Defined in fuchsia.media.sessions2/player.fidl

PlaybackCapabilities enumerates the capabilities of a media player, and corresponds to the control commands it can execute.

OrdinalNameTypeDescription
1 flags PlayerCapabilityFlags

PlayerInfoDelta

Defined in fuchsia.media.sessions2/player.fidl

When emitted, fields that have changed should be set. The first emission to a new client should be a snapshot.

OrdinalNameTypeDescription
1 local bool

Whether the entry point for the media into our device network is the local machine; this should be true if this is the device streaming from a music service, but false or omitted if this machine is just receiving an audio stream to act as a speaker.

If omitted, the previous value is retained. If no value is ever sent, the default is true.

2 player_status PlayerStatus

The status of the player.

If omitted, the previous status is retained. This must be included at least once.

3 metadata fuchsia.media/Metadata

The metadata of the playing media.

If omitted, the previous metadata is retained. Including this at least once for each new media is highly recommended.

4 media_images vector<MediaImage>[16]

The images associated with the playing media.

If omitted, the previous media images are retained. Send an empty vector to clear media images.

5 player_capabilities PlayerCapabilities

The capabilities of the player.

If omitted, the previous capabilities are retained. This must be sent at least once.

6 interruption_behavior InterruptionBehavior

The behavior the player would like to engage in when interrupted by something, such as an alarm.

If omitted, the previous behavior is retained. If no value is ever sent, the default is NONE.

PlayerRegistration

Defined in fuchsia.media.sessions2/publisher.fidl

All information required by the media session registry service to register a player so that clients may observe its status and control it.

OrdinalNameTypeDescription
1 domain Domain

The domain on which the player exists. Unset if it is the native Fuchsia domain.

2 usage fuchsia.media/AudioRenderUsage

The usage of the player's audio output. By default, this is assumed to be MEDIA.

BITS

PlayerCapabilityFlags

Type: uint32

NameValueDescription
PLAY 1

If set, the player can Play().

PAUSE 4

If set, the player can Pause().

SEEK 8

If set, the player can Seek().

SKIP_FORWARD 16

If set, the player can SkipForward().

SKIP_REVERSE 32

If set, the player can SkipReverse().

SHUFFLE 64

If set, the player can shuffle media.

CHANGE_TO_NEXT_ITEM 128
CHANGE_TO_PREV_ITEM 256
HAS_GAIN_CONTROL 512

If set, the player can BindGainControl().

REPEAT_GROUPS 1024

If set, the player can repeat groups.

REPEAT_SINGLE 2048

If set, the player can repeat single media items.

TYPE ALIASES

NameValueDescription
SessionId uint64
Url string
Domain string

A domain identifies the ecosystem in which the session takes place.

Domains should take the form of

`domain://<unique name for protocol>.version`

The | symbol is reserved and should not be used in a domain string.