C2VdaBqBlockPool: store registered C2GraphicAllocation instead of GraphicBuffer

C2ArcProtectedGraphicAllocator allocates the protected buffer when
priorGraphicAllocation() is called, and releases the protected buffer
if all the corrresponding C2GraphicAllocations are released.

Originally, we store the the registered graphic buffers with
GraphicBuffer. Each time when fetchGraphicBlock() is called, we
call priorGraphicAllocation() to convert GraphicBuffer to
C2GraphicAllocation. The component releases the C2GraphicAllocation
after decoding a frame and passing it to framework. So at the end we
continue allocating and releasing protected buffers during decoding.

This CL changes to store C2GraphicAllocation directly. We don't call
priorGraphicAllocation() when recycling the buffer, and the registered
C2GraphicAllocations are released when resolution change or component
is destroyed.

Bug: 181541291
Test: android.media.cts.AdaptivePlaybackTest

Change-Id: Ib0cf9fe9d4609f3a566c514429d281c1c54b458d
1 file changed
tree: 28ae36bfe6041f6b7dc8dedba2acbe31455bbe86
  1. accel/
  2. common/
  3. components/
  4. plugin_store/
  5. service/
  6. store/
  7. tests/
  8. .clang-format
  9. Android.bp
  10. METADATA
  11. MODULE_LICENSE_BSD
  12. NOTICE
  13. OWNERS
  14. PREUPLOAD.cfg
  15. README.md
README.md

V4L2-based Codec2 Component Implementation

Description of Sub-folders

  • accel/ Core V4L2 API and codec utilities, ported from Chromium project.

  • common/ Common helper classes for both components/ and store/.

  • components/ The C2Component implementations based on V4L2 API.

  • store/ The implementation of C2ComponentStore. It is used for creating all the C2Components implemented at components/ folder.

  • service/ The Codec2's V4L2 IComponentStore service. The service initiates the component store implemented at store/ folder, and registers it as the default service.