Viam C++ SDK current
Loading...
Searching...
No Matches
audio_in.hpp
Go to the documentation of this file.
1
4#pragma once
5
6#include <string>
7
8#include <viam/sdk/common/audio.hpp>
9#include <viam/sdk/common/proto_value.hpp>
10#include <viam/sdk/common/utils.hpp>
11#include <viam/sdk/config/resource.hpp>
12
13namespace viam {
14namespace sdk {
15
17
24class AudioIn : public Component {
25 public:
29 struct audio_chunk {
30 std::vector<uint8_t> audio_data;
31 audio_info info;
32 std::chrono::nanoseconds start_timestamp_ns;
33 std::chrono::nanoseconds end_timestamp_ns;
34 int sequence_number; // sequential chunk number
35 std::string request_id;
36 };
37
47 // starting from the time the request was received by the server.
48 inline void get_audio(std::string const& codec,
49 std::function<bool(audio_chunk&& chunk)> const& chunk_handler,
50 double const& duration_seconds,
51 int64_t const& previous_timestamp) {
52 return get_audio(codec, chunk_handler, duration_seconds, previous_timestamp, {});
53 }
54
64 // starting from the time the request was received by the server.
66 virtual void get_audio(std::string const& codec,
67 std::function<bool(audio_chunk&& chunk)> const& chunk_handler,
68 double const& duration_seconds,
69 int64_t const& previous_timestamp,
70 const ProtoStruct& extra) = 0;
71
75 return get_properties({});
76 }
77
81 virtual audio_properties get_properties(const ProtoStruct& extra) = 0;
82
83 // @brief Send/receive arbitrary commands to the resource.
86 virtual ProtoStruct do_command(const ProtoStruct& command) = 0;
87
90 inline std::vector<GeometryConfig> get_geometries() {
91 return get_geometries({});
92 }
93
97 virtual std::vector<GeometryConfig> get_geometries(const ProtoStruct& extra) = 0;
98
99 API api() const override;
100
101 protected:
102 explicit AudioIn(std::string name);
103};
104
105template <>
107 static API api();
108};
109
110} // namespace sdk
111} // namespace viam
Definition resource_api.hpp:21
An AudioIn is a deivce that can take audio input.
Definition audio_in.hpp:24
virtual void get_audio(std::string const &codec, std::function< bool(audio_chunk &&chunk)> const &chunk_handler, double const &duration_seconds, int64_t const &previous_timestamp, const ProtoStruct &extra)=0
Get a stream of audio from the device until completed or cancelled.
API api() const override
Returns the API associated with a particular resource.
audio_properties get_properties()
Returns properties of the audio in device (supported codecs, sample rate, number of channels)
Definition audio_in.hpp:74
std::vector< GeometryConfig > get_geometries()
Returns GeometryConfigs associated with the calling AudioIn.
Definition audio_in.hpp:90
void get_audio(std::string const &codec, std::function< bool(audio_chunk &&chunk)> const &chunk_handler, double const &duration_seconds, int64_t const &previous_timestamp)
Get a stream of audio from the device until completed or cancelled.
Definition audio_in.hpp:48
virtual ProtoStruct do_command(const ProtoStruct &command)=0
virtual std::vector< GeometryConfig > get_geometries(const ProtoStruct &extra)=0
Returns GeometryConfigs associated with the calling AudioIn.
virtual audio_properties get_properties(const ProtoStruct &extra)=0
Returns properties of the audio in device (supported codecs, sample rate, number of channels)
Definition component.hpp:10
virtual std::string name() const
Return the resource's name.
Definition resource_api.hpp:46
A sequential chunk of audio data with timing information for continuous audio streams.
Definition audio_in.hpp:29
Information about a piece of audio data.
Definition audio.hpp:32
Properties of an audio component (input or output)
Definition audio.hpp:24