ESPHome
2025.8.0b1
Loading...
Searching...
No Matches
esphome
components
media_player
media_player.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
esphome/core/entity_base.h
"
4
#include "
esphome/core/helpers.h
"
5
6
namespace
esphome
{
7
namespace
media_player {
8
9
enum
MediaPlayerEntityFeature
: uint32_t {
10
PAUSE
= 1 << 0,
11
SEEK
= 1 << 1,
12
VOLUME_SET
= 1 << 2,
13
VOLUME_MUTE
= 1 << 3,
14
PREVIOUS_TRACK
= 1 << 4,
15
NEXT_TRACK
= 1 << 5,
16
17
TURN_ON
= 1 << 7,
18
TURN_OFF
= 1 << 8,
19
PLAY_MEDIA
= 1 << 9,
20
VOLUME_STEP
= 1 << 10,
21
SELECT_SOURCE
= 1 << 11,
22
STOP
= 1 << 12,
23
CLEAR_PLAYLIST
= 1 << 13,
24
PLAY
= 1 << 14,
25
SHUFFLE_SET
= 1 << 15,
26
SELECT_SOUND_MODE
= 1 << 16,
27
BROWSE_MEDIA
= 1 << 17,
28
REPEAT_SET
= 1 << 18,
29
GROUPING
= 1 << 19,
30
MEDIA_ANNOUNCE
= 1 << 20,
31
MEDIA_ENQUEUE
= 1 << 21,
32
SEARCH_MEDIA
= 1 << 22,
33
};
34
35
enum
MediaPlayerState
: uint8_t {
36
MEDIA_PLAYER_STATE_NONE
= 0,
37
MEDIA_PLAYER_STATE_IDLE
= 1,
38
MEDIA_PLAYER_STATE_PLAYING
= 2,
39
MEDIA_PLAYER_STATE_PAUSED
= 3,
40
MEDIA_PLAYER_STATE_ANNOUNCING
= 4,
41
MEDIA_PLAYER_STATE_OFF
= 5,
42
MEDIA_PLAYER_STATE_ON
= 6,
43
};
44
const
char
*
media_player_state_to_string
(
MediaPlayerState
state
);
45
46
enum
MediaPlayerCommand
: uint8_t {
47
MEDIA_PLAYER_COMMAND_PLAY
= 0,
48
MEDIA_PLAYER_COMMAND_PAUSE
= 1,
49
MEDIA_PLAYER_COMMAND_STOP
= 2,
50
MEDIA_PLAYER_COMMAND_MUTE
= 3,
51
MEDIA_PLAYER_COMMAND_UNMUTE
= 4,
52
MEDIA_PLAYER_COMMAND_TOGGLE
= 5,
53
MEDIA_PLAYER_COMMAND_VOLUME_UP
= 6,
54
MEDIA_PLAYER_COMMAND_VOLUME_DOWN
= 7,
55
MEDIA_PLAYER_COMMAND_ENQUEUE
= 8,
56
MEDIA_PLAYER_COMMAND_REPEAT_ONE
= 9,
57
MEDIA_PLAYER_COMMAND_REPEAT_OFF
= 10,
58
MEDIA_PLAYER_COMMAND_CLEAR_PLAYLIST
= 11,
59
MEDIA_PLAYER_COMMAND_TURN_ON
= 12,
60
MEDIA_PLAYER_COMMAND_TURN_OFF
= 13,
61
};
62
const
char
*
media_player_command_to_string
(
MediaPlayerCommand
command);
63
64
enum class
MediaPlayerFormatPurpose
: uint8_t {
65
PURPOSE_DEFAULT
= 0,
66
PURPOSE_ANNOUNCEMENT
= 1,
67
};
68
69
struct
MediaPlayerSupportedFormat
{
70
std::string
format
;
71
uint32_t
sample_rate
;
72
uint32_t
num_channels
;
73
MediaPlayerFormatPurpose
purpose
;
74
uint32_t
sample_bytes
;
75
};
76
77
class
MediaPlayer
;
78
79
class
MediaPlayerTraits
{
80
public
:
81
MediaPlayerTraits
() =
default
;
82
83
void
set_supports_pause
(
bool
supports_pause) { this->
supports_pause_
= supports_pause; }
84
bool
get_supports_pause
()
const
{
return
this->
supports_pause_
; }
85
86
void
set_supports_turn_off_on
(
bool
supports_turn_off_on) { this->
supports_turn_off_on_
= supports_turn_off_on; }
87
bool
get_supports_turn_off_on
()
const
{
return
this->
supports_turn_off_on_
; }
88
89
std::vector<MediaPlayerSupportedFormat> &
get_supported_formats
() {
return
this->
supported_formats_
; }
90
91
uint32_t
get_feature_flags
()
const
{
92
uint32_t flags = 0;
93
flags |=
MediaPlayerEntityFeature::PLAY_MEDIA
|
MediaPlayerEntityFeature::BROWSE_MEDIA
|
94
MediaPlayerEntityFeature::STOP
|
MediaPlayerEntityFeature::VOLUME_SET
|
95
MediaPlayerEntityFeature::VOLUME_MUTE
|
MediaPlayerEntityFeature::MEDIA_ANNOUNCE
;
96
if
(this->
get_supports_pause
()) {
97
flags |=
MediaPlayerEntityFeature::PAUSE
|
MediaPlayerEntityFeature::PLAY
;
98
}
99
if
(this->
get_supports_turn_off_on
()) {
100
flags |=
MediaPlayerEntityFeature::TURN_OFF
|
MediaPlayerEntityFeature::TURN_ON
;
101
}
102
return
flags;
103
}
104
105
protected
:
106
std::vector<MediaPlayerSupportedFormat>
supported_formats_
{};
107
bool
supports_pause_
{
false
};
108
bool
supports_turn_off_on_
{
false
};
109
};
110
111
class
MediaPlayerCall
{
112
public
:
113
MediaPlayerCall
(
MediaPlayer
*parent) :
parent_
(parent) {}
114
115
MediaPlayerCall
&
set_command
(
MediaPlayerCommand
command);
116
MediaPlayerCall
&
set_command
(
optional<MediaPlayerCommand>
command);
117
MediaPlayerCall
&
set_command
(
const
std::string &command);
118
119
MediaPlayerCall
&
set_media_url
(
const
std::string &url);
120
121
MediaPlayerCall
&
set_volume
(
float
volume);
122
MediaPlayerCall
&
set_announcement
(
bool
announce);
123
124
void
perform
();
125
126
const
optional<MediaPlayerCommand>
&
get_command
()
const
{
return
this->
command_
; }
127
const
optional<std::string>
&
get_media_url
()
const
{
return
this->
media_url_
; }
128
const
optional<float>
&
get_volume
()
const
{
return
this->
volume_
; }
129
const
optional<bool>
&
get_announcement
()
const
{
return
this->
announcement_
; }
130
131
protected
:
132
void
validate_
();
133
MediaPlayer
*
const
parent_
;
134
optional<MediaPlayerCommand>
command_
;
135
optional<std::string>
media_url_
;
136
optional<float>
volume_
;
137
optional<bool>
announcement_
;
138
};
139
140
class
MediaPlayer
:
public
EntityBase
{
141
public
:
142
MediaPlayerState
state
{
MEDIA_PLAYER_STATE_NONE
};
143
float
volume
{1.0f};
144
145
MediaPlayerCall
make_call
() {
return
MediaPlayerCall
(
this
); }
146
147
void
publish_state
();
148
149
void
add_on_state_callback
(std::function<
void
()> &&callback);
150
151
virtual
bool
is_muted
()
const
{
return
false
; }
152
153
virtual
MediaPlayerTraits
get_traits
() = 0;
154
155
protected
:
156
friend
MediaPlayerCall
;
157
158
virtual
void
control
(
const
MediaPlayerCall
&call) = 0;
159
160
CallbackManager
<void()>
state_callback_
{};
161
};
162
163
}
// namespace media_player
164
}
// namespace esphome
esphome::CallbackManager
Definition
helpers.h:602
esphome::EntityBase
Definition
entity_base.h:22
esphome::media_player::MediaPlayerCall
Definition
media_player.h:111
esphome::media_player::MediaPlayerCall::get_announcement
const optional< bool > & get_announcement() const
Definition
media_player.h:129
esphome::media_player::MediaPlayerCall::set_media_url
MediaPlayerCall & set_media_url(const std::string &url)
Definition
media_player.cpp:132
esphome::media_player::MediaPlayerCall::validate_
void validate_()
Definition
media_player.cpp:66
esphome::media_player::MediaPlayerCall::set_volume
MediaPlayerCall & set_volume(float volume)
Definition
media_player.cpp:137
esphome::media_player::MediaPlayerCall::get_media_url
const optional< std::string > & get_media_url() const
Definition
media_player.h:127
esphome::media_player::MediaPlayerCall::get_command
const optional< MediaPlayerCommand > & get_command() const
Definition
media_player.h:126
esphome::media_player::MediaPlayerCall::announcement_
optional< bool > announcement_
Definition
media_player.h:137
esphome::media_player::MediaPlayerCall::perform
void perform()
Definition
media_player.cpp:82
esphome::media_player::MediaPlayerCall::volume_
optional< float > volume_
Definition
media_player.h:136
esphome::media_player::MediaPlayerCall::get_volume
const optional< float > & get_volume() const
Definition
media_player.h:128
esphome::media_player::MediaPlayerCall::MediaPlayerCall
MediaPlayerCall(MediaPlayer *parent)
Definition
media_player.h:113
esphome::media_player::MediaPlayerCall::media_url_
optional< std::string > media_url_
Definition
media_player.h:135
esphome::media_player::MediaPlayerCall::parent_
MediaPlayer *const parent_
Definition
media_player.h:133
esphome::media_player::MediaPlayerCall::set_announcement
MediaPlayerCall & set_announcement(bool announce)
Definition
media_player.cpp:142
esphome::media_player::MediaPlayerCall::set_command
MediaPlayerCall & set_command(MediaPlayerCommand command)
Definition
media_player.cpp:101
esphome::media_player::MediaPlayerCall::command_
optional< MediaPlayerCommand > command_
Definition
media_player.h:134
esphome::media_player::MediaPlayer
Definition
media_player.h:140
esphome::media_player::MediaPlayer::control
virtual void control(const MediaPlayerCall &call)=0
esphome::media_player::MediaPlayer::state
MediaPlayerState state
Definition
media_player.h:142
esphome::media_player::MediaPlayer::MediaPlayerCall
friend MediaPlayerCall
Definition
media_player.h:156
esphome::media_player::MediaPlayer::state_callback_
CallbackManager< void()> state_callback_
Definition
media_player.h:160
esphome::media_player::MediaPlayer::publish_state
void publish_state()
Definition
media_player.cpp:151
esphome::media_player::MediaPlayer::get_traits
virtual MediaPlayerTraits get_traits()=0
esphome::media_player::MediaPlayer::add_on_state_callback
void add_on_state_callback(std::function< void()> &&callback)
Definition
media_player.cpp:147
esphome::media_player::MediaPlayer::volume
float volume
Definition
media_player.h:143
esphome::media_player::MediaPlayer::make_call
MediaPlayerCall make_call()
Definition
media_player.h:145
esphome::media_player::MediaPlayer::is_muted
virtual bool is_muted() const
Definition
media_player.h:151
esphome::media_player::MediaPlayerTraits
Definition
media_player.h:79
esphome::media_player::MediaPlayerTraits::MediaPlayerTraits
MediaPlayerTraits()=default
esphome::media_player::MediaPlayerTraits::get_supports_pause
bool get_supports_pause() const
Definition
media_player.h:84
esphome::media_player::MediaPlayerTraits::supported_formats_
std::vector< MediaPlayerSupportedFormat > supported_formats_
Definition
media_player.h:106
esphome::media_player::MediaPlayerTraits::get_supports_turn_off_on
bool get_supports_turn_off_on() const
Definition
media_player.h:87
esphome::media_player::MediaPlayerTraits::set_supports_turn_off_on
void set_supports_turn_off_on(bool supports_turn_off_on)
Definition
media_player.h:86
esphome::media_player::MediaPlayerTraits::get_feature_flags
uint32_t get_feature_flags() const
Definition
media_player.h:91
esphome::media_player::MediaPlayerTraits::get_supported_formats
std::vector< MediaPlayerSupportedFormat > & get_supported_formats()
Definition
media_player.h:89
esphome::media_player::MediaPlayerTraits::set_supports_pause
void set_supports_pause(bool supports_pause)
Definition
media_player.h:83
esphome::media_player::MediaPlayerTraits::supports_pause_
bool supports_pause_
Definition
media_player.h:107
esphome::media_player::MediaPlayerTraits::supports_turn_off_on_
bool supports_turn_off_on_
Definition
media_player.h:108
esphome::optional
Definition
optional.h:36
entity_base.h
state
bool state
Definition
fan.h:0
helpers.h
esphome::media_player::MediaPlayerFormatPurpose
MediaPlayerFormatPurpose
Definition
media_player.h:64
esphome::media_player::MediaPlayerFormatPurpose::PURPOSE_ANNOUNCEMENT
@ PURPOSE_ANNOUNCEMENT
esphome::media_player::MediaPlayerFormatPurpose::PURPOSE_DEFAULT
@ PURPOSE_DEFAULT
esphome::media_player::MediaPlayerEntityFeature
MediaPlayerEntityFeature
Definition
media_player.h:9
esphome::media_player::VOLUME_STEP
@ VOLUME_STEP
Definition
media_player.h:20
esphome::media_player::PAUSE
@ PAUSE
Definition
media_player.h:10
esphome::media_player::MEDIA_ANNOUNCE
@ MEDIA_ANNOUNCE
Definition
media_player.h:30
esphome::media_player::BROWSE_MEDIA
@ BROWSE_MEDIA
Definition
media_player.h:27
esphome::media_player::MEDIA_ENQUEUE
@ MEDIA_ENQUEUE
Definition
media_player.h:31
esphome::media_player::GROUPING
@ GROUPING
Definition
media_player.h:29
esphome::media_player::VOLUME_SET
@ VOLUME_SET
Definition
media_player.h:12
esphome::media_player::STOP
@ STOP
Definition
media_player.h:22
esphome::media_player::PREVIOUS_TRACK
@ PREVIOUS_TRACK
Definition
media_player.h:14
esphome::media_player::SEARCH_MEDIA
@ SEARCH_MEDIA
Definition
media_player.h:32
esphome::media_player::TURN_ON
@ TURN_ON
Definition
media_player.h:17
esphome::media_player::SHUFFLE_SET
@ SHUFFLE_SET
Definition
media_player.h:25
esphome::media_player::NEXT_TRACK
@ NEXT_TRACK
Definition
media_player.h:15
esphome::media_player::SELECT_SOUND_MODE
@ SELECT_SOUND_MODE
Definition
media_player.h:26
esphome::media_player::CLEAR_PLAYLIST
@ CLEAR_PLAYLIST
Definition
media_player.h:23
esphome::media_player::TURN_OFF
@ TURN_OFF
Definition
media_player.h:18
esphome::media_player::SELECT_SOURCE
@ SELECT_SOURCE
Definition
media_player.h:21
esphome::media_player::PLAY
@ PLAY
Definition
media_player.h:24
esphome::media_player::PLAY_MEDIA
@ PLAY_MEDIA
Definition
media_player.h:19
esphome::media_player::VOLUME_MUTE
@ VOLUME_MUTE
Definition
media_player.h:13
esphome::media_player::REPEAT_SET
@ REPEAT_SET
Definition
media_player.h:28
esphome::media_player::SEEK
@ SEEK
Definition
media_player.h:11
esphome::media_player::media_player_command_to_string
const char * media_player_command_to_string(MediaPlayerCommand command)
Definition
media_player.cpp:31
esphome::media_player::media_player_state_to_string
const char * media_player_state_to_string(MediaPlayerState state)
Definition
media_player.cpp:10
esphome::media_player::MediaPlayerState
MediaPlayerState
Definition
media_player.h:35
esphome::media_player::MEDIA_PLAYER_STATE_ON
@ MEDIA_PLAYER_STATE_ON
Definition
media_player.h:42
esphome::media_player::MEDIA_PLAYER_STATE_IDLE
@ MEDIA_PLAYER_STATE_IDLE
Definition
media_player.h:37
esphome::media_player::MEDIA_PLAYER_STATE_PLAYING
@ MEDIA_PLAYER_STATE_PLAYING
Definition
media_player.h:38
esphome::media_player::MEDIA_PLAYER_STATE_OFF
@ MEDIA_PLAYER_STATE_OFF
Definition
media_player.h:41
esphome::media_player::MEDIA_PLAYER_STATE_PAUSED
@ MEDIA_PLAYER_STATE_PAUSED
Definition
media_player.h:39
esphome::media_player::MEDIA_PLAYER_STATE_NONE
@ MEDIA_PLAYER_STATE_NONE
Definition
media_player.h:36
esphome::media_player::MEDIA_PLAYER_STATE_ANNOUNCING
@ MEDIA_PLAYER_STATE_ANNOUNCING
Definition
media_player.h:40
esphome::media_player::MediaPlayerCommand
MediaPlayerCommand
Definition
media_player.h:46
esphome::media_player::MEDIA_PLAYER_COMMAND_PAUSE
@ MEDIA_PLAYER_COMMAND_PAUSE
Definition
media_player.h:48
esphome::media_player::MEDIA_PLAYER_COMMAND_ENQUEUE
@ MEDIA_PLAYER_COMMAND_ENQUEUE
Definition
media_player.h:55
esphome::media_player::MEDIA_PLAYER_COMMAND_CLEAR_PLAYLIST
@ MEDIA_PLAYER_COMMAND_CLEAR_PLAYLIST
Definition
media_player.h:58
esphome::media_player::MEDIA_PLAYER_COMMAND_PLAY
@ MEDIA_PLAYER_COMMAND_PLAY
Definition
media_player.h:47
esphome::media_player::MEDIA_PLAYER_COMMAND_STOP
@ MEDIA_PLAYER_COMMAND_STOP
Definition
media_player.h:49
esphome::media_player::MEDIA_PLAYER_COMMAND_TOGGLE
@ MEDIA_PLAYER_COMMAND_TOGGLE
Definition
media_player.h:52
esphome::media_player::MEDIA_PLAYER_COMMAND_VOLUME_UP
@ MEDIA_PLAYER_COMMAND_VOLUME_UP
Definition
media_player.h:53
esphome::media_player::MEDIA_PLAYER_COMMAND_VOLUME_DOWN
@ MEDIA_PLAYER_COMMAND_VOLUME_DOWN
Definition
media_player.h:54
esphome::media_player::MEDIA_PLAYER_COMMAND_TURN_OFF
@ MEDIA_PLAYER_COMMAND_TURN_OFF
Definition
media_player.h:60
esphome::media_player::MEDIA_PLAYER_COMMAND_REPEAT_OFF
@ MEDIA_PLAYER_COMMAND_REPEAT_OFF
Definition
media_player.h:57
esphome::media_player::MEDIA_PLAYER_COMMAND_MUTE
@ MEDIA_PLAYER_COMMAND_MUTE
Definition
media_player.h:50
esphome::media_player::MEDIA_PLAYER_COMMAND_UNMUTE
@ MEDIA_PLAYER_COMMAND_UNMUTE
Definition
media_player.h:51
esphome::media_player::MEDIA_PLAYER_COMMAND_REPEAT_ONE
@ MEDIA_PLAYER_COMMAND_REPEAT_ONE
Definition
media_player.h:56
esphome::media_player::MEDIA_PLAYER_COMMAND_TURN_ON
@ MEDIA_PLAYER_COMMAND_TURN_ON
Definition
media_player.h:59
esphome
Providing packet encoding functions for exchanging data with a remote host.
Definition
a01nyub.cpp:7
esphome::media_player::MediaPlayerSupportedFormat
Definition
media_player.h:69
esphome::media_player::MediaPlayerSupportedFormat::num_channels
uint32_t num_channels
Definition
media_player.h:72
esphome::media_player::MediaPlayerSupportedFormat::sample_rate
uint32_t sample_rate
Definition
media_player.h:71
esphome::media_player::MediaPlayerSupportedFormat::format
std::string format
Definition
media_player.h:70
esphome::media_player::MediaPlayerSupportedFormat::purpose
MediaPlayerFormatPurpose purpose
Definition
media_player.h:73
esphome::media_player::MediaPlayerSupportedFormat::sample_bytes
uint32_t sample_bytes
Definition
media_player.h:74
Generated by
1.12.0