[mythtv-commits] [MythTV/mythtv] 0024c4: MythVAAPIInterop: Prefer GLXPixmap support over GL...

Mark Kendall noreply at github.com
Fri Mar 8 07:46:39 UTC 2019


  Branch: refs/heads/devel/2019-render
  Home:   https://github.com/MythTV/mythtv
  Commit: 0024c40336e4f58304552245a281abf166168f56
      https://github.com/MythTV/mythtv/commit/0024c40336e4f58304552245a281abf166168f56
  Author: Mark Kendall <mark.kendall at gmail.com>
  Date:   2019-03-07 (Thu, 07 Mar 2019)

  Changed paths:
    M mythtv/libs/libmythtv/mythvaapiinterop.cpp

  Log Message:
  -----------
  MythVAAPIInterop: Prefer GLXPixmap support over GLXCopy

- looking at the libva source, GLXCopy performs the same copy to a
GLXPixmap plus a render to texture - hence not as fast.
- GLXPixmap is always available when GLXCopy is available, so GLXCopy
may be removed in the future.


  Commit: 853440d1662f74b52840000c809ab7255cffaa63
      https://github.com/MythTV/mythtv/commit/853440d1662f74b52840000c809ab7255cffaa63
  Author: Mark Kendall <mark.kendall at gmail.com>
  Date:   2019-03-07 (Thu, 07 Mar 2019)

  Changed paths:
    M mythtv/libs/libmythtv/avformatdecoder.cpp

  Log Message:
  -----------
  AvFormatDecoder: Fix a logic warning


  Commit: d00954f2375d2967d0ff35c1fca25fb3bbb153cc
      https://github.com/MythTV/mythtv/commit/d00954f2375d2967d0ff35c1fca25fb3bbb153cc
  Author: Mark Kendall <mark.kendall at gmail.com>
  Date:   2019-03-07 (Thu, 07 Mar 2019)

  Changed paths:
    M mythtv/libs/libmythtv/mythmediacodecinterop.cpp
    M mythtv/libs/libmythtv/mythopenglinterop.h
    M mythtv/libs/libmythtv/mythvaapiinterop.cpp
    M mythtv/libs/libmythtv/mythvaapiinterop.h
    M mythtv/libs/libmythtv/mythvtbinterop.cpp
    M mythtv/libs/libmythtv/videoout_opengl.cpp
    M mythtv/libs/libmythtv/videoout_opengl.h

  Log Message:
  -----------
  VideoOutputOpenGL: Fix pause frame for hardware frames

- retain the most recent frame for pause as we need a valid video frame
to access the interop class
- software frames are untouched
- optimise rendering VAAPI GLX pause frames by avoiding unnecessary
updates when we already have the current frame in texture memory.


  Commit: 69cf7fc411465dbf533d0d6c52aebed98284cf2e
      https://github.com/MythTV/mythtv/commit/69cf7fc411465dbf533d0d6c52aebed98284cf2e
  Author: Mark Kendall <mark.kendall at gmail.com>
  Date:   2019-03-07 (Thu, 07 Mar 2019)

  Changed paths:
    M mythtv/libs/libmythtv/mythplayer.cpp

  Log Message:
  -----------
  MythPlayer: Fix seek deadlocks when using hardware decoding

- seeking often triggers a recreation of the hardware decoder context
- all hardware decoders that use direct rendering will use a callback to
MythMainWindow to create GPU related resources in the correct thread
(MythMainWindow is used as it is the only globally available, event
driven object in the UI thread).
- during WaitForSeek the main loop is blocked and the callbacks are not
processed
- so force qApp to process them and prevent the deadlock


  Commit: abb58425477f30b525f101d5fa3969d050b4af0e
      https://github.com/MythTV/mythtv/commit/abb58425477f30b525f101d5fa3969d050b4af0e
  Author: Mark Kendall <mark.kendall at gmail.com>
  Date:   2019-03-08 (Fri, 08 Mar 2019)

  Changed paths:
    M mythtv/libs/libmythtv/videobuffers.cpp

  Log Message:
  -----------
  Hardware decode: Fix intermittent reference counting error

- ClearAfterSeek was not correctly releasing decoder buffer references
- but did highlight that the function is probably not working as
expected.
- e.g. VideoBuffers::ClearAfterSeek is called after a Rewind. With a
VAAPI hardware decoder, by the time ClearAfterSeek was called, all of
the video buffers had already been re-requested (VideBuffers were already
cleared in AvFormatDecoder seek code). This wreaks havoc on playback...


  Commit: 56556bd5a5b8c2a3872b69999c94922175b23802
      https://github.com/MythTV/mythtv/commit/56556bd5a5b8c2a3872b69999c94922175b23802
  Author: Mark Kendall <mark.kendall at gmail.com>
  Date:   2019-03-08 (Fri, 08 Mar 2019)

  Changed paths:
    M mythtv/libs/libmythtv/avformatdecoder.cpp

  Log Message:
  -----------
  AvFormatDecoder::SeekReset Flush the VideoBuffers first

- in the event that a hardware decoder is in use, this ensures buffers
are returned to the decoder before it flushes internally - which may
require a valid, available output buffer (e.g. MediaCodec)


  Commit: 514f6f5ec5dda24a20237f20f2a897a4317cf327
      https://github.com/MythTV/mythtv/commit/514f6f5ec5dda24a20237f20f2a897a4317cf327
  Author: Mark Kendall <mark.kendall at gmail.com>
  Date:   2019-03-08 (Fri, 08 Mar 2019)

  Changed paths:
    M mythtv/libs/libmythtv/videoout_opengl.cpp
    M mythtv/libs/libmythtv/videoout_opengl.h

  Log Message:
  -----------
  VideoOutputOpenGL: Override VideoOutput::DiscardFrames

- this allows us to release any frames held for pause (hardware decode
only).
- as noted in the code, this should/could be relaxed for most decoders
as it has a negative impact on frame by frame seeking (i.e. there is
nothing to display while seeking)


Compare: https://github.com/MythTV/mythtv/compare/3c57a6ad40da...514f6f5ec5dd


More information about the mythtv-commits mailing list