[vlc-devel] [PATCH 00/42] Road to push video context (v9)

Steve Lhomme robux4 at ycbcr.xyz
Wed Oct 16 16:58:35 CEST 2019


Changes since last patchset:
- merged the first trivial code splitting patches in master
- added 2 patches to avoid calling GetDevice with a vout_configuration_t, now
  it's using a vout_device_configuration_t
- fix the video context released twice on error in d3d11va/dxva2
- merged "video_output: do the format check before calling
 vout_EnableWindow" into "video_output: do the format cleaning in vout_Request
 and vout_GetDevice" as the move is only needed to remove the sys->original
 format check in vout_GetDevice().

These patches of this set can be found in thie branch:
https://code.videolan.org/robUx4/vlc/tree/push/merge/40


Steve Lhomme (42):
  video_output: add vout_GetDevice to get the vout decoder device on
    demand
  video_output: pass the video format to vout_SizeWindow()
  video_output: do the format cleaning in vout_Request and
    vout_GetDevice
  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
    display
  decoder: split the creation of the vout/decoder device and the display
    module
  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
    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
  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_UpdateVideoOutput()
  decoder: don't create and release an unused decoder device for regular
    decoders
  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
  video_output: enable the window using only the vout
  vout: separate the configure structures for the device and the display

 include/vlc_codec.h                           |  49 ++++-
 include/vlc_picture.h                         |  40 +++-
 include/vlc_vout_display.h                    |   3 +-
 modules/codec/avcodec/d3d11va.c               |  58 +++---
 modules/codec/avcodec/dxva2.c                 |  48 +++--
 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                           | 184 +++++++++++++-----
 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                          |  45 +++--
 src/input/resource.h                          |   8 +-
 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               | 138 +++++++++----
 src/video_output/vout_internal.h              |  27 ++-
 src/video_output/vout_wrapper.c               |   7 +-
 39 files changed, 746 insertions(+), 250 deletions(-)

-- 
2.17.1



More information about the vlc-devel mailing list