411 Commits

Author SHA1 Message Date
Glenn Kasten
1b33107f37 Merge "Don't double destruct audio_track_cblk_t" 2012-02-08 08:40:15 -08:00
Glenn Kasten
cd330e7f38 Merge "AudioFlinger methods const and inline" 2012-02-08 08:39:39 -08:00
Glenn Kasten
cbe8b72247 Merge "Use virtual destructors" 2012-02-08 08:33:41 -08:00
Glenn Kasten
2277665266 Merge "Improve performance for sp<> on stack" 2012-02-08 07:45:15 -08:00
Glenn Kasten
01a802692f Merge "Use 0 not NULL for sp<> and wp<>" 2012-02-08 07:41:44 -08:00
Glenn Kasten
35624c1797 Merge "Use bool instead of int" 2012-02-08 07:40:23 -08:00
Glenn Kasten
16d64ad699 Merge "Declare more IAudioFlinger methods const" 2012-02-08 07:39:27 -08:00
Glenn Kasten
d9d68dcb62 Don't double destruct audio_track_cblk_t
Fortunately audio_track_cblk_t doesn't have a destructor, but for clarity
remove the double destruction.

Also add warning not to add any virtuals to audio_track_cblk_t.

Change-Id: I70ebe1a70460c7002145b2cdf10f9f137396e6f3
2012-02-03 16:16:46 -08:00
Glenn Kasten
d153b1fc3a Use pid_t not int
Change-Id: Iad1c2fd4152e94080ad8c65c13ddf4519fc2ed27
2012-02-03 16:14:15 -08:00
Glenn Kasten
4fc616192a Remove dead code
mFormat is unused in resampler
mClientTid is unused
local variable pid is unused in dump

Change-Id: Ib156e38029366620bfeff2a13e73471867155a5b
2012-02-03 16:09:30 -08:00
Glenn Kasten
3f6d83a68a Declare more IAudioFlinger methods const
This is just documentation, as C++ method const-ness doesn't mean anything
for a binder API.  Instead, here const means "no side effects".

Change-Id: Iaa9cd2fe477db10ae9a40cac4f79f0faa9b4e5e6
2012-02-03 15:40:56 -08:00
Glenn Kasten
450b9985b8 Use bool instead of int
The .h is not modified to avoid increasing data size.

Change-Id: Ide4a821a5b16424ffa03471dfff98dc3e9b5f751
2012-02-03 15:36:47 -08:00
Glenn Kasten
eabd94aa7d AudioFlinger methods const and inline
This saves 1063 bytes and probably improves performance.

Change-Id: I11cf0dfd925fbaec75e3d1b806852a538eae5518
2012-02-03 15:25:24 -08:00
Glenn Kasten
b16313812a Use virtual destructors
It turns out to be just a comment, as all except AudioMixer are RefBase.

There are only a few performance-sensitive cases where it's worth thinking
about whether you need a virtual destructor, and the headache usually
outweighs the benefit.

Change-Id: I716292f9556ec17c29ce8c76ac8ae602cb496533
2012-02-03 14:42:43 -08:00
Glenn Kasten
706b618c12 Use 0 not NULL for sp<> and wp<>
Change-Id: Id1f0c89acefaceed6cb9ca7c165fce895e46d85b
2012-02-03 11:20:35 -08:00
Glenn Kasten
f55bc56490 Merge "Use audio_in_acoustics_t consistently" 2012-02-03 08:31:01 -08:00
Glenn Kasten
191c849283 Merge "Use ToneGenerator::tone_type consistently" 2012-02-03 08:00:52 -08:00
Glenn Kasten
3694ec1f19 Use NULL not 0 for raw pointers
Use if (p != NULL) instead of if (ptr)

Change-Id: Iaec3413a59ccbf233c98fcd918cc7d70ac5da9fa
2012-02-03 07:57:01 -08:00
Glenn Kasten
7bd4f6f4d0 Merge "For performance, return large objects by reference" 2012-02-03 07:46:42 -08:00
Glenn Kasten
22152a6807 Merge "No need to check a wp<> for 0 before promote()" 2012-02-03 07:45:13 -08:00
Glenn Kasten
dc3ac85009 Constructor initialization and const fields
In constructors, initialize member fields in the initialization list
rather than constructor body where possible.  This allows more fields
to be const, provided they are never modified.

Also initialize POD fields in constructor, unless it's obvious they
don't need to be initialized.  In that case, put a comment instead.

Remove explicit clear() in destructors on fields that are now const.

Give AudioSessionRef a default constructor, so it's immutable fields can
be marked const.

