Merge "Update Visualizer implementation after changes in AudioEffect" into rvc-qpr-dev

This commit is contained in:
TreeHugger Robot
2020-12-14 15:59:36 +00:00
committed by Android (Google) Code Review
4 changed files with 55 additions and 43 deletions

View File

@@ -33,21 +33,9 @@ namespace android {
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
Visualizer::Visualizer (const String16& opPackageName, Visualizer::Visualizer (const String16& opPackageName)
int32_t priority, : AudioEffect(opPackageName)
effect_callback_t cbf,
void* user,
audio_session_t sessionId)
: AudioEffect(SL_IID_VISUALIZATION, opPackageName, NULL, priority, cbf, user, sessionId),
mCaptureRate(CAPTURE_RATE_DEF),
mCaptureSize(CAPTURE_SIZE_DEF),
mSampleRate(44100000),
mScalingMode(VISUALIZER_SCALING_MODE_NORMALIZED),
mMeasurementMode(MEASUREMENT_MODE_NONE),
mCaptureCallBack(NULL),
mCaptureCbkUser(NULL)
{ {
initCaptureSize();
} }
Visualizer::~Visualizer() Visualizer::~Visualizer()
@@ -57,6 +45,23 @@ Visualizer::~Visualizer()
setCaptureCallBack(NULL, NULL, 0, 0); setCaptureCallBack(NULL, NULL, 0, 0);
} }
status_t Visualizer::set(int32_t priority,
effect_callback_t cbf,
void* user,
audio_session_t sessionId,
audio_io_handle_t io,
const AudioDeviceTypeAddr& device,
bool probe)
{
status_t status = AudioEffect::set(
SL_IID_VISUALIZATION, nullptr, priority, cbf, user, sessionId, io, device, probe);
if (status == NO_ERROR || status == ALREADY_EXISTS) {
initCaptureSize();
}
return status;
}
void Visualizer::release() void Visualizer::release()
{ {
ALOGV("Visualizer::release()"); ALOGV("Visualizer::release()");

View File

@@ -65,14 +65,22 @@ public:
/* Constructor. /* Constructor.
* See AudioEffect constructor for details on parameters. * See AudioEffect constructor for details on parameters.
*/ */
Visualizer(const String16& opPackageName, explicit Visualizer(const String16& opPackageName);
int32_t priority = 0,
effect_callback_t cbf = NULL,
void* user = NULL,
audio_session_t sessionId = AUDIO_SESSION_OUTPUT_MIX);
~Visualizer(); ~Visualizer();
/**
* Initialize an uninitialized Visualizer.
* See AudioEffect 'set' function for details on parameters.
*/
status_t set(int32_t priority = 0,
effect_callback_t cbf = NULL,
void* user = NULL,
audio_session_t sessionId = AUDIO_SESSION_OUTPUT_MIX,
audio_io_handle_t io = AUDIO_IO_HANDLE_NONE,
const AudioDeviceTypeAddr& device = {},
bool probe = false);
// Declared 'final' because we call this in ~Visualizer(). // Declared 'final' because we call this in ~Visualizer().
status_t setEnabled(bool enabled) final; status_t setEnabled(bool enabled) final;
@@ -163,15 +171,15 @@ private:
uint32_t initCaptureSize(); uint32_t initCaptureSize();
Mutex mCaptureLock; Mutex mCaptureLock;
uint32_t mCaptureRate; uint32_t mCaptureRate = CAPTURE_RATE_DEF;
uint32_t mCaptureSize; uint32_t mCaptureSize = CAPTURE_SIZE_DEF;
uint32_t mSampleRate; uint32_t mSampleRate = 44100000;
uint32_t mScalingMode; uint32_t mScalingMode = VISUALIZER_SCALING_MODE_NORMALIZED;
uint32_t mMeasurementMode; uint32_t mMeasurementMode = MEASUREMENT_MODE_NONE;
capture_cbk_t mCaptureCallBack; capture_cbk_t mCaptureCallBack = nullptr;
void *mCaptureCbkUser; void *mCaptureCbkUser = nullptr;
sp<CaptureThread> mCaptureThread; sp<CaptureThread> mCaptureThread;
uint32_t mCaptureFlags; uint32_t mCaptureFlags = 0;
}; };

View File

@@ -337,22 +337,21 @@ android_media_AudioEffect_native_setup(JNIEnv *env, jobject thiz, jobject weak_t
} }
// create the native AudioEffect object // create the native AudioEffect object
lpAudioEffect = new AudioEffect(typeStr, lpAudioEffect = new AudioEffect(String16(opPackageNameStr.c_str()));
String16(opPackageNameStr.c_str()),
uuidStr,
priority,
effectCallback,
&lpJniStorage->mCallbackData,
(audio_session_t) sessionId,
AUDIO_IO_HANDLE_NONE,
device,
probe);
if (lpAudioEffect == 0) { if (lpAudioEffect == 0) {
ALOGE("Error creating AudioEffect"); ALOGE("Error creating AudioEffect");
goto setup_failure; goto setup_failure;
} }
lpAudioEffect->set(typeStr,
uuidStr,
priority,
effectCallback,
&lpJniStorage->mCallbackData,
(audio_session_t) sessionId,
AUDIO_IO_HANDLE_NONE,
device,
probe);
lStatus = AudioEffectJni::translateNativeErrorToJava(lpAudioEffect->initCheck()); lStatus = AudioEffectJni::translateNativeErrorToJava(lpAudioEffect->initCheck());
if (lStatus != AUDIOEFFECT_SUCCESS && lStatus != AUDIOEFFECT_ERROR_ALREADY_EXISTS) { if (lStatus != AUDIOEFFECT_SUCCESS && lStatus != AUDIOEFFECT_ERROR_ALREADY_EXISTS) {
ALOGE("AudioEffect initCheck failed %d", lStatus); ALOGE("AudioEffect initCheck failed %d", lStatus);

View File

@@ -382,15 +382,15 @@ android_media_visualizer_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
} }
// create the native Visualizer object // create the native Visualizer object
lpVisualizer = new Visualizer(String16(opPackageNameStr.c_str()), lpVisualizer = new Visualizer(String16(opPackageNameStr.c_str()));
0,
android_media_visualizer_effect_callback,
lpJniStorage,
(audio_session_t) sessionId);
if (lpVisualizer == 0) { if (lpVisualizer == 0) {
ALOGE("Error creating Visualizer"); ALOGE("Error creating Visualizer");
goto setup_failure; goto setup_failure;
} }
lpVisualizer->set(0,
android_media_visualizer_effect_callback,
lpJniStorage,
(audio_session_t) sessionId);
lStatus = translateError(lpVisualizer->initCheck()); lStatus = translateError(lpVisualizer->initCheck());
if (lStatus != VISUALIZER_SUCCESS && lStatus != VISUALIZER_ERROR_ALREADY_EXISTS) { if (lStatus != VISUALIZER_SUCCESS && lStatus != VISUALIZER_ERROR_ALREADY_EXISTS) {