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 virtual ProtoStruct get_status() = 0;
91
94 inline std::vector<GeometryConfig> get_geometries() {
95 return get_geometries({});
96 }
97
101 virtual std::vector<GeometryConfig> get_geometries(const ProtoStruct& extra) = 0;
102
103 API api() const override;
104
105 protected:
106 explicit AudioIn(std::string name);
107};
108
109template <>
111 static API api();
112};
113
114} // namespace sdk
115} // 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:94
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 ProtoStruct get_status()=0
Get the status of the audio_in.
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