summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--media/libeffects/data/audio_effects.conf39
-rw-r--r--media/libstagefright/codecs/aacenc/inc/aac_rom.h2
-rw-r--r--media/libstagefright/codecs/aacenc/src/aac_rom.c2
-rw-r--r--media/libstagefright/codecs/aacenc/src/block_switch.c2
-rw-r--r--media/libstagefright/wifi-display/source/PlaybackSession.cpp8
-rw-r--r--media/libstagefright/wifi-display/source/Serializer.cpp7
-rw-r--r--services/camera/libcameraservice/Camera2Client.cpp9
-rw-r--r--services/camera/libcameraservice/camera2/Parameters.cpp40
-rw-r--r--services/camera/libcameraservice/camera2/ZslProcessor.cpp19
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 &params, 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 &params) {
}
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();