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.
2022
Version 3.0
Release date: Sep 30, 2022
Breaking changes
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.
Enhancements
- Renamed the
SampleApp
directory toSampleApplications
. TheLibSampleApp
is renamed toacsdkSampleApp
. TheSampleApplications
directory contains three subdirectories:ConsoleSampleApplication
– for building the Console Sample Application.IPCServerSampleApplication
– for building the smart screen IPC Server Sample Application.Common
– for holding the common components for both Sample Apps.
- 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.
- Added
LiveViewController
Capability Agent (CA) for handling theAlexa.Camera.LiveViewController
interface. 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
Alexa.Presentation
andAlexa.Presentation.APL
interfaces.- Added
APLRuntimeInterface
for allowing APL CA to render APL content. - Added
APLCapabilityCommon
includingBaseAPLCapabilityAgent
for use by the Alexa Presentation Language (APL) CA. - Added a new
AlexaPresentation
CA for reporting presentation states to the AVS. - Added the ability for APL CA Observers used by the Presentation Orchestrator to modify the presentation lifespan.
- Added
- Added
BluetoothMediaSessionHandlerInterface
to notify Bluetooth media streaming state and get callbacks for any transport control state change. - Added
APLRuntimeInterface
for allowing APL CA to render APL content. - Added the new configurable
SDKClient
so 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.json
and loaded from persistent storage. Four new optional parameters are supported:speakerManagerCapabilityAgent.persistentStorage
,speakerManagerCapabilityAgent.defaultSpeakerVolume
,speakerManagerCapabilityAgent.defaultAlertsVolume
, andspeakerManagerCapabilityAgent.restoreMuteState
. For details, see AlexaClientSDKConfig. - Added new locale combinations in the
AlexaClientSDKConfig.json
file. For details, see AlexaClientSDKConfig. - Added new methods,
createRegistrationManager
andcreateRegistrationNotifier
for instantiatingRegistrationManager
objects. These are non-manufactory factory methods to instantiate objects. - Updated
AggregatedPowerResourceManager
to use theacquirePowerResource
andreleasePowerResource
methods from the newPowerResourceManagerInterface
to reduce latency. Previously,AggregatedPowerResourceManager
usedacquirePowerResource
andreleasePowerResource
from the legacyPowerResourceManager
. - Enhanced the
AlexaInterfaceMessageSenderInterface
to allow non DefaultClient CAs to send V3 style directive response events. - Modified the
FinallyGuard
class 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,
LogEntry
expectedstd::string
as a tag parameter. Now, the logging API is updated to allow the use ofconst char*
as aLogEntry
tag argument. ACSDK_LOG_SINK
is no longer used to override the sink logger in the SDK. For an application to use a specialized implementation of Logger, callutils::logger::LoggerSinkManager::instance().initialize(myCustomSink)
. ThelogLevel
configuration per module now is set per the verbosity specified in the configuration independent of thelogLevel
of 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 tovoid
. - Added the
acsdkAudioEncoderInterfaces
library to provide an encoded stream when encoding operation starts, and to provide output encoding instead of audio format. TheSpeechEncoder
is now refactored to implement new interfaces and renamed asacsdkAudioEncoder
. TheOpusEncoderContext
library is renamed asacsdkOpusAudioEncoder
. TheEncodingContext
interface is renamed asBlockAudioEncoderInterface
to provide encoded prologue and epilogue contents. - Thread monikers are now owned by
Executor
andMultiTimer
types. 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
PostConnectSynchronizeStateSender
,PostConnectCapabilitiesPublisher
, andPostConnectVerifyGatewaySender
to send operational metrics if metrics is enabled and the metrics publisher interface is configured. - Added
ExecutorInterface
and factory methods for creating shared executor instances. An existingExecutor
can be used in functions that acceptExecutorInterface
. Previously, theExecutor
type was a non-shareable component.
Build option and configuration changes
- Removed
CBLAuthDelegate
.Important: To maintain authentication tokens for your upgraded software, in theAlexaClientConfig.json
file, thedatabaseFilePath
parameter inlwaAuthorization
section must point to a preexistingcblAuthDelegate.db
database file. - Refactored
Properties
to follow new coding and namespace conventions. TheacsdkProperties
andacsdkPropertiesInterfaces
headers now use"acsdk/"
include directory prefix and shortened namespaces. - Refactored
SpeakerManager
to follow new conventions. The library is now split into two: theacsdkSpeakerManager
for CA and default implementations of support interfaces, and theacsdkSpeakerManagerComponent
library for manufactory integration. - Refactored
acsdkCodecUtils
to follow new conventions.acsdkCodecUtils
headers now use"acsdk/CodecUtils"
include directory and"alexaClientSDK::codecUtils"
namespace. - Doxygen is no longer required when building the AVS Device SDK and running tests.
- Moved the
SampleApp
intoSampleApplications
and renamed toConsoleSampleApplication
. TheSampleApp
is no longer built by default. To build it, use themake SampleApp
command. - Removed the
PreviewAlexaClient
sample application. - Removed integration tests from sources. You no longer have the options to build or run integration tests.
-
Moved
PortAudio
microphone into its own library namedacsdkPortAudioMicrophoneAdapter
.Important: To build the IPCServerSampleApplication, you must build the AVS Device SDK with the flag:-DRAPIDJSON_MEM_OPTIMIZATION=OFF
Bug Fixes
- Fixed a race condition in
AudioPlayer
when interrupting a playing track. - Fixed an issue in
MultiTimer
so that it no longer holds the lock when calling tasks. - Fixed a shutdown issue when
DefaultClient
failed to initialize. - Updated
setup.sh
to download the SDK from GitHub usinghttps
forgit clone
per the new GitHub policy. - Updated
onCallStateChanged()
inInteractionManager.cpp
in the Console SampleApp to reflect that the microphone must beon
to callstartStreaming()
. - Fixed a bug that caused the
ProgressReportDelayEleapsed
event to be significantly delayed. - Stopped writing to legacy tables
offlineAlerts
andalerts_v2 in alerts
db. 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.
- Reworked
MockEndpointBuilder
to accommodate new APIs in theEndpointBuilderInterface
. - Changed linking for all Linux distributions so that
libatomic
library is always linked explicitly. - Fixed a bug in
Executor
related to excessive power lock release. - Corrected the SDK version printout in the Console Sample App. Previously,
version 0.0.0
was printed.
Last updated: Sep 29, 2022