1. 19 Jan, 2018 1 commit
  2. 14 Dec, 2017 1 commit
    • wm4's avatar
      avcodec: add metadata to identify wrappers and hardware decoders · b945fed6
      wm4 authored
      Explicitly identify decoder/encoder wrappers with a common name. This
      saves API users from guessing by the name suffix. For example, they
      don't have to guess that "h264_qsv" is the h264 QSV implementation, and
      instead they can just check the AVCodec .codec and .wrapper_name fields.
      
      Explicitly mark AVCodec entries that are hardware decoders or most
      likely hardware decoders with new AV_CODEC_CAPs. The purpose is allowing
      API users listing hardware decoders in a more generic way. The proposed
      AVCodecHWConfig does not provide this information fully, because it's
      concerned with decoder configuration, not information about the fact
      whether the hardware is used or not.
      
      AV_CODEC_CAP_HYBRID exists specifically for QSV, which can have software
      implementations in case the hardware is not capable.
      
      Based on a patch by Philip Langdale <philipl@overt.org>.
      
      Merges Libav commit 47687a2f.
      b945fed6
  3. 26 Nov, 2017 3 commits
    • Mark Thompson's avatar
      lavc: Delete all fake hwaccels · da4e02b1
      Mark Thompson authored
      They are now unused.
      da4e02b1
    • Mark Thompson's avatar
      lavc: Use hardware config information in ff_get_format() · 67e81d79
      Mark Thompson authored
      This removes the dependency that hardware pixel formats previously had on
      AVHWAccel instances, meaning only those which actually do something need
      exist after this patch.
      
      Also updates avcodec_default_get_format() to be able to choose hardware
      formats if either a matching device has been supplied or no additional
      external configuration is required, and avcodec_get_hw_frames_parameters()
      to use the hardware config rather than searching the old hwaccel list.
      
      The FF_CODEC_CAP_HWACCEL_REQUIRE_CLASS mechanism is deleted because it
      no longer does anything (the codec already contains the pointers to the
      matching hwaccels).
      67e81d79
    • Mark Thompson's avatar
      lavc: Add hardware config metadata for decoders supporting hardware output · 758fbc54
      Mark Thompson authored
      This includes a pointer to the associated hwaccel for decoders using
      hwaccels - these will be used later to implement the hwaccel setup
      without needing a global list.
      
      Also added is a new file listing all hwaccels as external declarations -
      this will be used later to generate the hwaccel list at configure time.
      758fbc54
  4. 20 Nov, 2017 1 commit
  5. 10 Nov, 2017 2 commits
    • wm4's avatar
      avcodec: allow multiple hwaccels for the same codec/pixfmt · ae5046e4
      wm4 authored
      Currently, AVHWAccels are looked up using a (codec_id, pixfmt) tuple.
      This means it's impossible to have 2 decoders for the same codec and
      using the same opaque hardware pixel format.
      
      This breaks merging Libav's CUVID hwaccel. FFmpeg has its own CUVID
      support, but it's a full stream decoder, using NVIDIA's codec parser.
      The Libav one is a true hwaccel, which is based on the builtin software
      decoders.
      
      Fix this by introducing another field to disambiguate AVHWAccels, and
      use it for our CUVID decoders. FF_CODEC_CAP_HWACCEL_REQUIRE_CLASS makes
      this mechanism backwards compatible and optional.
      ae5046e4
    • wm4's avatar
      avcodec/cuvid: rename cuvid.c to cuviddec.c · 55930494
      wm4 authored
      cuvid.c is used by Libav's CUVID hwaccel. Resolve the conflict and
      avoid future merge problems by renaming our decoder.
      Signed-off-by: 's avatarTimo Rothenpieler <timo@rothenpieler.org>
      55930494
  6. 28 Jul, 2017 1 commit
  7. 26 Jul, 2017 1 commit
  8. 01 Jun, 2017 1 commit
  9. 09 May, 2017 1 commit
  10. 04 May, 2017 1 commit
    • wm4's avatar
      cuvid: support AVCodecContext.hw_device_ctx API · c0f17a90
      wm4 authored
      This is a newer API that is intended for decoders like the cuvid
      wrapper. Until now, the wrapper required to set an awkward
      "incomplete" hw_frames_ctx to set the device. Now the device
      can be set directly, and the user can get AV_PIX_FMT_CUDA output
      for a specific device simply by setting hw_device_ctx.
      
      This still does a dummy ff_get_format() call at init time, and should
      be fully backward compatible.
      c0f17a90
  11. 23 Apr, 2017 1 commit
  12. 09 Mar, 2017 1 commit
  13. 18 Feb, 2017 2 commits
  14. 14 Feb, 2017 3 commits
  15. 23 Jan, 2017 1 commit
    • Pavel Koshevoy's avatar
      avcodec/cuvid: fail early if GPU can't handle video resolution · 9ea29985
      Pavel Koshevoy authored
      CUVID on GeForce GT 730 and GeForce GTX 1060 does not report any error when
      decoding 8K h264 packets. However, it does return an error during
      cuvidCreateDecoder call if the indicated video resolution is not
      supported.
      
      Given that stream resolution is typically known as a result of probing
      it is better to use this information during avcodec_open2 call to fail
      immediately, rather than proceeding to decode and never receiving any
      frames from the decoder nor receiving any indication of decode failure.
      Signed-off-by: 's avatarTimo Rothenpieler <timo@rothenpieler.org>
      9ea29985
  16. 12 Dec, 2016 1 commit
  17. 23 Nov, 2016 1 commit
    • Philip Langdale's avatar
      avcodec/cuvid: Restore initialization of pixel format in init() · dd10e725
      Philip Langdale authored
      I moved this into the handle_video_sequence callback because that's
      the earliest time you can make an accurate decision as to what the
      format should be.
      
      However, transcoding requires that the decision between using
      the accelerated PIX_FMT_CUDA vs a normal pix format happen at init()
      time. There is enough information available to make that decision
      and things work out with the underlying format only being discovered
      in the sequence callback.
      dd10e725
  18. 22 Nov, 2016 3 commits
  19. 30 Oct, 2016 1 commit
  20. 22 Oct, 2016 1 commit
  21. 04 Oct, 2016 1 commit
  22. 29 Sep, 2016 3 commits
  23. 23 Sep, 2016 3 commits
  24. 21 Sep, 2016 2 commits
  25. 17 Sep, 2016 2 commits
  26. 10 Sep, 2016 1 commit