[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