uint32_t AudioStreamOutALSA::latency() const { int err; int t; snd_pcm_status_t *status; snd_pcm_status_alloca(&status); if(mHandle->handle == NULL) { LOGV("handle is null, error !"); return 0; } if ((err = snd_pcm_status(mHandle->handle, status)) < 0) { LOGV("stream status error :%s\n", snd_strerror(err)); return USEC_TO_MSEC (mHandle->latency); } t = snd_pcm_status_get_delay(status); LOGV("snd_pcm_status_get_delay = %d", t); LOGV("AudioStreamOutALSA::latency = %d, sampleRate = %d", (t * 1000) / sampleRate(), sampleRate()); return (t * 1000) / sampleRate(); }
/*----------------------------------------------------------------------------*/ VOID nicCmdEventQueryStaStatistics(IN P_ADAPTER_T prAdapter, IN P_CMD_INFO_T prCmdInfo, IN PUINT_8 pucEventBuf) { UINT_32 u4QueryInfoLen; P_EVENT_STA_STATISTICS_T prEvent; P_GLUE_INFO_T prGlueInfo; P_PARAM_GET_STA_STATISTICS prStaStatistics; ASSERT(prAdapter); ASSERT(prCmdInfo); ASSERT(pucEventBuf); ASSERT(prCmdInfo->pvInformationBuffer); if (prCmdInfo->fgIsOid) { prGlueInfo = prAdapter->prGlueInfo; prEvent = (P_EVENT_STA_STATISTICS_T) pucEventBuf; prStaStatistics = (P_PARAM_GET_STA_STATISTICS) prCmdInfo->pvInformationBuffer; u4QueryInfoLen = sizeof(PARAM_GET_STA_STA_STATISTICS); /* Statistics from FW is valid */ if (prEvent->u4Flags & BIT(0)) { prStaStatistics->ucPer = prEvent->ucPer; prStaStatistics->ucRcpi = prEvent->ucRcpi; prStaStatistics->u4PhyMode = prEvent->u4PhyMode; prStaStatistics->u2LinkSpeed = prEvent->u2LinkSpeed; prStaStatistics->u4TxFailCount = prEvent->u4TxFailCount; prStaStatistics->u4TxLifeTimeoutCount = prEvent->u4TxLifeTimeoutCount; if (prEvent->u4TxCount) { UINT_32 u4TxDoneAirTimeMs = USEC_TO_MSEC(prEvent->u4TxDoneAirTime * 32); prStaStatistics->u4TxAverageAirTime = (u4TxDoneAirTimeMs / prEvent->u4TxCount); } else { prStaStatistics->u4TxAverageAirTime = 0; } } kalOidComplete(prGlueInfo, prCmdInfo->fgSetQuery, u4QueryInfoLen, WLAN_STATUS_SUCCESS); } }
uint32_t AudioStreamOutALSA::latency() const { // Android wants latency in milliseconds. return USEC_TO_MSEC (mHandle->latency); }