Add comment about ~TrackBase() trick.

Initialize fields in declaration order to make it easier to confirm that
all fields are set.

Move initialization of mHardwareStatus from onFirstRef() to constructor.

Use NULL not 0 to initialize raw pointers in initialization list.

Rename field mClient to mAudioFlingerClient, and getter from client()
to audioFlingerClient().

Change-Id: Ib36cf6ed32f3cd19003f40a5d84046eb4c122052
2012-02-03 07:37:14 -08:00
Glenn Kasten
a12b6d1d44 Merge "Cleanup thread types" 2012-02-03 07:26:28 -08:00
Glenn Kasten
08d5eb9885 Merge "Make AudioTrack control block volume field private" 2012-02-03 07:18:06 -08:00
Glenn Kasten
b2305815f0 Merge "Fix const sp<>& in parameter list and return value" 2012-02-02 13:31:23 -08:00
Glenn Kasten
9704026ccb For performance, return large objects by reference
Change-Id: Ibf737018ef1d3c7d717584615dcb2d4ecdb50c99
2012-01-30 13:01:17 -08:00
Glenn Kasten
c64a6f01cb Improve performance for sp<> on stack
Combine default constructor for sp<> immediately followed by assignment,
as the reference-counting is relatively slow.  Also return sp<> directly
rather than via local variable, for the same reason.

Change-Id: If55931f1e407994f6591ddde41b53db72fb4fc40
2012-01-30 13:00:02 -08:00
Glenn Kasten
1f812f720f Fix const sp<>& in parameter list and return value
EffectModule::addHandle and Client::heap() were declared incorrectly.

As a parameter, an sp<> should be & for efficiency, and for input
parameters it should also be const to protect the caller's value.

But as a return value, an sp<> should have neither const or &.  The "e"
in "return e;" might be located on the stack, and if there is "&" then
the caller would see the address of a variable which no longer exists.
Also, an & would make it hard to do "return 0;".
A "const" without & is meaningless in the return type.
(In this particular case, the "e" is a member field, so it was safe.)

Change-Id: I3df5f294214eb15a9d4d596c6d5ef29de97b5c27
2012-01-30 10:31:09 -08:00
Glenn Kasten
2589cf9c6a Unconditional delete
Don't check that pointer is non-NULL before delete.

Don't leave deleted member fields non-NULL, except in a destructor,
since it could be misleading in a dump or debugger. (mRsmpOutBuffer)

Change-Id: Ic0492a6b752f74a67f4c96dfb89ca2de4e69eecf
2012-01-27 18:08:45 -08:00
Glenn Kasten
e478742ca7 No need to check a wp<> for 0 before promote()
Also remove unnecessary wp<> local variable.

Change-Id: I620e67b5d559d28616f8e00609a525cfe19c5ddc
2012-01-27 16:30:45 -08:00
Glenn Kasten
23f7ad39ef Use ToneGenerator::tone_type consistently
Also remove defaults in startToneCommand(), they're not needed and the
default for tone type was nonsense.

Change-Id: I70fa8cee4f3dbb8c66ceb3719c8d3d2f447f05b9
2012-01-27 16:01:44 -08:00
Glenn Kasten
882c0a20c5 Use audio_in_acoustics_t consistently
Change-Id: I0a9dd668fb2e57b1c3ece3190588194974b99062
2012-01-27 13:31:54 -08:00
Glenn Kasten
c14639a9a1 Merge "Use audio_source_t consistently" 2012-01-27 09:06:00 -08:00
Glenn Kasten
c1f63ddba7 Merge "AudioStreamIn and AudioStreamOut" 2012-01-27 07:22:30 -08:00
Glenn Kasten
6562dadf3c Merge "Declare methods in binder opcode order" 2012-01-27 07:19:53 -08:00
Glenn Kasten
591993f162 Merge "Use enum effect_state consistently" 2012-01-27 07:19:10 -08:00
Glenn Kasten
86012869b8 Merge "Use enum track_state consistently" 2012-01-27 07:18:23 -08:00
Glenn Kasten
0f0fbd9441 Use audio_source_t consistently
Was a mix of audio_source_t, uint8_t, and int.

Related fixes:
 - fix comments in MediaRecorder.java
 - AudioPolicyService server side was not checking source parameter at
   all, so if the client wrapper was bypassed, invalid values could be
   passed into audio HAL
 - JNI android_media_AudioRecord_setup was checking source for positive
   values, but not negative values. This test is redundant, since already
   checked at Java and now checked by AudioPolicyService also, but might
   as well make it correct.

