AirPlay Server Platform APIs
IntroductionPlatform APIs related to AirPlay Server. Functions
AirPlayReceiverServerPostEventPost events to AirPlay stack to notify of platform changes OSStatus AirPlayReceiverServerPostEvent( CFTypeRef inServer, CFStringRef inEvent, CFTypeRef inQualifier, CFDictionaryRef inParams ); ParametersReturn ValuekNoErr if successful or an error code indicating failure. DiscussionPlatform should call this function to notify AirPlay stack of the following events:
inEvent
-------
- kAirPlayEvent_PrefsChanged
Notify AirPlay about change in accessory preference like password change, name change etc.
AirPlayReceiverServerSendDACPCommandSends a DACP command from the accessory to the controller. OSStatus AirPlayReceiverServerSendDACPCommand( CFTypeRef inServer, CFStringRef inCommand ); ParametersReturn ValuekNoErr if successful or an error code indicating failure. DiscussionPlatform should call this function to send DACP commands to the controlling device.
Action DACP Command String Comment
------ ------------------- -------
Play kDACPCommandStr_Play Start playback of the current AirPlay session (only for separate play button).
Stop kDACPCommandStr_Stop Stop playback of the current AirPlay session.
Pause kDACPCommandStr_Pause Pause playback of the current AirPlay session (only for separate pause button).
Pause Toggle kDACPCommandStr_PlayPause Toggle between play and pause of current AirPlay session (only for combined pause/play button).
Next Item kDACPCommandStr_NextItem Go to the next song in the playlist.
Previous Item kDACPCommandStr_PrevItem Go to the previous song in the playlist.
Repeat Toggle kDACPCommandStr_RepeatAdvance Repeat Advance.
Shuffle Toggle kDACPCommandStr_ShuffleToggle Shuffle Toggle.
Volume Up kDACPCommandStr_VolumeUp Raise the volume of the current AirPlay session.
Volume Down kDACPCommandStr_VolumeDown Lower the volume of the current AirPlay session.
Set Propety kDACPCommandStr_SetProperty Set the following properties:
Volume Level kDACPProperty_DeviceVolume Set the volume to a specific level
- Accessory should call the following when the user unmutes the accessory:
AirPlayReceiverServerSendDACPCommand(kDACPCommandStr_SetProperty kDACPProperty_DeviceVolume "=-144.0")
Note that the accessory should also remember the volume level before the mute, so that volume can be restored to that level when user unmutes in the future. - Accessory should call the following when the user unmutes the accessory:
AirPlayReceiverServerSendDACPCommand(kDACPCommandStr_SetProperty kDACPProperty_DeviceVolume "=<previous volume level>")
- Accessory should call the following to set volume to a specific level.
AirPlayReceiverServerSendDACPCommand(kDACPCommandStr_SetProperty kDACPProperty_DeviceVolume "=<value>")
Note that volume level mentioned above is a floating-point dB attenuation value, where 0.0 is full volume and -144.0 is completely muted. The practical volume range utilized for the AirPlay stream has a basis of -30dB to 0dB with a special cased mute level of -144dB (linear volume of 0) in order to avoid infinities. The following equations can be used to convert between a dB value and a linear volume:
linear volume = pow( 10, dB / 20 )
dB value = 20 * log10( linear volume )
- Accessory should do the following when switching away from an active AirPlay session, to ensure that the sender device is notified of the audio input switching away from AirPlay.
AirPlayReceiverServerSendDACPCommand(kDACPCommandStr_SetProperty kDACPProperty_DevicePreventPlayback "=1")
AirPlayReceiverServerSendDACPCommand(kDACPCommandStr_SetProperty kDACPProperty_DeviceBusy "=1")
AirPlayReceiverServerSendDACPCommand(kDACPCommandStr_SetProperty kDACPProperty_DevicePreventPlayback "=0")
- Accessory should do the following when switching into AirPlay input when AirPlay session is inactive, to ensure that the sender device is notified of the audio input switching to AirPlay.
AirPlayReceiverServerSendDACPCommand(kDACPCommandStr_SetProperty kDACPProperty_DeviceBusy "=0")
|