Skip to content
Snippets Groups Projects
  1. Oct 20, 2021
    • Chih-Yu Huang's avatar
      Merge latest version to Android master. · 78318668
      Chih-Yu Huang authored
      Bug: None
      Test: mmm external/v4l2_codec2
      Change-Id: I21d5d30ce32279dfb1cbe2b40d435d2e9707f5aa
      78318668
    • David Staessens's avatar
      v4l2_codec2 encoder: Add missing support for LEVEL_AVC_4_2. · fdd47a25
      David Staessens authored
      Currently the C2Config::LEVEL_AVC_4_2 level is not advertised as
      supported value for the C2_PARAMKEY_PROFILE_LEVEL parameter. This
      causes the V4L2 encoder to use the next supported level LEVEL_AVC_5,
      making the EncoderProfileLevelTest#testValidateProfileLevel CTS test
      fail.
      
      BUG: 188415875
      Test: EncoderProfileLevelTest#testValidateProfileLevel
      Change-Id: Ifd5caa6d70c592a7379260876600b075432ac7d8
      fdd47a25
    • David Staessens's avatar
      v4l2_codec2 encoder: Add support for configuring the bitrate mode. · df5be4b9
      David Staessens authored
      This CL adds support for the C2_PARAMKEY_BITRATE_MODE parameter to the
      v4l2 encoder. This parameter allows configuring the bitrate mode used
      to encode a video.
      
      The supported bitrate modes are:
      - C2Config::BITRATE_VARIABLE
      - C2Config::BITRATE_CONST
      
      Note: Currently the C2 framework does not support configuring the peak
      bitrate, which is used when the bitrate mode is set to VBR. Instead we
      set the peak bitrate to a multiple of the target bitrate.
      
      Note: Submit after support for V4L2_CID_MPEG_VIDEO_BITRATE_PEAK and
      V4L2_CID_MPEG_VIDEO_BITRATE_MODE has been added to the virto encoder in
      crrev.com/c/2944506.
      
      BUG: 190336806
      BUG: 181514834
      Test: arc.VideoEncodeAccel.h264_192p_i420_vm
      Change-Id: I95d8f9921c1ba475ea8c65760d3c18e5e2818d5e
      df5be4b9
  2. May 12, 2021
    • David Staessens's avatar
      v4l2_codec2: Switch from media::VideoCodecProfile to C2 profiles. · 52081102
      David Staessens authored
      This CL changes all uses of the media::VideoCodecProfile type that was
      copied from Chrome to their respective C2 profile counterparts. This
      removes the additional conversion between C2 profiles,
      VideoCodecProfile and V4L2 profiles. The video_codecs.h/cc files are
      removed.
      
      Bug: 155138142
      Test: arc.VideoEncodeAccel.h264_192p_i420_vm
      Change-Id: I0df03215e51def6379c468a4c189104d5fbde0e9
      52081102
    • David Staessens's avatar
      v4l2_codec2: Use C2Config::PROFILE_VP8_0. · 128a6ee1
      David Staessens authored
      This CL changes the V4L2 encoder component to use the newly introduced
      C2Config::PROFILE_VP8_0 profile. This profile was initially not
      present, complicating code dealing with VP8.
      
      Note: Submit after ag/13976507
      
      Bug: 155138142
      Test: arc.VideoEncodeAccel.vp8_192p_i420_vm
      Change-Id: I4256a4871221d3f417b5f1a003cc9fcfdb3dcd0e
      128a6ee1
    • David Staessens's avatar
      v4l2_codec2: Remove minimum H.264 profile workaround in V4L2 encoder. · eca6155b
      David Staessens authored
      This CL removes a workaround that was added to tackle a quality issue
      in b/114332827. This workaround causes the android.mediav2.cts.
      EncoderProfileLevelTest#testValidateProfileLevel[6(video/avc)]
      test to fail.
      
      It's not clear whether the issue is still present so some quality check
      CTS tests might start failing, but we should tackle these issues at the
      source.
      
      Bug: 184015100
      Test: android.mediav2.cts.EncoderProfileLevelTest
      Change-Id: I55f275af4a421509a776e39bed669365159ba2ee
      eca6155b
    • David Staessens's avatar
      v4l2_codec2: Switch from media::VideoCodec to common VideoCodec class. · 1fb283af
      David Staessens authored
      This CL removes all uses of the media::VideoCodec type that was copied
      from Chrome, in favor of the VideoCodec definition in
      common/VideoTypes.h. The media::VideoCodec type is removed.
      
      Bug: 155138142
      Test: arc.VideoEncodeAccel.h264_192p_i420_vm
      Change-Id: I9a936bd54bc4232dfb5af016073c8cf8cc86077c
      1fb283af
    • David Staessens's avatar
      v4l2_codec2: Use Android Size instead of Chrome Size. · ee231c7e
      David Staessens authored
      This CL changes the V4L2 decoder and encoder to use the Android Size
      structure instead of the one copied from Chrome, the Chrome size.h file
      is removed.
      
      Bug: 155138142
      Test: arc.VideoEncodeAccel.h264_192p_i420_vm
            arc.VideoDecodeAccel.h264_vm
      Change-Id: I8f63e847d8cf4ffd33621706287a44c93a4864fd
      ee231c7e
    • David Staessens's avatar
      v4l2_codec2: Remove video_encode/decode_accelerator files. · e0f265c1
      David Staessens authored
      This CL cleans up the video_encode_accelerator.h/cc and
      video_decode_accelerator.h/cc files. These files were copied from
      Chrome to help with the development of the V4L2 encoder and decoder,
      but most off their functionality has already been removed in a previous
      CL. The remaining functionality is integrated into the V4L2Device so
      these files can be removed now.
      
      Bug: 155138142
      Test: arc.VideoEncodeAccel.h264_192p_i420_vm
      Change-Id: I4591e3d03f5ebc6d568cc718ccde5df05af37b36
      e0f265c1
    • David Staessens's avatar
      v4l2_codec2: Adapt V4L2 device and V4L2 device poller for Android. · 2a741c31
      David Staessens authored
      This CL reworks the V4L2 device and V4L2 device poller code that was
      branched from their Chrome counterparts:
      - Adhere to the Android coding style.
      - Make use of Android logging mechanisms.
      - Make use of Android assert macros.
      
      Bug: 155138142
      Test: arc.VideoEncodeAccel.h264_192p_i420_vm
      Change-Id: I4842624e7fae9fc3f52d90dc90a5e7c026c63513
      2a741c31
    • David Staessens's avatar
      v4l2_codec2: Move V4L2 device and device poller to common code. · 69f5a3b9
      David Staessens authored
      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
      69f5a3b9
  3. Mar 29, 2021
    • Chih-Yu Huang's avatar
      components: Add C2_PARAMKEY_COMPONENT_KIND parameter · 5aaed6a7
      Chih-Yu Huang authored
      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
      5aaed6a7
  4. Mar 15, 2021
    • David Staessens's avatar
      v4l2_codec2: Add support for VP8/VP9 to the V4L2 encoder. · 01d7532a
      David Staessens authored
      This CL adds support for the VP8 and VP9 codecs to the Android codec2
      V4L2 encode component.
      
      note: VP8 is currently disabled on most Intel devices due to
            b/158655609
      
      Bug: 155138243
      Test: tast run DUT arc.VideoEncodeAccel.vp8_1080p_i420 on hatch
            tast run DUT arc.VideoEncodeAccel.vp9_1080p_i420 on rammus
      Change-Id: Ic3d58d711633b4ffb481813b3016d7c369a9f8f0
      01d7532a
  5. Sep 08, 2020
    • David Staessens's avatar
      v4l2_codec2: Don't use BufferUsage::VIDEO_ENCODER for input buffers. · e8a0e069
      David Staessens authored
      This CL removes the BufferUsage::VIDEO_ENCODER flag from input buffers.
      Currently the format convertor is always enabled as the encoder on
      Chrome side only supports the NV12 format. This means it's not useful
      to add the VIDEO_ENCODER buffer flag to input buffers. Currently
      zero-copy is not supported yet, so when using that flag an additional
      buffer will be allocated on host side and a copy will be performed
      between the guest and host buffer to keep them in sync. This is
      wasteful as the buffer is only used on guest side by the format
      convertor which converts and copies the buffer into another buffer.
      
      Additionally this causes issues on hatch as the YV12 format is used
      which is not supported by minigbm on hatch. (see b/162796596)
      
      Bug: 162796596
      Test: tast run $HOST arc.VideoEncodeAccel.h264_360p_i420_vm on
            hatch-arc-r and verified encoded video
      Change-Id: Iffcaafbe12fa1f9af53ac7c4e88ee98ec40aedec
      e8a0e069
  6. Aug 31, 2020
  7. 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
  8. May 28, 2020
Loading