Fix the trivial warnings that are hidden by the use of -isystem to
include frameworks/av and caught by -Werror.
Test: m -j checkbuild
Bug: 31751828
Change-Id: I155f9f772ce0a84b364313814cb7cf528b9de4eb
Test: verify that build has no failures
Change-Id: Ib249b276c6295e55eb54fa37b6d15486415dfbed
Merged-In: Ib249b276c6295e55eb54fa37b6d15486415dfbed
(cherry picked from commit 5f5ee1110d)
Enables CFI for libmediaplayerservice, and for the testid3 and
mediafilter executables.
Bug: 30227045
Test: ENABLE_CFI=true m -j40 builds and boots
Test: Media CTS tests pass, testid3 and mediafilter work correctly
Change-Id: If4cbca00157d5dd63c55a1379cfd83b926f56dbe
(cherry picked from commit eb3324081b)
Enables CFI for libmediaplayerservice, and for the testid3 and
mediafilter executables.
Bug: 30227045
Test: ENABLE_CFI=true m -j40 builds and boots
Test: Media CTS tests pass, testid3 and mediafilter work correctly
Change-Id: If4cbca00157d5dd63c55a1379cfd83b926f56dbe
Test: Manual use of Camera, Movies, Photos and YouTube apps.
Test: With CtsMediaTestCases.apk installed,
adb shell am instrument -e size small -w
'android.media.cts/android.support.test.runner.AndroidJUnitRunner'
Bug: 34274385
Change-Id: I5251fea337f33460d1f0db174cedc465822f2a47
Also clean up some other dependencies.
Test: Manual testing with Camera, YouTube and Play Movies apps.
Bug: 35445903
Change-Id: I28562b5fbcc7054cf45c4ec2530bbe2ab4b5645f
1. Toggling between Treble and non-Treble OMX will now be controlled by
two properties: "persist.hal.binderization" and
"persist.media.treble_omx". (Before this CL, this was controlled by
"debug.treble_omx".)
- If persist.media.treble_omx is not set, it will assume a default value
of -1.
- If persist.media.treble_omx is -1, persist.hal.binderization will be
used to determine whether OMX will be created as a Treble or non-Treble
service.
- If persist.media.treble_omx is 1, OMX will be created as a Treble
service.
- If persist.media.treble_omx has any other value, OMX will be created
as a non-Treble service.
- persist.media.treble_omx can be changed without rebooting, but it will
only take effect after media.codec and mediaserver processes are killed.
2. Remove all dependencies on non-Treble service. This was not done for
MediaCodec, MediaPlayerService::Client, MediaRecorderClient, stagefright
command, and omx_tests command. OMXClient and media.codec process will
now pick the right version of OMX based on properties mentioned above.
Before this CL, media.codec would always present the non-Treble version
of OMX regardless of the flag.
3. Provide workarounds for some HIDL issues.
- A sequence of nested binder and hwbinder calls require many threads to
handle. (b/35283480) The workaround is to increase the number of threads
in the thread pool of media.codec process.
- android.hidl.base@1.0::IBase::unlinkToDeath takes a strong pointer
instead of a weak pointer. (b/35233970) This causes an infinite
recursion in the destructor of ServiceDeathNotifier in
MediaPlayerService::Client and MediaRecorderClient. The workaround moves
calls to unlinkToDeath() outside of the destructor.
Test: Recorded and played videos with Camera app. Ran stagefright and
omx_tests commands.
Bug: 31399200
Change-Id: Id1940ed982838e10bf10fe8ed5b7bb912a5a2d3a
- MediaCodec stops tracking the whole buffer array from OMX.
- BufferChannel handles array management instead, if necessary.
- MediaCodec delegates secure buffer management to BufferChannel.
- Remove sf2.
Bug: 32133435
Test: adb shell am instrument -e size small -w 'android.media.cts/android.support.test.runner.AndroidJUnitRunner'
Test: Play an encrypted content in Play Movies
Test: Mirror the screen via Cast.
Change-Id: I1ca705687956ad972e31257853c54e29cbd7181a
These are exposed when frameworks/av/include is moved from being a
system include directory to a normal include directory.
Test: m -j checkbuild
Change-Id: Iaa8f3808d578ebedc75e863b9818cfbbec9080b2
Merged-In: Iaa8f3808d578ebedc75e863b9818cfbbec9080b2
These are exposed when frameworks/av/include is moved from being a
system include directory to a normal include directory.
Test: m -j checkbuild
Change-Id: Iaa8f3808d578ebedc75e863b9818cfbbec9080b2
- MediaCodec stops tracking the whole buffer array from OMX.
- BufferChannel handles array management instead, if necessary.
- MediaCodec delegates secure buffer management to BufferChannel.
- Remove sf2.
Bug: 32133435
Test: adb shell am instrument -e size small -w 'android.media.cts/android.support.test.runner.AndroidJUnitRunner'
Test: Play an encrypted content in Play Movies
Test: Mirror the screen via Cast.
Change-Id: Idc9fdee42ea0cdd3b5f15ba5c51647c3e16504a1
Make handling of boolean properties more readable and consistent by
using property_get_bool instead of parsing the result of property_get
Change-Id: I8490d0f0b41a92eab5131e0aac0ecdf704a63381
and don't register the sniffers in every process that plays media,
but only in the extractor process.
Bug: 33166870
Change-Id: Id269d1eab8be1549542adad3037729a63b5ebaef
CodecBase instances do not post reply messages back to MediaCodec
explicitly --- Callback does the job instead.
Bug: 32133435
Test: adb shell am instrument -e size small -w 'android.media.cts/android.support.test.runner.AndroidJUnitRunner'
Test: Play an encrypted content in Play Movies
Change-Id: I210993a3bbc306f970b8e9395a91e8697cfa832e
Currently if stop is followed by a reset from another thread,
we unblock the stop first (to avoid ANR) without waiting for
kWhatShutdownCompleted, and proceed with the reset request.
But this could cause release to return too early when the
kWhatShutdownCompleted for the stop is received. When this
happens, the reset() will unregister ACodec's handlers before
the real shutdown with deallocation is processed, causing
a codec node instance to be leaked.
To solve this problem, separate kWhatShutdownCompleted into
two messages kWhatStopCompleted and kWhatReleaseCompleted.
Release should only return upon kWhatReleaseCompleted.
Also initializing the fence fd in the metadata buffer (even
though it's not used) to avoid warning in freeBuffer.
bug: 32750454
bug: 32971559
Change-Id: If218c853955729a2a2f2e8356908115a79c442e3
This makes it so audioserver doesn't need to link against the entire libmedia,
which has dependencies on camera, ICU, OpenGL and other things that aren't
needed for audio.
Test: build/boot
Change-Id: I99ba1a3dc3b33ca9b3abd98e7519dbf228ee62af
This makes it so audioserver doesn't need to link against the entire libmedia,
which has dependencies on camera, ICU, OpenGL and other things that aren't
needed for audio.
Test: build/boot
Change-Id: I99ba1a3dc3b33ca9b3abd98e7519dbf228ee62af
- Buffers are (roughly) owned by themselves.
- As a corollary, remove output format change related events
and replace by inspecting formats associated with each buffers.
Bug: 32133435
Test: gts-tradefed run gts -m GtsExoPlayerTestCases
Test: (manual) Run Play Movies app to play a secure content.
Change-Id: I6b57da61c2d71acd0d5be4281de823ba1c95b72f
MediaCodecBuffer is meant to replace ABuffer and MediaBuffer in
communication between framework components. As the first step, replace
use of ABuffer in MediaCodec with MediaCodecBuffer, and adjust related
classes accordingly.
MediaCodec.getBuffer() and related APIs now returns MediaCodecBuffers;
thus change MediaCodec clients to use MediaCodecBuffer accordingly.
Test: manually tested for key use cases (Camera, YouTube and Play Movies)
Change-Id: Iba7ce131645e75ce5ddbf497fb793ab38b7f245b
* Add explicit keyword to conversion constructors.
* Or add NOLINT to implicit conversion constructors.
Bug: 28341362
* Use const reference type for read-only parameters.
Bug: 30407689
* Use const reference type to avoid unnecessary copy.
Bug: 30413862
Test: build with WITH_TIDY=1
Change-Id: I7a15ac1e37973fe2c661f577a6106b913653de40
Merged-In: I7a15ac1e37973fe2c661f577a6106b913653de40
* Add explicit keyword to conversion constructors.
* Or add NOLINT to implicit conversion constructors.
Bug: 28341362
* Use const reference type for read-only parameters.
Bug: 30407689
* Use const reference type to avoid unnecessary copy.
Bug: 30413862
Test: build with WITH_TIDY=1
Change-Id: I7a15ac1e37973fe2c661f577a6106b913653de40
When pressing ctrl-c immediately after starting screenrecord (after
setting the signal handler, but before gStopRequested is set to false)
the record loop would never exit.
Also delete the target file before recreating it, to avoid multiple
instances of screenrecord writing the same file.
Bug: 30247947
Change-Id: I374c125dac69e75638955680a2a5da81e3b22ffe
- parse btrt mp4 box
- write max and avg. bitrates into avcc
- fix the use of "bit-rate" vs. the correct "bitrate"
- document ESDS better
- fix some spacing
Bug: 28671284
Change-Id: I94961a095c6d162af38b7999cc946f899a1b1b09
- specify requested metadata mode from producers to OMX
- (pass requested metadata in IOMX::storeMetadataInBuffers)
- use correct logic for native handle source
- use native handle source for encoded meta buffers
Bug: 22775369
Change-Id: I58b03acd3e9a5367d5010d7f87b7af5cae23362c
Encoders and secure decoders still run in the mediaserver, while
all other codecs run in a separate codec process.
Bug: 22775369
Change-Id: Ifbcab8a8f2fe77d2567830ac88f0d982e77f7b00
OneShotDecodingSource is a lightweight replacement for OMXCodec
for decoding use. It does not support pause, secure content or
precise seeking.
'stagefright' now lists the codec profiles for all OMX codecs,
not just the regular ones.
Change-Id: I99f0f79af852a8a16607218acd9fdd83457b7f70
(cherry picked from commit bf03e42c7a)
Run extractors in a separate process. Currently all data is copied through a
binder transaction, and WVMExtractor is still run in the mediaserver process.
Change-Id: Ic5dbce87126dd321ad792f4dd540c2ff6b068d13
Now that Surface and SurfaceTextureClient are the same and Surface,
it does not add value.
Bug: 19489395
Change-Id: I016ecd1cf5cc51ce6244b6fa34ecd75f84e3db01
Change replyID-s from uint32_t to an object
Move reply handling into the loopers (to reuse a common mutex)
Bug: 19607784
Change-Id: Iaa035b846c424c5687ed17ce1079b325e86c54be
We should come back and replace AString with std::string and switch to the
"real" StringPrintf family, but this fixes the ODR violation that was
preventing us from booting.
Bug: 19265750
Change-Id: I798eb9ca5dd634e44625af5e583439ef9f0cdc35
MediaPlayerService can't open files (it needs an already opened
file descriptor), so these were just wasting space.
Change-Id: I323044a6c1814a7bff952ed71b5c7792df2abf03
mediafilter was defining LOCAL_NDK_STL_VARIANT, but never setting
LOCAL_SDK_VERSION, so it was a no-op. Since the project was still
manually setting the stlport include path, it was getting the stlport
headers with precedence over libc++, which breaks the world.
Once that is fixed, the project has never linked libRScpp, which is
required (I'm not sure how this part has ever worked).
Change-Id: Iac70c86bc150eea08329812c0d5744434318d28e
* Fix string literal concatenation to not be interpreted as UD
literals.
* Add constexpr compatibility for non-integral static members.
* Use __typeof__ instead of typeof (should become decltype once this
actually becomes C++11).
* Add an appropriate cast for atomic_uintptr_t, since moving to C++11
means moving from <stdatomic.h> to <atomic>, which has better
typechecking (hooray for not macros!).
Bug: 18466763
Change-Id: I9561dcb2526578687819ff85421ba80d8e1a9694
Fix something being declared a struct and forward-declared a class and
vice versa.
gcc doesn't care, clang complains about the mismatch.
Change-Id: I7a7a8e9040e3c86fa1d73eb112631ea140861657
Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>
Passes the BufferItem for the queued buffer to the onFrameAvailable
callback so the consumer can track the BufferQueue's contents.
Bug: 18111837
Change-Id: If9d07229c9b586c668e5f99074e9b63b0468feb0
-R renders video output to the surface ASAP
-T renders video output to the surface using frame timestamps
Change-Id: I232f19587036edc12e86b4f1dea4d12accef3834
Removes the dependency on default constructor parameters for
GLConsumer so that a different constructor prototype can safely be
added.
Change-Id: I0da924bbd4c141edbf305598c1be8bc575654680
This works like the frames output format but without a header so that
the output can be piped directly to mplayer:
adb shell screenrecord --output-format=raw-frames - | mplayer -demuxer
rawvideo -rawvideo w=320:h=240:format=rgb24 -
Change-Id: Ib5ed508fdca3a5d63e973c5189b3677c2d92b43f
This adds the ability to dump frames as RGB data with a minimal
frame header. Only recommended for devices with small displays.
Enable with "--output-format=frames".
The "--raw" option is now selected with "--output-format=h264".
Change-Id: I18d3d4a87cd056d7acf0658985a90dc5895dbfb6
This adds an experimental (undocumented) "--raw" flag. If set, we
output an H.264 byte stream rather than a .mp4 file.
If the filename is "-", we send the output to stdout. If stdout is a
tty, we reconfigure it to avoid CRLF line termination over adb.
Change-Id: I5193f6193c9c1a59f92eefad0ed399f24afbf6de
- change internal sized types to use stdint.h
- printf & scanf formats
- size_t or unsigned int for iterators
Change-Id: Id993a70d8bf54c667c5d652b34179a2c727ed446
This adds the ability to dump frames as RGB data with a minimal
frame header. Only recommended for devices with small displays.
Enable with "--output-format=frames".
The "--raw" option is now selected with "--output-format=h264".
Bug 13140019
Change-Id: I61bee55cea97db3134a91e7ea06106783e5bf340
Contains the necessary changes to make frameworks/av build and work
on a 64-bit machine.
Signed-off-by: Craig Barber <craig.barber@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
Change-Id: I725feaae50ed8eee25ca2c947cf15aee1f395c43
This adds an experimental (undocumented) "--raw" flag. If set, we
output an H.264 byte stream rather than a .mp4 file.
If the filename is "-", we send the output to stdout. If stdout is a
tty, we reconfigure it to avoid CRLF line termination over adb.
Bug 12239887
Change-Id: I00ceb628bd885916eaf4658ea7f08f620ad74c03
Fixes to issues identified during code review.
(cherry-pick from I2203694acb5c0544878f64f4347d29ad1a0725c4)
Change-Id: I58fcb5264fc17b26fac4b03f95d35262e9e199e2
The --bugreport option adds two visible features: (1) a timestamp
overlay that (mostly) matches logcat, making it easier to match what
appears in the video with what's in the log, and (2) an "info page"
at the start of the video that shows the system configuration.
Enabling this option adds an additional composition step,
increasing the overhead of screenrecord. Depending on the device
and circumstances, this may be unnoticeable or very pronounced.
If --bugreport is not enabled, the overhead of screenrecord is
unchanged.
We also now track device orientation changes. This is currently
detected by polling surfaceflinger, which is suboptimal. As a
result, we detect the rotation too late, and get a weird mixed
frame before the start of the animation for 90-degree changes.
Also, allow the bit rate to be specified as e.g. "4M" for 4Mbps.
Also, --rotate is now deprecated.
Bug 11220305
Bug 11136964
(cherry pick from Ibb94b81d2f73547b95d7a47e027da75fab187a4f)
Change-Id: I829a91aaca5ab82a07c14172d9e188ec38f14e57
The --bugreport option adds two visible features: (1) a timestamp
overlay that (mostly) matches logcat, making it easier to match what
appears in the video with what's in the log, and (2) an "info page"
at the start of the video that shows the system configuration.
Enabling this option adds an additional composition step,
increasing the overhead of screenrecord. Depending on the device
and circumstances, this may be unnoticeable or very pronounced.
If --bugreport is not enabled, the overhead of screenrecord is
unchanged.
We also now track device orientation changes. This is currently
detected by polling surfaceflinger, which is suboptimal. As a
result, we detect the rotation too late, and get a weird mixed
frame before the start of the animation for 90-degree changes.
Also, allow the bit rate to be specified as e.g. "4M" for 4Mbps.
Also, --rotate is now deprecated.
Bug 11220305
Bug 11136964
Change-Id: Ibb94b81d2f73547b95d7a47e027da75fab187a4f
If configuring the encoder for display-size recording fails, we drop
back to 720p. This was done a bit too literally, and didn't look
good in portrait mode. Rotate the fallback size as needed.
Bug 10826876
Change-Id: Id3130471fc1467afa8bf91d75c9d4a49245253c3
Recordings are now limited to 3 minutes. The time can be set lower
with the --time-limit option.
Bug 10529645
Change-Id: I6ac19b9da8d616d38262414c2e821d56efcec55d
Use an "am broadcast" command to notify the media scanner that
a new video file is available.
Bug 10096103
Change-Id: I8261d81d96832969ebb9031a9766c1b1f2a569ed
Attempt to create the output file before handing it to MediaMuxer,
which doesn't report file-open failures in a useful way.
Change-Id: Ie24ff577dd50e185b4eb72575684d23a46f38d3d
Instead of 720p, use the screen dimensions as the default video
size. For example, a phone with a 768x1280 display would be
recorded as a 768x1280 video when in portrait, or a 1280x768
video when in landscape.
If the device is not able to record at that resolution, we
fall back to 720p.
Also, fixed a problem introduced by a buffer timestamp change.
Change-Id: I7230ddb323c669ab07327f26df8d103c192c21d3