3#include <Media/Libav.hpp>
6#include <libavutil/frame.h>
9#include <ossia/dataflow/float_to_sample.hpp>
17 : target_buffer_size{target_buffer_size}
23 virtual void add_frame(AVFrame& frame,
const std::span<ossia::float_vector> vec) = 0;
25 int target_buffer_size{};
30 using AudioFrameEncoder::AudioFrameEncoder;
32 void add_frame(AVFrame& frame,
const std::span<ossia::float_vector> vec)
override
34 const int channels = vec.size();
35 const int frames = vec[0].size();
36 auto* ptr =
reinterpret_cast<int16_t*
>(frame.data[0]);
37 for(
int i = 0; i < frames; i++)
38 for(
int c = 0; c < channels; c++)
39 *ptr++ = ossia::float_to_sample<int16_t, 16>(vec[c][i]);
45 using AudioFrameEncoder::AudioFrameEncoder;
47 void add_frame(AVFrame& frame,
const std::span<ossia::float_vector> vec)
override
49 const int channels = vec.size();
50 const int frames = vec[0].size();
51 auto* ptr =
reinterpret_cast<int32_t*
>(frame.data[0]);
52 for(
int i = 0; i < frames; i++)
53 for(
int c = 0; c < channels; c++)
54 *ptr++ = ossia::float_to_sample<int32_t, 24>(vec[c][i]);
60 using AudioFrameEncoder::AudioFrameEncoder;
62 void add_frame(AVFrame& frame,
const std::span<ossia::float_vector> vec)
override
64 const int channels = vec.size();
65 const int frames = vec[0].size();
66 auto* ptr =
reinterpret_cast<int32_t*
>(frame.data[0]);
67 for(
int i = 0; i < frames; i++)
68 for(
int c = 0; c < channels; c++)
69 *ptr++ = ossia::float_to_sample<int32_t, 32>(vec[c][i]);
75 using AudioFrameEncoder::AudioFrameEncoder;
77 void add_frame(AVFrame& frame,
const std::span<ossia::float_vector> vec)
override
79 const int channels = vec.size();
80 const int frames = vec[0].size();
81 auto* ptr =
reinterpret_cast<float*
>(frame.data[0]);
82 for(
int i = 0; i < frames; i++)
83 for(
int c = 0; c < channels; c++)
90 using AudioFrameEncoder::AudioFrameEncoder;
92 void add_frame(AVFrame& frame,
const std::span<ossia::float_vector> vec)
override
94 const int channels = vec.size();
95 const int frames = vec[0].size();
96 auto* ptr =
reinterpret_cast<double*
>(frame.data[0]);
97 for(
int i = 0; i < frames; i++)
98 for(
int c = 0; c < channels; c++)
105 using AudioFrameEncoder::AudioFrameEncoder;
107 void add_frame(AVFrame& frame,
const std::span<ossia::float_vector> vec)
override
109 const int channels = vec.size();
111 for(
int i = 0; i < channels; ++i)
113 uint8_t* dst = (i < AV_NUM_DATA_POINTERS) ? frame.data[i]
114 : frame.extended_data[i];
117 const int bytes = vec[i].size() *
sizeof(float);
118 std::memcpy(dst, vec[i].data(), bytes);
126 using AudioFrameEncoder::AudioFrameEncoder;
128 void add_frame(AVFrame& frame,
const std::span<ossia::float_vector> vec)
override
130 const int channels = vec.size();
131 const int frames = vec[0].size();
132 for(
int i = 0; i < channels; ++i)
134 auto* dst =
reinterpret_cast<int16_t*
>(
135 (i < AV_NUM_DATA_POINTERS) ? frame.data[i] : frame.extended_data[i]);
137 for(
int j = 0; j < frames; ++j)
138 dst[j] = ossia::float_to_sample<int16_t, 16>(vec[i][j]);
145 using AudioFrameEncoder::AudioFrameEncoder;
147 void add_frame(AVFrame& frame,
const std::span<ossia::float_vector> vec)
override
149 const int channels = vec.size();
150 const int frames = vec[0].size();
151 for(
int i = 0; i < channels; ++i)
153 auto* dst =
reinterpret_cast<int32_t*
>(
154 (i < AV_NUM_DATA_POINTERS) ? frame.data[i] : frame.extended_data[i]);
156 for(
int j = 0; j < frames; ++j)
157 dst[j] = ossia::float_to_sample<int32_t, 32>(vec[i][j]);
164 using AudioFrameEncoder::AudioFrameEncoder;
166 void add_frame(AVFrame& frame,
const std::span<ossia::float_vector> vec)
override
168 const int channels = vec.size();
169 const int frames = vec[0].size();
170 for(
int i = 0; i < channels; ++i)
172 auto* dst =
reinterpret_cast<double*
>(
173 (i < AV_NUM_DATA_POINTERS) ? frame.data[i] : frame.extended_data[i]);
175 for(
int j = 0; j < frames; ++j)
176 dst[j] =
static_cast<double>(vec[i][j]);
Binds the rendering pipeline to ossia processes.
Definition CameraDevice.cpp:30
Definition AudioFrameEncoder.hpp:15
Definition AudioFrameEncoder.hpp:89
Definition AudioFrameEncoder.hpp:163
Definition AudioFrameEncoder.hpp:74
Definition AudioFrameEncoder.hpp:104
Definition AudioFrameEncoder.hpp:29
Definition AudioFrameEncoder.hpp:125
Definition AudioFrameEncoder.hpp:44
Definition AudioFrameEncoder.hpp:59
Definition AudioFrameEncoder.hpp:144