66020 Commits

Author SHA1 Message Date
Joe Fernandez
660b2d97ff Merge "docs: NDK r7c Release Notes (RC2)" into ics-mr1 2012-04-02 17:19:25 -07:00
Joe Fernandez
2c0153539a Merge "docs: SDK r18 + 4.0.4 system image Release Notes (RC1)" into ics-mr1 2012-04-02 17:19:06 -07:00
Joe Fernandez
1cbd69fbab Merge "docs: Fix for jarsigner and JDK7; specify signature and digest algorithim" into ics-mr1 2012-04-02 17:17:45 -07:00
Joe Fernandez
eae02e6fcf docs: SDK r18 + 4.0.4 system image Release Notes (RC1)
Change-Id: Iee4a96acf1b86e02e1836801e63b01a357416777
2012-04-02 16:51:10 -07:00
Joe Fernandez
c7ee0f0f0b docs: NDK r7c Release Notes (RC2)
Change-Id: I687e21bd2d85abbe1bca58396830a9cc23007444
2012-04-02 16:07:56 -07:00
Joe Fernandez
82870452aa docs: Fix for jarsigner and JDK7; specify signature and digest algorithim
Change-Id: Ia44bb209a9a3ace83dfe10ca4669c15ddd7f4caf
2012-04-02 15:51:58 -07:00
Justin Koh
3caba51725 Broadcast mastervolume regardless of change.
Broadcast mastervolume intents regardless of whether the system changed the
volume. This fixes the bug where the volume LEDs stop getting updates.

TESTED = runs on Tungsten.

Change-Id: Id363da3f825934fd7785ed3d3e436f74e657b7e6
2012-04-02 15:46:56 -07:00
Scott Main
5789537c5d am dfa3b8fa: docs: dashboard update for 4/2
* commit 'dfa3b8fa4a3cb48877be364749a37acc9f08721b':
  docs: dashboard update for 4/2
2012-04-02 11:42:39 -07:00
Scott Main
dfa3b8fa4a docs: dashboard update for 4/2
Change-Id: Id5fd6c7eaa80bba1ebea58fb7df762ea2635130d
2012-04-02 11:14:23 -07:00
Scott Main
be51945e98 am 6a273f0d: Merge "docs: de-new a bunch of docs" into ics-mr1
* commit '6a273f0d045951552263b1b66c34d29929c5a282':
  docs: de-new a bunch of docs
2012-04-02 09:23:24 -07:00
Scott Main
6a273f0d04 Merge "docs: de-new a bunch of docs" into ics-mr1 2012-04-02 09:21:45 -07:00
Tony Chan
f4fde1035b am 4ddfaeb5: Merge "sdk doc change: Added KeyChain API Demo" into ics-mr1
* commit '4ddfaeb5fe29d5dd3dbfd525e97723a972ea5a65':
  sdk doc change: Added KeyChain API Demo
2012-03-31 02:15:57 -07:00
Tony Chan
4ddfaeb5fe Merge "sdk doc change: Added KeyChain API Demo" into ics-mr1 2012-03-31 02:13:45 -07:00
Scott Main
3e06f2c0b1 docs: de-new a bunch of docs
Change-Id: I5ff761b6fe4958f8ef67fb2fa7af81c3e81cbda6
2012-03-30 10:33:20 -07:00
Tony Chan
c95a74d301 sdk doc change: Added KeyChain API Demo
Change-Id: I8ea879bf30f933c745e33dafa6591fce77251eb6
2012-03-30 11:13:43 +08:00
Justin Koh
bc52ca2814 Stop ANR dialogs from appearing when ActivityManager dialogs should not be shown
Stop ANR dialogs from appearing on devices where the ActivityManager dialogs
should not be shown. Instead, kill the process. This is preferable because the
user can't actually do anything on the device.

TESTED = runs on device with that config, simulated ANR using test app.

Change-Id: I6267000afd12ef929f0c625220184c6ab0139552
2012-03-29 15:37:11 -07:00
Joe Malin
c7e56eff1b am 6a04325d: DOC CHANGE: Spell Checker article
* commit '6a04325d5d54e1e51b47c86b7386c355e4eb2191':
  DOC CHANGE: Spell Checker article
