* @brief Set sample rate */
| 188 | * @brief Set sample rate |
| 189 | */ |
| 190 | API::CommandResponse API::Handlers::AudioHandler::setSampleRate(const QString& id, |
| 191 | const QJsonObject& params) |
| 192 | { |
| 193 | if (!params.contains(QStringLiteral("rateIndex"))) { |
| 194 | return CommandResponse::makeError( |
| 195 | id, ErrorCode::MissingParam, QStringLiteral("Missing required parameter: rateIndex")); |
| 196 | } |
| 197 | |
| 198 | const int rate_index = params.value(QStringLiteral("rateIndex")).toInt(); |
| 199 | |
| 200 | const auto& rates = IO::ConnectionManager::instance().audio()->sampleRates(); |
| 201 | if (rate_index < 0 || rate_index >= rates.count()) { |
| 202 | return CommandResponse::makeError( |
| 203 | id, |
| 204 | ErrorCode::InvalidParam, |
| 205 | QString(QStringLiteral("Invalid rateIndex: %1. Valid range: 0-%2")) |
| 206 | .arg(rate_index) |
| 207 | .arg(rates.count() - 1)); |
| 208 | } |
| 209 | |
| 210 | IO::ConnectionManager::instance().audio()->setSelectedSampleRate(rate_index); |
| 211 | |
| 212 | QJsonObject result; |
| 213 | result[QStringLiteral("rateIndex")] = rate_index; |
| 214 | result[QStringLiteral("rateName")] = rates.at(rate_index); |
| 215 | return CommandResponse::makeSuccess(id, result); |
| 216 | } |
| 217 | |
| 218 | /** |
| 219 | * @brief Set input sample format |
nothing calls this directly
no test coverage detected