Age | Commit message (Collapse) | Author |
|
|
|
* commit 'cad739dace55e3446ef7180de688173cd19fb000':
lavc: Add per-thread surfaces in get_hw_frame_parameters()
Merged-by: Mark Thompson <sw@jkqxz.net>
|
|
This number is definitely required when frame threading is enabled, so
add it here rather than forcing all users to handle it themselves.
DXVA2 contained this addition in specific code as well (therefore being
added twice in the internal case) - just remove it from there.
|
|
* commit 'b46a77f19ddc4b2b5fa3187835ceb602a5244e24':
lavc: external hardware frame pool initialization
Includes the fix from e724bdfffbd3c27aac53d1f32f20f105f37caef0
Merged-by: James Almer <jamrial@gmail.com>
|
|
This adds a new API, which allows the API user to query the required
AVHWFramesContext parameters. This also reduces code duplication across
the hwaccels by introducing ff_decode_get_hw_frames_ctx(), which uses
the new API function. It takes care of initializing the hw_frames_ctx
if needed, and does additional error handling and API usage checking.
Support for VDA and Cuvid missing.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
This mode apparently does not support decoding of HEVC Main (8 bit).
With D3D11 and Intel drivers on Windows 10 I get green corruption, while
using DXVA2_ModeHEVC_VLD_Main works.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
This mode apparently does not support decoding of HEVC Main (8 bit).
With D3D11 and Intel drivers on Windows 10 I get green corruption, while
using DXVA2_ModeHEVC_VLD_Main works.
|
|
Helpful for debugging.
Merges Libav commit 068eaa534e7ddb2155e2830818d5c3f1069c68d8.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
|
|
Some devices (some phones, apparently) will support only this opaque
format. Of course this won't work with CLI, because copying data
directly is not supported.
Automatic frame allocation (setting AVCodecContext.hw_device_ctx) does
not support this mode, even if it's the only supported mode. But since
opaque surfaces are generally less useful, that's probably ok.
Merges Libav commit 5030e3856c2126fb829edb828f5aae011d178eb4.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
|
|
Some existed since forever, some are new.
The cast in get_surface() is silly, but unless we change the av_log
function signature, or all callers of ff_dxva2_get_surface_index(), it's
needed to remove the const warning.
Merges Libav commit 752ddb45569ffe278393cd853b70f18ae017219e.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
|
|
Make supported codec profiles part of each dxva_modes entry. Every DXVA2
mode is representative for a codec with a subset of supported profiles,
so reflecting that in dxva_modes seems appropriate.
In practice, this will more strictly check MPEG2 profiles, will stop
relying on the surface format checks for selecting the correct HEVC
profile, and remove the verbose messages for mismatching H264/HEVC
profiles. Instead of the latter, it will now print the more nebulous "No
decoder device for codec found" verbose message.
This also respects AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH. Move the
Main10 HEVC entry before the normal one to make this work better.
Originally inspired by VLC's code.
Merges Libav commit 70e5e7c02232d1e51c362d5572c567a9e2a8dcc2.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
|
|
This also adds support to avconv (which is trivial due to the new
hwaccel API being generic enough).
The new decoder setup code in dxva2.c is significantly based on work by
Steve Lhomme <robux4@gmail.com>, but with heavy changes/rewrites.
Merges Libav commit f9e7a2f95a7194a8736cc1416a03a1a0155a3e9f.
Also adds untested VP9 support.
The check for DXVA2 COBJs is removed. Just update your MinGW to
something newer than a 5 year old release.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
|
|
I want to make it non-mandatory to set a mutex in the D3D11 device
context, and replacing it with user callbacks seems like the best
solution. This is preparation for it. Also makes the code slightly more
readable.
Merges Libav commit 831cfe10b40414915fe7b6088158421fe02e2b2d.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
|
|
The actual hwaccel code will need to access an internal context instead
of avctx->hwaccel_context, so add a new DXVA_CONTEXT() macro, that will
dispatch between the "old" external and the new internal context.
Also, the new API requires a new D3D11 pixfmt, so all places which check
for the pixfmt need to be adjusted. Introduce a ff_dxva2_is_d3d11()
function, which does the check.
Merges Libav commit 4dec101acc393fbfe9a8ce0237b9efbae3f20139.
Adds changes to vp9 over the Libav patch.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
|
|
Helpful for debugging.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
|
|
Some devices (some phones, apparently) will support only this opaque
format. Of course this won't work with CLI, because copying data
directly is not supported.
Automatic frame allocation (setting AVCodecContext.hw_device_ctx) does
not support this mode, even if it's the only supported mode. But since
opaque surfaces are generally less useful, that's probably ok.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
|
|
Some existed since forever, some are new.
The cast in get_surface() is silly, but unless we change the av_log
function signature, or all callers of ff_dxva2_get_surface_index(), it's
needed to remove the const warning.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
|
|
Make supported codec profiles part of each dxva_modes entry. Every DXVA2
mode is representative for a codec with a subset of supported profiles,
so reflecting that in dxva_modes seems appropriate.
In practice, this will more strictly check MPEG2 profiles, will stop
relying on the surface format checks for selecting the correct HEVC
profile, and remove the verbose messages for mismatching H264/HEVC
profiles. Instead of the latter, it will now print the more nebulous "No
decoder device for codec found" verbose message.
This also respects AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH. Move the
Main10 HEVC entry before the normal one to make this work better.
Originally inspired by VLC's code.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
|
|
This also adds support to avconv (which is trivial due to the new
hwaccel API being generic enough).
The new decoder setup code in dxva2.c is significantly based on work by
Steve Lhomme <robux4@gmail.com>, but with heavy changes/rewrites.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
|
|
I want to make it non-mandatory to set a mutex in the D3D11 device
context, and replacing it with user callbacks seems like the best
solution. This is preparation for it. Also makes the code slightly more
readable.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
|
|
The actual hwaccel code will need to access an internal context instead
of avctx->hwaccel_context, so add a new DXVA_CONTEXT() macro, that will
dispatch between the "old" external and the new internal context.
Also, the new API requires a new D3D11 pixfmt, so all places which check
for the pixfmt need to be adjusted. Introduce a ff_dxva2_is_d3d11()
function, which does the check.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
|
|
* commit '3ee5f25d37315b27f0e2d47aa69fc445545ee2e3':
dxva2: Adjust printf length modifiers where appropriate
Merged-by: Clément Bœsch <u@pkh.me>
|
|
No need to loop through the known surfaces, we'll use the requested surface
anyway.
The loop is only done for DXVA2.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
|
No need to loop through the known surfaces, we'll use the requested surface
anyway.
The loop is only done for DXVA2.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
Signed-off-by: Diego Biurrun <diego@biurrun.de>
|
|
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
|
|
|
Fixes a regression introduced in
be630b1e08ebe8f766b1798accd6b8e5e096f5aa
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
Fixes a regression introduced in 9b462a0b9
|
|
The slice index expected by D3D11VA is the one from the texture not from the
array or texture/slices.
In VLC the slices we provide the decoder don't start from 0 and thus pictures
appear in bogus order. With possible crashes and corruptions when using an
invalid index.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
|
The decoding buffer index expected by D3D11VA is the one from the
ID3D11Texture2D not the one from the ID3D11VideoDecoderOutputView array
in AVD3D11VAContext.
Otherwise, when providing decoder slices that do not start from 0,
pictures appear in bogus order. For an invalid index crashes and
image corruption can occur.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
|
|
also fixes a deadlock found by Денис Кулаков <kudesnik33ra@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
also fixes a deadlock found by Денис Кулаков <kudesnik33ra@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
|
* commit 'e3d4784eb31b3ea4a97f2d4c698a75fab9bf3d86':
d3d11va: WindowsPhone requires a mutex around ID3D11VideoContext
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
|
|
|
|
* commit 'e60a6e7545dd6f5b25e3a65de9c6fdcc6e2e9d6b':
mpegvideo: Drop mpegvideo.h where not needed
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
|
|
Add necessary headers in .c files.
|
|
* commit '172b2cee17a3779c114ba065dd7b25dcf61e408f':
dxva2: Add ifdefs around structs that might not be available
Conflicts:
libavcodec/dxva2.c
See: 94d07b314aa516284cc21ea720d4a305f881b6c2
Merged-by: Michael Niedermayer <michaelni@gmx.at>
|
|
Signed-off-by: Martin Storsjö <martin@martin.st>
|
|
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
|
|
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
|
|
* commit 'd8039ef8d221ea273aa4f1e62e5df21bf618c772':
D3D11va: add a Direct3D11 video decoder similar to DXVA2
Conflicts:
Changelog
configure
libavcodec/Makefile
libavcodec/allcodecs.c
libavcodec/dxva2_vc1.c
libavcodec/version.h
libavutil/pixdesc.c
libavutil/pixfmt.h
libavutil/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
|
|
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
|
|
The assumption of (MPEG) Picture and H264Picture layout matching might
not hold true in the future.
Signed-off-by: Hendrik Leppkes <h.leppkes@gmail.com>
|
|
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
|
|
* commit 'ade4ecb42d2dacd18d04eb8df2afa8131e5ad653':
dxva2: Use correct printf format strings
Merged-by: Michael Niedermayer <michaelni@gmx.at>
|
|
* commit '766df7ca89a2398e71182f5f2b46053e3aa9bd69':
dxva2: Add missing #includes
See: 9056d0c94af5c09478acf0e1bc129a9c539070f0
Merged-by: Michael Niedermayer <michaelni@gmx.at>
|
|
* qatar/master:
dxva2: Log errors verbosely
Merged-by: Michael Niedermayer <michaelni@gmx.at>
|
|
* commit '5b2b23f2d69e05c5fcd1c933e383fe60e185574d':
dxva2: Retry IDirectXVideoDecoder_BeginFrame()
This also adds a missig #include to prevent breaking building
Merged-by: Michael Niedermayer <michaelni@gmx.at>
|
|
|