While our hardware decoders clearly outperform the software decoders in terms
of raw throughput, their startup latency makes them less suitable for thumbnail
extraction.
Merge commit 'e981c33446a98d5ccc0d73c1a840696d77cf0732' into eclair-mr2-plus-aosp
* commit 'e981c33446a98d5ccc0d73c1a840696d77cf0732':
Extract video thumbnails from the largest sync sample among the first 20.
Merge commit 'bfd5b38673212c47f0e386c0a8370d4ff47bd2fe' into eclair-mr2-plus-aosp
* commit 'bfd5b38673212c47f0e386c0a8370d4ff47bd2fe':
Some cleanup of OMXCodec code, make sure to ignore 0-length output buffers in the metadata retriever.
Added setVoiceVolume() method to AudioSystem, AudioFlinger, IAudioFlinger, AudioPolicyService.
Removed call to AudioHardwareInterface::setVoiceVolume() from AudioFlinger::setStreamVolume().
Merge commit 'ca404dfb920ab009cef4db5e74715b796f79b3f9' into eclair-plus-aosp
* commit 'ca404dfb920ab009cef4db5e74715b796f79b3f9':
do not merge: The qcom video decoders always output yuv data after adjusting dimensions to be a multiple of 16.
Add a quirk mode to OMXCodec that makes it aware of this fact for proper display. Also integrate back a change from eclair-mr2 that delays releasing an output buffer briefly after posting it to surface flinger, as we don't know how long it'll take it to actually display the buffer's content.
Merge commit 'd96f6e85931e3d4ac4a6dacbedc561e56c293b8d' into eclair-mr2-plus-aosp
* commit 'd96f6e85931e3d4ac4a6dacbedc561e56c293b8d':
Reimplement the OMX backend for stagefright.
Besides a major cleanup and refactoring, OMX is now a singleton living in the media server, it listens for death notifications of node observers/clients that allocated OMX nodes and performs/attempts cleanup.
Changed APIs to conform to the rest of the system.
Merge commit 'c642199d1d60176980e2781bb78f42dce93e1c84' into eclair-mr2-plus-aosp
* commit 'c642199d1d60176980e2781bb78f42dce93e1c84':
Separated private from public header files.
Merge commit 'fe324a61c39d5db59f09fdae81c808d7851841e6' into eclair-mr2-plus-aosp
* commit 'fe324a61c39d5db59f09fdae81c808d7851841e6':
Fix various compiler warnings accumulated over time.
Merge commit 'cfd55579c2e20514b181809dfaf30bd6f7e04c7e' into eclair-mr2-plus-aosp
* commit 'cfd55579c2e20514b181809dfaf30bd6f7e04c7e':
OMXCodec now notifies the reader of changes in the output format by returning a special result/error code.
Merge commit 'ef703f60d5c00527048fdaf1c24984762f6fd434' into eclair-mr2-plus-aosp
* commit 'ef703f60d5c00527048fdaf1c24984762f6fd434':
Change to a int64_t usecs representation for timestamps and duration throughout stagefright.
Merge commit '936fff36882764ec031ae4fb8338273cc2abccd5' into eclair-mr2-plus-aosp
* commit '936fff36882764ec031ae4fb8338273cc2abccd5':
Split the ColorConverter off SoftwareRenderer, metadata support in stagefright.
Merge commit '2d295a9601315a2610a2cb759ed9a4f787e7d4b5' into eclair-mr2-plus-aosp
* commit '2d295a9601315a2610a2cb759ed9a4f787e7d4b5':
Some decoders will return an error on OMX_EmptyThisBuffer to indicate that they don't support the media format, deal with this.
Merge commit 'cd74c0d56c0756ceb5cfa5f06d76e17aa2ed6fb9' into eclair-mr2-plus-aosp
* commit 'cd74c0d56c0756ceb5cfa5f06d76e17aa2ed6fb9':
The vendor is about to check in a fix for this issue, the workaround is no longer needed
This also fixes [2152536] ANR in browser
When SF is enqueuing buffers faster than SF dequeues them.
The update flag in SF is not counted and under some situations SF will only
dequeue the first buffer. The state at this point is not technically
corrupted, it's valid, but just delayed by one buffer.
In the case of the Browser ANR, because the last enqueued buffer was delayed
the resizing of the current buffer couldn't happen.
The system would always fall back onto its feet if anything -else- in
tried to draw, because the "late" buffer would be picked up then.
Merge commit 'f894d111c8c1ad9038c2d434e1cd78616a6bda0a' into eclair-mr2-plus-aosp
* commit 'f894d111c8c1ad9038c2d434e1cd78616a6bda0a':
Workaround for avc decoder misreporting output buffer size requirements if the content is not a multiple-16 width/height.
Merge commit '9d6a685ba939f413a8d3e1e97627593aa1cdf6cb' into eclair-plus-aosp
* commit '9d6a685ba939f413a8d3e1e97627593aa1cdf6cb':
fix [2168528] enable glTexImage2D code path in SF for software-only buffers
fix [2168531] have software-only gralloc buffer side-step the HAL
fix [2167050] glTexImage2D code path buggy in SurfaceFlinger
Merge commit 'c39d2e3c012fb96999991e30659a474f9f30f789' into eclair-plus-aosp
* commit 'c39d2e3c012fb96999991e30659a474f9f30f789':
Music visualizer support hack.
Merge commit 'f8e4bc9f7789b98b54fe04df56555ca8c630df70' into eclair-plus-aosp
* commit 'f8e4bc9f7789b98b54fe04df56555ca8c630df70':
Attempt to fix [2152536] ANR in browser
Merge commit '0ef55540ab75660c58b284415ebae7ea66684706' into eclair-mr2-plus-aosp
* commit '0ef55540ab75660c58b284415ebae7ea66684706':
fix [2168528] enable glTexImage2D code path in SF for software-only buffers
fix [2168531] have software-only gralloc buffer side-step the HAL
fix [2167050] glTexImage2D code path buggy in SurfaceFlinger
A window is created and the browser is about to render into it the
very first time, at that point it does an IPC to SF to request a new
buffer. Meanwhile, the window manager removes that window from the
list and the shared memory block it uses is marked as invalid.
However, at that point, another window is created and is given the
same index (that just go freed), but a different identity and resets
the "invalid" bit in the shared block. When we go back to the buffer
allocation code, we're stuck because the surface we're allocating for
is gone and we don't detect it's invalid because the invalid bit has
been reset.
It is not sufficient to check for the invalid bit, I should
also check that identities match.
This change is a complement to the main fix in kernel driver for the same issue (partner change #1250).
It removes clicks sometimes heard after the end of the tones while audio flinger is sending 0s to the audio output stream.
The problem was that the sleep time between two writes was more than the duration of one audio output stream buffer which could cause some underrun.
Also fixed a recent regression in ToneGenerator that made that the end of previous tone was repeated at the beginning of current one under certain timing circumstances when the maximum tone duration was specified.
When EGLImage extension is not available, SurfaceFlinger will fallback to using
glTexImage2D and glTexSubImage2D instead, which requires 50% more memory and an
extra copy. However this code path has never been exercised and had some bugs
which this patch fix.
Mainly the scale factor wasn't computed right when falling back on glDrawElements.
We also fallback to this mode of operation if a buffer doesn't have the adequate
usage bits for EGLImage usage.
This changes only code that is currently not executed. Some refactoring was needed to
keep the change clean. This doesn't change anything functionaly.