Update audiorecord tests
1. Test that are duplicate of AudioRecordTest are removed.
2. Incorrect validation of buffer overrun scenario removed
3. Added few more test parameters (input flag fast)
Bug: 215776959
Test: atest audiorecord_tests
Merged-In: I75a6ad497f56ab0a53e764cd4f2bab8fed399bc2
Change-Id: I75a6ad497f56ab0a53e764cd4f2bab8fed399bc2
diff --git a/media/libaudioclient/tests/audio_test_utils.cpp b/media/libaudioclient/tests/audio_test_utils.cpp
index ec9a192..b068bdf 100644
--- a/media/libaudioclient/tests/audio_test_utils.cpp
+++ b/media/libaudioclient/tests/audio_test_utils.cpp
@@ -402,11 +402,8 @@
}
if (mFlags & AUDIO_INPUT_FLAG_FAST) {
ALOGW("Overriding all previous computations");
- const uint32_t kMinNormalCaptureBufferSizeMs = 12;
- size_t maxFrameCount = kMinNormalCaptureBufferSizeMs * mSampleRate / 1000;
- mMaxBytesPerCallback = maxFrameCount * samplesPerFrame * bytesPerSample / 2;
- mNotificationFrames = maxFrameCount / 2;
- mFrameCount = 2 * mNotificationFrames;
+ mFrameCount = 0;
+ mNotificationFrames = 0;
}
mNumFramesToRecord = (mSampleRate * 0.25); // record .25 sec
std::string packageName{"AudioCapture"};
@@ -416,10 +413,16 @@
attributionSource.pid = VALUE_OR_FATAL(legacy2aidl_pid_t_int32_t(getpid()));
attributionSource.token = sp<BBinder>::make();
if (mTransferType == AudioRecord::TRANSFER_OBTAIN) {
- mRecord = new AudioRecord(attributionSource);
- status = mRecord->set(mInputSource, mSampleRate, mFormat, mChannelMask, mFrameCount,
- nullptr, nullptr, 0, false, mSessionId, mTransferType, mFlags,
- attributionSource.uid, attributionSource.pid);
+ if (mSampleRate == 48000) { // test all available constructors
+ mRecord = new AudioRecord(mInputSource, mSampleRate, mFormat, mChannelMask,
+ attributionSource, mFrameCount, nullptr, nullptr,
+ mNotificationFrames, mSessionId, mTransferType, mFlags);
+ } else {
+ mRecord = new AudioRecord(attributionSource);
+ status = mRecord->set(mInputSource, mSampleRate, mFormat, mChannelMask, mFrameCount,
+ nullptr, nullptr, 0, false, mSessionId, mTransferType, mFlags,
+ attributionSource.uid, attributionSource.pid);
+ }
if (NO_ERROR != status) return status;
} else if (mTransferType == AudioRecord::TRANSFER_CALLBACK) {
mRecord = new AudioRecord(mInputSource, mSampleRate, mFormat, mChannelMask,
@@ -433,6 +436,11 @@
mRecord->setCallerName(packageName);
status = mRecord->initCheck();
if (NO_ERROR == status) mState = REC_READY;
+ if (mFlags & AUDIO_INPUT_FLAG_FAST) {
+ mFrameCount = mRecord->frameCount();
+ mNotificationFrames = mRecord->getNotificationPeriodInFrames();
+ mMaxBytesPerCallback = mNotificationFrames * samplesPerFrame * bytesPerSample;
+ }
return status;
}
@@ -458,12 +466,6 @@
status_t status = OK;
mStopRecording = true;
if (mState != REC_STOPPED) {
- uint32_t position;
- status = mRecord->getPosition(&position);
- if (OK == status && mTransferType == AudioRecord::TRANSFER_CALLBACK) {
- if (position - mNumFramesToRecord > mFrameCount)
- if (mBufferOverrun == false) status = BAD_VALUE;
- }
mRecord->stopAndJoinCallbacks();
mState = REC_STOPPED;
LOG_FATAL_IF(true != mRecord->stopped());
diff --git a/media/libaudioclient/tests/audiorecord_tests.cpp b/media/libaudioclient/tests/audiorecord_tests.cpp
index 0002384..8ac5e82 100644
--- a/media/libaudioclient/tests/audiorecord_tests.cpp
+++ b/media/libaudioclient/tests/audiorecord_tests.cpp
@@ -162,20 +162,6 @@
<< "configured marker and received cb marker are different";
}
-TEST_F(AudioRecordTest, TestMicDirectionConfiguration) {
- EXPECT_EQ(OK, mAC->getAudioRecordHandle()->setPreferredMicrophoneDirection(MIC_DIRECTION_FRONT))
- << "setPreferredMicrophoneDirection() Failed";
- EXPECT_EQ(OK, mAC->start()) << "start recording failed";
- EXPECT_EQ(OK, mAC->audioProcess()) << "audioProcess failed";
-}
-
-TEST_F(AudioRecordTest, TestMicFieldConfiguration) {
- EXPECT_EQ(OK, mAC->getAudioRecordHandle()->setPreferredMicrophoneFieldDimension(0.5f))
- << "setPreferredMicrophoneFieldDimension() Failed";
- EXPECT_EQ(OK, mAC->start()) << "start recording failed";
- EXPECT_EQ(OK, mAC->audioProcess()) << "audioProcess failed";
-}
-
TEST_F(AudioRecordTest, TestGetPosition) {
uint32_t position;
EXPECT_EQ(OK, mAC->getAudioRecordHandle()->getPosition(&position)) << "getPosition() failed";
@@ -223,6 +209,18 @@
::testing::Values(AUDIO_SESSION_NONE),
::testing::Values(AUDIO_SOURCE_DEFAULT)));
+// for port fast input
+INSTANTIATE_TEST_SUITE_P(AudioRecordFastInput, AudioRecordCreateTest,
+ ::testing::Combine(::testing::Values(8000, 11025, 12000, 16000, 22050,
+ 24000, 32000, 44100, 48000),
+ ::testing::Values(AUDIO_FORMAT_PCM_8_24_BIT),
+ ::testing::Values(AUDIO_CHANNEL_IN_MONO,
+ AUDIO_CHANNEL_IN_STEREO,
+ AUDIO_CHANNEL_IN_FRONT_BACK),
+ ::testing::Values(AUDIO_INPUT_FLAG_FAST),
+ ::testing::Values(AUDIO_SESSION_NONE),
+ ::testing::Values(AUDIO_SOURCE_DEFAULT)));
+
// misc
INSTANTIATE_TEST_SUITE_P(AudioRecordMiscInput, AudioRecordCreateTest,
::testing::Combine(::testing::Values(48000),