Update Visualizer implementation after changes in AudioEffect
AudioEffect was fixed to remove a call to AudioEffect::set
away from the constructor.
Bug: 162323621
Bug: 174222126
Test: repro steps from the bug
atest android.media.cts.VisualizerTest
Change-Id: I90ac6e4fe0a1229758a98a63a3b7810de60469be
Merged-In: I90ac6e4fe0a1229758a98a63a3b7810de60469be
This commit is contained in:
committed by
Eric Laurent
parent
108dd94479
commit
ed15eee545
@@ -33,21 +33,9 @@ namespace android {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Visualizer::Visualizer (const String16& opPackageName,
|
||||
int32_t priority,
|
||||
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)
|
||||
Visualizer::Visualizer (const String16& opPackageName)
|
||||
: AudioEffect(opPackageName)
|
||||
{
|
||||
initCaptureSize();
|
||||
}
|
||||
|
||||
Visualizer::~Visualizer()
|
||||
@@ -57,6 +45,23 @@ Visualizer::~Visualizer()
|
||||
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()
|
||||
{
|
||||
ALOGV("Visualizer::release()");
|
||||
|
||||
@@ -65,14 +65,22 @@ public:
|
||||
/* Constructor.
|
||||
* See AudioEffect constructor for details on parameters.
|
||||
*/
|
||||
Visualizer(const String16& opPackageName,
|
||||
int32_t priority = 0,
|
||||
effect_callback_t cbf = NULL,
|
||||
void* user = NULL,
|
||||
audio_session_t sessionId = AUDIO_SESSION_OUTPUT_MIX);
|
||||
explicit Visualizer(const String16& opPackageName);
|
||||
|
||||
~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().
|
||||
status_t setEnabled(bool enabled) final;
|
||||
|
||||
@@ -163,15 +171,15 @@ private:
|
||||
uint32_t initCaptureSize();
|
||||
|
||||
Mutex mCaptureLock;
|
||||
uint32_t mCaptureRate;
|
||||
uint32_t mCaptureSize;
|
||||
uint32_t mSampleRate;
|
||||
uint32_t mScalingMode;
|
||||
uint32_t mMeasurementMode;
|
||||
capture_cbk_t mCaptureCallBack;
|
||||
void *mCaptureCbkUser;
|
||||
uint32_t mCaptureRate = CAPTURE_RATE_DEF;
|
||||
uint32_t mCaptureSize = CAPTURE_SIZE_DEF;
|
||||
uint32_t mSampleRate = 44100000;
|
||||
uint32_t mScalingMode = VISUALIZER_SCALING_MODE_NORMALIZED;
|
||||
uint32_t mMeasurementMode = MEASUREMENT_MODE_NONE;
|
||||
capture_cbk_t mCaptureCallBack = nullptr;
|
||||
void *mCaptureCbkUser = nullptr;
|
||||
sp<CaptureThread> mCaptureThread;
|
||||
uint32_t mCaptureFlags;
|
||||
uint32_t mCaptureFlags = 0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -337,22 +337,21 @@ android_media_AudioEffect_native_setup(JNIEnv *env, jobject thiz, jobject weak_t
|
||||
}
|
||||
|
||||
// create the native AudioEffect object
|
||||
lpAudioEffect = new AudioEffect(typeStr,
|
||||
String16(opPackageNameStr.c_str()),
|
||||
uuidStr,
|
||||
priority,
|
||||
effectCallback,
|
||||
&lpJniStorage->mCallbackData,
|
||||
(audio_session_t) sessionId,
|
||||
AUDIO_IO_HANDLE_NONE,
|
||||
device,
|
||||
probe);
|
||||
lpAudioEffect = new AudioEffect(String16(opPackageNameStr.c_str()));
|
||||
if (lpAudioEffect == 0) {
|
||||
ALOGE("Error creating AudioEffect");
|
||||
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());
|
||||
if (lStatus != AUDIOEFFECT_SUCCESS && lStatus != AUDIOEFFECT_ERROR_ALREADY_EXISTS) {
|
||||
ALOGE("AudioEffect initCheck failed %d", lStatus);
|
||||
|
||||
@@ -382,15 +382,15 @@ android_media_visualizer_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
|
||||
}
|
||||
|
||||
// create the native Visualizer object
|
||||
lpVisualizer = new Visualizer(String16(opPackageNameStr.c_str()),
|
||||
0,
|
||||
android_media_visualizer_effect_callback,
|
||||
lpJniStorage,
|
||||
(audio_session_t) sessionId);
|
||||
lpVisualizer = new Visualizer(String16(opPackageNameStr.c_str()));
|
||||
if (lpVisualizer == 0) {
|
||||
ALOGE("Error creating Visualizer");
|
||||
goto setup_failure;
|
||||
}
|
||||
lpVisualizer->set(0,
|
||||
android_media_visualizer_effect_callback,
|
||||
lpJniStorage,
|
||||
(audio_session_t) sessionId);
|
||||
|
||||
lStatus = translateError(lpVisualizer->initCheck());
|
||||
if (lStatus != VISUALIZER_SUCCESS && lStatus != VISUALIZER_ERROR_ALREADY_EXISTS) {
|
||||
|
||||
Reference in New Issue
Block a user