AlexaClientSDK
1.26.0
A cross-platform, modular SDK for interacting with the Alexa Voice Service
|
#include <algorithm>
#include <cctype>
#include <regex>
#include "acsdkAudioPlayer/AudioPlayer.h"
#include "acsdkAudioPlayer/Util.h"
#include <rapidjson/stringbuffer.h>
#include <rapidjson/error/en.h>
#include <AVSCommon/AVS/CapabilityConfiguration.h>
#include <AVSCommon/AVS/EventBuilder.h>
#include <AVSCommon/SDKInterfaces/Audio/MixingBehavior.h>
#include <AVSCommon/Utils/JSON/JSONGenerator.h>
#include <AVSCommon/Utils/JSON/JSONUtils.h>
#include <AVSCommon/Utils/Metrics/MetricEventBuilder.h>
#include <AVSCommon/Utils/Metrics/DataPointStringBuilder.h>
#include <AVSCommon/Utils/Metrics/DataPointCounterBuilder.h>
Namespaces | |
alexaClientSDK | |
Whether or not curl logs should be emitted. | |
alexaClientSDK::acsdkAudioPlayer | |
Macros | |
#define | LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) |
Typedefs | |
using | alexaClientSDK::acsdkAudioPlayer::MediaPlayerState = avsCommon::utils::mediaPlayer::MediaPlayerState |
Functions | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::TAG ("AudioPlayer") |
String to identify log entries originating from this file. More... | |
static const std::chrono::seconds | alexaClientSDK::acsdkAudioPlayer::LOCAL_STOP_DEFAULT_PIPELINE_OPEN_TIME (900) |
Time to keep the pipeline open after a local pause. More... | |
static bool | alexaClientSDK::acsdkAudioPlayer::compareUrlNotQuery (const std::string &url1, const std::string &url2) |
static std::shared_ptr< avsCommon::avs::CapabilityConfiguration > | alexaClientSDK::acsdkAudioPlayer::getAudioPlayerCapabilityConfiguration (Fingerprint fingerprint) |
static void | alexaClientSDK::acsdkAudioPlayer::submitMetric (const std::shared_ptr< MetricRecorderInterface > &metricRecorder, const std::string &metricActivityName, const DataPoint &dataPoint, const std::string &msgId, const std::string &trackId, const std::string &requesterType="", const std::string &trackProtection="", const std::string &trackPlaylistType="", const std::string &trackDomainNameHash="") |
static void | alexaClientSDK::acsdkAudioPlayer::submitAnnotatedMetric (const std::shared_ptr< MetricRecorderInterface > &metricRecorder, const std::string &baseMetric, const std::string &annotation) |
static void | alexaClientSDK::acsdkAudioPlayer::submitInstanceMetric (const std::shared_ptr< MetricRecorderInterface > &metricRecorder, const std::string &segmentId, const std::string &name, const std::map< std::string, std::string > &metadata={}) |
static void | alexaClientSDK::acsdkAudioPlayer::createAssociation (const std::shared_ptr< MetricRecorderInterface > &metricRecorder, const std::string &associateFrom, const std::string &associateTo) |
bool | alexaClientSDK::acsdkAudioPlayer::messageSentSuccessfully (MessageRequestObserverInterface::Status status) |
static audio::MixingBehavior | alexaClientSDK::acsdkAudioPlayer::getMixingBehavior (const std::string &messageID, const rapidjson::Value &payload, const std::shared_ptr< MetricRecorderInterface > &metricRecorder) |
Variables | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::AUDIOPLAYER_CAPABILITY_INTERFACE_TYPE = "AlexaInterface" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::AUDIOPLAYER_CAPABILITY_INTERFACE_NAME = "AudioPlayer" |
AudioPlayer interface name. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::AUDIOPLAYER_CAPABILITY_INTERFACE_VERSION = "1.5" |
AudioPlayer interface version. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::FINGERPRINT_KEY = "fingerprint" |
The fingerprint key used in AudioPlayer configurations. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::PACKAGE_KEY = "package" |
The package key used in AudioPlayer fingerprint. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::BUILD_TYPE_KEY = "buildType" |
The buildType key used in AudioPlayer fingerprint. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::VERSION_NUMBER_KEY = "versionNumber" |
The versionNumber key used in AudioPlayer fingerprint. More... | |
static const AudioPlayer::SourceId | alexaClientSDK::acsdkAudioPlayer::ERROR_SOURCE_ID = MediaPlayerInterface::ERROR |
A link to MediaPlayerInterface::ERROR . More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::CHANNEL_NAME = FocusManagerInterface::CONTENT_CHANNEL_NAME |
The name of the FocusManager channel used by AudioPlayer . More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::NAMESPACE = "AudioPlayer" |
The namespace for this capability agent. More... | |
static const NamespaceAndName | alexaClientSDK::acsdkAudioPlayer::PLAY {NAMESPACE, "Play"} |
The Play directive signature. More... | |
static const NamespaceAndName | alexaClientSDK::acsdkAudioPlayer::STOP {NAMESPACE, "Stop"} |
The Stop directive signature. More... | |
static const NamespaceAndName | alexaClientSDK::acsdkAudioPlayer::CLEAR_QUEUE {NAMESPACE, "ClearQueue"} |
The ClearQueue directive signature. More... | |
static const NamespaceAndName | alexaClientSDK::acsdkAudioPlayer::UPDATE_PROGRESS_REPORT_INTERVAL {NAMESPACE, "UpdateProgressReportInterval"} |
The UpdateProgressReportInterval directive signature. More... | |
static const NamespaceAndName | alexaClientSDK::acsdkAudioPlayer::STATE {NAMESPACE, "PlaybackState"} |
The AudioPlayer context state signature. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::CID_PREFIX {"cid:"} |
Prefix for content ID prefix in the url property of the directive payload. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::TOKEN_KEY [] = "token" |
The token key used in AudioPlayer events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::OFFSET_KEY [] = "offsetInMilliseconds" |
The offset key used in AudioPlayer events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::SEEK_START_OFFSET_KEY [] = "seekStartOffsetInMilliseconds" |
The seek start offset key used in PlaybackSeeked events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::SEEK_END_OFFSET_KEY [] = "seekEndOffsetInMilliseconds" |
The seek end offset key used in PlaybackSeeked events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::PLAYBACK_ATTRIBUTES_KEY [] = "playbackAttributes" |
The playbackAttributes key used in AudioPlayer events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::NAME_KEY [] = "name" |
The name key used in AudioPlayer events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::CODEC_KEY [] = "codec" |
The codec key used in AudioPlayer events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::SAMPLING_RATE_IN_HERTZ_KEY [] = "samplingRateInHertz" |
The samplingRateInHertz key used in AudioPlayer events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::DATA_RATE_IN_BITS_PER_SECOND_KEY [] = "dataRateInBitsPerSecond" |
The dateRateInBitsPerSecond key used in AudioPlayer events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::PLAYBACK_REPORTS_KEY [] = "playbackReports" |
The playbackReports key used in AudioPlayer events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::START_OFFSET_KEY [] = "startOffsetInMilliseconds" |
The startOffsetInMilliseconds key used in AudioPlayer events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::END_OFFSET_KEY [] = "endOffsetInMilliseconds" |
The endOffsetInMilliseconds key used in AudioPlayer events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::ACTIVITY_KEY [] = "playerActivity" |
The activity key used in AudioPlayer events. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::CAPTION_KEY [] = "caption" |
The key for the "captionData" property in the directive payload. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::CAPTION_TYPE_KEY [] = "type" |
The key under "captionData" containing the caption type. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::CAPTION_CONTENT_KEY [] = "content" |
The key under "captionData" containing the caption content. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::KEY_ANALYZERS [] = "analyzers" |
The "analyzers" key used to retrieve analyzer data from directive. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::KEY_ANALYZERS_INTERFACE [] = "interface" |
The key used to retrieve the audio analyzer name from directive. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::KEY_ANALYZERS_ENABLED [] = "enabled" |
The key used to retrieve the audio analyzer enabled state from directive. More... | |
static const char | alexaClientSDK::acsdkAudioPlayer::STUTTER_DURATION_KEY [] = "stutterDurationInMilliseconds" |
The stutter key used in AudioPlayer events. More... | |
static const std::chrono::seconds | alexaClientSDK::acsdkAudioPlayer::TIMEOUT {2} |
The duration to wait for a state change in onFocusChanged before failing. More... | |
static const audio::MixingBehavior | alexaClientSDK::acsdkAudioPlayer::DEFAULT_MIXING_BEHAVIOR = audio::MixingBehavior::BEHAVIOR_PAUSE |
default mixing behavior More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::AUDIO_PLAYER_METRIC_PREFIX = "AUDIO_PLAYER-" |
prefix for metrics emitted from the AudioPlayer CA More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::UNSUPPORTED_INTERRUPTED_BEHAVIOR = "UNSUPPORTED_INTERRUPTED_BEHAVIOR_PLAY_DIRECTIVE" |
Metric to catch unsupported/missing interruptedBehavior. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::MISSING_INTERRUPTED_BEHAVIOR = "MISSING_INTERRUPTED_BEHAVIOR_PLAY_DIRECTIVE" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::PREPARE_PLAY_DIRECTIVE_RECEIVED = "PREPARE_PLAY_DIRECTIVE_RECEIVED" |
playback metrics use for AudioPlayer UPL More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::PLAY_DIRECTIVE_RECEIVED = "PLAY_DIRECTIVE_RECEIVED" |
The directive received metric is used in place of 'first bytes' for UPL because pre-buffering may distort the metric. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::STOP_DIRECTIVE_RECEIVED = "STOP_DIRECTIVE_RECEIVED" |
The directive received metric is used in place of 'first bytes' for Stop UPL because there are no bytes involved. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::PLAYBACK_STARTED = "PLAYBACK_STARTED" |
Metric used to trigger UPL recording for play. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::PLAYBACK_STOPPED = "PLAYBACK_STOPPED" |
Metric used to trigger UPL recording for stop. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METADATA_UNFILTERED_ENCOUNTERED = "UnfilteredMetadataEncountered" |
Metrics for filtered and unfiltered metadata. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METADATA_FILTERED_ENCOUNTERED = "FilteredMetadataEncountered" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::AUDIO_PLAYBACK_TIME = "AudioPlaybackTime" |
Total play time metric. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::TRACK_TO_TRACK_TIME = "AutoProgressionLatency" |
Track to Track time metric. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::TRACK_PROGRESSION_FATAL = "TrackProgressionFatalError" |
Playback error during auto-progression. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::MID_PLAYBACK_FATAL = "PlaybackFatalError" |
Fatal error mid-playback. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::TRACK_TIME_ON_QUEUE = "TrackTimeOnQueue" |
Time spent on queue. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::HANDLE_PLAY_COMMAND_TO_PLAYING = "directiveReceiveToPlaying" |
Latency between handleDirective command for a new play session and PLAYING state. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::INVALID_HEADER_RECEIVED = "InvalidHeaderReceived" |
Invalid headers metrics. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::MALICIOUS_HEADER_RECEIVED = "MaliciousHeaderReceived" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::MESSAGE_SENT_FAILED = "MessageSentFailed" |
Message sent failed metric. More... | |
static const std::vector< std::string > | alexaClientSDK::acsdkAudioPlayer::METADATA_ALLOWLIST = {"title"} |
static const std::chrono::seconds | alexaClientSDK::acsdkAudioPlayer::METADATA_EVENT_RATE {1} |
Min time between metadata events. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::NORMALIZATION_LEVEL_HIGH = "HIGH" |
Normalization enabled (HIGH level) More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::NORMALIZATION_LEVEL_OFF = "OFF" |
Normalization disabled. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::TRACK_PROTECTION_NAME = "TrackProtectionName" |
Track protection name, meta data sent with metric. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::TRACK_PLAYLIST_TYPE = "TrackType" |
Track playlist type, meta data sent with metric. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::TRACK_DOMAIN_NAME_HASH = "TrackDomainNameHash" |
Hash of the domain name of the track url, meta data sent with metric. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_KEY_SEGMENT_ID = "segment_id" |
Keys for entry metric specific fields. More... | |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_KEY_ACTOR = "actor" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_KEY_ENTRY_TYPE = "entry_type" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_KEY_ENTRY_NAME = "entry_name" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_KEY_ERROR_DESCRIPTION = "error_description" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_KEY_ERROR_RECOVERABLE = "error_recoverable" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_KEY_ASSOCIATE_FROM = "association_from_id" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_KEY_ASSOCIATE_TO = "association_to_id" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_INSTANCE_RECEIVE_DIRECTIVE = "ReceiveDirective" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_INSTANCE_STATE_CHANGED = "PlaybackStateChanged" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_INSTANCE_FIRST_BYTE_READ = "FirstAudioByteRead" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_META_KEY_NAMESPACE = "namespace" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_META_KEY_NAME = "name" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_META_KEY_ISPREPARE_BOOL = "isPreparePhase" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_INSTANCE_ACQUIRE_MEDIA_PLAYER_START = "AcquireMediaPlayerStart" |
static const std::string | alexaClientSDK::acsdkAudioPlayer::METRIC_INSTANCE_ACQUIRE_MEDIA_PLAYER_FINISH = "AcquireMediaPlayerFinish" |
#define LX | ( | event | ) | alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) |
Create a LogEntry using this file's TAG and the specified event string.
The | event string for this LogEntry . |
AlexaClientSDK 1.26.0 - Copyright 2016-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0