Skip to content
Snippets Groups Projects
  1. Oct 20, 2021
  2. Jun 07, 2021
    • Chih-Yu Huang's avatar
      components: link libv4l2_codec2_common as shared library · 57904c46
      Chih-Yu Huang authored
      Originally libv4l2_codec2_common is small library that only contains
      some constant definitions, so it's efficient to link it as static
      library. Now the library becomes larger. This CL changes to link it as
      shared library to prevent duplicating the content into its dependency
      libraries and binaries.
      
      Bug: 160110407
      Test: mmm external/v4l2_codec2
      
      Change-Id: Ie0c08bdd694d7226ce430af9148e0c8919126c79
      57904c46
  3. May 12, 2021
    • David Staessens's avatar
      v4l2_codec2: remove libv4l2_codec2_accel library. · 2e813d9b
      David Staessens authored
      This CL removes the libv4l2_codec2_accel library now all files have
      been removed from the library, and updates dependent modules.
      
      Bug: 155138142
      Test: m -j32
      Change-Id: I45629ae702b12aedf9a6be256d955e702da8245d
      2e813d9b
    • David Staessens's avatar
      v4l2_codec2: Split up V4L2EncodeComponent. · 39d770c9
      David Staessens authored
      This CL splits the V4L2EncodeComponent in a codec2 component and a V4L2
      encoder part. This improves the encapsulation and flexibility of the
      encoder and makes maintenance easier.
      
      As a lot of the encode/drain/flush logic has been affected by the
      split, various changes needed to be made:
      - The drain/flush flows have been reworked.
      - Various changes have been made to the input/output buffer flows to
        match the new requirements and restrictions.
      - The BitstreamBuffer class is used for output, to avoid having Codec2
        logic in the V4L2 encoder class.
      - A queue was introduced for work waiting for input format conversion.
      - Some outdated comments have been removed.
      
      Bug: 143333813
      Test: arc.VideoEncodeAcel.* and various CTS tests
      Change-Id: Ie782b74daa3662a1ce1d441b5ba5e48eaa1057d3
      39d770c9
  4. Mar 29, 2021
    • Chih-Yu Huang's avatar
      V4L2ComponentStore: Avoid dynamic loading shared library · 50e77c4f
      Chih-Yu Huang authored
      Originally V4L2ComponentStore and V4L2ComponentFactory depends on each
      other. To avoid circular dependency, V4L2ComponentStore dynamically
      loads the shared library of V4L2ComponentFactory.
      
      This CL removes the dependency from V4L2ComponentFactory to
      V4L2ComponentStore, and also avoid dynamic loading the shared library.
      
      Bug: 160110846
      Test: android.media.cts.AdaptivePlaybackTest
      
      Change-Id: I864b642035ea5b1572ee1d474ad12706147cbed1
      50e77c4f
  5. Mar 01, 2021
    • Chih-Yu Huang's avatar
      plugin_store: add libcodec2_internal header_libs · 1590d243
      Chih-Yu Huang authored
      At ag/13473071 we expose C2BufferQueueBlockPoolData at
      C2BqBufferPriv.h, which needs C2BlockInternal.h header. This CL adds
      the corresponding header_libs at plugin_store because it includes
      C2BqBufferPriv.h.
      
      Bug: 174188958
      Test: m -j32
      
      Change-Id: I0eec5db85b6d7d05ad97df142cb61a9ea2adbe76
      1590d243
  6. Feb 13, 2021
    • Bob Badour's avatar
      [LSC] Add LOCAL_LICENSE_KINDS to external/v4l2_codec2 · b1d153c0
      Bob Badour authored
      Added SPDX-license-identifier-BSD to:
        accel/Android.bp
        common/Android.bp
        components/Android.bp
        plugin_store/Android.bp
        service/Android.bp
        store/Android.bp
        tests/c2_comp_intf/Android.bp
      
      Added SPDX-license-identifier-BSD legacy_unencumbered to:
        Android.bp
        tests/c2_e2e_test/jni/Android.mk
      
      Bug: 68860345
      Bug: 151177513
      Bug: 151953481
      
      Test: m all
      
      Exempt-From-Owner-Approval: janitorial work
      Change-Id: I4ef032a3849d650e13761a868b45309275d408a2
      b1d153c0
  7. Jan 12, 2021
    • David Stevens's avatar
      components: Set InputBufferManager interval · 79dd1273
      David Stevens authored
      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
      79dd1273
  8. Aug 31, 2020
    • David Staessens's avatar
      v4l2_codec2: Remove duplicated HalPixelFormat and InputCodec types. · efdbd3dc
      David Staessens authored
      This CL removes the duplicate HalPixelFormat and InputCodec types in
      common.h that are also present in VideoTypes.h.
      
      VideoTypes.h is moved to the common/ folder so it can also be used by
      other classes.
      
      note: Submit together with ag/12467730
      
      Bug: 143333813
      Test: tast run $HOST arc.VideoEncodeAccel.h264_vm on hatch-arc-r
      Change-Id: I93bca14a3b2f0c4c49104149d5683193554ba3eb
      efdbd3dc
  9. Jul 22, 2020
    • David Staessens's avatar
      v4l2_codec2: Implement Codec2 V4L2 encode component. · 30cf47e3
      David Staessens authored
      This CL introduces the first version of the new codec2 V4L2 encoder.
      The V4L2EncodeComponent currently only supports H264, support for
      additional formats will introduced later.
      
      The encode component is developed and tested on ARC++ and the initial
      version is not functional yet on ARCVM. The changes required to fully
      enable the encoder on ARCVM (such as support for DMABufs) will be
      introduced in follow-up CLs.
      
      Currently the component makes heavy use of Chromium helpers as it's
      based on the Chromium V4L2VideoEncodeAccelerator, but in the future
      the amount of dependencies will be reduced.
      
      The new V4L2 encoder is currently not enabled by default, which requires
      additional changes in media_codecs_c2.xml.
      
      Bug: 143333813
      Test: mmm external/v4l2_codec2
      Change-Id: I59ba52e8f85aa40c8d23a451fb2842a7a421412a
      30cf47e3
  10. Jul 09, 2020
    • Chih-Yu Huang's avatar
      V4L2DecodeComponent: Support protected playback. · bcc6ef63
      Chih-Yu Huang authored
      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
      bcc6ef63
    • David Staessens's avatar
      v4l2_codec2: Enable thread safety checks. · 23c09f0f
      David Staessens authored
      This CL adds the -Wthread-safety flag to the codec2 components build
      file, so thread annotation such as GUARDED_BY can be used.
      
      Bug: 160110407
      Test: m -j32
      Change-Id: If39ae7694598d81076e18d5332fc759b74787a5d
      23c09f0f
  11. Jun 02, 2020
    • Chih-Yu Huang's avatar
      components: Implement Codec2.0 V4L2 decode component · 6a7255ad
      Chih-Yu Huang authored
      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
      6a7255ad
Loading