16 #ifndef AACE_ALEXA_EXTERNAL_MEDIA_ADAPTER_H 17 #define AACE_ALEXA_EXTERNAL_MEDIA_ADAPTER_H 22 #include "AACE/Core/PlatformInterface.h" 23 #include "AACE/Audio/AudioOutput.h" 25 #include "AlexaEngineInterfaces.h" 34 using DiscoveredPlayerInfo = ExternalMediaAdapterEngineInterface::DiscoveredPlayerInfo;
40 enum class PlayControlType
103 enum class SupportedPlaybackOperation {
181 enum class Favorites {
199 enum class MediaType {
229 enum class Navigation {
405 ExternalMediaAdapter() =
default;
408 virtual ~ExternalMediaAdapter();
426 virtual bool login(
const std::string& localPlayerId,
const std::string& accessToken,
const std::string& userName,
bool forceLogin, std::chrono::milliseconds tokenRefreshInterval ) = 0;
436 virtual bool logout(
const std::string& localPlayerId ) = 0;
456 virtual bool play(
const std::string& localPlayerId,
const std::string& playContextToken, int64_t index, std::chrono::milliseconds offset,
bool preload, Navigation navigation ) = 0;
470 virtual bool playControl(
const std::string& localPlayerId, PlayControlType controlType ) = 0;
482 virtual bool seek(
const std::string& localPlayerId, std::chrono::milliseconds offset ) = 0;
494 virtual bool adjustSeek(
const std::string& localPlayerId, std::chrono::milliseconds deltaOffset ) = 0;
510 virtual bool authorize(
const std::vector<AuthorizedPlayerInfo>& authorizedPlayers ) = 0;
532 virtual bool volumeChanged(
float volume ) = 0;
543 virtual bool mutedStateChanged(
MutedState state ) = 0;
552 void reportDiscoveredPlayers(
const std::vector<DiscoveredPlayerInfo>& discoveredPlayers );
559 void requestToken(
const std::string& localPlayerId );
566 void loginComplete(
const std::string& localPlayerId );
573 void logoutComplete(
const std::string& localPlayerId );
582 void playerEvent(
const std::string& localPlayerId,
const std::string& eventName );
597 void playerError(
const std::string& localPlayerId,
const std::string& errorName,
long code,
const std::string& description,
bool fatal );
604 void setFocus(
const std::string& localPlayerId );
606 void removeDiscoveredPlayer(
const std::string& localPlayerId );
614 void setEngineInterface( std::shared_ptr<aace::alexa::ExternalMediaAdapterEngineInterface> externalMediaAdapterEngineInterface );
617 std::weak_ptr<aace::alexa::ExternalMediaAdapterEngineInterface> m_externalMediaAdapterEngineInterface;
620 inline std::ostream& operator<<(std::ostream& stream,
const ExternalMediaAdapter::PlayControlType& requestType) {
621 switch (requestType) {
622 case ExternalMediaAdapter::PlayControlType::RESUME:
625 case ExternalMediaAdapter::PlayControlType::PAUSE:
628 case ExternalMediaAdapter::PlayControlType::NEXT:
631 case ExternalMediaAdapter::PlayControlType::PREVIOUS:
632 stream <<
"PREVIOUS";
634 case ExternalMediaAdapter::PlayControlType::START_OVER:
635 stream <<
"START_OVER";
637 case ExternalMediaAdapter::PlayControlType::FAST_FORWARD:
638 stream <<
"FAST_FORWARD";
640 case ExternalMediaAdapter::PlayControlType::REWIND:
643 case ExternalMediaAdapter::PlayControlType::ENABLE_REPEAT_ONE:
644 stream <<
"ENABLE_REPEAT_ONE";
646 case ExternalMediaAdapter::PlayControlType::ENABLE_REPEAT:
647 stream <<
"ENABLE_REPEAT";
649 case ExternalMediaAdapter::PlayControlType::DISABLE_REPEAT:
650 stream <<
"DISABLE_REPEAT";
652 case ExternalMediaAdapter::PlayControlType::ENABLE_SHUFFLE:
653 stream <<
"ENABLE_SHUFFLE";
655 case ExternalMediaAdapter::PlayControlType::DISABLE_SHUFFLE:
656 stream <<
"DISABLE_SHUFFLE";
658 case ExternalMediaAdapter::PlayControlType::FAVORITE:
659 stream <<
"FAVORITE";
661 case ExternalMediaAdapter::PlayControlType::UNFAVORITE:
662 stream <<
"UNFAVORITE";
668 inline std::ostream& operator<<(std::ostream& stream,
const ExternalMediaAdapter::SupportedPlaybackOperation& supportedPlaybackOperation) {
669 switch (supportedPlaybackOperation) {
670 case ExternalMediaAdapter::SupportedPlaybackOperation::PLAY:
673 case ExternalMediaAdapter::SupportedPlaybackOperation::RESUME:
676 case ExternalMediaAdapter::SupportedPlaybackOperation::PAUSE:
679 case ExternalMediaAdapter::SupportedPlaybackOperation::STOP:
682 case ExternalMediaAdapter::SupportedPlaybackOperation::NEXT:
685 case ExternalMediaAdapter::SupportedPlaybackOperation::PREVIOUS:
686 stream <<
"PREVIOUS";
688 case ExternalMediaAdapter::SupportedPlaybackOperation::START_OVER:
689 stream <<
"START_OVER";
691 case ExternalMediaAdapter::SupportedPlaybackOperation::FAST_FORWARD:
692 stream <<
"FAST_FORWARD";
694 case ExternalMediaAdapter::SupportedPlaybackOperation::REWIND:
697 case ExternalMediaAdapter::SupportedPlaybackOperation::ENABLE_REPEAT:
698 stream <<
"ENABLE_REPEAT";
700 case ExternalMediaAdapter::SupportedPlaybackOperation::ENABLE_REPEAT_ONE:
701 stream <<
"ENABLE_REPEAT_ONE";
703 case ExternalMediaAdapter::SupportedPlaybackOperation::DISABLE_REPEAT:
704 stream <<
"DISABLE_REPEAT";
706 case ExternalMediaAdapter::SupportedPlaybackOperation::ENABLE_SHUFFLE:
707 stream <<
"ENABLE_SHUFFLE";
709 case ExternalMediaAdapter::SupportedPlaybackOperation::DISABLE_SHUFFLE:
710 stream <<
"DISABLE_SHUFFLE";
712 case ExternalMediaAdapter::SupportedPlaybackOperation::FAVORITE:
713 stream <<
"FAVORITE";
715 case ExternalMediaAdapter::SupportedPlaybackOperation::UNFAVORITE:
716 stream <<
"UNFAVORITE";
718 case ExternalMediaAdapter::SupportedPlaybackOperation::SEEK:
721 case ExternalMediaAdapter::SupportedPlaybackOperation::ADJUST_SEEK:
722 stream <<
"ADJUST_SEEK";
728 inline std::ostream& operator<<(std::ostream& stream,
const ExternalMediaAdapter::Favorites& favorites) {
730 case ExternalMediaAdapter::Favorites::FAVORITED:
731 stream <<
"FAVORITED";
733 case ExternalMediaAdapter::Favorites::UNFAVORITED:
734 stream <<
"UNFAVORITED";
736 case ExternalMediaAdapter::Favorites::NOT_RATED:
737 stream <<
"NOT_RATED";
743 inline std::ostream& operator<<(std::ostream& stream,
const ExternalMediaAdapter::MediaType& mediaType) {
745 case ExternalMediaAdapter::MediaType::TRACK:
748 case ExternalMediaAdapter::MediaType::PODCAST:
751 case ExternalMediaAdapter::MediaType::STATION:
754 case ExternalMediaAdapter::MediaType::AD:
757 case ExternalMediaAdapter::MediaType::SAMPLE:
760 case ExternalMediaAdapter::MediaType::OTHER:
767 inline std::ostream& operator<<(std::ostream& stream,
const ExternalMediaAdapter::Navigation& navigation) {
768 switch (navigation) {
769 case ExternalMediaAdapter::Navigation::DEFAULT:
772 case ExternalMediaAdapter::Navigation::NONE:
775 case ExternalMediaAdapter::Navigation::FOREGROUND:
776 stream <<
"FOREGROUND";
785 #endif // AACE_ALEXA_EXTERNAL_MEDIA_ADAPTER_H MutedState
Definition: AudioOutput.h:69
Definition: AddressBook.h:26