JNIEXPORT jint JNICALL Native_NATIVE(jitter_1buffer_1get_1pointer_1timestamp) (JNIEnv *env, jclass that, jlong arg0) { jint rc = 0; Native_NATIVE_ENTER(env, that, Native_jitter_1buffer_1get_1pointer_1timestamp_FUNC); rc = jitter_buffer_get_pointer_timestamp((JitterBuffer *)(intptr_t)arg0); Native_NATIVE_EXIT(env, that, Native_jitter_1buffer_1get_1pointer_1timestamp_FUNC); return rc; }
int speex_jitter_get_pointer_timestamp(SpeexJitter *jitter) { return jitter_buffer_get_pointer_timestamp(jitter->packets); }
bool AudioOutputSpeech::needSamples(unsigned int snum) { for (unsigned int i=iLastConsume;i<iBufferFilled;++i) pfBuffer[i-iLastConsume]=pfBuffer[i]; iBufferFilled -= iLastConsume; iLastConsume = snum; if (iBufferFilled >= snum) return bLastAlive; float *pOut; STACKVAR(float, fOut, iFrameSize + 4096); bool nextalive = bLastAlive; while (iBufferFilled < snum) { resizeBuffer(iBufferFilled + iOutputSize); pOut = (srs) ? fOut : (pfBuffer + iBufferFilled); if (! bLastAlive) { memset(pOut, 0, iFrameSize * sizeof(float)); } else { if (p == LoopUser::lpLoopy) { LoopUser::lpLoopy->fetchFrames(); } int avail = 0; int ts = jitter_buffer_get_pointer_timestamp(jbJitter); jitter_buffer_ctl(jbJitter, JITTER_BUFFER_GET_AVAILABLE_COUNT, &avail); if (p && (ts == 0)) { int want = iroundf(p->fAverageAvailable); if (avail < want) { ++iMissCount; if (iMissCount < 20) { memset(pOut, 0, iFrameSize * sizeof(float)); goto nextframe; } } } if (qlFrames.isEmpty()) { QMutexLocker lock(&qmJitter); char data[4096]; JitterBufferPacket jbp; jbp.data = data; jbp.len = 4096; spx_int32_t startofs = 0; if (jitter_buffer_get(jbJitter, &jbp, iFrameSize, &startofs) == JITTER_BUFFER_OK) { PacketDataStream pds(jbp.data, jbp.len); iMissCount = 0; ucFlags = static_cast<unsigned char>(pds.next()); bHasTerminator = false; unsigned int header = 0; do { header = static_cast<unsigned int>(pds.next()); if (header) qlFrames << pds.dataBlock(header & 0x7f); else bHasTerminator = true; } while ((header & 0x80) && pds.isValid()); if (pds.left()) { pds >> fPos[0]; pds >> fPos[1]; pds >> fPos[2]; } else { fPos[0] = fPos[1] = fPos[2] = 0.0f; } if (p) { float a = static_cast<float>(avail); if (avail >= p->fAverageAvailable) p->fAverageAvailable = a; else p->fAverageAvailable *= 0.99f; } } else {