Releases: alexa/avs-device-sdk
v1.2.1
-
Enhancements
- Added comments to
AlexaClientSDKConfig.json
. These descriptions provide additional guidance for what is expected for each field. - Enabled pause and resume controls for Pandora.
- Added comments to
-
Bug Fixes
- Bug fix for issue #329 -
HTTP2Transport
instances no longer leak when `SERVER_SIDE - Bug fix for issue #189 - Fixed a race condition in the
Timer
class that sometimes - Bug fix for a race condition that caused
SpeechSynthesizer
to ignore subsequentSpeak
directives. - Bug fix for corrupted mime attachments.
- Bug fix for issue #329 -
v1.2
-
Enhancements
- Updated MediaPlayer to solve stability issues
- All capability agents were refined to work with the updated MediaPlayer
- Added the TemplateRuntime capability agent
- Added the SpeakerManager capability agent
- Added a configuration option ("sampleApp":"endpoint") that allows the endpoint that SampleApp connects to to be specified without changing code or rebuilding
- Added very verbose capture of libcurl debug information
- Added an observer interface to observer audio state changes from AudioPlayer
- Added support for StreamMetadataExtracted Event. Stream tags found in the stream are represented in JSON and sent to AVS
- Added to the SampleApp a simple GuiRenderer as an observer to the TemplateRuntime Capability Agent
- Moved shared libcurl functionality to AVSCommon/Utils
- Added a CMake option to exclude tests from the "make all" build. Use "cmake
-DACSDK_EXCLUDE_TEST_FROM_ALL=ON" to enable it. When this option is enabled "make unit" and "make integration" still could be used to build and run the tests
-
Bug fixes:
- Previously scheduled alerts now play following a restart
- General stability fixes
- Bug fix for CertifiedSender blocking forever if the network goes down while it's trying to send a message to AVS
- Fixes for known issue of Alerts integration tests fail: AlertsTest.UserLongUnrelatedBargeInOnActiveTimer and AlertsTest.handleOneTimerWithVocalStop
- Attempting to end a tap-to-talk interaction with the tap-to-talk button wouldn't work
- SharedDataStream could encounter a race condition due to a combination of a blocking Reader and a Writer closing before writing any data
- Bug-fix for the ordering of notifications within alerts scheduling. This fixes the issue where a local-stop on an alert would also stop a subsequent alert if it were to begin without delay
-
Known Issues
- Capability agent for Notifications is not included in this release
- Inconsistent playback behavior when resuming content ("Alexa, pause." / "Alexa, resume."). Specifically, handling playback offsets, which causes the content to play from the start. This behavior is also occasionally seen with "Next" /
"Previous". ACL
's asynchronous receipt of audio attachments may manage resources poorly in scenarios where attachments are received but not consumed.- Music playback failures may result in an error Text to Speech being rendered repeatedly
- Reminders and named timers don't sound when there is no connection
- GUI cards don't show for Kindle
v1.1.0
-
Enhancements
- Better GStreamer error reporting. MediaPlayer used to only report
MEDIA_ERROR_UNKNOWN
, now reports more specific errors as defined inErrorType.h
. - Codebase has been formatted for easier reading.
DirectiveRouter::removeDirectiveHandler()
signature changed and now returns a bool indicating if given handler should be successfully removed or not.- Cleanup of raw and shared pointers in the creation of
Transport
objects. HTTP2Stream
s now have IDs assigned as they are acquired as opposed to created, making associated logs easier to interpret.AlertsCapabilityAgent
has been refactored.- Alert management has been factored out into an
AlertScheduler
class.
- Alert management has been factored out into an
- Creation of Reminder (implements Alert) class.
- Added new capability agent for
PlaybackController
with unit tests. - Added Settings interface with unit tests.
- Return type of
getOffsetInMilliseconds()
changed fromint64_t
tostd::chronology::milliseconds
. - Added
AudioPlayer
unit tests. - Added teardown for all Integration tests except Alerts.
- Implemented PlaylistParser.
- Better GStreamer error reporting. MediaPlayer used to only report
-
Bug fixes:
- AIP getting stuck in
LISTENING
orTHINKING
and refusing user input on network outage. - SampleApp crashing if running for 5 minutes after network disconnect.
- Issue where on repeated user barge-ins,
AudioPlayer
would not pause. Specifically, the third attempt to “Play iHeartRadio” would not result in currently-playing music pausing. - Utterances being ignored after particularly long TTS.
- GStreamer errors cropping up on SampleApp exit as a result of accessing the pipeline before it’s been setup.
- Crashing when playing one URL after another.
- Buffer overrun in Alerts Renderer.
- SampleApp crashing when issuing "Alexa skip" command with iHeartRadio.
HTTP2Transport
network thread triggering a join on itself.HTTP2Stream
request handling truncating exception messages.AudioPlayer
was attempting an incorrect state transition fromSTOPPED
toPLAYING
through aplaybackResumed
.
- AIP getting stuck in
-
Known Issues
-
Native components for the following capability agents are not included in this release:
Speaker
,TemplateRuntime
, andNotifications
-
ACL
's asynchronous receipt of audio attachments may manage resources poorly in scenarios where attachments are received but not consumed. -
When an
AttachmentReader
does not deliver data for prolonged periods,MediaPlayer
may not resume playing the delayed audio. -
Without the refresh token in the JSON file, the sample app crashes on start up.
-
Alerts do not play after restarting the device.
-
Alexa's responses are cut off by about half a second when asking "What's up" or barging into an active alarm to ask the time.
-
Switching from Kindle to Amazon Music after pausing and resuming Kindle doesn't work.
-
Pause/resume on Amazon Music causes entire song to start over.
-
Stuck in listening state if
ExpectSpeech
comes in when the microphone has been turned off. -
Pausing and resuming Pandora causes stuttering, looped audio.
-
Audible features are not fully supported.
-
Recognize
event after regaining network connection and during an alarm going off can cause client to get stuck inRecognizing
state. -
Three Alerts integration tests fail:
handleMultipleTimersWithLocalStop
,AlertsTest.UserLongUnrelatedBargeInOnActiveTimer
,AlertsTest.handleOneTimerWithVocalStop
-
MediaPlayerTest.testSetOffsetSeekableSource
unit test fails intermittently on Linux.
v1.0.3
-
Enhancements
- Implemented
setOffSet
inMediaPlayer
. - Updated
LoggerUtils.cpp
.
- Implemented
-
Bug Fixes
- Bug fix to address incorrect stop behavior caused when Audio Focus is set to
NONE
and released. - Bug fix for intermittent failure in
handleMultipleConsecutiveSpeaks
. - Bug fix for
jsonArrayExist
incorrectly parsing JSON when trying to locate array children. - Bug fix for ADSL test failures with
sendDirectiveWithoutADialogRequestId
. - Bug fix for
SpeechSynthesizer
showing the wrong UX state when a burst ofSpeak
directives are received. - Bug fix for recursive loop in
AudioPlayer.Stop
.
- Bug fix to address incorrect stop behavior caused when Audio Focus is set to
v1.0.2
Removed code from AIP which propagates ExpectSpeech initiator strings to subsequent Recognize events. This code will be re-introduced when AVS starts sending initiator strings.
v1.0.1
- Added a fix to the sample app so that the
StateSynchronization
event is the first that gets sent to AVS. - Added a
POST_CONNECTED
enum toConnectionStatusObserver
. StateSychronizer
now automatically sends aStateSynchronization
event when it receives a notification thatACL
isCONNECTED
.- Added
make install
for installing the AVS Device SDK. - Added an optional
make networkIntegration
for integration tests for slow network (only on Linux platforms). - Added shutdown management which fully cleans up SDK objects during teardown.
- Fixed an issue with
AudioPlayer
barge-in which was preventing subsequent audio from playing. - Changed
Mediaplayer
buffering to reduce stuttering. - Known Issues:
- Connection loss during listening keeps the app in that state even after connection is regained. Pressing ‘s’ unsticks the state.
- Play/Pause media restarts it from the beginning.
SpeechSynthesizer
shows wrong UX state during a burst of Speaks.- Quitting the sample app while
AudioPlayer
is playing something causes a segmentation fault. AudioPlayer
sendingPlaybackPaused
during flash briefing.- Long Delay playing live stations on iHeartRadio.
- Teardown warnings at the end of integration tests.
v1.0
- Added
AudioPlayer
capability agent.- Supports iHeartRadio.
StateSynchronizer
has been updated to better enforce thatSystem.SynchronizeState
is the first Event sent on a connection to AVS.- Additional tests have been added to
ACL
. - The
Sample App
has been updated with several small fixes and improvements. ADSL
was updated such that all directives are now blocked while the handling of previousSpeechSynthesizer.Speak
directives complete. Because any directive may now be blocked, thepreHandleDirective() / handleDirective()
path is now used for handling all directives.- Fixes for the following GitHub issues:
- A bug causing
ACL
to not send a ping to AVS every 5 minutes, leading to periodic server disconnects, was fixed. - Subtle race condition issues were addressed in the
Executor
class, resolving some intermittent crashes. - Known Issues
- Native components for the following capability agents are not included in this release:
PlaybackController
,Speaker
,Settings
,TemplateRuntime
, andNotifications
. MediaPlayer
- Long periods of buffer underrun can cause an error related with seeking and subsequent stopped playback.
- Long periods of buffer underrun can cause flip flopping between buffer_underrun and playing states.
- Playlist parsing is not supported unless -DTOTEM_PLPARSER=ON is specified.
AudioPlayer
- Amazon Music, TuneIn, and SiriusXM are not supported in this release.
- Our parsing of urls currently depends upon GNOME/totem-pl-parser which only works on some Linux platforms.
AlertsCapabilityAgent
- Satisfies the AVS specification except for sending retrospective Events. For example, sending
AlertStarted
Event for an Alert which rendered when there was no internet connection.
- Satisfies the AVS specification except for sending retrospective Events. For example, sending
Sample App
:- Any connection loss during the
Listening
state keeps the app stuck in that state, unless the ongoing interaction is manually stopped by the user. - The user must wait several seconds after starting up the sample app before the sample app is properly usable.
- Any connection loss during the
Tests
:SpeechSynthesizer
unit tests hang on some older versions of GCC due to a tear down issue in the test suite- Intermittent Alerts integration test failures caused by rigidness in expected behavior in the tests
- Native components for the following capability agents are not included in this release:
v0.6
Changes in this update
- Added a sample app that leverages the SDK.
- Added an implementation of the
Alerts
capability agent. - Added the
DefaultClient
class. - Added the following classes to support directives and events in the
Systems
interface:StateSynchronizer
,EndpointHandler
, andExceptionEncounteredSender
. - Added unit tests for
ACL
. - Updated
MediaPlayer
to play local files given anstd::istream
. - Changed build configuration from
Debug
toRelease
. - Removed
DeprecatedLogger
class. - Known Issues:
- MediaPlayer: Our
GStreamer
based implementation ofMediaPlayer
is not fully robust, and may result in fatal runtime errors, under the following conditions:- Attempting to play multiple simultaneous audio streams
- Calling
MediaPlayer::play()
andMediaPlayer::stop()
when the MediaPlayer is already playing or stopped, respectively. - Other miscellaneous issues, which will be addressed in the near future
AlertsCapabilityAgent
:- This component has been temporarily simplified to work around the known
MediaPlayer
issues mentioned above - Fully satisfies the AVS specification except for sending retrospective Events, for example, sending
AlertStarted
for an Alert which rendered when there was no Internet connection - This component is not fully thread-safe, however, this will be addressed shortly
- Alerts currently run indefinitely until stopped manually by the user. This will be addressed shortly by having a timeout value for an alert to stop playing.
- Alerts do not play in the background when Alexa is speaking, but will continue playing after Alexa stops speaking.
- This component has been temporarily simplified to work around the known
Sample App
:- Without the refresh token being filled out in the JSON file, the sample app crashes on start up.
- Any connection loss during the
Listening
state keeps the app stuck in that state, unless the ongoing interaction is manually stopped by the user. - At the end of a shopping list with more than 5 items, the interaction in which Alexa asks the user if he/she would like to hear more does not finish properly.
Tests
:SpeechSynthesizer
unit tests hang on some older versions of GCC due to a tear down issue in the test suite- Intermittent Alerts integration test failures caused by rigidness in expected behavior in the tests
- MediaPlayer: Our
v0.5
Release 0.5
Changes in this update
- Added a getConfiguration() method to DirectiveHandlerInterface to register Capability Agents with Directive Sequencer.
- Fix race condition with reading attachments before a writer exists.
- Use of new Logging abstraction layer in modules - ADSL,AFML,ContextManager,AuthDelegate,AIP,KWD,Mediaplayer.
- Added ACL stream processing with Pause and redrive.
- Removed the dependency of ACL Library on Authdelegate.
- Added and interface to allow ACL to Add/Remove ConnectionStatusObserverInterface.
- Fixed compile errors in KittAi, DirectiveHandler and compiler warnings in AIP test.
- Corrected formatting on the files.
- Fixes for the following Github issues
v0.4.1
Release 0.4.1
- Implemented Sensory wake word detector functionality
- Removed the need for a
std::recursive_mutex
inMessageRouter
- Added AIP unit test
- Added
handleDirectiveImmediately
functionality toSpeechSynthesizer
- Added memory profiles for:
- AIP
- SpeechSynthesizer
- ContextManager
- AVSUtils
- AVSCommon
- Bug fix for
MultipartParser.h
compiler warning - Suppression of sensitive log data even in debug builds. Use cmake parameter
-DACSDK_EMIT_SENSITIVE_LOGS=ON
to allow logging of sensitive information in DEBUG builds - Fix crash in ACL when attempting to use more than 10 streams
- Updated MediaPlayer to use
autoaudiosink
instead of requiringpulseaudio
- Updated MediaPlayer build to suppport local builds of GStreamer
- Fixes for the following Github issues:
- #5 MessageRouter::send() does not take the m_connectionMutex
- #8 MessageRouter::disconnectAllTransportsLocked flow leads to erase while iterating transports vector
- #9 Build errors when building with KittAi enabled
- #10 HTTP2Transport race may lead to deadlock
- #17 Crash in HTTP2Transport::cleanupFinishedStreams()
- #24 The attachment writer interface should take a const void* instead of void*