Skip to content
Snippets Groups Projects
  1. Sep 23, 2021
  2. Aug 26, 2021
  3. Aug 25, 2021
  4. Jul 09, 2021
  5. Jul 01, 2021
    • He Junyan's avatar
      plugins: encode: fix a deadlock because of _drain() · 677d1e01
      He Junyan authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      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 and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      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
  6. Jun 23, 2021
  7. Jun 10, 2021
  8. Jun 02, 2021
  9. Jun 01, 2021
  10. May 31, 2021
  11. May 21, 2021
    • Víctor Manuel Jáquez Leal's avatar
      vaapi: Demote vaapidecodebin to rank NONE. · 7a25c5d4
      Víctor Manuel Jáquez Leal authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      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
  12. May 20, 2021
  13. May 05, 2021
  14. Apr 23, 2021
    • 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
  15. Apr 08, 2021
  16. Mar 22, 2021
  17. Mar 19, 2021
  18. Feb 27, 2021
  19. Feb 04, 2021
    • He Junyan's avatar
      plugins: postproc: Fix a problem of propose_allocation when passthrough. · 18f53097
      He Junyan authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      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
  20. Jan 29, 2021
  21. Jan 28, 2021
    • 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
  22. Jan 20, 2021
    • 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
  23. Jan 11, 2021
  24. Jan 09, 2021
  25. Jan 05, 2021
  26. Dec 14, 2020
  27. Dec 12, 2020
  28. Dec 11, 2020
    • He Junyan's avatar
      plugins: encode: unlock the stream lock before _flush() · 5bee0893
      He Junyan authored and Víctor Manuel Jáquez Leal's avatar Víctor Manuel Jáquez Leal committed
      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
  29. Dec 08, 2020
    • 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
  30. Dec 06, 2020
    • He Junyan's avatar
      libs: encoder: H265: Add screen content coding extensions support. · dfc73016
      He Junyan authored and He Junyan's avatar He Junyan committed
      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
  31. Nov 30, 2020
Loading