Age | Commit message (Collapse) | Author |
|
This adds support for the HEVC/H265 codec to the Android codec2 V4L2
decode component.
Bug: 215043150
Bug: 183217901
Test: ExoPlayer works with HEVC on guybrush w/ codecs added and
corresponding ChromeOS CLs for crosvm/libvda
Change-Id: I3707e9730d245871b74982527edfebe81b484e8a
(cherry picked from commit 05bacef7fa53541f21c85f26f6f8351dcdfd7f0e)
|
|
This CL Move the V4L2 device and V4L2 device poller files to the common
code folder. In a next step these files will be cleaned up and reworked
into proper Android code, but splitting the move into a separate CL
makes the review process a lot easier.
Bug: 155138142
Test: arc.VideoEncodeAccel.h264_192p_i420_vm
Change-Id: I4c4c9d7f5c7e85feed10ed1e3fd9b8fa14ca67ae
|
|
This CL adds C2_PARAMKEY_COMPONENT_KIND parameter for both decode and
encode components.
Bug: 183910489
Test: android.media.cts.AdaptivePlaybackTest#testH264_adaptiveDrc
Change-Id: I8a90ed95aefa7d6dd018ead3ec0dfa79d4960ee9
|
|
Originally we use C2AllocatorBlob for linear allocator. Actually the
recommended linear allocator is C2AllocatorIon. The better way is to
use C2AllocatorStore::DEFAULT_LINEAR id, and choose C2AllocatorBlob
by setting the value of "debug.stagefright.c2-poolmask" at device.mk.
Bug: 170199771
Test: android.media.cts.AdaptivePlaybackTest
Change-Id: I8976009fe8624009e78fe115554609da74901431
(cherry picked from commit d352bd3b4b4a5fc4f74abc12d0f9697989ac0800)
|
|
This CL removes unused variables at V4L2DecodeInterface, and uses the
correct picture size to calculate the size of input buffers.
Bug: 175270843
Test: com.google.android.media.gts.WidevineH264PlaybackTests#testCbcsL1WithUHD30
Change-Id: Ieaf4ee4355d462f9f70f890ef8dd2e140ac33771
|
|
InputBufferManager notifies the codec2 framework when the component no
longer has any references to an input buffer. While a dedicated release
notification is necessary in some circumstances, the release can usually
be done when the corresponding work item is completed, to reduce the
amount of IPC. This change sets the notification interval used by
InputBufferManager to reduce how often a dedicated release notification
is sent.
Bug: 172184040
Test: tast run DUT arc.VideoDecodeAccel.vp8_vm
Change-Id: Id6371d328bb00730b50d3b3075eccf4010554f27
|
|
This CL adds the comment that we forgot to mention in ag/12444944.
Bug: 165826281
Test: None
Change-Id: I27c592ea1aa946e51c7c3075100c0e67761c1dee
|
|
Every C2ComponentInterface would be initiated at Android bootup time.
We want to avoid heavy action in the interface initialization.
This CL relaxes the parameter check by using the maximum fixed number
instead of querying the capability from V4L2 device.
Bug: 165826281
Test: pass tast.arc.VideoDecodeAccel.h264_vm
Change-Id: Id15deb2715f88dca3618c571087aa6d08410b7e3
|
|
The V4L2 stateful API requires the caller pass the same buffers to the
output queue slot. Originally we use C2PooledBlockPool for byte buffer
mode, but C2PooledBlockPool cannot get buffer identifier.
This CL switches to use C2VdaPooledBlockPool, which guarantees to
return a fixed set of buffers and could query the buffer index.
Bug: 161770200
Test: pass e2e test
Change-Id: Ief2bdd9ceb6655cd47627ccf6c239a1e6d73482e
|
|
In this CL, V4L2DecodeComponent supports the protected playback by
using C2VdaBqBlockPool. To use C2VdaBqBlockPool, there are 2 specific
requirements compared to a normal C2BlockPool:
1. Call C2VdaBqBlockPool::requestNewBufferSet() before fetching blocks
2. Call MarkBlockPoolDataAsShared() after creating C2ConstGraphicBlock
Bug: 153608694
Test: Run ExoPlayer Demo apk: Widevine dash policy tests
Change-Id: Idce298d13cb2fb7f9dd88ae43cd4c8f0cb18dffb
|
|
C2_PARAMKEY_OUTPUT_DELAY is the number of additional output frames
that needs to be generated before an output can be released by the
component.
H264 may reorder the output frames, so we set C2_PARAMKEY_OUTPUT_DELAY
to the possible maximum number of reoder frames.
Bug: 153403351
Test: pass E2E test TestSimpleDecode for H264
Change-Id: I13ad1dc60bb8674e09250163ec6c6b186fec26a4
|
|
This CL implements V4L2DecodeComponent, a decode C2Component via V4L2
API. It mainly contains these parts:
- VideoDecoder:
An interface for video decoding, similar to media::VideoDecoder at
Chromium project.
- V4L2Decoder:
An implementation of VideoDecoder via V4L2 stateful API. We wrap all
V4L2-related logic in this class
- VideoFrame
The data structure to represent the output buffer of VideoDecoder.
It encapsulates a C2GraphicBlock and only exposes the essential
information of physical buffers.
- VideoFramePool:
The buffer pool used by VideoDecoder. It encapsulates C2BlockPool
and provides asynchronous method to fetch buffers.
- V4L2DecodeComponent, V4L2DecodeInterface:
The C2Component implementation that delegates the decode request to
V4L2Decoder.
- V4L2ComponentFactory:
The C2ComponentFactory that creates V4L2DecodeComponent.
Bug: 152714603
Test: mmm external/v4l2_codec2/
Test: Run e2e test and make sure the V4L2DecodeComponent is running
Change-Id: I23e9b3553b62dd6c83d943d7787297305372c37d
|