void BulkUploadClient::generateRegularTrace(RegularTraceItem &trace, int seconds) { // Init regular trace trace.clear(); trace.insert("TxRate", QList<qint32>()); trace.insert("MaxTxRate", QList<qint32>()); trace.insert("Active", QList<qint32>()); // Calculate busy ratio int startTime = m_trace.time.first(); // ms int stopTime = m_trace.time.last(); // ms QVector<double> busyRatios(seconds, 0.0); for(int i = startTime / 1000; i <= stopTime / 1000; i++) { if( startTime / 1000 == stopTime / 1000 ) { busyRatios[i] += (stopTime - startTime) / 1000.0; break; } if( i >= seconds ) { LOG_DEBUG("Index is out of range"); break; } if( i == startTime / 1000 ) { busyRatios[i] += 1.0 - (startTime % 1000) / 1000.0; } else if( i < stopTime / 1000 ) { busyRatios[i] += 1.0; } else if( i == stopTime / 1000 ) { busyRatios[i] += (stopTime % 1000) / 1000.0; } } // MaxRxRate & Active for(int i = 0; i < seconds; i++) { trace["MaxTxRate"].append( (m_task->getMaxRate() == -1) ? (busyRatios[i] > 0.0 ? -1 : 0) : busyRatios[i] * m_task->getMaxRate()); trace["Active"].append(busyRatios[i] > 0.0 ? 1 : 0); } // TxRate QVector<qint32> bytesPerSecond(seconds, 0); for(int i = 0; i < m_trace.totalBytes.size(); i++) { if( m_trace.time[i] < seconds * 1000 ) { bytesPerSecond[m_trace.time[i] / 1000] += m_trace.newBytes[i]; } else { LOG_DEBUG("Time is out of range"); } } for(int i = 0; i < seconds; i++) { trace["TxRate"].append(bytesPerSecond[i]); } }
int AudioFormat::bitRate() const { return bytesPerSecond() << 3; }