[vlc-devel] [PATCH 00/48] Road to push video context (v8)

Steve Lhomme robux4 at ycbcr.xyz
Fri Oct 11 15:33:14 CEST 2019

Changes since last patchset:
- fix make check on Linux (WSL make check is still broken)
- the decoder now monitors the started state of its vout so that it doesn't try
  to cancel a vout that was never started
- misc code cleaning/function splitting in the video output
- added vout_ChangeSource so the decoder doesn't try to restart the vout on
  format change if the vout can handle the new format

These patches of this set can be found in thie branch:

Steve Lhomme (48):
  video_output: separate the error logs and return in vout_Request
  video_output: split vout_Request to have a function to enable the vout
  video_output: add a function to release the display separately from
    its thread
  video_output: no need to check if there's a display to Stop in
  decoder: use a separate function to clean the display video format
  decoder: move the display creation in a separate function
  decoder: clean CreateVoutIfNeeded
  video_output: add vout_GetDevice to get the vout decoder device on
  video_output: pass the video format to vout_SizeWindow()
  video_output: do the format check before calling vout_EnableWindow
  video_output: do the format cleaning in vout_Request and
  vout: request the display with a decoder device
  display: don't store the dummy context in the display anymore
  decoder: request decoder device when getting the vout
  input: resource: get the decoder device before calling vout_Request()
  decoder: split the decoder format update in 2 parts
  decoder: keep the added state of the vout thread
  input: resource: split input_resource_GetVout()
  decoder: store the decoder order of the decoder vout next to it
  decoder: move the display creation in a separate function
  input: rename vout added/removed to started/stopped
  video_output: add vout_ChangeSource to set a new source for the
  decoder: split the creation of the vout/decoder device and the display
  decoder: stop the display before saving the free vout
  video context: add a Create/Release function for the video context
  video context: make the video context structure private
  decoder: allow multiple calls to GetDecoderDevice before calling
  avcodec: get the decoder device before creating the VA
  avcodec: provide the vlc_decoder_device from the vout thread to the VA
  d3d11va: use the decoder device to init the D3D11 device
  dxva2: use the decoder device to init the D3D9 device
  vaapi: use the decoder device to get the VADisplay
  avcodec: vdpau: use the decoder device to get the vdp_t*
  avcodec: vaapi: allocate output pictures locally
  avcodec: do not use a picture from the display before creating the VA
  decoder: optionally pass a vlc_video_context in
  decoder: don't create and release an unused decoder device for regular
  decoder: remove locally stored decoder device
  video context: allow storing typed extra data in the video context
  nvdec: create a video context for the decoder
  avcodec: get the vlc_video_context created by the VA
  d3d11va: create a video context for the VA
  dxva2: create a video context for the VA
  vaapi: create a dummy video context
  vdpau: create a dummy video context
  dxva2: store the IDirect3DDevice9 in the video context
  d3d11va: store the ID3D11DeviceContext in the video context
  vout: request the vout with a video context

 include/vlc_codec.h                           |  49 ++-
 include/vlc_picture.h                         |  40 +-
 include/vlc_vout_display.h                    |   3 +-
 modules/codec/avcodec/d3d11va.c               |  60 ++-
 modules/codec/avcodec/dxva2.c                 |  50 ++-
 modules/codec/avcodec/va.c                    |   9 +-
 modules/codec/avcodec/va.h                    |   6 +-
 modules/codec/avcodec/vaapi.c                 |  45 ++-
 modules/codec/avcodec/video.c                 |  37 +-
 modules/hw/nvdec/nvdec.c                      |  22 +-
 modules/hw/nvdec/nvdec_gl.c                   |   3 +-
 modules/hw/vaapi/vlc_vaapi.c                  |   9 -
 modules/hw/vaapi/vlc_vaapi.h                  |   5 -
 modules/hw/vdpau/avcodec.c                    |  24 +-
 modules/stream_out/mosaic_bridge.c            |   4 +-
 modules/stream_out/transcode/video.c          |   2 +-
 modules/video_chroma/d3d11_fmt.c              |  10 +
 modules/video_chroma/d3d11_fmt.h              |  15 +-
 modules/video_chroma/d3d9_fmt.c               |  10 +
 modules/video_chroma/d3d9_fmt.h               |  15 +-
 modules/video_output/opengl/converter_vaapi.c |  17 +-
 modules/video_output/opengl/converter_vdpau.c |  19 +-
 modules/video_output/splitter.c               |   5 +-
 modules/video_output/win32/direct3d9.c        |   6 +-
 src/audio_output/filters.c                    |   2 +-
 src/input/decoder.c                           | 377 ++++++++++++------
 src/input/decoder.h                           |   4 +-
 src/input/decoder_helpers.c                   |  75 +++-
 src/input/es_out.c                            |  12 +-
 src/input/input_internal.h                    |   4 +-
 src/input/resource.c                          |  41 +-
 src/input/resource.h                          |   6 +-
 src/libvlccore.sym                            |   7 +
 src/misc/image.c                              |   3 +-
 src/player/input.c                            |   4 +-
 src/video_output/display.c                    |  15 +-
 src/video_output/video_output.c               | 176 +++++---
 src/video_output/vout_internal.h              |  22 +-
 src/video_output/vout_wrapper.c               |   7 +-
 39 files changed, 876 insertions(+), 344 deletions(-)


More information about the vlc-devel mailing list