Change-Id: Ie5e25d646dcd59a86d7985aa46cfcb4a1ba64a4a
2012-01-26 16:50:19 -08:00
Glenn Kasten
5b0135e41b AudioStreamIn and AudioStreamOut
These are immutable, so make the fields const.
getOutput() and getInput() methods are now const.

Change-Id: I128246ebd56ea50b3e542be43f2aa1bcb55f1373
2012-01-26 15:58:07 -08:00
Glenn Kasten
efd511a925 Cleanup thread types
Use type_t instead of int for thread types.
Initialize ThreadBase::mType in constructor and make it const.

Change-Id: I43d141388b9639e4783c30b97dbda5688bf7555f
2012-01-26 15:45:12 -08:00
Glenn Kasten
0ae4d97689 Declare methods in binder opcode order
This makes it easier to compare interface and implementation.

Change-Id: Ie060e43dec348902abcf40f5a610cec639d6d0d3
2012-01-26 14:34:30 -08:00
Glenn Kasten
789fef1f83 Use enum mixer_state consistently
Change-Id: I5b71ed20f939dfc4b98143334b7aa064d282f584
2012-01-26 14:23:47 -08:00
Glenn Kasten
452d6d6efe Use enum effect_state consistently
Also fix indentation

Change-Id: I393ef9e37ffceed5ad4a78df439726ae1fe139df
2012-01-26 14:20:34 -08:00
Glenn Kasten
563562032d Use enum track_state consistently
Change-Id: Ie5ebb7befa092e1de1e4df9c6e2d51e6bcfd176a
2012-01-26 14:13:43 -08:00
Eric Laurent
172870f37d am 535b0264: am 7eeaf3f0: Merge "AudioFlinger: refine mixer sleep time logic" into ics-mr1
* commit '535b0264a4cfa790e549bd9cd09980788f1375f4':
  AudioFlinger: refine mixer sleep time logic
2012-01-25 08:57:23 -08:00
Eric Laurent
535b0264a4 am 7eeaf3f0: Merge "AudioFlinger: refine mixer sleep time logic" into ics-mr1
* commit '7eeaf3f07aa6fb10639d9f96c1367eb98c3e8839':
  AudioFlinger: refine mixer sleep time logic
2012-01-24 11:51:50 -08:00
Eric Laurent
dd347d515d am 41773d46: Merge "DO NOT MERGE Revert "Revert "AudioFlinger: mix track only when really ready (2)""" into ics-mr1
* commit '41773d46556aa47d4322ff89fdaf7d1345c2d1f2':
  DO NOT MERGE Revert "Revert "AudioFlinger: mix track only when really ready (2)""
2012-01-24 11:51:47 -08:00
Eric Laurent
0609231f4f AudioFlinger: refine mixer sleep time logic
When an AudioTrack is in underrun state, the AudioFlinger mixer will
sleep for a short period of time to give the app a chance to fill the
AudioTrack buffer. If the AudioTrack is still not ready during next mixing round,
the mixer will proceed with other tracks.

If an application keeps a steady underrun condition, the AudioFlinger mixer will
alternate between ready and not ready states. In the longer term this will cause the
audio HAL to underrun.
There is a mechanism to reduce the sleep period if the mixer is not ready several times in a
row but this mechanism is defeated by the alternating ready/not ready conditions.

The fix consists in only increasing sleep time if the mixer is ready for at least two
consecutive times.

Issue 5904527.

Change-Id: Id0139bca9be8c4e425ec6d428515c4d8f718e8c9
2012-01-23 18:56:59 -08:00
Eric Laurent
0b08965558 DO NOT MERGE Revert "Revert "AudioFlinger: mix track only when really ready (2)""
This reverts commit b918035d34422a2041b6ec8c09c566bb93345b40.

Change-Id: I093bcfa56ad54a080b930208b6b79169d33581fb
2012-01-23 18:37:07 -08:00
Justin Ho
feb1d988c8 am fee5a860: Merge "DO NOT MERGE Revert "AudioFlinger: mix track only when really ready (2)"" into ics-mr1
* commit 'fee5a860a8355cda071ff23644e943414ba7f65d':
  DO NOT MERGE Revert "AudioFlinger: mix track only when really ready (2)"
2012-01-23 15:13:19 -08:00
Justin Ho
b918035d34 DO NOT MERGE Revert "AudioFlinger: mix track only when really ready (2)"
This reverts commit 71c4496a9757438afd30b4404824f296f6158a49.

Change-Id: Iff10c49ea728bb10023ddeb50a3b708db770fff2
2012-01-23 15:02:41 -08:00