[vlc-devel] [PATCH 00/32] Road to push video context (v4)

Steve Lhomme robux4 at ycbcr.xyz
Thu Sep 26 15:59:50 CEST 2019


Compared to the previous patchset:

- fix issues with --dec-dev=none
- fix issues when probing VAs multiple times

The way the vout is tested/created when a decoder device is created and the
display module is created conditionally needs a bit more work. The whole
monolothic decoder_UpdateFormat split in 2 calls that are indenpendant needs
to check the video context has not changed to create a new vout/display or not.
This is easier now that we push a usable video context. In the interim stages
of this patchset it's fragile (but it works).

This branch can be found at:
https://code.videolan.org/robUx4/vlc/tree/push/merge/17

Steve Lhomme (32):
  opengl: pass the video context rather than the decoder device
  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: split vout_Request to have a function to enable the vout
    window
  video output: add vout_GetDevice to get the vout decoder device on
    demand
  video_output: 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
  input: resource: split input_resource_GetVout()
  decoder: move the display creation in a separate function
  decoder: split the creation of the vout/decoder device and the display
    module
  video context: add a Create/Release function for the video context
  video context: make the video context structure private
  decoder: allow multiple calls to HoldDecoderDevice before calling
    UpdateFormat
  avcodec: get the decoder device before creating the VA
  avcodec: provide the vlc_decoder_device from the vout thread to the VA
    constructor
  d3d11va: use the decoder device to init the D3D11 device
  dxva2: use the decoder device to init the D3D9 device
  avcodec: vaapi: allocate output pictures locally
  vaapi: use the decoder device to get the VADisplay
  avcodec: do not use a picture from the display before creating the VA
  decoder: optionally pass a vlc_video_context in
    decoder_UpdateVideoOutput()
  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
  video output: request the vout with a video context

 include/vlc_codec.h                           |  40 ++-
 include/vlc_picture.h                         |  24 +-
 include/vlc_vout_display.h                    |   2 +-
 modules/codec/avcodec/d3d11va.c               |  50 +--
 modules/codec/avcodec/dxva2.c                 |  44 ++-
 modules/codec/avcodec/va.c                    |   9 +-
 modules/codec/avcodec/va.h                    |   6 +-
 modules/codec/avcodec/vaapi.c                 |  38 +-
 modules/codec/avcodec/video.c                 |  35 +-
 modules/hw/nvdec/nvdec.c                      |  20 +-
 modules/hw/nvdec/nvdec_gl.c                   |   3 +-
 modules/hw/vdpau/avcodec.c                    |  11 +-
 modules/stream_out/mosaic_bridge.c            |   4 +-
 modules/stream_out/transcode/video.c          |   2 +-
 modules/video_chroma/d3d11_fmt.h              |   3 +-
 modules/video_chroma/d3d9_fmt.h               |   3 +-
 modules/video_output/opengl/converter.h       |   4 +-
 modules/video_output/opengl/converter_vaapi.c |  24 +-
 modules/video_output/opengl/converter_vdpau.c |  25 +-
 modules/video_output/opengl/vout_helper.c     |   2 +-
 modules/video_output/splitter.c               |   5 +-
 modules/video_output/win32/direct3d9.c        |   2 +-
 src/audio_output/filters.c                    |   2 +-
 src/input/decoder.c                           | 328 +++++++++++-------
 src/input/decoder_helpers.c                   |  82 ++++-
 src/input/resource.c                          |  33 +-
 src/input/resource.h                          |   6 +-
 src/libvlccore.sym                            |   7 +
 src/misc/image.c                              |   3 +-
 src/video_output/display.c                    |  15 +-
 src/video_output/video_output.c               |  61 +++-
 src/video_output/vout_internal.h              |  14 +-
 src/video_output/vout_wrapper.c               |   7 +-
 33 files changed, 650 insertions(+), 264 deletions(-)

-- 
2.17.1



More information about the vlc-devel mailing list