Merge "remove dependency on SurfaceTexture::connect()"
diff --git a/include/media/AudioRecord.h b/include/media/AudioRecord.h
index 70f79c6..ef77692 100644
--- a/include/media/AudioRecord.h
+++ b/include/media/AudioRecord.h
@@ -27,6 +27,7 @@
#include <utils/Errors.h>
#include <binder/IInterface.h>
#include <binder/IMemory.h>
+#include <cutils/sched_policy.h>
#include <utils/threads.h>
#include <system/audio.h>
@@ -393,7 +394,7 @@
audio_io_handle_t mInput;
int mSessionId;
int mPreviousPriority; // before start()
- int mPreviousSchedulingGroup;
+ SchedPolicy mPreviousSchedulingGroup;
};
}; // namespace android
diff --git a/include/media/AudioTrack.h b/include/media/AudioTrack.h
index 98b1f3e..639d6d2 100644
--- a/include/media/AudioTrack.h
+++ b/include/media/AudioTrack.h
@@ -28,6 +28,7 @@
#include <utils/Errors.h>
#include <binder/IInterface.h>
#include <binder/IMemory.h>
+#include <cutils/sched_policy.h>
#include <utils/threads.h>
namespace android {
@@ -536,7 +537,7 @@
status_t mRestoreStatus;
bool mIsTimed;
int mPreviousPriority; // before start()
- int mPreviousSchedulingGroup;
+ SchedPolicy mPreviousSchedulingGroup;
};
class TimedAudioTrack : public AudioTrack
diff --git a/media/libeffects/downmix/EffectDownmix.c b/media/libeffects/downmix/EffectDownmix.c
index 5439b87..f37cd5e 100644
--- a/media/libeffects/downmix/EffectDownmix.c
+++ b/media/libeffects/downmix/EffectDownmix.c
@@ -24,6 +24,27 @@
#define MINUS_3_DB_IN_Q19_12 2896 // -3dB = 0.707 * 2^12 = 2896
+typedef enum {
+ CHANNEL_MASK_SURROUND = AUDIO_CHANNEL_OUT_SURROUND,
+ CHANNEL_MASK_QUAD_BACK = AUDIO_CHANNEL_OUT_QUAD,
+ // like AUDIO_CHANNEL_OUT_QUAD with *_SIDE_* instead of *_BACK_*, same channel order
+ CHANNEL_MASK_QUAD_SIDE =
+ AUDIO_CHANNEL_OUT_FRONT_LEFT |
+ AUDIO_CHANNEL_OUT_FRONT_RIGHT |
+ AUDIO_CHANNEL_OUT_SIDE_LEFT |
+ AUDIO_CHANNEL_OUT_SIDE_RIGHT,
+ CHANNEL_MASK_5POINT1_BACK = AUDIO_CHANNEL_OUT_5POINT1,
+ // like AUDIO_CHANNEL_OUT_5POINT1 with *_SIDE_* instead of *_BACK_*, same channel order
+ CHANNEL_MASK_5POINT1_SIDE =
+ AUDIO_CHANNEL_OUT_FRONT_LEFT |
+ AUDIO_CHANNEL_OUT_FRONT_RIGHT |
+ AUDIO_CHANNEL_OUT_FRONT_CENTER |
+ AUDIO_CHANNEL_OUT_LOW_FREQUENCY |
+ AUDIO_CHANNEL_OUT_SIDE_LEFT |
+ AUDIO_CHANNEL_OUT_SIDE_RIGHT,
+ CHANNEL_MASK_7POINT1_SIDE_BACK = AUDIO_CHANNEL_OUT_7POINT1,
+} downmix_input_channel_mask_t;
+
// effect_handle_t interface implementation for downmix effect
const struct effect_interface_s gDownmixInterface = {
Downmix_Process,
@@ -236,17 +257,19 @@
case DOWNMIX_TYPE_FOLD:
// optimize for the common formats
- switch(pDwmModule->config.inputCfg.channels) {
- case AUDIO_CHANNEL_OUT_QUAD:
+ switch((downmix_input_channel_mask_t)pDwmModule->config.inputCfg.channels) {
+ case CHANNEL_MASK_QUAD_BACK:
+ case CHANNEL_MASK_QUAD_SIDE:
Downmix_foldFromQuad(pSrc, pDst, numFrames, accumulate);
break;
- case AUDIO_CHANNEL_OUT_SURROUND:
+ case CHANNEL_MASK_SURROUND:
Downmix_foldFromSurround(pSrc, pDst, numFrames, accumulate);
break;
- case AUDIO_CHANNEL_OUT_5POINT1:
+ case CHANNEL_MASK_5POINT1_BACK:
+ case CHANNEL_MASK_5POINT1_SIDE:
Downmix_foldFrom5Point1(pSrc, pDst, numFrames, accumulate);
break;
- case AUDIO_CHANNEL_OUT_7POINT1:
+ case CHANNEL_MASK_7POINT1_SIDE_BACK:
Downmix_foldFrom7Point1(pSrc, pDst, numFrames, accumulate);
break;
default:
diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp
index 950f5c6..c21979b 100644
--- a/media/libmedia/AudioRecord.cpp
+++ b/media/libmedia/AudioRecord.cpp
@@ -79,7 +79,7 @@
AudioRecord::AudioRecord()
: mStatus(NO_INIT), mSessionId(0),
- mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(ANDROID_TGROUP_DEFAULT)
+ mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT)
{
}
@@ -95,7 +95,7 @@
int notificationFrames,
int sessionId)
: mStatus(NO_INIT), mSessionId(0),
- mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(ANDROID_TGROUP_DEFAULT)
+ mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT)
{
mStatus = set(inputSource, sampleRate, format, channelMask,
frameCount, flags, cbf, user, notificationFrames, sessionId);
@@ -342,7 +342,7 @@
mCondition.signal();
} else {
mPreviousPriority = getpriority(PRIO_PROCESS, 0);
- mPreviousSchedulingGroup = androidGetThreadSchedulingGroup(0);
+ get_sched_policy(0, &mPreviousSchedulingGroup);
androidSetThreadPriority(0, ANDROID_PRIORITY_AUDIO);
}
} else {
@@ -374,7 +374,7 @@
t->requestExit();
} else {
setpriority(PRIO_PROCESS, 0, mPreviousPriority);
- androidSetThreadSchedulingGroup(0, mPreviousSchedulingGroup);
+ set_sched_policy(0, mPreviousSchedulingGroup);
}
}
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp
index 9d338f3..b1be8b1 100644
--- a/media/libmedia/AudioTrack.cpp
+++ b/media/libmedia/AudioTrack.cpp
@@ -84,7 +84,7 @@
: mStatus(NO_INIT),
mIsTimed(false),
mPreviousPriority(ANDROID_PRIORITY_NORMAL),
- mPreviousSchedulingGroup(ANDROID_TGROUP_DEFAULT)
+ mPreviousSchedulingGroup(SP_DEFAULT)
{
}
@@ -102,7 +102,7 @@
: mStatus(NO_INIT),
mIsTimed(false),
mPreviousPriority(ANDROID_PRIORITY_NORMAL),
- mPreviousSchedulingGroup(ANDROID_TGROUP_DEFAULT)
+ mPreviousSchedulingGroup(SP_DEFAULT)
{
mStatus = set(streamType, sampleRate, format, channelMask,
frameCount, flags, cbf, user, notificationFrames,
@@ -123,7 +123,7 @@
int sessionId)
: mStatus(NO_INIT),
mIsTimed(false),
- mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(ANDROID_TGROUP_DEFAULT)
+ mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT)
{
mStatus = set((audio_stream_type_t)streamType, sampleRate, (audio_format_t)format, channelMask,
frameCount, (audio_output_flags_t)flags, cbf, user, notificationFrames,
@@ -144,7 +144,7 @@
: mStatus(NO_INIT),
mIsTimed(false),
mPreviousPriority(ANDROID_PRIORITY_NORMAL),
- mPreviousSchedulingGroup(ANDROID_TGROUP_DEFAULT)
+ mPreviousSchedulingGroup(SP_DEFAULT)
{
mStatus = set(streamType, sampleRate, format, channelMask,
0 /*frameCount*/, flags, cbf, user, notificationFrames,
@@ -378,7 +378,7 @@
t->resume();
} else {
mPreviousPriority = getpriority(PRIO_PROCESS, 0);
- mPreviousSchedulingGroup = androidGetThreadSchedulingGroup(0);
+ get_sched_policy(0, &mPreviousSchedulingGroup);
androidSetThreadPriority(0, ANDROID_PRIORITY_AUDIO);
}
@@ -403,7 +403,7 @@
t->pause();
} else {
setpriority(PRIO_PROCESS, 0, mPreviousPriority);
- androidSetThreadSchedulingGroup(0, mPreviousSchedulingGroup);
+ set_sched_policy(0, mPreviousSchedulingGroup);
}
}
}
@@ -436,7 +436,7 @@
t->pause();
} else {
setpriority(PRIO_PROCESS, 0, mPreviousPriority);
- androidSetThreadSchedulingGroup(0, mPreviousSchedulingGroup);
+ set_sched_policy(0, mPreviousSchedulingGroup);
}
}
@@ -1402,7 +1402,10 @@
return true;
}
}
- return mReceiver.processAudioBuffer(this);
+ if (!mReceiver.processAudioBuffer(this)) {
+ pause();
+ }
+ return true;
}
status_t AudioTrack::AudioTrackThread::readyToRun()