summaryrefslogtreecommitdiffstats
path: root/libavcodec/dxva2.c
Commit message (Collapse)AuthorAgeFilesLines
* avcodec/dxva2: add VP9 10-bit Profile2 mode mappingsHendrik Leppkes2018-04-131-1/+7
|
* Merge commit 'cad739dace55e3446ef7180de688173cd19fb000'Mark Thompson2018-02-121-4/+0
|\ | | | | | | | | | | | | * commit 'cad739dace55e3446ef7180de688173cd19fb000': lavc: Add per-thread surfaces in get_hw_frame_parameters() Merged-by: Mark Thompson <sw@jkqxz.net>
| * lavc: Add per-thread surfaces in get_hw_frame_parameters()Mark Thompson2018-02-111-4/+0
| | | | | | | | | | | | | | | | 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.
* | Merge commit 'b46a77f19ddc4b2b5fa3187835ceb602a5244e24'James Almer2017-11-111-31/+24
|\ \ | |/ | | | | | | | | | | | | | | * commit 'b46a77f19ddc4b2b5fa3187835ceb602a5244e24': lavc: external hardware frame pool initialization Includes the fix from e724bdfffbd3c27aac53d1f32f20f105f37caef0 Merged-by: James Almer <jamrial@gmail.com>
| * lavc: external hardware frame pool initializationwm42017-10-191-31/+24
| | | | | | | | | | | | | | | | | | | | | | | | 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>
| * dxva: DXVA2_ModeHEVC_VLD_Main10 does not support Mainwm42017-07-221-2/+1
| | | | | | | | | | | | | | | | 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>
| * dxva: verbose-log decoder GUID listwm42017-06-271-0/+47
| | | | | | | | | | | | Helpful for debugging. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
| * dxva: support DXGI_FORMAT_420_OPAQUE decodingwm42017-06-271-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | 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>
| * dxva: fix some warningswm42017-06-271-9/+7
| | | | | | | | | | | | | | | | | | | | 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>
| * dxva: add declarative profile checkswm42017-06-271-20/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * dxva: add support for new dxva2 and d3d11 hwaccel APIswm42017-06-081-5/+658
| | | | | | | | | | | | | | | | | | | | 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>
| * dxva: move d3d11 locking/unlocking to functionswm42017-06-081-18/+28
| | | | | | | | | | | | | | | | | | 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>
| * dxva: preparations for new hwaccel APIwm42017-06-081-12/+20
| | | | | | | | | | | | | | | | | | | | | | | | 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>
| * dxva2: get the slice number directly from the surface in D3D11VASteve Lhomme2017-01-121-7/+7
| | | | | | | | | | | | | | | | | | 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>
| * dxva2: Make ff_dxva2_get_surface() static and drop its name prefixSteve Lhomme2017-01-081-4/+4
| | | | | | | | Signed-off-by: Diego Biurrun <diego@biurrun.de>
* | dxva: DXVA2_ModeHEVC_VLD_Main10 does not support Mainwm42017-07-101-2/+1
| | | | | | | | | | | | 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.
* | dxva: verbose-log decoder GUID listwm42017-06-271-0/+47
| | | | | | | | | | | | | | | | Helpful for debugging. Merges Libav commit 068eaa534e7ddb2155e2830818d5c3f1069c68d8. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | dxva: support DXGI_FORMAT_420_OPAQUE decodingwm42017-06-271-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | dxva: fix some warningswm42017-06-271-9/+7
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* | dxva: add declarative profile checkswm42017-06-271-20/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | dxva: add support for new dxva2 and d3d11 hwaccel APIswm42017-06-271-5/+664
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | dxva: move d3d11 locking/unlocking to functionswm42017-06-271-18/+28
| | | | | | | | | | | | | | | | | | | | | | 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>
* | dxva: preparations for new hwaccel APIwm42017-06-271-12/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Merge commit '3ee5f25d37315b27f0e2d47aa69fc445545ee2e3'Clément Bœsch2017-04-071-5/+5
|\ \ | |/ | | | | | | | | | | * commit '3ee5f25d37315b27f0e2d47aa69fc445545ee2e3': dxva2: Adjust printf length modifiers where appropriate Merged-by: Clément Bœsch <u@pkh.me>
| * dxva2: Adjust printf length modifiers where appropriateDiego Biurrun2016-11-291-5/+5
| |
| * dxva2: fix surface selection when compiled with both d3d11va and dxva2Hendrik Leppkes2016-11-071-1/+2
| | | | | | | | | | | | | | Fixes a regression introduced in be630b1e08ebe8f766b1798accd6b8e5e096f5aa Signed-off-by: Anton Khirnov <anton@khirnov.net>
| * d3d11va: Use the proper decoding slice indexSteve Lhomme2016-10-051-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | 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>
| * d3d11va: don't keep the context lock while waiting for a frameSteve Lhomme2016-07-111-3/+9
| | | | | | | | | | | | also fixes a deadlock found by Денис Кулаков <kudesnik33ra@gmail.com> Signed-off-by: Anton Khirnov <anton@khirnov.net>
* | dxva2: get the slice number directly from the surface in D3D11VASteve Lhomme2017-01-161-8/+7
| | | | | | | | | | | | | | | | | | 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>
* | dxva2: make ff_dxva2_get_surface() static and rename itSteve Lhomme2017-01-051-4/+4
| | | | | | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | dxva2: fix surface selection when compiled with both d3d11va and dxva2Hendrik Leppkes2016-10-201-1/+2
| | | | | | | | Fixes a regression introduced in 9b462a0b9
* | avcodec/d3d11va: use the proper slice indexSteve Lhomme2016-10-101-1/+11
| | | | | | | | | | | | | | | | | | | | | | 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>
* | d3d11va: don't keep the context lock while waiting for a frameSteve Lhomme2016-06-171-3/+9
| | | | | | | | | | | | also fixes a deadlock found by Денис Кулаков <kudesnik33ra@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | Merge commit 'e3d4784eb31b3ea4a97f2d4c698a75fab9bf3d86'Hendrik Leppkes2015-09-171-2/+13
|\ \ | |/ | | | | | | | | | | * commit 'e3d4784eb31b3ea4a97f2d4c698a75fab9bf3d86': d3d11va: WindowsPhone requires a mutex around ID3D11VideoContext Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * d3d11va: WindowsPhone requires a mutex around ID3D11VideoContextSteve Lhomme2015-09-171-2/+13
| |
* | Merge commit 'e60a6e7545dd6f5b25e3a65de9c6fdcc6e2e9d6b'Hendrik Leppkes2015-09-161-1/+0
|\ \ | |/ | | | | | | | | | | * commit 'e60a6e7545dd6f5b25e3a65de9c6fdcc6e2e9d6b': mpegvideo: Drop mpegvideo.h where not needed Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * mpegvideo: Drop mpegvideo.h where not neededVittorio Giovara2015-09-131-1/+0
| | | | | | | | Add necessary headers in .c files.
* | Merge commit '172b2cee17a3779c114ba065dd7b25dcf61e408f'Michael Niedermayer2015-06-011-0/+2
|\ \ | |/ | | | | | | | | | | | | | | | | | | * 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>
| * dxva2: Add ifdefs around structs that might not be availableMartin Storsjö2015-06-011-0/+4
| | | | | | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* | avcodec/dxva2: Fix "may be used uninitialized" warningsMichael Niedermayer2015-05-261-2/+2
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avcodec/dxva2: Fix build without D3D11Michael Niedermayer2015-05-251-0/+2
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit 'd8039ef8d221ea273aa4f1e62e5df21bf618c772'Michael Niedermayer2015-05-251-31/+130
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>
| * D3D11va: add a Direct3D11 video decoder similar to DXVA2Steve Lhomme2015-05-251-31/+130
| | | | | | | | Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
| * dxva2: Directly use AVFramesMichael Niedermayer2014-04-011-6/+6
| | | | | | | | | | | | | | 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>
* | avcodec/dxva2: fix pointers after H264PictureMichael Niedermayer2014-03-171-6/+6
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit 'ade4ecb42d2dacd18d04eb8df2afa8131e5ad653'Michael Niedermayer2014-01-211-6/+6
|\ \ | |/ | | | | | | | | | | * commit 'ade4ecb42d2dacd18d04eb8df2afa8131e5ad653': dxva2: Use correct printf format strings Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * dxva2: Use correct printf format stringsDiego Biurrun2014-01-211-6/+6
| |
* | Merge commit '766df7ca89a2398e71182f5f2b46053e3aa9bd69'Michael Niedermayer2014-01-211-1/+8
|\ \ | |/ | | | | | | | | | | | | * commit '766df7ca89a2398e71182f5f2b46053e3aa9bd69': dxva2: Add missing #includes See: 9056d0c94af5c09478acf0e1bc129a9c539070f0 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * dxva2: Add missing #includesDiego Biurrun2014-01-211-0/+8
| |
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2014-01-211-9/+18
|\ \ | |/ | | | | | | | | | | * qatar/master: dxva2: Log errors verbosely Merged-by: Michael Niedermayer <michaelni@gmx.at>
OpenPOWER on IntegriCloud