diff options
9 files changed, 79 insertions, 49 deletions
diff --git a/media/libeffects/data/audio_effects.conf b/media/libeffects/data/audio_effects.conf index d681c69..93f27cb 100644 --- a/media/libeffects/data/audio_effects.conf +++ b/media/libeffects/data/audio_effects.conf @@ -15,14 +15,18 @@ libraries { visualizer { path /system/lib/soundfx/libvisualizer.so } - pre_processing { - path /system/lib/soundfx/libaudiopreprocessing.so - } downmix { path /system/lib/soundfx/libdownmix.so } } +# Default pre-processing library. Add to audio_effect.conf "libraries" section if +# audio HAL implements support for default software audio pre-processing effects +# +# pre_processing { +# path /system/lib/soundfx/libaudiopreprocessing.so +# } + # list of effects to load. Each effect element must contain a "library" and a "uuid" element. # The value of the "library" element must correspond to the name of one library element in the # "libraries" element. @@ -79,19 +83,24 @@ effects { library downmix uuid 93f04452-e4fe-41cc-91f9-e475b6d1d69f } - agc { - library pre_processing - uuid aa8130e0-66fc-11e0-bad0-0002a5d5c51b - } - aec { - library pre_processing - uuid bb392ec0-8d4d-11e0-a896-0002a5d5c51b - } - ns { - library pre_processing - uuid c06c8400-8e06-11e0-9cb6-0002a5d5c51b - } } + +# Default pre-processing effects. Add to audio_effect.conf "effects" section if +# audio HAL implements support for them. +# +# agc { +# library pre_processing +# uuid aa8130e0-66fc-11e0-bad0-0002a5d5c51b +# } +# aec { +# library pre_processing +# uuid bb392ec0-8d4d-11e0-a896-0002a5d5c51b +# } +# ns { +# library pre_processing +# uuid c06c8400-8e06-11e0-9cb6-0002a5d5c51b +# } + # Audio preprocessor configurations. # The pre processor configuration consists in a list of elements each describing # pre processor settings for a given input source. Valid input source names are: diff --git a/media/libstagefright/codecs/aacenc/inc/aac_rom.h b/media/libstagefright/codecs/aacenc/inc/aac_rom.h index 8e206b7..0b6f656 100644 --- a/media/libstagefright/codecs/aacenc/inc/aac_rom.h +++ b/media/libstagefright/codecs/aacenc/inc/aac_rom.h @@ -57,7 +57,7 @@ extern const Word32 mTab_4_3[512]; /*! $2^{-\frac{n}{16}}$ table */ extern const Word16 pow2tominusNover16[17] ; -extern Word32 specExpMantTableComb_enc[4][14]; +extern const Word32 specExpMantTableComb_enc[4][14]; extern const UWord8 specExpTableComb_enc[4][14]; extern const Word16 quantBorders[4][4]; diff --git a/media/libstagefright/codecs/aacenc/src/aac_rom.c b/media/libstagefright/codecs/aacenc/src/aac_rom.c index 127322d..f08f3a9 100644 --- a/media/libstagefright/codecs/aacenc/src/aac_rom.c +++ b/media/libstagefright/codecs/aacenc/src/aac_rom.c @@ -1367,7 +1367,7 @@ const Word16 sideInfoTabShort[MAX_SFB_SHORT + 1] = { 10, 10, 10, 10, 10, 13, 13 }; -Word32 specExpMantTableComb_enc[4][14] = +const Word32 specExpMantTableComb_enc[4][14] = { {0x40000000, 0x50a28be6, 0x6597fa95, 0x40000000, 0x50a28be6, 0x6597fa95, 0x40000000, 0x50a28be6, diff --git a/media/libstagefright/codecs/aacenc/src/block_switch.c b/media/libstagefright/codecs/aacenc/src/block_switch.c index 47fd15e..c80538f 100644 --- a/media/libstagefright/codecs/aacenc/src/block_switch.c +++ b/media/libstagefright/codecs/aacenc/src/block_switch.c @@ -51,7 +51,7 @@ CalcWindowEnergy(BLOCK_SWITCHING_CONTROL *blockSwitchingControl, /* IIR high pass coeffs */ -Word32 hiPassCoeff[BLOCK_SWITCHING_IIR_LEN] = { +const Word32 hiPassCoeff[BLOCK_SWITCHING_IIR_LEN] = { 0xbec8b439, 0x609d4952 /* -0.5095f, 0.7548f */ }; diff --git a/media/libstagefright/wifi-display/source/PlaybackSession.cpp b/media/libstagefright/wifi-display/source/PlaybackSession.cpp index a6aae56..ab16407 100644 --- a/media/libstagefright/wifi-display/source/PlaybackSession.cpp +++ b/media/libstagefright/wifi-display/source/PlaybackSession.cpp @@ -647,11 +647,10 @@ status_t WifiDisplaySource::PlaybackSession::setupPacketizer() { service->connectDisplay(mBufferQueue); } -#if 0 sp<AudioSource> audioSource = new AudioSource( - AUDIO_SOURCE_MIC, + AUDIO_SOURCE_REMOTE_SUBMIX, 48000 /* sampleRate */, - 2 /* channelCount */); // XXX AUDIO_CHANNEL_IN_STEREO? + 2 /* channelCount */); if (audioSource->initCheck() == OK) { audioSource->setUseLooperTime(true); @@ -670,11 +669,12 @@ status_t WifiDisplaySource::PlaybackSession::setupPacketizer() { looper()->registerHandler(converter); mTracks.add(index, new Track(converter)); + + ALOGI("Successfully instantiated audio source."); } else { ALOGW("Unable to instantiate audio source"); } #endif -#endif return OK; } diff --git a/media/libstagefright/wifi-display/source/Serializer.cpp b/media/libstagefright/wifi-display/source/Serializer.cpp index bd53fc8..0c54bf7 100644 --- a/media/libstagefright/wifi-display/source/Serializer.cpp +++ b/media/libstagefright/wifi-display/source/Serializer.cpp @@ -275,14 +275,7 @@ status_t Serializer::onStart() { } if (err == OK) { -#if 0 schedulePoll(); -#else - // XXX the dongle doesn't appear to have setup the RTP connection - // fully at the time PLAY is called. We have to delay sending data - // for a little bit. - schedulePoll(500000ll); -#endif } return err; diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp index 90355be..4237afb 100644 --- a/services/camera/libcameraservice/Camera2Client.cpp +++ b/services/camera/libcameraservice/Camera2Client.cpp @@ -681,13 +681,8 @@ status_t Camera2Client::startPreviewL(Parameters ¶ms, bool restart) { } request = &mRecordingRequest; - res = updateRecordingStream(params); - if (res != OK) { - ALOGE("%s: Camera %d: Unable to pre-configure recording " - "stream: %s (%d)", - __FUNCTION__, mCameraId, strerror(-res), res); - return res; - } + // TODO: Re-enable recording stream creation/update here once issues are + // resolved res = mJpegProcessor->updateStream(params); if (res != OK) { diff --git a/services/camera/libcameraservice/camera2/Parameters.cpp b/services/camera/libcameraservice/camera2/Parameters.cpp index e5942dc..f490b2a 100644 --- a/services/camera/libcameraservice/camera2/Parameters.cpp +++ b/services/camera/libcameraservice/camera2/Parameters.cpp @@ -1360,17 +1360,23 @@ status_t Parameters::updateRequest(CameraMetadata *request) const { &antibandingMode, 1); if (res != OK) return res; - uint8_t reqControlMode = - (sceneMode == ANDROID_CONTROL_SCENE_MODE_UNSUPPORTED) ? - ANDROID_CONTROL_AUTO : ANDROID_CONTROL_USE_SCENE_MODE; + // android.hardware.Camera requires that when face detect is enabled, the + // camera is in a face-priority mode. HAL2 splits this into separate parts + // (face detection statistics and face priority scene mode). Map from other + // to the other. + uint8_t reqControlMode = ANDROID_CONTROL_AUTO; + if (enableFaceDetect || sceneMode != ANDROID_CONTROL_SCENE_MODE_UNSUPPORTED) { + reqControlMode = ANDROID_CONTROL_USE_SCENE_MODE; + } res = request->update(ANDROID_CONTROL_MODE, &reqControlMode, 1); if (res != OK) return res; - if (reqControlMode == ANDROID_CONTROL_USE_SCENE_MODE) { - res = request->update(ANDROID_CONTROL_SCENE_MODE, - &sceneMode, 1); - if (res != OK) return res; - } + + uint8_t reqSceneMode = enableFaceDetect ? + (uint8_t)ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY : sceneMode; + res = request->update(ANDROID_CONTROL_SCENE_MODE, + &reqSceneMode, 1); + if (res != OK) return res; uint8_t reqFlashMode = ANDROID_FLASH_OFF; uint8_t reqAeMode; @@ -1515,8 +1521,6 @@ status_t Parameters::updateRequest(CameraMetadata *request) const { reqCropRegion, 3); if (res != OK) return res; - // TODO: Decide how to map recordingHint, or whether just to ignore it - uint8_t reqVstabMode = videoStabilization ? ANDROID_CONTROL_VIDEO_STABILIZATION_ON : ANDROID_CONTROL_VIDEO_STABILIZATION_OFF; @@ -1553,6 +1557,8 @@ const char* Parameters::getStateName(State state) { int Parameters::formatStringToEnum(const char *format) { return + !format ? + HAL_PIXEL_FORMAT_YCrCb_420_SP : !strcmp(format, CameraParameters::PIXEL_FORMAT_YUV422SP) ? HAL_PIXEL_FORMAT_YCbCr_422_SP : // NV16 !strcmp(format, CameraParameters::PIXEL_FORMAT_YUV420SP) ? @@ -1606,6 +1612,8 @@ const char* Parameters::formatEnumToString(int format) { int Parameters::wbModeStringToEnum(const char *wbMode) { return + !wbMode ? + ANDROID_CONTROL_AWB_AUTO : !strcmp(wbMode, CameraParameters::WHITE_BALANCE_AUTO) ? ANDROID_CONTROL_AWB_AUTO : !strcmp(wbMode, CameraParameters::WHITE_BALANCE_INCANDESCENT) ? @@ -1627,6 +1635,8 @@ int Parameters::wbModeStringToEnum(const char *wbMode) { int Parameters::effectModeStringToEnum(const char *effectMode) { return + !effectMode ? + ANDROID_CONTROL_EFFECT_OFF : !strcmp(effectMode, CameraParameters::EFFECT_NONE) ? ANDROID_CONTROL_EFFECT_OFF : !strcmp(effectMode, CameraParameters::EFFECT_MONO) ? @@ -1650,6 +1660,8 @@ int Parameters::effectModeStringToEnum(const char *effectMode) { int Parameters::abModeStringToEnum(const char *abMode) { return + !abMode ? + ANDROID_CONTROL_AE_ANTIBANDING_AUTO : !strcmp(abMode, CameraParameters::ANTIBANDING_AUTO) ? ANDROID_CONTROL_AE_ANTIBANDING_AUTO : !strcmp(abMode, CameraParameters::ANTIBANDING_OFF) ? @@ -1663,6 +1675,8 @@ int Parameters::abModeStringToEnum(const char *abMode) { int Parameters::sceneModeStringToEnum(const char *sceneMode) { return + !sceneMode ? + ANDROID_CONTROL_SCENE_MODE_UNSUPPORTED : !strcmp(sceneMode, CameraParameters::SCENE_MODE_AUTO) ? ANDROID_CONTROL_SCENE_MODE_UNSUPPORTED : !strcmp(sceneMode, CameraParameters::SCENE_MODE_ACTION) ? @@ -1701,6 +1715,8 @@ int Parameters::sceneModeStringToEnum(const char *sceneMode) { Parameters::Parameters::flashMode_t Parameters::flashModeStringToEnum( const char *flashMode) { return + !flashMode ? + Parameters::FLASH_MODE_INVALID : !strcmp(flashMode, CameraParameters::FLASH_MODE_OFF) ? Parameters::FLASH_MODE_OFF : !strcmp(flashMode, CameraParameters::FLASH_MODE_AUTO) ? @@ -1717,6 +1733,8 @@ Parameters::Parameters::flashMode_t Parameters::flashModeStringToEnum( Parameters::Parameters::focusMode_t Parameters::focusModeStringToEnum( const char *focusMode) { return + !focusMode ? + Parameters::FOCUS_MODE_INVALID : !strcmp(focusMode, CameraParameters::FOCUS_MODE_AUTO) ? Parameters::FOCUS_MODE_AUTO : !strcmp(focusMode, CameraParameters::FOCUS_MODE_INFINITY) ? @@ -1737,6 +1755,8 @@ Parameters::Parameters::focusMode_t Parameters::focusModeStringToEnum( Parameters::Parameters::lightFxMode_t Parameters::lightFxStringToEnum( const char *lightFxMode) { return + !lightFxMode ? + Parameters::LIGHTFX_NONE : !strcmp(lightFxMode, CameraParameters::LIGHTFX_LOWLIGHT) ? Parameters::LIGHTFX_LOWLIGHT : !strcmp(lightFxMode, CameraParameters::LIGHTFX_HDR) ? diff --git a/services/camera/libcameraservice/camera2/ZslProcessor.cpp b/services/camera/libcameraservice/camera2/ZslProcessor.cpp index ac02afc..ea1c2b9 100644 --- a/services/camera/libcameraservice/camera2/ZslProcessor.cpp +++ b/services/camera/libcameraservice/camera2/ZslProcessor.cpp @@ -134,7 +134,7 @@ status_t ZslProcessor::updateStream(const Parameters ¶ms) { } if (currentWidth != (uint32_t)params.pictureWidth || currentHeight != (uint32_t)params.pictureHeight) { - res = device->deleteStream(mZslReprocessStreamId); + res = device->deleteReprocessStream(mZslReprocessStreamId); if (res != OK) { ALOGE("%s: Camera %d: Unable to delete old reprocess stream " "for ZSL: %s (%d)", __FUNCTION__, @@ -189,9 +189,22 @@ status_t ZslProcessor::deleteStream() { if (client == 0) return OK; sp<Camera2Device> device = client->getCameraDevice(); - device->deleteStream(mZslReprocessStreamId); + res = device->deleteReprocessStream(mZslReprocessStreamId); + if (res != OK) { + ALOGE("%s: Camera %d: Cannot delete ZSL reprocessing stream %d: " + "%s (%d)", __FUNCTION__, client->getCameraId(), + mZslReprocessStreamId, strerror(-res), res); + return res; + } + mZslReprocessStreamId = NO_STREAM; - device->deleteStream(mZslStreamId); + res = device->deleteStream(mZslStreamId); + if (res != OK) { + ALOGE("%s: Camera %d: Cannot delete ZSL output stream %d: " + "%s (%d)", __FUNCTION__, client->getCameraId(), + mZslStreamId, strerror(-res), res); + return res; + } mZslWindow.clear(); mZslConsumer.clear(); |