1. 09 Jul, 2021 1 commit
  2. 01 Jul, 2021 2 commits
    • He Junyan's avatar
      plugins: encode: fix a deadlock because of _drain() · 677d1e01
      He Junyan authored
      We call gst_vaapiencode_drain() in gst_vaapiencode_change_state(),
      whose context does not hold the stream lock of the encoder. The
      current gst_vaapiencode_drain inside unlock/lock pair adds a extra
      lock count to the stream lock of encoder and causes hang later.
      We just remove the gst_vaapiencode_drain() and expand its logic
      correctly according to the lock/unlock context.
      
      Part-of: <!433>
      677d1e01
    • He Junyan's avatar
      libs: decoder: av1: Clean the film_grain_info field. · d152ab1d
      He Junyan authored
      We need to clean all film_grain_info fields when the film grain
      feature is not enabled. It may have random data because the picture
      parameter buffer is not cleaned.
      
      Part-of: <!434>
      d152ab1d
  3. 23 Jun, 2021 1 commit
  4. 10 Jun, 2021 1 commit
  5. 02 Jun, 2021 1 commit
  6. 01 Jun, 2021 1 commit
  7. 31 May, 2021 1 commit
  8. 21 May, 2021 1 commit
    • Víctor Manuel Jáquez Leal's avatar
      vaapi: Demote vaapidecodebin to rank NONE. · 7a25c5d4
      Víctor Manuel Jáquez Leal authored
      One of the main reasons of vaapidecodebin was because it mitigated the
      possible surface exhaustion. But that problem is currently
      solved. Nowadays, vaapidecodebin brings more problems than it
      solves. Thus this patch demotes vaapidecodebin to NONE rank while
      bumping PRIMARY + 1 the most common decoders.
      
      Part-of: <!426>
      7a25c5d4
  9. 20 May, 2021 1 commit
  10. 05 May, 2021 1 commit
  11. 23 Apr, 2021 1 commit
    • yuankun zhang's avatar
      libs: encoder: VP9: fix > 4k encode fail issue · 722d6bb6
      yuankun zhang authored
      The VP9 spec defines the MAX_TILE_WIDTH_B64(64), which is the maximum
      width of a tile in units of superblocks. So the max width of one tile
      should not be larger than 64x64=4096. When the width exceeds 4k, we
      need to split it into multiple tiles in columns. The current vp9 encoder
      does not handle this correctly.
      The command such as:
        gst-launch-1.0 videotestsrc ! video/x-raw,width=7680,height=4320 ! \
          vaapivp9enc ! fakesink
      will crash.
      
      Part-of: <!424>
      722d6bb6
  12. 08 Apr, 2021 1 commit
  13. 22 Mar, 2021 1 commit
  14. 19 Mar, 2021 1 commit
  15. 27 Feb, 2021 1 commit
  16. 04 Feb, 2021 1 commit
    • He Junyan's avatar
      plugins: postproc: Fix a problem of propose_allocation when passthrough. · 18f53097
      He Junyan authored
      We should query the downstream element to answer a precise allocation
      query when the passthrough mode is enabled.
      The current way still decides the allocation by the postproc itself. The
      pipeline such as:
        gst-launch-1.0 -v filesrc location=xxx.264 ! h264parse ! vaapih264dec ! \
        vaapipostproc ! fakevideosink silent=false sync=true
      will lose some info such as the GST_VIDEO_META_API_TYPE.
      
      Part-of: <!413>
      18f53097
  17. 29 Jan, 2021 2 commits
  18. 28 Jan, 2021 1 commit
    • Haihao Xiang's avatar
      libs: display: drm: fix set_device_path_from_fd · 23967fc0
      Haihao Xiang authored
      drmGetBusid() (GET_UNIQUE ioctl) won't return a valid bus id when
      drmSetInterfaceVersion() (SET_VERSION ioctl) hasn't been called(see[1]),
      so we can't get the right device path. Running test-display will get the
      error below:
      
      ** (test-display:18630): ERROR **: 10:26:00.434: could not create Gst/VA
      display
      
      Calling drmSetInterfaceVersion() before drmGetBusid() can't fix this
      issue because a special permission is required for SET_VERSION ioctl.
      
      This patch retrieves the device path from file descriptor via
      g_file_read_link()
      
      [1] https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/drm_ioctl.c#L48-L104
      
      Part-of: <!412>
      23967fc0
  19. 20 Jan, 2021 1 commit
    • Rafał Dzięgiel's avatar
      glx: Iterate over FBConfig and select 8 bit color size · c4e76d6f
      Rafał Dzięgiel authored
      Texture upload mechanism used by gstreamer-vaapi relies on 8 bpc.
      In latest mesa versions the first fbconfig might not be 8 bit, so iterate
      over it to find the correct config with supported values.
      
      This also adds 8 bit alpha size to the framebuffer configuration which is
      required to get it working properly.
      
      Part-of: <!410>
      c4e76d6f
  20. 11 Jan, 2021 3 commits
  21. 09 Jan, 2021 1 commit
  22. 05 Jan, 2021 2 commits
  23. 14 Dec, 2020 1 commit
  24. 12 Dec, 2020 1 commit
  25. 11 Dec, 2020 1 commit
    • He Junyan's avatar
      plugins: encode: unlock the stream lock before _flush() · 5bee0893
      He Junyan authored
      The current encoder will hang when EOS comes. When we call the
      gst_vaapi_encoder_encode_and_queue(), we should release the stream
      lock, just like what we do in gst_vaapiencode_handle_frame().
      
      The deadlock happens when: The input thread holding the stream lock
      is using gst_vaapi_encoder_create_coded_buffer() to acquire a coded
      buffer, while the output thread which holding the coded buffer resource
      is acquiring the stream lock in _push_frame() to push the data to
      down stream element.
      
      Part-of: <!404>
      5bee0893
  26. 08 Dec, 2020 1 commit
    • He Junyan's avatar
      libs: encoder: H264: Fix one assert in get_pending_reordered(). · 5997093b
      He Junyan authored
      gst_vaapi_encoder_h264_get_pending_reordered() does not consider the
      case for HIERARCHICAL_B mode. The pipeline:
      
      gst-launch-1.0  videotestsrc num-buffers=48 ! vaapih264enc prediction-type=2 \
      keyframe-period=32 ! fakesink
      
      get a assert:
      
      ERROR:../gst-libs/gst/vaapi/gstvaapiencoder_h264.c:1996:reflist1_init_hierarchical_b:
      assertion failed: (count != 0)
      
      The last few B frames are not fetched in correct order when HIERARCHICAL_B
      is enabled.
      
      We also fix a latent bug for normal mode. The g_queue_pop_tail() of B frames
      make the last several frames encoded in reverse order. The NAL of last few
      frames come in reverse order in the bit stream, though it can still output
      the correct image.
      
      Part-of: <!405>
      5997093b
  27. 06 Dec, 2020 1 commit
    • He Junyan's avatar
      libs: encoder: H265: Add screen content coding extensions support. · dfc73016
      He Junyan authored
      In scc mode, the I frame can ref to itself and it needs the L0 reference
      list enabled. So we should set the I frame to P_SLICE type. We do not need
      to change the ref_pic_list0/1 passed to VA driver, just need to enable the
      VAEncPictureParameterBufferHEVC->pps_curr_pic_ref_enabled_flag to notify
      the driver consider the current frame as reference. For bits conformance,
      the NumRpsCurrTempList0 should be incremented by one to include the current
      picture as the reference frame. We manually do it when packing the slice header.
      
      Command line like:
      gst-launch-1.0  videotestsrc num-buffers=10 ! \
      capsfilter caps=video/x-raw,format=NV12, framerate=30/1,width=640,height=360 ! \
      vaapih265enc ! capsfilter caps=video/x-h265,profile="{ (string)screen-extended-main }" ! \
      filesink location=out.265
      Can be used to specify that the encoder should use SCC profiles.
      
      Part-of: <!379>
      dfc73016
  28. 30 Nov, 2020 7 commits
  29. 27 Nov, 2020 1 commit