return BAD_VALUE;
}
- if (notificationFrames == 0) {
- notificationFrames = frameCount/2;
- }
+ mNotificationFramesReq = notificationFrames;
+ mNotificationFramesAct = 0;
// create the IAudioRecord
status = openRecord_l(sampleRate, format, frameCount, mFlags, input, 0 /*epoch*/);
mActive = false;
mCbf = cbf;
- mNotificationFramesReq = notificationFrames;
- mNotificationFramesAct = 0;
mRefreshRemaining = true;
mUserData = user;
// TODO: add audio hardware input latency here
}
}
+ mNotificationFramesAct = mNotificationFramesReq;
+
+ if (!(flags & AUDIO_INPUT_FLAG_FAST)) {
+ // Make sure that application is notified with sufficient margin before overrun
+ if (mNotificationFramesAct == 0 || mNotificationFramesAct > frameCount/2) {
+ mNotificationFramesAct = frameCount/2;
+ }
+ }
+
int originalSessionId = mSessionId;
sp<IAudioRecord> record = audioFlinger->openRecord(input,
sampleRate, format,
mCblk = cblk;
// FIXME missing fast track frameCount logic
mAwaitBoost = false;
- mNotificationFramesAct = mNotificationFramesReq;
if (flags & AUDIO_INPUT_FLAG_FAST) {
if (trackFlags & IAudioFlinger::TRACK_FAST) {
ALOGV("AUDIO_INPUT_FLAG_FAST successful; frameCount %u", frameCount);