summaryrefslogtreecommitdiff
path: root/libavutil/hwcontext_opencl.c
Commit message (Collapse)AuthorAge
* avutil/hwcontext: Allocate AVHWFramesCtx jointly with its internalsAndreas Rheinhardt2024-03-07
| | | | | | | | | | | This is possible because the lifetime of these structures coincide. It has the advantage of allowing to remove AVHWFramesInternal from the public header; given that AVHWFramesInternal.priv is no more, most accesses to AVHWFramesInternal are no more; indeed, the only field accessed of it outside of hwcontext.c is the internal frame pool, making this commit very simple. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avutil/hwcontext_opencl: Allocate pub and priv frames hwctx togetherAndreas Rheinhardt2024-03-04
| | | | | | | | | This is possible because the lifetime of both coincide. Besides reducing the number of allocations this also simplifies access to OpenCLFramesContext as one no longer has to go through AVHWFramesInternal. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avutil/hwcontext_opencl: Allocate pub and priv device hwctx togetherAndreas Rheinhardt2024-03-04
| | | | | | | | | This is possible because the lifetime of both coincide. Besides reducing the number of allocations this also simplifies access to OpenCLDeviceContext as one no longer has to go through AVHWDeviceInternal. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avutil/hwcontext_opencl: Add map from Videotoolbox to OpenCLZhao Zhili2024-03-01
| | | | | | | | | | | | | For example: ./ffmpeg -hwaccel videotoolbox \ -hwaccel_output_format videotoolbox_vld \ -i foo.mp4 \ -vf hwmap=derive_device=opencl,transpose_opencl=dir=clock,hwmap,format=nv12 \ -c:v hevc_videotoolbox \ -c:a copy \ -b:v 2M -tag:v hvc1 bar.mp4 Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
* avutil/hwcontext_opencl: Fix missing linesize when map from openclZhao Zhili2024-03-01
| | | | Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
* avutil/hwcontext_opencl: Use proper OpenCLFramesContextAndreas Rheinhardt2024-02-13
| | | | | | | | The currently used pointer when unmapping DXVA2 and D3D11 actually points to an OpenCLDeviceContext. Reviewed-by: Mark Thompson <sw@jkqxz.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* qsv: remove mfx/ prefix from mfx headersHaihao Xiang2022-08-12
| | | | | | | | | | | | | | | | | | | | | | | | The following Cflags has been added to libmfx.pc, so mfx/ prefix is no longer needed when including mfx headers in FFmpeg. Cflags: -I${includedir} -I${includedir}/mfx Some old versions of libmfx have the following Cflags in libmfx.pc Cflags: -I${includedir} We may add -I${includedir}/mfx to CFLAGS when running 'configure --enable-libmfx' for old versions of libmfx, if so, mfx headers without mfx/ prefix can be included too. If libmfx comes without pkg-config support, we may do a small change to the settings of the environment(e.g. set -I/opt/intel/mediasdk/include/mfx instead of -I/opt/intel/mediasdk/include to CFLAGS), then the build can find the mfx headers without mfx/ prefix After applying this change, we won't need to change #include for mfx headers when mfx headers are installed under a new directory. This is in preparation for oneVPL support (mfx headers in oneVPL are installed under vpl directory)
* avfilter: add remap opencl filterPaul B Mahol2022-07-07
|
* lavu/hwcontext_opencl: clear dangling pointers on map failureAnton Khirnov2022-02-17
|
* libavutil/hwcontext_opencl: fix a bug for mapping qsv frame to openclnyanmisaka2022-01-29
| | | | | | | | | | | | | | | mfxHDLPair was added to qsv, so modify qsv->opencl map function as well. Now the following commandline works: ffmpeg -v verbose -init_hw_device vaapi=va:/dev/dri/renderD128 \ -init_hw_device qsv=qs@va -init_hw_device opencl=ocl@va -filter_hw_device ocl \ -hwaccel qsv -hwaccel_output_format qsv -hwaccel_device qs -c:v h264_qsv \ -i input.264 -vf "hwmap=derive_device=opencl,format=opencl,avgblur_opencl, \ hwmap=derive_device=qsv:reverse=1:extra_hw_frames=32,format=qsv" \ -c:v h264_qsv output.264 Signed-off-by: nyanmisaka <nst799610810@gmail.com> Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
* Replace all occurences of av_mallocz_array() by av_calloc()Andreas Rheinhardt2021-09-20
| | | | | | | They do the same. Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avutil/buffer: Switch AVBuffer API to size_tAndreas Rheinhardt2021-04-27
| | | | | | | Announced in 14040a1d913794d9a3fd6406a6d8c2f0e37e0062. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avutil: use the buffer_size_t typedef where requiredJames Almer2021-03-10
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* hwcontext: add av_hwdevice_ctx_create_derived_optsLynne2020-05-23
| | | | | | | | | | | | | This allows for users who derive devices to set options for the new device context they derive. The main use case of this is to allow users to enable extensions (such as surface drawing extensions) in Vulkan while deriving from the device their frames are on. That way, users don't need to write any initialization code themselves, since the Vulkan spec invalidates mixing instances, physical devices and active devices. Apart from Vulkan, other hwcontexts ignore the opts argument since they don't support options at all (or in VAAPI and OpenCL's case, options are currently only used for device selection, which device_derive overrides).
* libavutil/hwcontext_opencl: Fix channel order in format support checkJarek Samic2019-04-09
| | | | | | | | | | | | | The `opencl_get_plane_format` function was incorrectly determining the value used to set the image channel order. This resulted in all RGB pixel formats being set to the `CL_RGBA` pixel format, regardless of whether or not they actually *were* RGBA. This patch fixes the issue by using the `offset` and depth of components rather than the loop index to determine the value of `order`. Signed-off-by: Jarek Samic <cldfire3@gmail.com> Signed-off-by: Mark Thompson <sw@jkqxz.net>
* lavu/opencl: replace va_ext.h with standard nameRuiling Song2019-03-22
| | | | | | | | | Khronos OpenCL header (https://github.com/KhronosGroup/OpenCL-Headers) uses cl_va_api_media_sharing_intel.h. And Intel's official OpenCL driver for Intel GPU (https://github.com/intel/compute-runtime) was compiled against Khronos OpenCL header. So it's better to align with Khronos. Signed-off-by: Ruiling Song <ruiling.song@intel.com>
* hwcontext_opencl: Use correct function to enumerate devicesMark Thompson2018-12-02
| | | | Also assert that all required functions are present.
* hwcontext_opencl: Only release command queue if it existsMark Thompson2018-11-28
| | | | | If the frames context creation fails then the command queue reference need not exist when uninit is called.
* hwcontext_opencl: remove an unused variableJun Zhao2018-06-29
| | | | | | remove an unused variable Signed-off-by: Jun Zhao <mypopydev@gmail.com>
* hwcontext_opencl: Remove the opencl_device_init in opencl_device_deriveJun Zhao2018-06-29
| | | | | | In opencl device derived case, don't need to call opencl_device_init. Signed-off-by: Jun Zhao <mypopydev@gmail.com>
* configure: fix check for opencl_vaapi_intel_media.Jun Zhao2018-06-29
| | | | | | | | | opencl_vaapi_intel_media doesn't depend on libmfx, OpenCL™ Drivers and Runtimes for Intel® Architectureis is a standalone release, more information can be found in the link: https://software.intel.com/en-us/articles/opencl-drivers. Signed-off-by: Jun Zhao <mypopydev@gmail.com>
* hwcontext_opencl: Remove unused variableMark Thompson2018-06-24
| | | | Unused since a2613647c4f40b9e802cd21f37545ef1fdf370d1.
* hwcontext_opencl: use ff_hwframe_map_replace()Rostislav Pehlivanov2018-06-21
| | | | Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
* lavu/hwcontext_opecl: fix the build warningJun Zhao2018-06-07
| | | | | | fix the build warning when use Portable Computing Language (pocl). Signed-off-by: Jun Zhao <mypopydev@gmail.com>
* lavu: add calling convention for OpenCL callback.Ruiling Song2018-06-06
| | | | | | | This fix a build error on Windows: C2440: connot convert from 'void (__cdecl *) (...)' to 'void (__stdcall *)(...)'. Signed-off-by: Ruiling Song <ruiling.song@intel.com>
* hwcontext_opencl: Add support for mapping DRM objects to BeignetMark Thompson2018-03-22
| | | | Also use that to support mapping VAAPI to Beignet.
* hwcontext_opencl: Avoid deprecation warnings when built with post-1.2 headersMark Thompson2018-03-22
| | | | | Matching the previous commit. This is not applied to the installed header because it could incorrectly suppress the warning inside user programs.
* lavu/lavc/lavf/lavfi: Do not use type modifier %zu on Windows MSVCRT.Carl Eugen Hoyos2017-12-17
|
* hwcontext_opencl: Reset internal command queue on device_uninitMark Thompson2017-11-25
| | | | device_uninit can be called twice if device_init fails.
* hwcontext_opencl: DRM to OpenCL mapping for ARMMark Thompson2017-11-22
| | | | | | | | Using cl_arm_import_memory. Unfortunately, despite this not being a standard extension, the function clImportMemoryARM() is not accessible via clGetExtensionFunctionAddressForPlatform(). This means that it has to be linked directly to the ARM OpenCL binary, so making a portable binary is not possible as it is with all other mapping extensions.
* hwcontext_opencl: D3D11 to OpenCL mappingMark Thompson2017-11-22
| | | | Using cl_khr_d3d11_sharing and cl_intel_d3d11_nv12_media_sharing.
* hwcontext_opencl: DXVA2 to OpenCL mappingMark Thompson2017-11-22
| | | | Using cl_khr_dx9_media_sharing.
* hwcontext_opencl: QSV to OpenCL mapping for Intel Media SDKMark Thompson2017-11-22
| | | | | Uses the cl_intel_va_api_media_sharing extension, which supports only NV12 surfaces and only mapping from QSV to OpenCL.
* hwcontext_opencl: VAAPI to OpenCL mapping for Intel i965+beignetMark Thompson2017-11-22
| | | | Supports all surface formats in common between the two.
* lavu: OpenCL hwcontext implementationMark Thompson2017-11-22