Viam C++ SDK current
Loading...
Searching...
No Matches
audio_out.hpp
Go to the documentation of this file.
1
4#pragma once
5
6#include <functional>
7#include <string>
8#include <vector>
9
10#include <boost/optional/optional.hpp>
11
12#include <viam/sdk/common/audio.hpp>
13#include <viam/sdk/common/proto_value.hpp>
14#include <viam/sdk/common/utils.hpp>
15#include <viam/sdk/config/resource.hpp>
16
17namespace viam {
18namespace sdk {
19
21
28class AudioOut : public Component {
29 public:
31
36 inline void play(std::vector<uint8_t> const& audio_data, boost::optional<audio_info> info) {
37 return play(audio_data, info, {});
38 }
39
45 virtual void play(std::vector<uint8_t> const& audio_data,
46 boost::optional<audio_info> info,
47 const ProtoStruct& extra) = 0;
48
53 inline void play_stream(audio_info info,
54 std::function<boost::optional<std::vector<uint8_t>>()> chunk_source) {
55 return play_stream(std::move(info), std::move(chunk_source), {});
56 }
57
63 virtual void play_stream(audio_info info,
64 std::function<boost::optional<std::vector<uint8_t>>()> chunk_source,
65 const ProtoStruct& extra) = 0;
66
70 return get_properties({});
71 }
72
76 virtual audio_properties get_properties(const ProtoStruct& extra) = 0;
77
81 virtual ProtoStruct do_command(const ProtoStruct& command) = 0;
82
85 virtual ProtoStruct get_status() = 0;
86
87 // @brief Returns `GeometryConfig`s associated with the calling audioout.
89 inline std::vector<GeometryConfig> get_geometries() {
90 return get_geometries({});
91 }
92
96 virtual std::vector<GeometryConfig> get_geometries(const ProtoStruct& extra) = 0;
97
98 API api() const override;
99
100 protected:
101 explicit AudioOut(std::string name);
102};
103
104template <>
106 static API api();
107};
108
109} // namespace sdk
110} // namespace viam
Definition resource_api.hpp:21
An AudioOut is a device that can output audio.
Definition audio_out.hpp:28
virtual void play(std::vector< uint8_t > const &audio_data, boost::optional< audio_info > info, const ProtoStruct &extra)=0
Play audio through the audioout component.
virtual ProtoStruct get_status()=0
Get the status of the audio_out.
API api() const override
Returns the API associated with a particular resource.
void play(std::vector< uint8_t > const &audio_data, boost::optional< audio_info > info)
Play audio data.
Definition audio_out.hpp:36
std::vector< GeometryConfig > get_geometries()
Definition audio_out.hpp:89
virtual audio_properties get_properties(const ProtoStruct &extra)=0
Returns properties of the audio out device (supported codecs, sample rate, number of channels)
void play_stream(audio_info info, std::function< boost::optional< std::vector< uint8_t > >()> chunk_source)
Stream audio chunks to the audioout component for playback.
Definition audio_out.hpp:53
virtual ProtoStruct do_command(const ProtoStruct &command)=0
Send/receive arbitrary commands to the resource.
virtual void play_stream(audio_info info, std::function< boost::optional< std::vector< uint8_t > >()> chunk_source, const ProtoStruct &extra)=0
Stream audio chunks to the audioout component for playback.
audio_properties get_properties()
Returns properties of the audio out device (supported codecs, sample rate, number of channels)
Definition audio_out.hpp:69
virtual std::vector< GeometryConfig > get_geometries(const ProtoStruct &extra)=0
Returns GeometryConfigs associated with the calling audioout.
Definition component.hpp:10
virtual std::string name() const
Return the resource's name.
Definition resource_api.hpp:46
Information about a piece of audio data.
Definition audio.hpp:32
Properties of an audio component (input or output)
Definition audio.hpp:24