2012-03-29 13:29:19 -07:00
Scott Main
141d85b46d am bd26ba48: Merge "docs: update SDK and AVD Manager strings; update android tool doc and update another AVD manager screenshot and finally change "component" to "package" for SDK manager docs" into ics-mr1
* commit 'bd26ba4871078aa85024320040de35995e90924b':
  docs: update SDK and AVD Manager strings; update android tool doc and update another AVD manager screenshot and finally change "component" to "package" for SDK manager docs
2012-03-29 12:09:50 -07:00
Scott Main
fd7f7025ee am af9a26b2: Merge "docs: replace the "Contribute" message with "Design"" into ics-mr1
* commit 'af9a26b21262500c5f864bcd82bc14ee805fdaac':
  docs: replace the "Contribute" message with "Design"
2012-03-29 12:09:47 -07:00
Scott Main
d6a1001027 am 7fa4a28e: docs: add Coolpad to oem driver list
* commit '7fa4a28e1e37cb66d28dc16b7128da1fba01da0e':
  docs: add Coolpad to oem driver list
2012-03-29 12:09:45 -07:00
Joe Malin
9c815e669e am 093ed383: Merge "DOC CHANGE: IME subtype article" into ics-mr1
* commit '093ed3838c3f2847be1893ea49c6b15b90e0afc3':
  DOC CHANGE: IME subtype article
2012-03-29 12:09:43 -07:00
Joe Malin
6a04325d5d DOC CHANGE: Spell Checker article
Change-Id: I839fc46cc58d68537bbdc0e3433c6329cdab2b04
2012-03-29 11:12:21 -07:00
Reto Meier
8842cddd7f am 20f394df: Docs: Added efficient downloads Android U class
* commit '20f394df4db02c492d7920f4f366b777451c2067':
  Docs: Added efficient downloads Android U class
2012-03-29 09:16:33 -07:00
RoboErik
830ad08fe4 Merge "b/6232528 Reduce volume persist delay to 500ms" into ics-aah 2012-03-28 15:04:32 -07:00
Joe Fernandez
e1302edd40 docs: Accessibility Dev Guide (subsumes Accessibility Best Practices)
Change-Id: Id7e3f647042d2afd390abe851be1c3b561af33ca
2012-03-28 00:57:06 -07:00
RoboErik
45edba1b8b b/6232528 Reduce volume persist delay to 500ms
Change-Id: I45c32da0a1089ce8bc865e12b51c069a6db28fd4
2012-03-27 17:54:36 -07:00
John Grossman
f9f27197eb TimedAudio: Fix a cause of audio popping.
Fix an issue with buffer lifecycle management which could cause audio
pops on timed outputs.  There were two issues at work here.

1) During trim operations for the queued timed audio data, buffers
   were being trimmed based on their starting PTS instead of when the
   chunk of audio data actually ended.  This means that if you have a
   very large chunk of audio data (larger than the mixer lead time),
   then a buffer at the head of the queue could be eligible to be
   trimmed before its data had been completely mixed into the output
   stream, even though the output stream was fully buffered and in no
   danger of underflow.
2) The implementation of getNextBuffer and releaseBuffer for timed
   audio tracks was not keeping anything like a reference to the data
   that it handed out to the mixer.  The original architecture here
   seemed to be expecting a ring buffer design, but timed audio tracks
   use a packet based design.  Pieces of packets are handed out to the
   mixer which then frequently will hold onto that chunk of data
   across two mix operations, using the first part of the chunk to
   finish a mix buffer and then using the end of the chunk for the
   start of the next mix buffer.  If the buffer that the mixer is
   holding a piece of got trimmed before the start of the next mix
   operation, it would return to its heap and could be filled with who
   knows what by the time it actually got mixed.  On debug builds,
   they seem to get zero'ed out as they go back to the heap causing
   obvious pops in presentation.

This change addresses both issues.  Trim operations are now based on
ending presentation time for a chunk of audio, not the start.  Also,
when the head of the queue is in flight to the mixer, it can no longer
be trimmed immediately, merely flagged for trim by the mixer when the
mixer finally does call releaseBuffer.

