This affects:
- IAudioFlinger::openOutput
- AudioTrack::AudioTrack
- AudioTrack::set
- apps that call these
Change-Id: I26fb281bac6cb87593d17697bc9cb37a835af205
* commit '3557654c95bae7754dcd1951ec10742b895817e2':
stagefright aacenc: Avoid overflows when calculating normFactor
stagefright aacenc: Avoid a division by zero
* commit '972efafb90b543eea51aa5b23104d469a1bcc1fb':
stagefright aacenc: Avoid overflows when calculating normFactor
stagefright aacenc: Avoid a division by zero
* commit '6db6ea02b999e86dfbddd08780eeab0034389f93':
stagefright aacenc: Avoid overflows when calculating normFactor
stagefright aacenc: Avoid a division by zero
The latency was not taken into account when updating mPositionTimeRealUs
inside of the fillBuffer hook, contrary to what the getRealTimeUsLocked()
method does. This caused the realTimeOffset calculated in the
getMediaTimeUs to always be negative, causing the reported position to
always be equal to mPositionTimeMediaUs, which is updated infrequently.
With this change, the reported position is updated more frequently, allowing
apps to perform smoother UI updates.
Change-Id: I61e05c1a8b53d46b9091afb0d18a6289d13a7a5e
Releases prior ICS (included) would persist the stream volumes in the
database when muted by silent mode. If the DB was backed up while in
silent mode, stream volume was backed up at 0.
When restored on a new device, the volume was restored at 0 which was
a problem for SYSTEM stream because it would never be corrected as
this stream volume is fixed.
Added a check on valid volume values when reading settings from the DB
and correct the DB if this happens.
Change-Id: Ie3b98eb74e10413c22aab7568b83ac3ace5bfc07
First pass at implementing an audio effect whose role is to
downmix multichannel PCM buffers to stereo.
The effect is not handling volume changes.
The effect code here handles quad, 4.0, 5.1 and 7.1 input configurations,
to optimize the most commom configurations, and does not yet handle
generic multichanel configurations.
Change-Id: I74d04bd961348f3f0e4ae7714b70e620808a0829
The 3rd parameter (param2) to AudioFlingerClient::ioConfigChanged
is used as an input. So changed it from void * to const void *.
It is then cast to const OutputDescriptor *
or const audio_stream_type_t * depending on the event.
Change-Id: Ieec0d284f139b74b3389b5ef69c7935a8e5650ee
MediaActionSound is a helper class for applications that use the
camera, or include camera-like behavior such as taking
screenshots. This class helps applications match the sound-playing
behavior of the Camera.takePicture, MediaRecorder.start, and
MediaRecorder.stop methods.
This is useful for applications that don't use the above methods, but
still logically capture images or video, such as the panorama capture
feature and the video effects in the platform camera application.
Bug: 5029099
Change-Id: I829f6e2941f167f91f9cb506215b7232cb054958
The AudioSink latency is currently cached when the associated AudioTrack
is created. However, the AudioTrack latency can change if the AudioTrack is moved
from one output stream to another.
The AudioPlayer must also periodically update its view of the latency
as it is needed to compensate the real audio time used for A/V sync.
This fixes an A/V sync problem seen when switching A2DP on and off while
playing a video.
Change-Id: I28b24049ca114e1af3e24791dcc900f463536ba4
Current AudioTrack implementation enforces that the requested audio
buffer size is at least corresponding the audio latency.
This requirement is too strong and leads to problems with current
stagefright and AudioSink implementations when playing over output
streams with long latency.
Ultimately, the AudioSink design should be changed to specify a minimum
buffer size in time or frames units but not in buffer count units.
Change-Id: I8ba603956f92ac49143a8249572665aa548f2f0f
Add support for specifying a channel mask when opening an AudioSink.
This parameter does not replace the channel count parameter in order
to not have to duplicate the logic to derive a mask from the
channel count everywhere an AudioSink is used without a known mask.
A mask of 0 (CHANNEL_MASK_USE_CHANNEL_ORDER) means a mask will
be automatically derived from the number of channels.
Update existing AudioSink implementations to use the channel mask,
and users of AudioSink to specify the mask if available, and
CHANNEL_MASK_USE_CHANNEL_ORDER otherwise.
Change-Id: Ifa9bd259874816dbc25ead2b03ea52e873cff474