Merge "stagefright: parseApp check data boundary conditions"
diff --git a/include/media/AudioSystem.h b/include/media/AudioSystem.h
index 2174b2f..d67ad44 100644
--- a/include/media/AudioSystem.h
+++ b/include/media/AudioSystem.h
@@ -200,6 +200,9 @@
const char *device_address, const char *device_name);
static audio_policy_dev_state_t getDeviceConnectionState(audio_devices_t device,
const char *device_address);
+ static status_t handleDeviceConfigChange(audio_devices_t device,
+ const char *device_address,
+ const char *device_name);
static status_t setPhoneState(audio_mode_t state);
static status_t setForceUse(audio_policy_force_use_t usage, audio_policy_forced_cfg_t config);
static audio_policy_forced_cfg_t getForceUse(audio_policy_force_use_t usage);
diff --git a/include/media/IAudioPolicyService.h b/include/media/IAudioPolicyService.h
index ef15a0c..f9dcbea 100644
--- a/include/media/IAudioPolicyService.h
+++ b/include/media/IAudioPolicyService.h
@@ -48,6 +48,9 @@
const char *device_name) = 0;
virtual audio_policy_dev_state_t getDeviceConnectionState(audio_devices_t device,
const char *device_address) = 0;
+ virtual status_t handleDeviceConfigChange(audio_devices_t device,
+ const char *device_address,
+ const char *device_name) = 0;
virtual status_t setPhoneState(audio_mode_t state) = 0;
virtual status_t setForceUse(audio_policy_force_use_t usage,
audio_policy_forced_cfg_t config) = 0;
diff --git a/media/libaudioclient/AudioSystem.cpp b/media/libaudioclient/AudioSystem.cpp
index 33974e0..bbe6a8f 100644
--- a/media/libaudioclient/AudioSystem.cpp
+++ b/media/libaudioclient/AudioSystem.cpp
@@ -751,6 +751,25 @@
return aps->getDeviceConnectionState(device, device_address);
}
+status_t AudioSystem::handleDeviceConfigChange(audio_devices_t device,
+ const char *device_address,
+ const char *device_name)
+{
+ const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
+ const char *address = "";
+ const char *name = "";
+
+ if (aps == 0) return PERMISSION_DENIED;
+
+ if (device_address != NULL) {
+ address = device_address;
+ }
+ if (device_name != NULL) {
+ name = device_name;
+ }
+ return aps->handleDeviceConfigChange(device, address, name);
+}
+
status_t AudioSystem::setPhoneState(audio_mode_t state)
{
if (uint32_t(state) >= AUDIO_MODE_CNT) return BAD_VALUE;
diff --git a/media/libaudioclient/IAudioPolicyService.cpp b/media/libaudioclient/IAudioPolicyService.cpp
index 946da8a..222189a 100644
--- a/media/libaudioclient/IAudioPolicyService.cpp
+++ b/media/libaudioclient/IAudioPolicyService.cpp
@@ -33,6 +33,7 @@
enum {
SET_DEVICE_CONNECTION_STATE = IBinder::FIRST_CALL_TRANSACTION,
GET_DEVICE_CONNECTION_STATE,
+ HANDLE_DEVICE_CONFIG_CHANGE,
SET_PHONE_STATE,
SET_RINGER_MODE, // reserved, no longer used
SET_FORCE_USE,
@@ -116,6 +117,19 @@
return static_cast <audio_policy_dev_state_t>(reply.readInt32());
}
+ virtual status_t handleDeviceConfigChange(audio_devices_t device,
+ const char *device_address,
+ const char *device_name)
+ {
+ Parcel data, reply;
+ data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
+ data.writeInt32(static_cast <uint32_t>(device));
+ data.writeCString(device_address);
+ data.writeCString(device_name);
+ remote()->transact(HANDLE_DEVICE_CONFIG_CHANGE, data, &reply);
+ return static_cast <status_t> (reply.readInt32());
+ }
+
virtual status_t setPhoneState(audio_mode_t state)
{
Parcel data, reply;
@@ -838,6 +852,18 @@
return NO_ERROR;
} break;
+ case HANDLE_DEVICE_CONFIG_CHANGE: {
+ CHECK_INTERFACE(IAudioPolicyService, data, reply);
+ audio_devices_t device =
+ static_cast <audio_devices_t>(data.readInt32());
+ const char *device_address = data.readCString();
+ const char *device_name = data.readCString();
+ reply->writeInt32(static_cast<uint32_t> (handleDeviceConfigChange(device,
+ device_address,
+ device_name)));
+ return NO_ERROR;
+ } break;
+
case SET_PHONE_STATE: {
CHECK_INTERFACE(IAudioPolicyService, data, reply);
reply->writeInt32(static_cast <uint32_t>(setPhoneState(
diff --git a/media/libeffects/downmix/EffectDownmix.c b/media/libeffects/downmix/EffectDownmix.c
index 9823c55..fff20e7 100644
--- a/media/libeffects/downmix/EffectDownmix.c
+++ b/media/libeffects/downmix/EffectDownmix.c
@@ -16,11 +16,14 @@
#define LOG_TAG "EffectDownmix"
//#define LOG_NDEBUG 0
-#include <log/log.h>
+
#include <inttypes.h>
+#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
-#include <stdbool.h>
+
+#include <android/log.h>
+
#include "EffectDownmix.h"
// Do not submit with DOWNMIX_TEST_CHANNEL_INDEX defined, strictly for testing
diff --git a/media/libeffects/factory/EffectsFactory.c b/media/libeffects/factory/EffectsFactory.c
index db7865a..2d2596d 100644
--- a/media/libeffects/factory/EffectsFactory.c
+++ b/media/libeffects/factory/EffectsFactory.c
@@ -18,13 +18,17 @@
//#define LOG_NDEBUG 0
#include "EffectsFactory.h"
-#include <string.h>
-#include <stdlib.h>
-#include <dlfcn.h>
-#include <cutils/misc.h>
+#include <dlfcn.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <android/log.h>
#include <cutils/config_utils.h>
+#include <cutils/misc.h>
#include <cutils/properties.h>
+
#include <audio_effects/audio_effects_conf.h>
static list_elem_t *gEffectList; // list of effect_entry_t: all currently created effects
diff --git a/media/libeffects/factory/EffectsFactory.h b/media/libeffects/factory/EffectsFactory.h
index 518800d..b7936e0 100644
--- a/media/libeffects/factory/EffectsFactory.h
+++ b/media/libeffects/factory/EffectsFactory.h
@@ -17,9 +17,10 @@
#ifndef ANDROID_EFFECTSFACTORY_H_
#define ANDROID_EFFECTSFACTORY_H_
-#include <cutils/log.h>
-#include <pthread.h>
#include <dirent.h>
+#include <pthread.h>
+
+#include <android/log.h>
#include <hardware/audio_effect.h>
#if __cplusplus
diff --git a/media/libeffects/loudness/EffectLoudnessEnhancer.cpp b/media/libeffects/loudness/EffectLoudnessEnhancer.cpp
index a5a1a3f..3c78e95 100644
--- a/media/libeffects/loudness/EffectLoudnessEnhancer.cpp
+++ b/media/libeffects/loudness/EffectLoudnessEnhancer.cpp
@@ -16,13 +16,16 @@
#define LOG_TAG "EffectLE"
//#define LOG_NDEBUG 0
-#include <cutils/log.h>
+
#include <assert.h>
+#include <math.h>
+#include <new>
#include <stdlib.h>
#include <string.h>
-#include <new>
#include <time.h>
-#include <math.h>
+
+#include <android/log.h>
+
#include <audio_effects/effect_loudnessenhancer.h>
#include "dsp/core/dynamic_range_compression.h"
diff --git a/media/libeffects/loudness/dsp/core/dynamic_range_compression-inl.h b/media/libeffects/loudness/dsp/core/dynamic_range_compression-inl.h
index da75ceb..4f9f438 100644
--- a/media/libeffects/loudness/dsp/core/dynamic_range_compression-inl.h
+++ b/media/libeffects/loudness/dsp/core/dynamic_range_compression-inl.h
@@ -16,13 +16,15 @@
#ifndef LE_FX_ENGINE_DSP_CORE_DYNAMIC_RANGE_COMPRESSION_INL_H_
#define LE_FX_ENGINE_DSP_CORE_DYNAMIC_RANGE_COMPRESSION_INL_H_
+#ifndef LOG_TAG
+#define LOG_TAG NULL
+#endif
//#define LOG_NDEBUG 0
-#include <cutils/log.h>
+#include <android/log.h>
namespace le_fx {
-
inline void AdaptiveDynamicRangeCompression::set_knee_threshold(float decibel) {
// Converts to 1og-base
knee_threshold_in_decibel_ = decibel;
diff --git a/media/libeffects/loudness/dsp/core/dynamic_range_compression.cpp b/media/libeffects/loudness/dsp/core/dynamic_range_compression.cpp
index 7bd068e..578f58a 100644
--- a/media/libeffects/loudness/dsp/core/dynamic_range_compression.cpp
+++ b/media/libeffects/loudness/dsp/core/dynamic_range_compression.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+//#define LOG_NDEBUG 0
#include <cmath>
@@ -22,9 +23,7 @@
#include "dsp/core/interpolation.h"
#include "dsp/core/dynamic_range_compression.h"
-//#define LOG_NDEBUG 0
-#include <cutils/log.h>
-
+#include <android/log.h>
namespace le_fx {
diff --git a/media/libeffects/loudness/dsp/core/dynamic_range_compression.h b/media/libeffects/loudness/dsp/core/dynamic_range_compression.h
index 2821a78..04455c5 100644
--- a/media/libeffects/loudness/dsp/core/dynamic_range_compression.h
+++ b/media/libeffects/loudness/dsp/core/dynamic_range_compression.h
@@ -16,14 +16,14 @@
#ifndef LE_FX_ENGINE_DSP_CORE_DYNAMIC_RANGE_COMPRESSION_H_
#define LE_FX_ENGINE_DSP_CORE_DYNAMIC_RANGE_COMPRESSION_H_
+//#define LOG_NDEBUG 0
+
#include "common/core/types.h"
#include "common/core/math.h"
#include "dsp/core/basic.h"
#include "dsp/core/interpolation.h"
-//#define LOG_NDEBUG 0
-#include <cutils/log.h>
-
+#include <android/log.h>
namespace le_fx {
diff --git a/media/libeffects/loudness/dsp/core/interpolator_base-inl.h b/media/libeffects/loudness/dsp/core/interpolator_base-inl.h
index bd08b65..bdb6818 100644
--- a/media/libeffects/loudness/dsp/core/interpolator_base-inl.h
+++ b/media/libeffects/loudness/dsp/core/interpolator_base-inl.h
@@ -16,13 +16,15 @@
#ifndef LE_FX_ENGINE_DSP_CORE_INTERPOLATOR_BASE_INL_H_
#define LE_FX_ENGINE_DSP_CORE_INTERPOLATOR_BASE_INL_H_
+#ifndef LOG_TAG
+#define LOG_TAG NULL
+#endif
+//#define LOG_NDEBUG 0
+
+#include <android/log.h>
#include "dsp/core/basic.h"
-//#define LOG_NDEBUG 0
-#include <cutils/log.h>
-
-
namespace le_fx {
namespace sigmod {
@@ -112,7 +114,7 @@
if (x_data_[n + 1] <= x_data_[n]) {
ALOGE("InterpolatorBase::Initialize: xData are not ordered or "
"contain equal values (X[%d] <= X[%d]) (%.5e <= %.5e)",
- n + 1, n, x_data_[n + 1], x_data_[n]);
+ n + 1, n, x_data_[n + 1], x_data_[n]);
status_ = false;
return false;
}
diff --git a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
index d7b5f65..80f783d 100644
--- a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
+++ b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
@@ -25,11 +25,11 @@
#include <stdlib.h>
#include <string.h>
-#include <cutils/log.h>
+#include <log/log.h>
+
#include "EffectBundle.h"
#include "math.h"
-
// effect_handle_t interface implementation for bass boost
extern "C" const struct effect_interface_s gLvmEffectInterface;
diff --git a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp
index f7dcdda..fc82dd1 100644
--- a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp
+++ b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp
@@ -25,7 +25,8 @@
#include <stdlib.h>
#include <string.h>
-#include <cutils/log.h>
+#include <log/log.h>
+
#include "EffectReverb.h"
// from Reverb/lib
#include "LVREV.h"
diff --git a/media/libeffects/proxy/EffectProxy.cpp b/media/libeffects/proxy/EffectProxy.cpp
index 7f777e7..0eddc15 100644
--- a/media/libeffects/proxy/EffectProxy.cpp
+++ b/media/libeffects/proxy/EffectProxy.cpp
@@ -17,13 +17,16 @@
#define LOG_TAG "EffectProxy"
//#define LOG_NDEBUG 0
-#include <cutils/log.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <new>
+
#include <EffectProxy.h>
+
+#include <log/log.h>
#include <utils/threads.h>
+
#include <media/EffectsFactoryApi.h>
namespace android {
diff --git a/media/libeffects/testlibs/EffectEqualizer.cpp b/media/libeffects/testlibs/EffectEqualizer.cpp
index 3cb13f2..f5e11a6 100644
--- a/media/libeffects/testlibs/EffectEqualizer.cpp
+++ b/media/libeffects/testlibs/EffectEqualizer.cpp
@@ -18,17 +18,19 @@
#define ARRAY_SIZE(array) (sizeof array / sizeof array[0])
//
#define LOG_NDEBUG 0
-#include <cutils/log.h>
+
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <new>
+
+#include <android/log.h>
+
#include "AudioEqualizer.h"
#include "AudioBiquadFilter.h"
#include "AudioFormatAdapter.h"
#include <audio_effects/effect_equalizer.h>
-
// effect_handle_t interface implementation for equalizer effect
extern "C" const struct effect_interface_s gEqualizerInterface;
diff --git a/media/libeffects/testlibs/EffectReverb.c b/media/libeffects/testlibs/EffectReverb.c
index f056d19..08bf9ae 100644
--- a/media/libeffects/testlibs/EffectReverb.c
+++ b/media/libeffects/testlibs/EffectReverb.c
@@ -16,10 +16,13 @@
#define LOG_TAG "EffectReverb"
//#define LOG_NDEBUG 0
-#include <cutils/log.h>
+
+#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
-#include <stdbool.h>
+
+#include <android/log.h>
+
#include "EffectReverb.h"
#include "EffectsMath.h"
diff --git a/media/libeffects/testlibs/EffectsMath.c b/media/libeffects/testlibs/EffectsMath.c
index 41ec662..efd9e87 100644
--- a/media/libeffects/testlibs/EffectsMath.c
+++ b/media/libeffects/testlibs/EffectsMath.c
@@ -15,9 +15,11 @@
*/
#define LOG_TAG "EFFECTSMATH"
//#define LOG_NDEBUG 0
-#include <cutils/log.h>
+
#include <assert.h>
+#include <android/log.h>
+
#include "EffectsMath.h"
// gLogTab contains pre-calculated values of log2(1 + ai5*2^-1 + ai4*2^-2 + ai3*2^-3 + ai2*2^-4 + ai1*2^-5 + ai0*2^-6)
diff --git a/media/libeffects/visualizer/EffectVisualizer.cpp b/media/libeffects/visualizer/EffectVisualizer.cpp
index 21fddb1..0eaa3dc 100644
--- a/media/libeffects/visualizer/EffectVisualizer.cpp
+++ b/media/libeffects/visualizer/EffectVisualizer.cpp
@@ -16,17 +16,19 @@
#define LOG_TAG "EffectVisualizer"
//#define LOG_NDEBUG 0
-#include <log/log.h>
+
#include <assert.h>
#include <inttypes.h>
+#include <math.h>
#include <stdlib.h>
#include <string.h>
-#include <new>
#include <time.h>
-#include <math.h>
-#include <audio_effects/effect_visualizer.h>
-#include <cutils/log.h>
+#include <new>
+
+#include <log/log.h>
+
+#include <audio_effects/effect_visualizer.h>
extern "C" {
diff --git a/media/libmedia/IMediaExtractor.cpp b/media/libmedia/IMediaExtractor.cpp
index 72d1d7c..4be1118 100644
--- a/media/libmedia/IMediaExtractor.cpp
+++ b/media/libmedia/IMediaExtractor.cpp
@@ -209,11 +209,16 @@
for (size_t i = 0; i < tracks.size(); i++) {
const String8 desc = trackDescriptions.itemAt(i);
str.appendFormat(" track {%s} ", desc.string());
- const sp<IMediaSource> source = tracks.itemAt(i).promote();
- if (source == NULL) {
- str.append(": deleted\n");
+ wp<IMediaSource> wSource = tracks.itemAt(i);
+ if (wSource == NULL) {
+ str.append(": null\n");
} else {
- str.appendFormat(": active\n");
+ const sp<IMediaSource> source = wSource.promote();
+ if (source == NULL) {
+ str.append(": deleted\n");
+ } else {
+ str.appendFormat(": active\n");
+ }
}
}
return str;
@@ -232,9 +237,14 @@
if (extractor != NULL && extractor == ex) {
if (instance.tracks.size() > 5) {
instance.tracks.resize(5);
+ instance.trackDescriptions.resize(5);
}
instance.tracks.push_front(source);
- instance.trackDescriptions.add(source->getFormat()->toString());
+ if (source != NULL) {
+ instance.trackDescriptions.push_front(source->getFormat()->toString());
+ } else {
+ instance.trackDescriptions.push_front(String8::empty());
+ }
break;
}
}
diff --git a/media/libstagefright/CallbackDataSource.cpp b/media/libstagefright/CallbackDataSource.cpp
index 0df7da4..0434bab 100644
--- a/media/libstagefright/CallbackDataSource.cpp
+++ b/media/libstagefright/CallbackDataSource.cpp
@@ -51,7 +51,7 @@
}
ssize_t CallbackDataSource::readAt(off64_t offset, void* data, size_t size) {
- if (mMemory == NULL) {
+ if (mMemory == NULL || data == NULL) {
return -1;
}
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp
index 338e856..9392e7d 100644
--- a/media/libstagefright/MPEG4Extractor.cpp
+++ b/media/libstagefright/MPEG4Extractor.cpp
@@ -3889,7 +3889,12 @@
return OK;
}
if (smplcnt > mCurrentSampleInfoAllocSize) {
- mCurrentSampleInfoSizes = (uint8_t*) realloc(mCurrentSampleInfoSizes, smplcnt);
+ uint8_t * newPtr = (uint8_t*) realloc(mCurrentSampleInfoSizes, smplcnt);
+ if (newPtr == NULL) {
+ ALOGE("failed to realloc %u -> %u", mCurrentSampleInfoAllocSize, smplcnt);
+ return NO_MEMORY;
+ }
+ mCurrentSampleInfoSizes = newPtr;
mCurrentSampleInfoAllocSize = smplcnt;
}
@@ -3928,6 +3933,7 @@
if (entrycount > mCurrentSampleInfoOffsetsAllocSize) {
uint64_t *newPtr = (uint64_t *)realloc(mCurrentSampleInfoOffsets, entrycount * 8);
if (newPtr == NULL) {
+ ALOGE("failed to realloc %u -> %u", mCurrentSampleInfoOffsetsAllocSize, entrycount * 8);
return NO_MEMORY;
}
mCurrentSampleInfoOffsets = newPtr;
diff --git a/media/libstagefright/codecs/amrnb/dec/src/a_refl.cpp b/media/libstagefright/codecs/amrnb/dec/src/a_refl.cpp
index 696d2da..9d9cd3b 100644
--- a/media/libstagefright/codecs/amrnb/dec/src/a_refl.cpp
+++ b/media/libstagefright/codecs/amrnb/dec/src/a_refl.cpp
@@ -59,7 +59,8 @@
/*----------------------------------------------------------------------------
; INCLUDES
----------------------------------------------------------------------------*/
-#include <log/log.h>
+#define LOG_TAG "a_refl"
+#include <android/log.h>
#include "a_refl.h"
#include "typedef.h"
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/conceal.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/conceal.cpp
index 03e4119..5baa2a2 100644
--- a/media/libstagefright/codecs/m4v_h263/dec/src/conceal.cpp
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/conceal.cpp
@@ -15,11 +15,15 @@
* and limitations under the License.
* -------------------------------------------------------------------
*/
+
+#define LOG_TAG "conceal"
+
+#include "android/log.h"
+
#include "mp4dec_lib.h" /* video decoder function prototypes */
#include "vlc_decode.h"
#include "bitstream.h"
#include "scaling.h"
-#include "log/log.h"
/* ====================================================================== /
Function : ConcealTexture_I()
diff --git a/media/libstagefright/codecs/on2/h264dec/source/H264SwDecApi.c b/media/libstagefright/codecs/on2/h264dec/source/H264SwDecApi.c
index f820dfd..a9b38e5 100644
--- a/media/libstagefright/codecs/on2/h264dec/source/H264SwDecApi.c
+++ b/media/libstagefright/codecs/on2/h264dec/source/H264SwDecApi.c
@@ -35,10 +35,12 @@
/*------------------------------------------------------------------------------
1. Include headers
------------------------------------------------------------------------------*/
-#include <log/log.h>
#include <stdlib.h>
#include <string.h>
+
+#include <log/log.h>
+
#include "basetype.h"
#include "h264bsd_container.h"
#include "H264SwDecApi.h"
diff --git a/media/libstagefright/codecs/on2/h264dec/source/h264bsd_dpb.c b/media/libstagefright/codecs/on2/h264dec/source/h264bsd_dpb.c
index 799bd16..bd9eee9 100644
--- a/media/libstagefright/codecs/on2/h264dec/source/h264bsd_dpb.c
+++ b/media/libstagefright/codecs/on2/h264dec/source/h264bsd_dpb.c
@@ -61,6 +61,7 @@
#include "basetype.h"
#include <log/log.h>
+
/*------------------------------------------------------------------------------
2. External compiler flags
--------------------------------------------------------------------------------
diff --git a/media/libstagefright/foundation/AMessage.cpp b/media/libstagefright/foundation/AMessage.cpp
index 0406f6a..045e044 100644
--- a/media/libstagefright/foundation/AMessage.cpp
+++ b/media/libstagefright/foundation/AMessage.cpp
@@ -17,11 +17,13 @@
#define LOG_TAG "AMessage"
//#define LOG_NDEBUG 0
//#define DUMP_STATS
-#include <cutils/log.h>
+
+#include <ctype.h>
#include "AMessage.h"
-#include <ctype.h>
+#include <android/log.h>
+#include <binder/Parcel.h>
#include "AAtomizer.h"
#include "ABuffer.h"
@@ -30,7 +32,6 @@
#include "AHandler.h"
#include "AString.h"
-#include <binder/Parcel.h>
#include <media/stagefright/foundation/hexdump.h>
namespace android {
diff --git a/media/libstagefright/httplive/HTTPDownloader.cpp b/media/libstagefright/httplive/HTTPDownloader.cpp
index 861b85a..793695a 100644
--- a/media/libstagefright/httplive/HTTPDownloader.cpp
+++ b/media/libstagefright/httplive/HTTPDownloader.cpp
@@ -256,10 +256,6 @@
return NULL;
}
-
- if (curPlaylistHash != NULL) {
- memcpy(curPlaylistHash, hash, sizeof(hash));
- }
#endif
sp<M3UParser> playlist =
@@ -271,6 +267,13 @@
return NULL;
}
+#if defined(__ANDROID__)
+ if (curPlaylistHash != NULL) {
+
+ memcpy(curPlaylistHash, hash, sizeof(hash));
+ }
+#endif
+
return playlist;
}
diff --git a/media/mtp/AsyncIO.cpp b/media/mtp/AsyncIO.cpp
index a1a98ab..e77ad38 100644
--- a/media/mtp/AsyncIO.cpp
+++ b/media/mtp/AsyncIO.cpp
@@ -37,15 +37,17 @@
}
void splice_read_func(struct aiocb *aiocbp) {
+ loff_t long_offset = aiocbp->aio_offset;
aiocbp->ret = TEMP_FAILURE_RETRY(splice(aiocbp->aio_fildes,
- (off64_t*) &aiocbp->aio_offset, aiocbp->aio_sink,
+ &long_offset, aiocbp->aio_sink,
NULL, aiocbp->aio_nbytes, 0));
if (aiocbp->ret == -1) aiocbp->error = errno;
}
void splice_write_func(struct aiocb *aiocbp) {
+ loff_t long_offset = aiocbp->aio_offset;
aiocbp->ret = TEMP_FAILURE_RETRY(splice(aiocbp->aio_fildes, NULL,
- aiocbp->aio_sink, (off64_t*) &aiocbp->aio_offset,
+ aiocbp->aio_sink, &long_offset,
aiocbp->aio_nbytes, 0));
if (aiocbp->ret == -1) aiocbp->error = errno;
}
diff --git a/media/mtp/MtpServer.cpp b/media/mtp/MtpServer.cpp
index 2a96ac9..8d56c16 100644
--- a/media/mtp/MtpServer.cpp
+++ b/media/mtp/MtpServer.cpp
@@ -16,7 +16,6 @@
#include <android-base/properties.h>
#include <chrono>
-#include <cutils/properties.h>
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
@@ -96,12 +95,20 @@
};
MtpServer::MtpServer(MtpDatabase* database, bool ptp,
- int fileGroup, int filePerm, int directoryPerm)
+ int fileGroup, int filePerm, int directoryPerm,
+ const MtpString& deviceInfoManufacturer,
+ const MtpString& deviceInfoModel,
+ const MtpString& deviceInfoDeviceVersion,
+ const MtpString& deviceInfoSerialNumber)
: mDatabase(database),
mPtp(ptp),
mFileGroup(fileGroup),
mFilePermission(filePerm),
mDirectoryPermission(directoryPerm),
+ mDeviceInfoManufacturer(deviceInfoManufacturer),
+ mDeviceInfoModel(deviceInfoModel),
+ mDeviceInfoDeviceVersion(deviceInfoDeviceVersion),
+ mDeviceInfoSerialNumber(deviceInfoSerialNumber),
mSessionID(0),
mSessionOpen(false),
mSendObjectHandle(kInvalidObjectHandle),
@@ -451,7 +458,6 @@
MtpResponseCode MtpServer::doGetDeviceInfo() {
MtpStringBuffer string;
- char prop_value[PROPERTY_VALUE_MAX];
MtpObjectFormatList* playbackFormats = mDatabase->getSupportedPlaybackFormats();
MtpObjectFormatList* captureFormats = mDatabase->getSupportedCaptureFormats();
@@ -483,19 +489,10 @@
mData.putAUInt16(captureFormats); // Capture Formats
mData.putAUInt16(playbackFormats); // Playback Formats
- property_get("ro.product.manufacturer", prop_value, "unknown manufacturer");
- string.set(prop_value);
- mData.putString(string); // Manufacturer
-
- property_get("ro.product.model", prop_value, "MTP Device");
- string.set(prop_value);
- mData.putString(string); // Model
- string.set("1.0");
- mData.putString(string); // Device Version
-
- property_get("ro.serialno", prop_value, "????????");
- string.set(prop_value);
- mData.putString(string); // Serial Number
+ mData.putString(mDeviceInfoManufacturer); // Manufacturer
+ mData.putString(mDeviceInfoModel); // Model
+ mData.putString(mDeviceInfoDeviceVersion); // Device Version
+ mData.putString(mDeviceInfoSerialNumber); // Serial Number
delete playbackFormats;
delete captureFormats;
diff --git a/media/mtp/MtpServer.h b/media/mtp/MtpServer.h
index c80e6a8..64d1b72 100644
--- a/media/mtp/MtpServer.h
+++ b/media/mtp/MtpServer.h
@@ -49,6 +49,15 @@
int mFilePermission;
int mDirectoryPermission;
+ // Manufacturer to report in DeviceInfo
+ MtpString mDeviceInfoManufacturer;
+ // Model to report in DeviceInfo
+ MtpString mDeviceInfoModel;
+ // Device version to report in DeviceInfo
+ MtpString mDeviceInfoDeviceVersion;
+ // Serial number to report in DeviceInfo
+ MtpString mDeviceInfoSerialNumber;
+
// current session ID
MtpSessionID mSessionID;
// true if we have an open session and mSessionID is valid
@@ -95,7 +104,11 @@
public:
MtpServer(MtpDatabase* database, bool ptp,
- int fileGroup, int filePerm, int directoryPerm);
+ int fileGroup, int filePerm, int directoryPerm,
+ const MtpString& deviceInfoManufacturer,
+ const MtpString& deviceInfoModel,
+ const MtpString& deviceInfoDeviceVersion,
+ const MtpString& deviceInfoSerialNumber);
virtual ~MtpServer();
MtpStorage* getStorage(MtpStorageID id);
diff --git a/services/audioflinger/AudioResampler.cpp b/services/audioflinger/AudioResampler.cpp
index 4f8b413..43624a0 100644
--- a/services/audioflinger/AudioResampler.cpp
+++ b/services/audioflinger/AudioResampler.cpp
@@ -17,11 +17,14 @@
#define LOG_TAG "AudioResampler"
//#define LOG_NDEBUG 0
+#include <pthread.h>
#include <stdint.h>
#include <stdlib.h>
#include <sys/types.h>
-#include <cutils/log.h>
+
+#include <android/log.h>
#include <cutils/properties.h>
+
#include <audio_utils/primitives.h>
#include "AudioResampler.h"
#include "AudioResamplerSinc.h"
diff --git a/services/audioflinger/AudioResamplerCubic.cpp b/services/audioflinger/AudioResamplerCubic.cpp
index 9c3c7cb..d27dce7 100644
--- a/services/audioflinger/AudioResamplerCubic.cpp
+++ b/services/audioflinger/AudioResamplerCubic.cpp
@@ -19,7 +19,7 @@
#include <stdint.h>
#include <string.h>
#include <sys/types.h>
-#include <cutils/log.h>
+#include <android/log.h>
#include "AudioResampler.h"
#include "AudioResamplerCubic.h"
diff --git a/services/audioflinger/AudioResamplerCubic.h b/services/audioflinger/AudioResamplerCubic.h
index 4b45b0b..f218fd9 100644
--- a/services/audioflinger/AudioResamplerCubic.h
+++ b/services/audioflinger/AudioResamplerCubic.h
@@ -19,7 +19,7 @@
#include <stdint.h>
#include <sys/types.h>
-#include <cutils/log.h>
+#include <android/log.h>
#include "AudioResampler.h"
diff --git a/services/audioflinger/AudioResamplerDyn.h b/services/audioflinger/AudioResamplerDyn.h
index 3b1c381..f8b8fa1 100644
--- a/services/audioflinger/AudioResamplerDyn.h
+++ b/services/audioflinger/AudioResamplerDyn.h
@@ -19,7 +19,7 @@
#include <stdint.h>
#include <sys/types.h>
-#include <cutils/log.h>
+#include <android/log.h>
#include "AudioResampler.h"
diff --git a/services/audioflinger/AudioResamplerSinc.h b/services/audioflinger/AudioResamplerSinc.h
index 0fbeac8..df8b45a 100644
--- a/services/audioflinger/AudioResamplerSinc.h
+++ b/services/audioflinger/AudioResamplerSinc.h
@@ -19,7 +19,7 @@
#include <stdint.h>
#include <sys/types.h>
-#include <cutils/log.h>
+#include <android/log.h>
#include "AudioResampler.h"
diff --git a/services/audioflinger/tests/resampler_tests.cpp b/services/audioflinger/tests/resampler_tests.cpp
index 9e375db..406b960 100644
--- a/services/audioflinger/tests/resampler_tests.cpp
+++ b/services/audioflinger/tests/resampler_tests.cpp
@@ -17,22 +17,25 @@
//#define LOG_NDEBUG 0
#define LOG_TAG "audioflinger_resampler_tests"
-#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <math.h>
#include <stdio.h>
#include <stdlib.h>
-#include <fcntl.h>
#include <string.h>
#include <sys/mman.h>
#include <sys/stat.h>
-#include <errno.h>
#include <time.h>
-#include <math.h>
-#include <vector>
-#include <utility>
+#include <unistd.h>
+
#include <iostream>
-#include <cutils/log.h>
+#include <utility>
+#include <vector>
+
+#include <android/log.h>
#include <gtest/gtest.h>
#include <media/AudioBufferProvider.h>
+
#include "AudioResampler.h"
#include "test_utils.h"
diff --git a/services/audiopolicy/AudioPolicyInterface.h b/services/audiopolicy/AudioPolicyInterface.h
index bb8a8fa..d1b86da 100644
--- a/services/audiopolicy/AudioPolicyInterface.h
+++ b/services/audiopolicy/AudioPolicyInterface.h
@@ -81,6 +81,10 @@
// retrieve a device connection status
virtual audio_policy_dev_state_t getDeviceConnectionState(audio_devices_t device,
const char *device_address) = 0;
+ // indicate a change in device configuration
+ virtual status_t handleDeviceConfigChange(audio_devices_t device,
+ const char *device_address,
+ const char *device_name) = 0;
// indicate a change in phone state. Valid phones states are defined by audio_mode_t
virtual void setPhoneState(audio_mode_t state) = 0;
// force using a specific device category for the specified usage
diff --git a/services/audiopolicy/common/managerdefinitions/src/AudioPatch.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioPatch.cpp
index f382dec..1be17b7 100644
--- a/services/audiopolicy/common/managerdefinitions/src/AudioPatch.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioPatch.cpp
@@ -20,7 +20,8 @@
#include "AudioPatch.h"
#include "AudioGain.h"
#include "TypeConverter.h"
-#include <cutils/log.h>
+
+#include <android/log.h>
#include <utils/String8.h>
namespace android {
diff --git a/services/audiopolicy/common/managerdefinitions/src/AudioSession.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioSession.cpp
index da983c5..1a6ab26 100644
--- a/services/audiopolicy/common/managerdefinitions/src/AudioSession.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioSession.cpp
@@ -21,7 +21,8 @@
#include "AudioSession.h"
#include "AudioGain.h"
#include "TypeConverter.h"
-#include <cutils/log.h>
+
+#include <android/log.h>
#include <utils/String8.h>
namespace android {
diff --git a/services/audiopolicy/engineconfigurable/wrapper/ParameterManagerWrapper.cpp b/services/audiopolicy/engineconfigurable/wrapper/ParameterManagerWrapper.cpp
index 6872e52..fe15d86 100755
--- a/services/audiopolicy/engineconfigurable/wrapper/ParameterManagerWrapper.cpp
+++ b/services/audiopolicy/engineconfigurable/wrapper/ParameterManagerWrapper.cpp
@@ -48,7 +48,7 @@
virtual void info(const string &log)
{
- ALOGD("policy-parameter-manager: %s", log.c_str());
+ ALOGV("policy-parameter-manager: %s", log.c_str());
}
virtual void warning(const string &log)
{
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index a8bdf86..8744de8 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -333,6 +333,47 @@
AUDIO_POLICY_DEVICE_STATE_AVAILABLE : AUDIO_POLICY_DEVICE_STATE_UNAVAILABLE;
}
+status_t AudioPolicyManager::handleDeviceConfigChange(audio_devices_t device,
+ const char *device_address,
+ const char *device_name)
+{
+ status_t status;
+
+ ALOGV("handleDeviceConfigChange(() device: 0x%X, address %s name %s",
+ device, device_address, device_name);
+
+ // Check if the device is currently connected
+ sp<DeviceDescriptor> devDesc =
+ mHwModules.getDeviceDescriptor(device, device_address, device_name);
+ ssize_t index = mAvailableOutputDevices.indexOf(devDesc);
+ if (index < 0) {
+ // Nothing to do: device is not connected
+ return NO_ERROR;
+ }
+
+ // Toggle the device state: UNAVAILABLE -> AVAILABLE
+ // This will force reading again the device configuration
+ status = setDeviceConnectionState(device,
+ AUDIO_POLICY_DEVICE_STATE_UNAVAILABLE,
+ device_address, device_name);
+ if (status != NO_ERROR) {
+ ALOGW("handleDeviceConfigChange() error disabling connection state: %d",
+ status);
+ return status;
+ }
+
+ status = setDeviceConnectionState(device,
+ AUDIO_POLICY_DEVICE_STATE_AVAILABLE,
+ device_address, device_name);
+ if (status != NO_ERROR) {
+ ALOGW("handleDeviceConfigChange() error enabling connection state: %d",
+ status);
+ return status;
+ }
+
+ return NO_ERROR;
+}
+
uint32_t AudioPolicyManager::updateCallRouting(audio_devices_t rxDevice, uint32_t delayMs)
{
bool createTxPatch = false;
@@ -4173,7 +4214,7 @@
ALOGVV("getOutputsForDevice() device %04x", device);
for (size_t i = 0; i < openOutputs.size(); i++) {
- ALOGVV("output %d isDuplicated=%d device=%04x",
+ ALOGVV("output %zu isDuplicated=%d device=%04x",
i, openOutputs.valueAt(i)->isDuplicated(),
openOutputs.valueAt(i)->supportedDevices());
if ((device & openOutputs.valueAt(i)->supportedDevices()) == device) {
@@ -4614,7 +4655,7 @@
== AUDIO_DEVICE_NONE) {
continue;
}
- ALOGVV("checkDeviceMuteStrategies() %s strategy %d (curDevice %04x)",
+ ALOGVV("checkDeviceMuteStrategies() %s strategy %zu (curDevice %04x)",
mute ? "muting" : "unmuting", i, curDevice);
setStrategyMute((routing_strategy)i, mute, desc, mute ? 0 : delayMs);
if (isStrategyActive(desc, (routing_strategy)i)) {
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h
index 5c2b673..3cfe508 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.h
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h
@@ -93,6 +93,9 @@
const char *device_name);
virtual audio_policy_dev_state_t getDeviceConnectionState(audio_devices_t device,
const char *device_address);
+ virtual status_t handleDeviceConfigChange(audio_devices_t device,
+ const char *device_address,
+ const char *device_name);
virtual void setPhoneState(audio_mode_t state);
virtual void setForceUse(audio_policy_force_use_t usage,
audio_policy_forced_cfg_t config);
diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
index 451ce84..b4470c0 100644
--- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
+++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
@@ -62,6 +62,26 @@
device_address);
}
+status_t AudioPolicyService::handleDeviceConfigChange(audio_devices_t device,
+ const char *device_address,
+ const char *device_name)
+{
+ if (mAudioPolicyManager == NULL) {
+ return NO_INIT;
+ }
+ if (!settingsAllowed()) {
+ return PERMISSION_DENIED;
+ }
+ if (!audio_is_output_device(device) && !audio_is_input_device(device)) {
+ return BAD_VALUE;
+ }
+
+ ALOGV("handleDeviceConfigChange()");
+ Mutex::Autolock _l(mLock);
+ return mAudioPolicyManager->handleDeviceConfigChange(device, device_address,
+ device_name);
+}
+
status_t AudioPolicyService::setPhoneState(audio_mode_t state)
{
if (mAudioPolicyManager == NULL) {
diff --git a/services/audiopolicy/service/AudioPolicyService.h b/services/audiopolicy/service/AudioPolicyService.h
index def6405..8c9b23c 100644
--- a/services/audiopolicy/service/AudioPolicyService.h
+++ b/services/audiopolicy/service/AudioPolicyService.h
@@ -66,6 +66,9 @@
virtual audio_policy_dev_state_t getDeviceConnectionState(
audio_devices_t device,
const char *device_address);
+ virtual status_t handleDeviceConfigChange(audio_devices_t device,
+ const char *device_address,
+ const char *device_name);
virtual status_t setPhoneState(audio_mode_t state);
virtual status_t setForceUse(audio_policy_force_use_t usage, audio_policy_forced_cfg_t config);
virtual audio_policy_forced_cfg_t getForceUse(audio_policy_force_use_t usage);
diff --git a/services/mediacodec/minijail/minijail.cpp b/services/mediacodec/minijail/minijail.cpp
index 72bb1af..7926380 100644
--- a/services/mediacodec/minijail/minijail.cpp
+++ b/services/mediacodec/minijail/minijail.cpp
@@ -15,7 +15,11 @@
** limitations under the License.
*/
-#include <cutils/log.h>
+#define LOG_TAG "minijail"
+
+#include <unistd.h>
+
+#include <android/log.h>
#include <libminijail.h>
#include "minijail.h"
diff --git a/services/mediaextractor/minijail/minijail.cpp b/services/mediaextractor/minijail/minijail.cpp
index 421a1e0..8291633 100644
--- a/services/mediaextractor/minijail/minijail.cpp
+++ b/services/mediaextractor/minijail/minijail.cpp
@@ -15,7 +15,11 @@
** limitations under the License.
*/
-#include <cutils/log.h>
+#define LOG_TAG "minijail"
+
+#include <unistd.h>
+
+#include <android/log.h>
#include <libminijail.h>
#include "minijail.h"