| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Offloading of compressed audio decoding to audio DSP
is implemented for audio only, non streamed content.
when the datasource is
AudioPlayer:
- Create an offloaded sink when playing a compressed
source
- Send metadata to audio HAL
- Return sink start error to AwesomePlayer so that a
new player for PCM audio can be created in case of problem.
- Forward stream end and tear down callback events to AwesomePlayer
- Stop the sink and wait for stream end callback when EOS is reached.
- Pause and restart the sink if needed before flushing when seeking
(otherwise flush is a no op).
- For current media time, directly query the render position from the
sink and offset by the start position (seek to time)
AwesomePlayer:
- When initializing the audio decoder, check with audio policy manager
if offloading is supported. If yes, create the software decoder in
case a reconfiguration is needed but connect the audio track directly
to the AudioPlayer.
- In case of error when starting the AudioPlayer, reconnect the software
decoder (OMXSource) and recreate a PCM AudioPlayer.
- Handle AudioPlayer tear down event by detroying and recreating the
AudioPlayer to allow transitions between situations were offloading
is supported or not.
- Force tear down of offloaded AudioPlayer when paused for a certain time:
This will close the sink and allow the DSP to power down.
Utils:
- Added helper methods:
- send meta data to audio ia sink setParameters
- query audio policy manager if offloading is supported for a
given audio content
Change-Id: I115842ce424f947b966d45e253a74d3fd5df9aae
Signed-off-by: Eric Laurent <elaurent@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Main change is to how recycled tracks are used for gapless
playback. If we are playing offloaded tracks that can't be
recycled we don't open a new offloaded output until we have
closed the previous one. This is because offloaded tracks
are a limited resource so we don't want to spuriously create
unnecessary instances. If the tracks cannot be recycled
this means that the formats are incompatible and so the
hardware most likely will also be unable to use the existing
output channel for the new track. If we already have the
maximum number of hardware offload channels open (which could
be only one) then creation of the next output would fail if
we attempted it while the previous output was still open.
Change-Id: I4f5958074e7ffd2e17108157fee86329506730ea
Signed-off-by: Eric Laurent <elaurent@google.com>
|
|
|
|
| |
Change-Id: Ic2d9a9cf184a482b3c78a481ed693ee32df5ca13
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
NOTE: this does _not_ include all private member variables added
to classes as part of offload support. Only public/protected functions
and stubs functions/variables needed to make the changes buildable.
- isOffloadSupported() added to audio policy service
A stub implementation is required to build, this always returns false
- setParameters() added to IAudioTrack
A stub implementation is required to build, this always returns
INVALID_OPERATION
- CBlk flag for stream end
- Change AudioSystem::getRenderPosition() to take an audio_output_t
so caller can specify which output to query
- Add AudioSystem::isOffloadSupported()
This is fully implemented down to the AudioFlinger function
AudioPolicyServer::isOffloadSupported() which is just a stub
that always returns false.
- Add EVENT_STREAM_END to AudioTrack interface.
STREAM_END is used to signal when the hardware has actually finished
playing all the data it was sent.
- Add event type enumeration to media player interface AudioSink callbacks
so that the same callback can be used to handle multiple types of
event. For offloaded tracks we also have to handle STREAM_END and
TEAR_DOWN events
- Pass audio_offload_info_t to various functions used for opening outputs,
tracks and audio players. This passes additional information about the
compressed stream down to the HAL when using offload.
For publicly-available APIs this is an optional parameter (for some of
the internal and low-level APIs around the HAL interface it is mandatory)
- Add getParameters() and setParameters() API to AudioTrack
Currently dummy implementations.
- Change AudioPlayer contructor so that it takes a set of bitflags defining what
options are required. This replaces the original bool which only specified
whether to use deep buffering.
- Changes to StageFright class definition related to handling tearing-down of
an offloaded track when we need to switch back to software decode
- Define new StageFright utility functions used for offloaded tracks
Currently dummy implementations.
- AudioFlinger changes to use extended audio_config_t.
Fills in audio_offload_info_t member if this info is passed in when
opening an output.
- libvideoeditor changes required to add the new event type parameter
to AudioSink callback functions
- libmediaplayerservice changes required to add the new event type parameter
to AudioSink callback functions
Change-Id: I3ab41138aa1083d81fe83b886a9b1021ec7320f1
Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
Signed-off-by: Eric Laurent <elaurent@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change prepares for the new implementation of AudioTrack client, which
will require clients to use only sp<AudioTrack>, not raw AudioTrack *.
A raw delete will cause a race condition during AudioTrack destruction.
AudioTrack was made a RefBase by commit b68a91a70bc8d0d18e7404e14443d4e4020b3635
on 2011/11/15, when it was needed by OpenSL ES (for the callback protector).
At that time, the only other client that was also converted from
AudioTrack * to sp<AudioTrack> was android.media.AudioTrack JNI in
project frameworks/base (file android_media_AudioTrack.cpp).
Details:
* Use .clear() instead of delete followed by = NULL.
* ALOG %p need .get().
* sp<> don't need to be listed in constructor initializer, if initially 0.
* Use == 0 for sp<> vs == NULL for raw pointers.
* Use if (sp != 0) instead of if (raw).
Change-Id: Ic7cad25795d6e862e112abdc227b6d33afdfce17
|
|\
| |
| |
| | |
mode." into jb-mr2-dev
|
| |
| |
| |
| |
| |
| |
| |
| | |
By default, MPEG4Write will keep running in real time recording mode.
bug:8598944
Change-Id: Idf7fbd4e0feb7763660a74279ba8817b79098aaf
|
|/
|
|
|
| |
Bug: 8580410
Change-Id: If493d87d60d71be664ad75b140c62acadb75b0d0
|
|\
| |
| |
| |
| | |
* commit 'c44a3ae2704af52c0f4ea006b5b02a53b6df6c46':
Prevent invalid frame durations
|
| |
| |
| |
| |
| |
| |
| | |
Prevent frame duration from being negative when
exporting movie studio project
Change-Id: I459fb243650c777c2b59d1094acc88c3a944bd81
|
| |
| |
| |
| | |
Change-Id: I4e8a8b20914cb64edc37abe68233fbc9f2b5d830
|
|\ \
| |/
| |
| |
| |
| |
| | |
all-level debugging macros"
* commit '3e55b3e4cdebd47a2e5b5df99107954fb4b1ab64':
libvideoeditor: fix code bugs when enabling all-level debugging macros
|
| |\ |
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ic8aedfa821d79698d31cf7ee3bf382aae85981f6
Signed-off-by: beanz <beanz@marvell.com>
|
|\ \ \
| |/ /
| | |
| | |
| | |
| | |
| | | |
thumbnails in storyboard or no frame display in PreviewRenderer surface after importing video"
* commit '9c891ca36a7f2acecd70d41ff39a2025048bb0b1':
libvideoeditor: fix cannot show some thumbnails in storyboard or no frame display in PreviewRenderer surface after importing video
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
display in PreviewRenderer surface after importing video
1. this is caused mFrameIntervalMs isn't assigned for use-software-codec case
2. without the assingment, some decoded frames will not be copied to the buffer queue of VideoEditorVideoDecoder
Change-Id: I578954e38958ebac8f258300e60b8ddf60e50521
Signed-off-by: beanz <beanz@marvell.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The C++ class names don't match what the classes do, so rename
ISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to
GLConsumer.
Bug 7736700
Change-Id: I64520a55f8c09fe6215382ea361c539a9940cba5
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
This reverts commit aef79b0676d8f0ee8ef637ec8be5ba73225b038d
Change-Id: I5f6cf4d6d5dc895a9426f212dfc8a25b4bf2d23a
|
| | |
| | |
| | |
| | | |
Change-Id: I792277b0d711da22f6b2abb7f1d837450d6af8e2
|
| | |
| | |
| | |
| | |
| | |
| | | |
Also fix typo: bufferCount should be frameCount.
Change-Id: Ibed539504db75ef99dc21c8ff1bf2987122063a5
|
| | |
| | |
| | |
| | | |
Change-Id: Ie240b48fb54b08359f69ecd4e5f8bda3d15cbe80
|
|/ /
| |
| |
| |
| | |
Bug: 6654403
Change-Id: I3993d62987cf0dd85db10bf002a5cce53d4f01bd
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Summary:
Very high quality is enabled only for 44.1 -> 48 or 48 -> 44.1,
and uses low quality for all other use cases.
Track estimated CPU load and throttles the quality based on load;
as currently configured it should allow up to 2 instances of very high quality.
Medium quality and high quality are currently disabled unless explicitly requested.
Details:
Only load .so the first time it is needed.
Cleanup code style: formatting, indentation, whitespace.
Restore medium quality resampler, but it is not used (see next line).
Fix memory leak for sinc resampler.
Check sample rate in resampler constructor.
Add logs for debugging.
Rename DEFAULT to DEFAULT_QUALITY for consistency with other quality levels.
Renumber VERY_HIGH_QUALITY from 255 to 4.
Use enum src_quality consistently.
Improve parsing of property af.resampler.quality.
Fix reentrancy bug - allow an instance of high quality and an instance
of very high quality to both be active concurrently.
Bug: 7229644
Change-Id: I0ce6b913b05038889f50462a38830b61a602a9f7
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
libnbaio is now a separate shared library from AudioFlinger, rather
than a static library used only by AudioFlinger.
AudioBufferProvider interface is now also independent of AudioFlinger,
moved to include/media/
Change-Id: I9bb62ffbc38d42a38b0af76e66da5e9ab1e0e21b
|
|\ \
| |/
| |
| |
| | |
* commit '4348cbcec6c3aec02af722d633ebda24f94dfcc8':
Initialize pool's buffer pointers to null.
|
| |
| |
| |
| |
| |
| |
| |
| | |
If these pointers are not properly initialized to null and
allocation of one of the buffers subsequently fail, the freePool
mechanism might erroneously free uninitialized pointers.
Change-Id: I2101bdb2cc576e5f50b5a1440e6fc0c54dc4e81b
|
| |
| |
| |
| | |
Change-Id: I1c1896da48983aa9f1462a4b471f910498816f60
|
| |
| |
| |
| |
| |
| |
| |
| | |
The crash was because the video sample was too short and has 0 duration (or a single frame video).
This patch is just simply not to support 0 duration video for editing.
Change-Id: I2c7ff78b1e884a4d3a5051f87cdbeeb5dc3078a6
related-to-bug: 6670656
|
|/
|
|
|
|
|
| |
This change updates all the uses of ANativeWindow to use the new ANW functions
that accept and return Sync HAL fence file descriptors.
Change-Id: Id7db42d8d6380f8b440d88476ce9211c6225fb16
|
|
|
|
|
| |
Change-Id: I19308c5fb0f39f8e696092186f4386e3dad06894
related-to-bug: 6647465
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At least two use cases are affected: trimming and transition clip generation.
If the starting time of the transition or the trimming position is not the same as
that of any existing video frame, the video frame right before the transition
starting position or the trimming position must be encoded as the the first video
frame for the transtion or the trimmed video, and it is encoded as a key frame.
This frame was not saved without the patch.
In the transcoding phrase, since we could not find such a frame, the existing
code did not return an error, and incorrectly used some other frame to serve
as the reference key frame for the remaining video frames of the transition or
the trimmed video. As a result, we may see corrupted or green video frames in
the exported movies.
The fix is to always save the frame right before the trimming position or
the transition starting time, so that a key frame will always be encoded, and
the right reference frame is used for remaining video frames. In addition,
checks are added to prevent from future mistakes to use incorrect reference frames.
Patch was originally contributed by teng.hong@nxp.com
Change-Id: I182784d4c1786224445224634edab3338bf2278f
related-to-bug: 5713461
|
|
|
|
|
|
|
|
|
|
|
| |
Using hard-coded length value easily leads to buffer overflow.
Refactor the code a bit to make it more readable, and more
extensible, and less subject to the buffer overflow coding error.
Patch originally contributed by teng.hong@nxp.com
Change-Id: Id262915302ccea8ae3b0121bf39890ab463aeeb7
related-to-bug: 6328360
|
|
|
|
|
|
|
|
|
| |
access unit
Patch was contributed by teng.hong@nxp.com
Change-Id: I0f56361d839f18627e512d18e86f51b58b9b0e05
related-to-bug: 6240789
|
|
|
|
|
|
| |
related-to-bug: 6502980
Change-Id: I9cbbf44eb53c406263df4003cc3de2af4d239180
|
|
|
|
|
|
| |
editor engine"
This reverts commit 1af1f6a60b9fa217b6809e767babf1ce8a2e95c9.
|
|
|
|
|
|
| |
related-to-bug: 6328360
Change-Id: I36324820c7e72fedd8c4caf1b03443a4f7cec37f
|
|
|
|
| |
Change-Id: I97ce29ecfde4df171120a3570db9575b32c8d362
|
|
|
|
|
|
|
|
|
|
| |
Allow AudioSink to use deep audio buffering when the
source is audio only and its duration is more than
a certain threshold.
This helps improve battery life but implies higher
audio latency.
Change-Id: Ie79915b61c370292f05aabda9779356570e03cbb
|
|
|
|
| |
Change-Id: I27c46bd1d1b2b5f96b87af7d05b951fef18a1312
|
|
|
|
|
|
|
|
|
| |
This makes NuPlayer use a SkipCutBuffer when needed, and adds a new
AudioSink method to retrieve the number of frames written so far, so
NuPlayerRenderer can calculate how much data it can write without blocking.
Also make some more methods const.
Change-Id: Id7d253ad8a7b85e9a84ca2baafbe32817b16c744
|
|
|
|
|
|
|
| |
o plus a few file relocation: ActivityManager.cpp/h, SoundPool.h, etc
o remove some runtime dependencies to libandroid, libandroid_runtime, etc
Change-Id: I047a47c5fb361dd5cf85cd98798c39f629a75d10
|
|
|
|
|
|
|
|
|
|
|
| |
/frameworks/base/media/jni
o move VideoEditorMain.h to /frameworks/av/libvideoeditor
o removed JNI related C_INCLUDE in some Android.mk files
o related-to-bug: 6214141
Change-Id: Iadd01eef701deb728fbac1a3f524ea1db72f6b48
|
|
|
|
|
|
| |
o related-to-bug: 6214141
Change-Id: I3ef60ca7670df37d7e43546e244cfe6a33093ba9
|
|
|
|
| |
Change-Id: I4bff781a26d01023d23d5285a8aa83dbce46c629
|
|
|
|
| |
Change-Id: I522861043cc2ee905258a2ae409bf9dddbe452dc
|
|
|
|
|
|
|
|
| |
Part of this change will be reverted after the move is complete.
p.s. this dependency on AudioFlinger should be removed
Change-Id: Ib29d413b74a6dc1babe7a33471128be11304ce56
|
|
|
|
|
|
| |
o related-to-bug: 6044887
Change-Id: I3a1143b09560a6b8fd67d23bbb375c83442a12e9
|
|
|
|
|
|
| |
o related-to-bug: 6044894
Change-Id: I192f0436572d240fd2fb88446f6fa63ba0128d7e
|
|\ |
|