static APR_INLINE rtp_ts_result_e rtp_rx_ts_update(rtp_receiver_t *receiver, mpf_codec_descriptor_t *descriptor, apr_time_t *time, apr_uint32_t ts) { apr_int32_t deviation; /* arrival time diff in samples */ deviation = (apr_int32_t)apr_time_as_msec(*time - receiver->history.time_last) * descriptor->channel_count * descriptor->sampling_rate / 1000; /* arrival timestamp diff */ deviation -= ts - receiver->history.ts_last; if(deviation < 0) { deviation = -deviation; } if(deviation > DEVIATION_THRESHOLD) { return RTP_TS_DRIFT; } receiver->rr_stat.jitter += deviation - ((receiver->rr_stat.jitter + 8) >> 4); RTP_TRACE("jitter=%d deviation=%d\n",receiver->rr_stat.jitter,deviation); receiver->history.time_last = *time; receiver->history.ts_last = ts; if(receiver->rr_stat.jitter < receiver->periodic_history.jitter_min) { receiver->periodic_history.jitter_min = receiver->rr_stat.jitter; } if(receiver->rr_stat.jitter > receiver->periodic_history.jitter_max) { receiver->periodic_history.jitter_max = receiver->rr_stat.jitter; } return RTP_TS_UPDATE; }
int mapcache_lock_or_wait_for_resource(mapcache_context *ctx, mapcache_locker *locker, char *resource, void **lock) { mapcache_lock_result rv = locker->aquire_lock(ctx, locker, resource, lock); if(GC_HAS_ERROR(ctx)) { return MAPCACHE_FAILURE; } if(rv == MAPCACHE_LOCK_AQUIRED) return MAPCACHE_TRUE; else { apr_time_t start_wait = apr_time_now(); rv = MAPCACHE_LOCK_LOCKED; while(rv != MAPCACHE_LOCK_NOENT) { unsigned int waited = apr_time_as_msec(apr_time_now()-start_wait); if(waited > locker->timeout*1000) { mapcache_unlock_resource(ctx,locker,resource, *lock); ctx->log(ctx,MAPCACHE_ERROR,"deleting a possibly stale lock after waiting on it for %g seconds",waited/1000.0); return MAPCACHE_FALSE; } apr_sleep(locker->retry_interval * 1000000); rv = locker->ping_lock(ctx,locker,resource, *lock); } return MAPCACHE_FALSE; } }
APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond, apr_thread_mutex_t *mutex, apr_interval_time_t timeout) { ULONG timeout_ms = apr_time_as_msec(timeout); return thread_cond_timedwait(cond, mutex, timeout_ms); }
APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond, apr_thread_mutex_t *mutex, apr_interval_time_t timeout) { ULONG timeout_ms = (timeout >= 0) ? apr_time_as_msec(timeout) : SEM_INDEFINITE_WAIT; return thread_cond_timedwait(cond, mutex, timeout_ms); }
static apr_status_t APR_THREAD_FUNC ntp_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t) { tcn_ntp_conn_t *con = (tcn_ntp_conn_t *)sock; if (t < 0) con->timeout = INFINITE; else con->timeout = (DWORD)(apr_time_as_msec(t)); return APR_SUCCESS; }
static apr_status_t APR_THREAD_FUNC uxp_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t) { tcn_uxp_conn_t *con = (tcn_uxp_conn_t *)sock; if (t < 0) con->timeout = -1; else con->timeout = (int)(apr_time_as_msec(t)); return APR_SUCCESS; }
static APR_INLINE rtp_ts_result_e rtp_rx_ts_update(rtp_receiver_t *receiver, mpf_codec_descriptor_t *descriptor, apr_time_t *time, apr_uint32_t ts, apr_byte_t *marker) { apr_int32_t deviation; apr_int32_t time_diff; /* arrival time diff in msec */ time_diff = (apr_int32_t)apr_time_as_msec(*time - receiver->history.time_last); /* if the time difference is more than the threshold (INTER_TALKSPURT_GAP), and the marker is not set, then this might be a beginning of a new malformed talkspurt */ if(!*marker && time_diff > INTER_TALKSPURT_GAP) { /* set the missing marker */ *marker = 1; } /* arrival time diff in samples */ deviation = time_diff * descriptor->channel_count * descriptor->sampling_rate / 1000; /* arrival timestamp diff */ deviation -= ts - receiver->history.ts_last; if(deviation < 0) { deviation = -deviation; } if(deviation > DEVIATION_THRESHOLD) { return RTP_TS_DRIFT; } receiver->rr_stat.jitter += deviation - ((receiver->rr_stat.jitter + 8) >> 4); RTP_TRACE("jitter=%u deviation=%d\n",receiver->rr_stat.jitter,deviation); receiver->history.time_last = *time; receiver->history.ts_last = ts; if(receiver->rr_stat.jitter < receiver->periodic_history.jitter_min) { receiver->periodic_history.jitter_min = receiver->rr_stat.jitter; } if(receiver->rr_stat.jitter > receiver->periodic_history.jitter_max) { receiver->periodic_history.jitter_max = receiver->rr_stat.jitter; } return RTP_TS_UPDATE; }
static double php_apache_sapi_get_request_time(void) { php_struct *ctx = SG(server_context); return ((double) apr_time_as_msec(ctx->r->request_time)) / 1000.0; }