3#include "AudioTools/AudioCodecs/AudioCodecsBase.h"
30 buffer.
resize(amr.getEncodedFrameSizeBytes());
31 return getOutput() !=
nullptr;
42 LOGE(
"Invalid channels: %d", from.
channels);
46 size_t write(
const uint8_t *data,
size_t len)
override {
47 for (
size_t j = 0; j < len; j++) {
48 buffer.
write(data[j]);
50 int result_samples = amr.getFrameSizeSamples();
51 int16_t result[result_samples];
53 amr.decode(buffer.
data(), buffer.size(), result, result_samples);
55 if (getOutput() !=
nullptr) {
56 getOutput()->write((uint8_t *)result, size *
sizeof(int16_t));
66 int blickSize() {
return amr.getEncodedFrameSizeBytes(); }
69 int frameSize() {
return amr.getFrameSizeSamples() *
sizeof(int16_t); }
71 void setMode(AMRWB::Mode mode) {
76 operator bool()
override {
return getOutput() !=
nullptr; }
81 SingleBuffer<uint8_t> buffer{0};
105 void setMode(AMRWB::Mode mode) {
112 return getOutput() !=
nullptr;
123 LOGE(
"Invalid channels: %d", from.
channels);
127 size_t write(
const uint8_t *data,
size_t len)
override {
128 for (
size_t j = 0; j < len; j++) {
129 buffer.
write(data[j]);
132 uint8_t result[result_bytes];
134 amr.encode((int16_t *)buffer.
data(),
135 buffer.size() /
sizeof(int16_t), result, result_bytes);
137 if (getOutput() !=
nullptr) {
138 getOutput()->write(result, size);
150 return amr.getEncodedFrameSizeBytes();
154 int frameSize() {
return amr.getFrameSizeSamples() *
sizeof(int16_t); }
156 const char *
mime() {
return "audio/amr"; }
158 void setOutput(
Print &out_stream)
override { p_print = &out_stream; }
160 Print *getOutput() {
return p_print; }
165 SingleBuffer<uint8_t> buffer{0};
166 Print *p_print =
nullptr;