when trying to start source, need to make sure encoder still exist.
Although encoder starts before source, it may encounter error and be
released before starting source, this will cause camera hardware can't
be released.
Author: Cong Jiajia <jcong@codeaurora.org>
Bug: 70919418
Test: TBD
Change-Id: I68b0d3a86d7004d4d1b3aefb580093a6497dc485
libs (libmedia_helper, libstagefright_omx_utils, libstagefright_xmlparser)
are VNDK and also used by LLNDK(libmediandk) which means these libs can be double-loaded.
(deps:
- libmediandk -> libmedia -> libaudioclient -> libmedia_helper
- libmediandk -> libmedia_jni -> libstagefright -> libstagefright_omx_utils
- libmediandk -> libmedia_jni -> libstagefright -> libstagefright_xmlparser
)
Bug: 121280180
Test: m -j
Change-Id: Ibbf5dede1f503e86484f805b252d4ced779445cb
Merged-In: Ibbf5dede1f503e86484f805b252d4ced779445cb
Add null-check for metadata returned by getTrackMetaData()
since it may return a nullptr
Author: Karthikeyan Periasamy <kperiasa@codeaurora.org>
CRs-Fixed: 1115425
Bug: 70919418
Test: TBD
Change-Id: Ic640b2dba815604fdeef1c546b17bfe5727c0dab
Clear the vector which holds all tracks when the
GenericSource is reset to prevent any stale access
Author: Umesh Pandey <umeshp@codeaurora.org>
Bug: 70919418
Test: TBD
Change-Id: If7042b3344ce36ba56e38df1a43bc2bb287cc40c
To support AAC offload feature, AACExtractor needs to parse profile
and send to HAL.
Therefore, AACExtractor needs to keep AOT type into mMeta, and
then AOSP default common flow will pass AOT type to HAL.
Bug: 123041584
Test: build pass in Android Qt and verified AAC offload feature
in Android Pie
Change-Id: Ie954546835c682cd32b5885af92dc715414cd8ea
When encoder is released, it will no longer turn to media codec source
for fill-this-buffer. Hence, the buffer queue within puller will not be
cleared by encoder.
Stop mPuller before releasing encoder to avoid being stucked in
AudioSource::waitOutstandingEncodingFrames_l() if audiosource reset() is
invoked from SFRecorder destructor.
Bug: 123065628
Change-Id: I78ecb2207ae595784204bd6392311dc194af306d
nuplayer's updateMetrics() referenced an unprotected shared stats buffer.
It's a small buffer, so we now make a copy during updateMetrics()
[at a point where we are mutexed] instead of putting a mutex on the
underlying frequently used construct.
Ensure that nuplayer2 has the same protections.
Bug: 123256408
Test: race condition
instead of "test, advance 1, test", look at the 4 bytes that we
used in the test to see the soonest our test could possibly succeed
(e.g. where do we find the right leading character) and advance that
far instead of just 1.
Bug: 124238340
Test: manual
libs (libmedia_helper, libstagefright_omx_utils, libstagefright_xmlparser)
are VNDK and also used by LLNDK(libmediandk) which means these libs can be double-loaded.
(deps:
- libmediandk -> libmedia -> libaudioclient -> libmedia_helper
- libmediandk -> libmedia_jni -> libstagefright -> libstagefright_omx_utils
- libmediandk -> libmedia_jni -> libstagefright -> libstagefright_xmlparser
)
Bug: 121280180
Test: m -j
Change-Id: Ibbf5dede1f503e86484f805b252d4ced779445cb
Bug: 124128094
Test: m on marlin
The extractor libs are found under /system/apex/com.android.media
Change-Id: Id0eac85253963777067afb1b795620d969af120c
Track::interceptBuffer failed to write all the audio if the source BP
could not returned the requested buffer size.
This is actually normal when the source circular buffer wraps around.
Handle it by retrying if the first buffer is too small.
Test: adb shell audiorecorder --target /data/file.raw
Bug: 111453086
Change-Id: I42a7962449a0f075909a29f5f8f5ba82ca1d0085
Check if MediaAnalyticsItem class is valid before
calling any of its functions.
Author: Paras Nagda <pnagda@codeaurora.org>
Bug: 70919418
Test: TBD
Change-Id: I2d5704063b9479301f03d6f57ce74108873ef4cc
It's possible that tracks with the same session id running on various
playback outputs, which causes effect chain being created on the same
session twice. As a result, the same effect engine will be released
twice as the same context is reused.
Output that has effect chain with same session id is more preferable.
Test: No regression with Play Music and Effects
Bug: 123082420
Change-Id: I690ea3cb942d1fdc96b46048e271557d48000f43
The memories created in lvmCreate call have to be freed at the end of
execution. Added code to achieve the same.
Test: local native test (lvmtest)
Bug: 123324940
Change-Id: I83fad7def874da27c79d755e44ec738fa0816a41
am: b5e96b88ee -s ours
am skip reason: change_id I8f9c75d19f2dcd0f0f31a082c0e98cd7eb6655a4 with SHA1 51087de7b6 is in history
Change-Id: I7a099063388fcca8e9262bf56c8534f939f64086
In order to avoid track to be added to tracksToRemove
redundantly, merge the adding operation under exclusive
condition check.
This can make sure the add can happen only one time within
one prepareTracks iterator.
authored-by: Zhou Song <zhous@codeaurora.org>
Test: AF active track removal with audio playback pause
Bug: 123375253
Change-Id: If35348af2144a28b84241e1cb93f497d5eec9a8a
Add "3ga","qt" to extensions[]
Bug: 123651180
Test: test mp4 file with extension "3ga" or "qt",
and check if file can be played
Change-Id: Ia1d265594af11ebb65918b80ed92e45d1ad487a4
Since sfplugin includes its own copy of SkipCutBuffer, it should
include its own header as well, not the libstagefright one.
Test: build, boot
Change-Id: I7e8ee2fdb6c2acc68c10143d312f1ef3cf928df5