Merge "Make Property objects in View final"
diff --git a/docs/html/guide/developing/device.jd b/docs/html/guide/developing/device.jd
index deb7a2d..76b2516 100644
--- a/docs/html/guide/developing/device.jd
+++ b/docs/html/guide/developing/device.jd
@@ -164,6 +164,10 @@
<td><code>18D1</code></td>
</tr>
<tr>
+ <td>Hisense</td>
+ <td><code>109B</code></td>
+ </tr>
+ <tr>
<td>HTC</td>
<td><code>0BB4</code></td>
</tr>
diff --git a/docs/html/sdk/oem-usb.jd b/docs/html/sdk/oem-usb.jd
index 88bf008..ddc7def 100644
--- a/docs/html/sdk/oem-usb.jd
+++ b/docs/html/sdk/oem-usb.jd
@@ -73,12 +73,22 @@
Garmin-Asus
</td> <td><a
href="https://www.garminasus.com/en_US/support/pcsync/">https://www.garminasus.com/en_US/support/pcsync/</a></td>
-</tr><tr><td>HTC</td> <td><a href="http://www.htc.com">http://www.htc.com </a> <br>Click on the
+</tr>
+
+<tr><td>Hisense</td>
+ <td><a
+href="http://app.hismarttv.com/dss/resourcecontent.do?method=viewResourceDetail&resourceId=16&type=5">http://app.hismarttv.com/dss/resourcecontent.do?method=viewResourceDetail&resourceId=16&type=5 </a></td>
+</tr>
+
+<tr><td>HTC</td> <td><a href="http://www.htc.com">http://www.htc.com </a> <br>Click on the
support tab to select your products/device. Different regions will have different links.</td>
</tr>
+
<tr><td>Huawei</td> <td><a
href="http://www.huaweidevice.com/worldwide/downloadCenter.do?method=list&flay=software&directoryId=20&treeId=0">http://www.huaweidevice.com/worldwide/downloadCenter.do?method=list&flay=software&directoryId=20&treeId=0</a></td>
-</tr><tr><td>KT Tech</td> <td><a
+</tr>
+
+<tr><td>KT Tech</td> <td><a
href="http://www.kttech.co.kr/cscenter/download05.asp">http://www.kttech.co.kr/cscenter/download05.asp</a> for EV-S100(Take)</td>
</tr>
<tr>
diff --git a/services/audioflinger/AudioMixer.cpp b/services/audioflinger/AudioMixer.cpp
index 1ebcd26..59751ac 100644
--- a/services/audioflinger/AudioMixer.cpp
+++ b/services/audioflinger/AudioMixer.cpp
@@ -48,6 +48,8 @@
AudioMixer::AudioMixer(size_t frameCount, uint32_t sampleRate)
: mActiveTrack(0), mTrackNames(0), mSampleRate(sampleRate)
{
+ // AudioMixer is not yet capable of multi-channel beyond stereo
+ assert(2 == MAX_NUM_CHANNELS);
mState.enabledTracks= 0;
mState.needsChanged = 0;
mState.frameCount = frameCount;
@@ -124,24 +126,23 @@
void AudioMixer::deleteTrackName(int name)
{
name -= TRACK0;
- if (uint32_t(name) < MAX_NUM_TRACKS) {
- ALOGV("deleteTrackName(%d)", name);
- track_t& track(mState.tracks[ name ]);
- if (track.enabled != 0) {
- track.enabled = 0;
- invalidateState(1<<name);
- }
- if (track.resampler) {
- // delete the resampler
- delete track.resampler;
- track.resampler = NULL;
- track.sampleRate = mSampleRate;
- invalidateState(1<<name);
- }
- track.volumeInc[0] = 0;
- track.volumeInc[1] = 0;
- mTrackNames &= ~(1<<name);
+ assert(uint32_t(name) < MAX_NUM_TRACKS);
+ ALOGV("deleteTrackName(%d)", name);
+ track_t& track(mState.tracks[ name ]);
+ if (track.enabled != 0) {
+ track.enabled = 0;
+ invalidateState(1<<name);
}
+ if (track.resampler) {
+ // delete the resampler
+ delete track.resampler;
+ track.resampler = NULL;
+ track.sampleRate = mSampleRate;
+ invalidateState(1<<name);
+ }
+ track.volumeInc[0] = 0;
+ track.volumeInc[1] = 0;
+ mTrackNames &= ~(1<<name);
}
void AudioMixer::enable()
@@ -170,68 +171,73 @@
mActiveTrack = track;
}
-status_t AudioMixer::setParameter(int target, int name, void *value)
+void AudioMixer::setParameter(int target, int name, void *value)
{
int valueInt = (int)value;
int32_t *valueBuf = (int32_t *)value;
switch (target) {
+
case TRACK:
- if (name == CHANNEL_MASK) {
+ switch (name) {
+ case CHANNEL_MASK: {
uint32_t mask = (uint32_t)value;
if (mState.tracks[ mActiveTrack ].channelMask != mask) {
uint8_t channelCount = popcount(mask);
- if ((channelCount <= MAX_NUM_CHANNELS) && (channelCount)) {
- mState.tracks[ mActiveTrack ].channelMask = mask;
- mState.tracks[ mActiveTrack ].channelCount = channelCount;
- ALOGV("setParameter(TRACK, CHANNEL_MASK, %x)", mask);
- invalidateState(1<<mActiveTrack);
- return NO_ERROR;
- }
- } else {
- return NO_ERROR;
+ assert((channelCount <= MAX_NUM_CHANNELS) && (channelCount));
+ mState.tracks[ mActiveTrack ].channelMask = mask;
+ mState.tracks[ mActiveTrack ].channelCount = channelCount;
+ ALOGV("setParameter(TRACK, CHANNEL_MASK, %x)", mask);
+ invalidateState(1<<mActiveTrack);
}
- }
- if (name == MAIN_BUFFER) {
+ } break;
+ case MAIN_BUFFER:
if (mState.tracks[ mActiveTrack ].mainBuffer != valueBuf) {
mState.tracks[ mActiveTrack ].mainBuffer = valueBuf;
ALOGV("setParameter(TRACK, MAIN_BUFFER, %p)", valueBuf);
invalidateState(1<<mActiveTrack);
}
- return NO_ERROR;
- }
- if (name == AUX_BUFFER) {
+ break;
+ case AUX_BUFFER:
if (mState.tracks[ mActiveTrack ].auxBuffer != valueBuf) {
mState.tracks[ mActiveTrack ].auxBuffer = valueBuf;
ALOGV("setParameter(TRACK, AUX_BUFFER, %p)", valueBuf);
invalidateState(1<<mActiveTrack);
}
- return NO_ERROR;
+ break;
+ default:
+ // bad name
+ assert(false);
}
-
break;
+
case RESAMPLE:
- if (name == SAMPLE_RATE) {
- if (valueInt > 0) {
- track_t& track = mState.tracks[ mActiveTrack ];
- if (track.setResampler(uint32_t(valueInt), mSampleRate)) {
- ALOGV("setParameter(RESAMPLE, SAMPLE_RATE, %u)",
- uint32_t(valueInt));
- invalidateState(1<<mActiveTrack);
- }
- return NO_ERROR;
+ switch (name) {
+ case SAMPLE_RATE: {
+ assert(valueInt > 0);
+ track_t& track = mState.tracks[ mActiveTrack ];
+ if (track.setResampler(uint32_t(valueInt), mSampleRate)) {
+ ALOGV("setParameter(RESAMPLE, SAMPLE_RATE, %u)",
+ uint32_t(valueInt));
+ invalidateState(1<<mActiveTrack);
}
- }
- if (name == RESET) {
+ } break;
+ case RESET: {
track_t& track = mState.tracks[ mActiveTrack ];
track.resetResampler();
invalidateState(1<<mActiveTrack);
- return NO_ERROR;
+ } break;
+ default:
+ // bad name
+ assert(false);
}
break;
+
case RAMP_VOLUME:
case VOLUME:
- if ((uint32_t(name-VOLUME0) < MAX_NUM_CHANNELS)) {
+ switch (name) {
+ case VOLUME0:
+ case VOLUME1: {
track_t& track = mState.tracks[ mActiveTrack ];
if (track.volume[name-VOLUME0] != valueInt) {
ALOGV("setParameter(VOLUME, VOLUME0/1: %04x)", valueInt);
@@ -250,8 +256,8 @@
}
invalidateState(1<<mActiveTrack);
}
- return NO_ERROR;
- } else if (name == AUXLEVEL) {
+ } break;
+ case AUXLEVEL: {
track_t& track = mState.tracks[ mActiveTrack ];
if (track.auxLevel != valueInt) {
ALOGV("setParameter(VOLUME, AUXLEVEL: %04x)", valueInt);
@@ -270,11 +276,17 @@
}
invalidateState(1<<mActiveTrack);
}
- return NO_ERROR;
+ } break;
+ default:
+ // bad name
+ assert(false);
}
break;
+
+ default:
+ // bad target
+ assert(false);
}
- return BAD_VALUE;
}
bool AudioMixer::track_t::setResampler(uint32_t value, uint32_t devSampleRate)
diff --git a/services/audioflinger/AudioMixer.h b/services/audioflinger/AudioMixer.h
index f380b35..288c70e 100644
--- a/services/audioflinger/AudioMixer.h
+++ b/services/audioflinger/AudioMixer.h
@@ -81,7 +81,7 @@
void disable();
void setActiveTrack(int track);
- status_t setParameter(int target, int name, void *value);
+ void setParameter(int target, int name, void *value);
void setBufferProvider(AudioBufferProvider* bufferProvider);
void process();