[mythtv-commits] [MythTV/mythtv] e67f21: MythPlayer: Much improved decoder callback handling

Mark Kendall noreply at github.com
Thu Mar 19 16:44:47 UTC 2020

  Branch: refs/heads/master
  Home:   https://github.com/MythTV/mythtv
  Commit: e67f21b542604ec6e2cfa942c94128a4bba44ac3
  Author: Mark Kendall <mark.kendall at gmail.com>
  Date:   2020-03-19 (Thu, 19 Mar 2020)

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

  Log Message:
  MythPlayer: Much improved decoder callback handling

- use the decoder callback lock as the lock for the QWaitCondition that
we use to wait for the callback to be processed
- ensures the 'atomic transition' of the wait condition, ensuring calls
are properly serialised
- we can't use a recursive mutex for a wait condition, so merge
QueueDecoderCallback into HandleDecoderCallback
- fixes intermittent errors/lockups when rewinding at high speed when
using a hardware decoder that uses a frames context AND resets the
decoder when flushing (e.g. VAAPI).
- there is still a problem when rewinding under those circumstances  as
we do not release the video buffers when rewinding, but do flush the
hardware decoder, so we start to accumulate multiple hardware contexts
and associated interops. While not ideal, this seems to be stable now -
although I imagine on systems with limited resources this might be an
issue. (N.B. It is easy enough to release the buffers in these cases but
we lose any visual feedback while rewinding).

More information about the mythtv-commits mailing list