[vlc-devel] [PATCH v5 00/24] Get rid of the control command API

Steve Lhomme robux4 at ycbcr.xyz
Mon Aug 24 09:41:41 CEST 2020


Changes since v4:
- split the "mouse-moved" variables in 2 versions: one in video area coordinates
  one in original video coordinates. Only the libvlc API uses the latter.
- do not handle the missing display when translating coordinates for now (a
  proper transition should be possible by keeping non translated coordinates 
  before the display is removed and a new one is added so we mouse-moved is
  still accurate even without a display module). That's a pre-existing problem
  that can be solved independently from this patchset
- this patchset sits on top of the "video_output: remove write-only "mouse-clicked""
  patch

Changes since v3:
- the mouse coordinates are translated to video coordinates as soon as we get
  them, since that's what the user sees when s┬Ěhe moves/clicks the mouse.
- the "mouse-moved", "mouse-button-down", "mouse-clicked" and "fullscreen"
  variables are set in non-filtered coordinates (video area coordinates).
- these variables are set in the UI thread rather than the rendering thread
- the filter.new_filters string is merged into filter.configuration. No need
  for an intermediate state.
- simplify the ThreadChangeFilters() signature as the filter string and
  deinterlace flags always come from the same variables, whether the values
  changed or we recreate the filter chain.
- add some comments in the vout thread about what we do in the loops.
- do not use 0,0 video area coordinates for mouse events occuring while the 
  display module doesn't have proper dimensions to provide. We keep using the
  previous correct video area coordinates.


Steve Lhomme (24):
  filters: initialize the output mouse state to the new state
  filters: remove the duplicate new mouse state
  video_output: only reset the mouse_event if it was set on display
    release
  video_output: translate the mouse coordinates to display coordinates
    early
  video_output: separate the mouse move coordinates in video or UI
    coordinates
  libvlc: read the mouse coordinates according to the original video
    size
  video_output: move the mouse variables generation in the UI thread
  video_output: don't include control.h in include shared across the
    core
  video_output: use filter lock to change filters in the vout thread
  video_output: use filter lock to change deinterlacing in the vout
    thread
  video_output: remove always true boolean from ThreadChangeFilters
  video_output: merge the new filters string and the kept filter
    configuration
  video_output: always use interlacing.has_deint when creating filters
  video_output: rework the deadline parameter return
  video_output: use the rendering delay when we were given a deadline to
    wait for
  video_output: use INT64_MAX for the invalid control pop deadline
  vout/control: keep the lock instead of setting a held flag
  vout/control: move the lock outside of the control API
  vout/control: move the condition on pictures/control outside of the
    control API
  video_output: use an internal bool to detect when we must exit the
    vout thread
  video_output: move the mouse events handling outside of the control
    pop
  video_output: do not wait for new mouse commands if we have a picture
    ready
  video_output: remove unused control API
  video_output: code cleaning

 include/vlc_filter.h                          |   3 +-
 lib/video.c                                   |   2 +-
 modules/spu/logo.c                            |   7 +-
 modules/video_chroma/chain.c                  |   5 +-
 modules/video_filter/ci_filters.m             |   6 +-
 .../video_filter/deinterlace/deinterlace.c    |   6 +-
 modules/video_filter/freeze.c                 |   7 +-
 modules/video_filter/magnify.c                |   9 +-
 modules/video_filter/puzzle.c                 |   8 +-
 modules/video_filter/puzzle.h                 |   3 +-
 modules/video_filter/transform.c              |   3 +-
 src/Makefile.am                               |   2 -
 src/misc/filter_chain.c                       |   4 +-
 src/video_output/control.c                    | 174 -----------
 src/video_output/control.h                    |  82 -----
 src/video_output/video_output.c               | 292 +++++++++++-------
 src/video_output/vout_internal.h              |   1 -
 src/video_output/vout_intf.c                  |   2 +
 18 files changed, 205 insertions(+), 411 deletions(-)
 delete mode 100644 src/video_output/control.c
 delete mode 100644 src/video_output/control.h

-- 
2.26.2



More information about the vlc-devel mailing list