| 231 | } |
| 232 | |
| 233 | void append_audio_buffer(AudioBuffer & dst, const AudioBuffer & src) { |
| 234 | if (src.sample_rate <= 0 || src.channels <= 0) { |
| 235 | throw std::runtime_error("audio append requires valid source format"); |
| 236 | } |
| 237 | if (dst.sample_rate == 0) { |
| 238 | dst.sample_rate = src.sample_rate; |
| 239 | dst.channels = src.channels; |
| 240 | } else if (dst.sample_rate != src.sample_rate || dst.channels != src.channels) { |
| 241 | throw std::runtime_error("audio append requires matching audio format"); |
| 242 | } |
| 243 | dst.samples.insert(dst.samples.end(), src.samples.begin(), src.samples.end()); |
| 244 | } |
| 245 | |
| 246 | GraphCapacityMode parse_graph_capacity_mode(const std::string & value) { |
| 247 | if (value == "fixed") { |