#include <iostream>
#include <cmath>
#include <stdexcept>
double calculateMinMemoryBytes(double input_rate_bps, double output_rate_bps, double burst_duration_sec) {
if (input_rate_bps < 0 || output_rate_bps < 0 || burst_duration_sec < 0) {
throw std::invalid_argument("Inputs must be non-negative values.");
}
if (input_rate_bps <= output_rate_bps) {
return 0.0;
}
double required_bits = (input_rate_bps - output_rate_bps) * burst_duration_sec;
return required_bits / 8.0;
}
int main() {
double input_rate = 100e6;
double output_rate = 40e6;
double duration = 2.0;
try {
double mem_bytes = calculateMinMemoryBytes(input_rate, output_rate, duration);
double mem_megabytes = mem_bytes / (1024.0 * 1024.0);
std::cout << "--- Buffer Calculation Results ---" << std::endl;
std::cout << "Required Memory: " << std::ceil(mem_bytes) << " Bytes" << std::endl;
std::cout << "Required Memory: " << mem_megabytes << " MB" << std::endl;
}
catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: