AVS Device SDK Release Notes 3.0
The following release notes contain details about the Alexa Voice Service (AVS) Device SDK, including feature enhancements, updates, and resolved issues.
Release date: Sep 30, 2022
Device makers who implemented the Alexa Smart Screen SDK should see Upgrade from Alexa Smart Screen SDK 2.X to AVS Device SDK 3.0 for details on breaking changes.
- Renamed the
LibSampleAppis renamed to
SampleApplicationsdirectory contains three subdirectories:
- Provided a Go Home Launcher for the IPC Server Sample App.
- Added Video Device Control (VDC), which allows users to control devices and consume video content without invoking a specific skill. For details about integrating the VDC support in the SDK for your device, see AVS Device SDK Video Device Control.
LiveViewControllerCapability Agent (CA) for handling the
Alexa.Camera.LiveViewControllerinterface. This feature needs restricted access adapters that aren't available on the public GitHub distribution. For details, see What's New in Alexa Voice Service Device SDK 3.0.
- Added the Alexa Presentation capability agents to handle the
APLRuntimeInterfacefor allowing APL CA to render APL content.
BaseAPLCapabilityAgentfor use by the Alexa Presentation Language (APL) CA.
- Added a new
AlexaPresentationCA for reporting presentation states to the AVS.
- Added the ability for APL CA Observers used by the Presentation Orchestrator to modify the presentation lifespan.
BluetoothMediaSessionHandlerInterfaceto notify Bluetooth media streaming state and get callbacks for any transport control state change.
APLRuntimeInterfacefor allowing APL CA to render APL content.
- Added the new configurable
SDKClientso that you can add and remove specific Alexa features to your device. For details, see Configurable SDKClient.
- Added out-of-box alerts and speaker volumes, for which the default is set by you in the configuration file
AlexaClientSDKConfig.jsonand loaded from persistent storage. Four new optional parameters are supported:
speakerManagerCapabilityAgent.restoreMuteState. For details, see AlexaClientSDKConfig.
- Added new locale combinations in the
AlexaClientSDKConfig.jsonfile. For details, see AlexaClientSDKConfig.
- Added new methods,
RegistrationManagerobjects. These are non-manufactory factory methods to instantiate objects.
AggregatedPowerResourceManagerto use the
releasePowerResourcemethods from the new
PowerResourceManagerInterfaceto reduce latency. Previously,
releasePowerResourcefrom the legacy
- Enhanced the
AlexaInterfaceMessageSenderInterfaceto allow non DefaultClient CAs to send V3 style directive response events.
- Modified the
FinallyGuardclass to accept r-value reference for a Lambda object. This enhancement reduces memory footprint and improves performance.
- Redefined all logging tags as macros to reduce memory footprint and code size. Previously,
std::stringas a tag parameter. Now, the logging API is updated to allow the use of
const char*as a
ACSDK_LOG_SINKis no longer used to override the sink logger in the SDK. For an application to use a specialized implementation of Logger, call
logLevelconfiguration per module now is set per the verbosity specified in the configuration independent of the
logLevelof the logger sink.
- Reduced the binary and memory footprint in the logging API. Now if logging is disabled, logging arguments are marked used with
sizeof(x)operator instead of casting arguments results to
- Added the
acsdkAudioEncoderInterfaceslibrary to provide an encoded stream when encoding operation starts, and to provide output encoding instead of audio format. The
SpeechEncoderis now refactored to implement new interfaces and renamed as
OpusEncoderContextlibrary is renamed as
EncodingContextinterface is renamed as
BlockAudioEncoderInterfaceto provide encoded prologue and epilogue contents.
- Thread monikers are now owned by
MultiTimertypes. This means the moniker now stays persistent no matter which thread is executing the task. This reduces the thread recreation, and simplifies diagnostics when the same thread moniker is used for the same component.
- Added support for
PostConnectVerifyGatewaySenderto send operational metrics if metrics is enabled and the metrics publisher interface is configured.
ExecutorInterfaceand factory methods for creating shared executor instances. An existing
Executorcan be used in functions that accept
ExecutorInterface. Previously, the
Executortype was a non-shareable component.
Build option and configuration changes
CBLAuthDelegate.Important: To maintain authentication tokens for your upgraded software, in the
lwaAuthorizationsection must point to a preexisting
Propertiesto follow new coding and namespace conventions. The
acsdkPropertiesInterfacesheaders now use
"acsdk/"include directory prefix and shortened namespaces.
SpeakerManagerto follow new conventions. The library is now split into two: the
acsdkSpeakerManagerfor CA and default implementations of support interfaces, and the
acsdkSpeakerManagerComponentlibrary for manufactory integration.
acsdkCodecUtilsto follow new conventions.
acsdkCodecUtilsheaders now use
"acsdk/CodecUtils"include directory and
- Doxygen is no longer required when building the AVS Device SDK and running tests.
- Moved the
SampleApplicationsand renamed to
SampleAppis no longer built by default. To build it, use the
- Removed the
- Removed integration tests from sources. You no longer have the options to build or run integration tests.
PortAudiomicrophone into its own library named
acsdkPortAudioMicrophoneAdapter.Important: To build the IPCServerSampleApplication, you must build the AVS Device SDK with the flag:
- Fixed a race condition in
AudioPlayerwhen interrupting a playing track.
- Fixed an issue in
MultiTimerso that it no longer holds the lock when calling tasks.
- Fixed a shutdown issue when
DefaultClientfailed to initialize.
setup.shto download the SDK from GitHub using
git cloneper the new GitHub policy.
InteractionManager.cppin the Console SampleApp to reflect that the microphone must be
- Fixed a bug that caused the
ProgressReportDelayEleapsedevent to be significantly delayed.
- Stopped writing to legacy tables
alerts_v2 in alertsdb. You are responsible to handle the case when rollback to the legacy db happens.
- Handled the rare case of two pause events delivered in close proximity so that only a single pause event takes effect.
- Fixed a condition where seeking after setting loop mode caused the next track to be played instead of the current track.
MockEndpointBuilderto accommodate new APIs in the
- Changed linking for all Linux distributions so that
libatomiclibrary is always linked explicitly.
- Fixed a bug in
Executorrelated to excessive power lock release.
- Corrected the SDK version printout in the Console Sample App. Previously,
version 0.0.0was printed.