Signed-off-by: John Grossman <johngro@google.com>
Change-Id: Ia1ba08cb9dea35a698723ab2d9bcbf804f1682fe
2012-03-27 10:58:11 -07:00
Jason Simmons
be587b52c7 Merge "Do not call stop() on the MediaSource if it hasn't been started." into ics-aah 2012-03-27 09:50:08 -07:00
Jason Simmons
1f763f7c72 Do not call stop() on the MediaSource if it hasn't been started.
The MediaSource's destructor will take care of stopping the source.

Bug: 6232094
Change-Id: Iace6c11ded666e7ac7066aa9d493d1b644e4b92d
2012-03-26 19:12:37 -07:00
Scott Main
bd26ba4871 Merge "docs: update SDK and AVD Manager strings; update android tool doc and update another AVD manager screenshot and finally change "component" to "package" for SDK manager docs" into ics-mr1 2012-03-26 16:43:03 -07:00
Scott Main
a7b1b8c78c docs: update SDK and AVD Manager strings; update android tool doc
and update another AVD manager screenshot
and finally change "component" to "package" for SDK manager docs

Change-Id: Iae7de7c0264d0cdff4fba0920e50e4637bcf90e0
2012-03-26 16:07:49 -07:00
Scott Main
af9a26b212 Merge "docs: replace the "Contribute" message with "Design"" into ics-mr1 2012-03-26 14:42:22 -07:00
Scott Main
f3ebd8ff3f docs: replace the "Contribute" message with "Design"
Change-Id: I38c5990b3b5ee6538197c59671cec7adeadea913
2012-03-26 14:25:01 -07:00
Scott Main
7fa4a28e1e docs: add Coolpad to oem driver list
Change-Id: I0cb6267a35d9a691c6cacea471a9fca9d5dc61b8
2012-03-26 12:12:24 -07:00
Joe Malin
093ed3838c Merge "DOC CHANGE: IME subtype article" into ics-mr1 2012-03-25 13:02:53 -07:00
Reto Meier
20f394df4d Docs: Added efficient downloads Android U class
Change-Id: I2a9484c5a224a7e0688fbd9afb16246db8f3ddf9
2012-03-23 11:32:02 -07:00
John Grossman
0f6cb45002 LibAAH_RTP: Release TX Group on error.
Immedately release any TX group a player is holding upon entering the
error state.  Once in the error state, the only way out for a media
player it to be completely reset (destroying the player at the
tx_player level of things).  There is really no point in holding on to
a tx group once the player is in the error state.

Change-Id: If5442a32e012b5596789078b0790ed73fa842629
2012-03-23 11:24:32 -07:00
Joe Malin
528aff54f5 DOC CHANGE: IME subtype article
Change-Id: Ie7addcc6155c275b247e15787fe226b43b0dee1a
2012-03-23 11:04:34 -07:00
John Grossman
2b16bf6bdb LibAAH_RTP: Fix handling of PCM format changes.
When an audio decoder signals a format change, we were destroying our
renderer so that a new one could be created with the new format, but
we were not updating our internal format state variables with the new
format information.

This fixes issues with AAC audio with SBR extensions; in particular
content coming from Pandora.  Pandora audio is currently being
delivered as AAC-LC decoding to 22.05 KHz, but with an SBR layer which
gives 44.1 KHz.  Whether or not you are going to get 22.05 or 44.1
depends on if your decoder supports SBR ("High Efficiency" profile).
Stagefright does not parse the extension sample rate present in the
ESDS; instead it reports the sample rate of the base stream (22050 in
this case).  Its only when the decoder decides it can handle SBR that
you get a chance to discover that the content is actually 44.1,
information it delivers via a format change status code during read.

Signed-off-by: John Grossman <johngro@google.com>
Change-Id: I78fb89b4356004d7834629ccc82ca99c4cc7954a
2012-03-23 11:00:38 -07:00
Jason Noguchi
41d88d5f58 Adding camera zoom test to mediaframework stress suite.
Change-Id: I3ee72156f42cf189ff1d0bd469f83b938a6b87ff
2012-03-22 17:52:03 -07:00
Christopher Tate
96fecb7f6b Merge "Make immersive mode public & imply update locking" into ics-aah 2012-03-22 13:39:21 -07:00
John Grossman
6becc5a811 LibAAH_RTP: Fix an issue which crept in during code review.
Fix a mistake which came in as part of a merge conflict resolution
during code review of the recent unicast mode refactor of LibAAH_RTP.
Nop packet which were supposed to carry TS transformations for the
pause state accidentally got flagged as Flush operations.  The flush
packet successfully carried the TS transformation, but also had the
undesired side effect of constantly flushing the stream.

