[vlc-devel] [PATCH 00/39] Road to push video context (v7)

Steve Lhomme robux4 at ycbcr.xyz
Mon Oct 7 16:28:38 CEST 2019


Changes since last patchset:
- removed the video output format cleaning (not needed for now)
- fixed some issues with --vout=none where a decoder device would
  be created, and thus vout but it wasn't started and vout_GetEmpty
  was called.
- renamed and move on_vout_added/removed to on_vout_started/stopped 
  which is was it translates to in the end. It's important to make 
  the distinction now that a vout may be created but not yet started.
  before it was done in the same call so no problem.
- the vout_order is stored with the vout as the vout may be created before
  the value is needed.

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

Steve Lhomme (39):
  video_output: don't use the decoder FIFO if it has been deleted
  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
  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
  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 decoder added/remove to started/stopped
  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 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: 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: 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                 |  38 +-
 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                    |  11 +-
 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.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        |   8 +-
 src/audio_output/filters.c                    |   2 +-
 src/input/decoder.c                           | 350 +++++++++++-------
 src/input/decoder.h                           |   4 +-
 src/input/decoder_helpers.c                   |  77 +++-
 src/input/es_out.c                            |  12 +-
 src/input/input_internal.h                    |   4 +-
 src/input/resource.c                          |  33 +-
 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               |  78 +++-
 src/video_output/vout_internal.h              |  14 +-
 src/video_output/vout_wrapper.c               |   7 +-
 41 files changed, 795 insertions(+), 295 deletions(-)

-- 
2.17.1



More information about the vlc-devel mailing list