Lines Matching refs:cblk

381     // while we are accessing the cblk
384 audio_track_cblk_t* cblk = mCblk;
389 mNewPosition = cblk->server + mUpdatePeriod;
390 cblk->lock.lock();
391 cblk->bufferTimeoutMs = MAX_STARTUP_TIMEOUT_MS;
392 cblk->waitTimeMs = 0;
393 android_atomic_and(~CBLK_DISABLED_ON, &cblk->flags);
402 ALOGV("start %p before lock cblk %p", this, mCblk);
404 if (!(cblk->flags & CBLK_INVALID_MSK)) {
405 cblk->lock.unlock();
408 cblk->lock.lock();
410 android_atomic_or(CBLK_INVALID_ON, &cblk->flags);
413 if (cblk->flags & CBLK_INVALID_MSK) {
414 status = restoreTrack_l(cblk, true);
416 cblk->lock.unlock();
601 audio_track_cblk_t* cblk = mCblk;
603 Mutex::Autolock _l(cblk->lock);
606 cblk->loopStart = UINT_MAX;
607 cblk->loopEnd = UINT_MAX;
608 cblk->loopCount = 0;
618 loopEnd - loopStart > cblk->frameCount ||
619 cblk->server > loopStart) {
620 ALOGE("setLoop invalid value: loopStart %d, loopEnd %d, loopCount %d, framecount %d, user %d", loopStart, loopEnd, loopCount, cblk->frameCount, cblk->user);
624 if ((mSharedBuffer != 0) && (loopEnd > cblk->frameCount)) {
626 loopStart, loopEnd, cblk->frameCount);
630 cblk->loopStart = loopStart;
631 cblk->loopEnd = loopEnd;
632 cblk->loopCount = loopCount;
896 sp<IMemory> cblk = track->getCblk();
897 if (cblk == 0) {
902 mCblkMemory = cblk;
903 mCblk = static_cast<audio_track_cblk_t*>(cblk->pointer());
948 audio_track_cblk_t* cblk = mCblk;
950 uint32_t waitTimeMs = (waitCount < 0) ? cblk->bufferTimeoutMs : WAIT_PERIOD_MS;
955 uint32_t framesAvail = cblk->framesAvailable();
957 cblk->lock.lock();
958 if (cblk->flags & CBLK_INVALID_MSK) {
961 cblk->lock.unlock();
964 cblk->lock.lock();
970 cblk->lock.unlock();
974 cblk->lock.unlock();
977 if (!(cblk->flags & CBLK_INVALID_MSK)) {
979 result = cblk->cv.waitRelative(cblk->lock, milliseconds(waitTimeMs));
980 cblk->lock.unlock();
985 cblk->lock.lock();
988 if (cblk->flags & CBLK_INVALID_MSK) {
992 cblk->waitTimeMs += waitTimeMs;
993 if (cblk->waitTimeMs >= cblk->bufferTimeoutMs) {
996 if (cblk->user < cblk->loopEnd) {
998 "user=%08x, server=%08x", this, cblk->mName, cblk->user, cblk->server);
999 //unlock cblk mutex before calling mAudioTrack->start() (see issue #1617140)
1000 cblk->lock.unlock();
1002 cblk->lock.lock();
1004 android_atomic_or(CBLK_INVALID_ON, &cblk->flags);
1006 result = restoreTrack_l(cblk, false);
1010 cblk->lock.unlock();
1014 cblk->waitTimeMs = 0;
1018 cblk->lock.unlock();
1024 framesAvail = cblk->framesAvailable_l();
1026 cblk->lock.unlock();
1029 cblk->waitTimeMs = 0;
1035 uint32_t u = cblk->user;
1036 uint32_t bufferEnd = cblk->userBase + cblk->frameCount;
1045 audioBuffer->size = framesReq * cblk->frameSize;
1051 audioBuffer->raw = (int8_t *)cblk->buffer(u);
1093 // while we are accessing the cblk
1202 // while we are accessing the cblk
1205 audio_track_cblk_t* cblk = mCblk;
1210 if (active && (cblk->framesAvailable() == cblk->frameCount)) {
1211 ALOGV("Underrun user: %x, server: %x, flags %04x", cblk->user, cblk->server, cblk->flags);
1212 if (!(android_atomic_or(CBLK_UNDERRUN_ON, &cblk->flags) & CBLK_UNDERRUN_MSK)) {
1214 if (cblk->server == cblk->frameCount) {
1222 while (mLoopCount > cblk->loopCount) {
1232 if (cblk->server >= mMarkerPosition) {
1240 while (cblk->server >= mNewPosition) {
1324 // must be called with mLock and cblk.lock held. Callers must also hold strong references on
1326 // If the IAudioTrack is successfully restored, the cblk pointer is updated
1327 status_t AudioTrack::restoreTrack_l(audio_track_cblk_t*& cblk, bool fromStart)
1331 if (!(android_atomic_or(CBLK_RESTORING_ON, &cblk->flags) & CBLK_RESTORING_MSK)) {
1335 // signal old cblk condition so that other threads waiting for available buffers stop
1337 cblk->cv.broadcast();
1338 cblk->lock.unlock();
1348 cblk->sampleRate,
1357 uint32_t user = cblk->user;
1358 uint32_t server = cblk->server;
1366 setLoop_l(cblk->loopStart, cblk->loopEnd, cblk->loopCount);
1397 android_atomic_and(~CBLK_RESTORING_ON, &cblk->flags);
1401 // signal old cblk condition for other threads waiting for restore completion
1402 android_atomic_or(CBLK_RESTORED_ON, &cblk->flags);
1403 cblk->cv.broadcast();
1405 if (!(cblk->flags & CBLK_RESTORED_MSK)) {
1408 result = cblk->cv.waitRelative(cblk->lock, milliseconds(RESTORE_TIMEOUT_MS));
1412 cblk->lock.unlock();
1417 cblk->lock.unlock();
1420 ALOGV("restoreTrack_l() status %d mActive %d cblk %p, old cblk %p flags %08x old flags %08x",
1421 result, mActive, mCblk, cblk, mCblk->flags, cblk->flags);
1424 // from now on we switch to the newly created cblk
1425 cblk = mCblk;
1427 cblk->lock.lock();
1557 ALOGW("stepServer() could not lock cblk");
1645 ALOGW("framesReady() could not lock cblk");