Change-Id: I4c6aa0043fc274a1d7e880ed1d19cf277f22194b
Signed-off-by: John Grossman <johngro@google.com>
2012-03-22 11:30:09 -07:00
Joe Fernandez
7d4f7e35bc am 66f1bafb: Merge "docs: Android SDK r17 (RC7) Release Notes (fix for build feature info)" into ics-mr1
* commit '66f1bafb2326e12814df703a4285373e8651a3ce':
  docs: Android SDK r17 (RC7) Release Notes (fix for build feature info)
2012-03-21 16:43:42 -07:00
Joe Fernandez
66f1bafb23 Merge "docs: Android SDK r17 (RC7) Release Notes (fix for build feature info)" into ics-mr1 2012-03-21 16:41:19 -07:00
Joe Fernandez
1e72b34f11 docs: Android SDK r17 (RC7) Release Notes (fix for build feature info)
Change-Id: Id10c2d5eec9f81d1c6ce52067b7e25b7f411d91c
2012-03-21 16:25:21 -07:00
John Grossman
092bae63f1 LibAAH_RTP: Properly handle EOS conditions.
EOS was being treated as a flush operation which was causing problems.
In particular, the transmitter was delcaring that playback was
complete early (by the clock lead time of the system, which was 1
second in this case).  Also, the receiver was treating the EOS message
just like the flush message, immediately destroying the substreams
associated with the program without letting them play out first.

Change the transmitter to send the EOS message like it always does,
but have it wait until the media time of the last sample has arrived
before reporting playback complete to the app level of things.

On the receiver side of things, don't treat the EOS message like the
flush message.  Instead, have the EOS message simply put the substream
into EOS mode, allowing it to signal EOS to its decoder and shut off
the isAboutToUnderflow hack.

Change-Id: Ibe3ac01044373f83edb7a5f4b70478bd78c16d11
2012-03-21 14:01:47 -07:00
John Grossman
fa9ea48ddf LibAAH_RTP: Get rid of PipeEvent
Bionic/Android support eventfd, so there is really no reason to have
PipeEvent around any more.  This change gets rid of it in LibAAH_RTP
and replaces it with eventfds.

Change-Id: I841fcb71bf5015d521d7517c69f44eac0ea92278
Signed-off-by: John Grossman <johngro@google.com>
2012-03-21 12:12:31 -07:00
John Grossman
2921612dc8 LibAAH_RTP: Add unicast mode support to the RXPlayer
Add support for unicast mode to the AAH RXPlayer.  At the API level,
things should be pretty simple.  To use unicast mode, instead of
passing the multicast address and port in the data source URL, just
pass the unicast address and port of the transmitters command and
control port.  For example, instead of

aahRX://224.128.60.5:8867

one might instead pass

aahRX://192.168.63.5:55476

Change-Id: I7b40716983d7a91def86dcf40f093dda4255aae3
Signed-off-by: John Grossman <johngro@google.com>
2012-03-21 12:12:28 -07:00
John Grossman
06938878d3 LibAAH_RTP: Fix a stuttering audio bug.
Fix a bug discovered while working on adding unicast mode to the TX/RX
players.  Also some general cleanup/consolidation regarding timeout
code.

The bug went like this.  When a TX player had hit EOS, it would send
an EOS command payload to its receivers.  Later, when application
level code shutdown and cleaned up the player, it would send another.
In situations where there is massive packet loss, there is a chance
that not only did both of the EOS packets get dropped, but that they
never got filled in by the retry algorithm because the receiver gave
up on the RTP gap due to an aboutToUnderflow situation in at least one
of its active substreams.

When this happens, there are two major problems.  First, all of the
substreams associated with the TX player which has now gone away have
become effectively leaked.  They will only get cleaned up if the
entire RTP stream (the TX Group) goes away for 10 seconds or more, or
when the RX Player itself is reset by application level code or a
fatal error.  These substreams are holding decoder and renderer
resources which are probably in very short supply, which is a Bad
Thing.

Second, there is now at least one substream in the RX player which is
never going to receive another payload (its TX player source is gone),
but is still considered to be active by the rx player.  Assuming that
this substream's program was in the play state when the track ended,
there is now at least one substream which is always
"aboutToUnderflow".  From here on out, when the retry algorithm is
attempting to decide whether or not it has the time to attempt to fill
in a gap in the muxed RTP sequence, it always decides that it does not
have the time because of the orphaned substream which is stuck in its
about to underflow state.  This effectively means that the retry
algorithm is completely shut off until the rx player gets reset
somehow (something which does not happen during normal operation).
Since the environment had to be extremely lossy to trigger this chain
of events in the first place, and its probably no better now, your
playback is just going to be chock full of gaps which produces
horrible stuttering in the presentation stage of the system.

Two new failsafes have been introduced to keep the double EOS drop
from causing this.  First, a timeout has been introduced on the
substream level, in addition to the already existing RTP level
timeout.  If a substream fails to receive an activity for 10 seconds
(same timeout as the master RTP timeout), it will be automatically
flushed and purged.

Second, the nature of the master RTP timeout on the transmitter side
has been changed.  Instead of just sending an empty NOP command packet
to indicate that the main RTP stream is still alive, the transmitter
now sends a new time of command packet; the Active Program Update
packet.  This packet contains a list of all the active program ID
attached to this TX group.  Upon receiving one of these APU packets,
RX players reset the inactivity timers for all substreams which are
members of the programs listed in the packet, but they also
immediately purge any substreams associated with programs not present
in the APU.

Between the two of these, no matter how nasty and selective the packet
smashing gremlins in your system happen to be, substreams will always
eventually clean up and avoid getting stuck in a perma-stutter
situation.

Also in this CL:
+ Extract some common utility code into a utils.cpp file so that it
  can be shared across the library.
+ Stop using custom timeout logic in the RXPlayer.  Instead, use the
  common Timeout helper class in utils.cpp.

Signed-off-by: John Grossman <johngro@google.com>
Change-Id: I350869942074f2cae020f719c2911d9092ba8055
2012-03-21 12:10:41 -07:00
John Grossman
42a6382f1e LibAAH_RTP: Refactor TXGroup code, add unicast mode.
Significantly refactor the TXGroup code to allow transmit groups to
operate in a unicast fanout mode in addition to the traditional pure
multicast mode.  Important changes include...

+ Each transmit group active in the system now has its own socket to
  send and receive traffic on.  In the past, this socket was used to
  listen for retry requests from clients.  Now it is also used to
  listen for group membership reports (IGMPv3 style) from unicast
  clients.  Having an individual socket per transmit group allows
  unicast clients to join the group needing only the IP address and
  port of the transmitters socket, and not needing any additional
  "group id" to be sent to the client beforehand.
+ Setup for the transmitter is now slightly different.  As before, to
  setup for multicast mode, a user can call setRetransmitEndpoint
  passing an IPv4 multicast address and specific port to transmit to.
  It used to also be the case that a user could pass a specific
  unicast address and port to transmit to as well.  This is no longer
  allowed.  Instead, to operate in unicast mode, a user passes 0.0.0.0
  (IPADDR_ANY) as the IP address.  In addition, they need to pass
  either 0 for a port to create a new unicast mode TX group, or they
  need to pass a specific port to cause the player to attempt to use
  an existing unicast mode TX group.  The specific port should be the
  command and control port of the TX group which was bound to when the
  group was originally created.
+ A magic invoke was added to allow clients to fetch the command and
  control port on which a TX Player's TX Group is listening.

The API described above is most likely temporary and should eventually
be replaced with one where TX groups are formal top level objects with
their own independent interface and life-cycle management.

Signed-off-by: John Grossman <johngro@google.com>
Change-Id: Ib4e9737c10660d36c50f1825c9824fff5390b1c7
2012-03-21 12:02:37 -07:00