Some months ago and also today I met error when building ffmpeg. The error was :
...
fftools/ffplay_renderer.c:118:11: error: unknown type name _AVVulkanDeviceContext_; did you mean _AVDRMDeviceContext_?
118 | const AVVulkanDeviceContext *hwctx = avhwctx->hwctx;
| ^~~~~~~~~~~~~~~~~~~~~
| AVDRMDeviceContext
fftools/ffplay_renderer.c:121:10: error: request for member _lock_queue_ in something not a structure or union
121 | hwctx->lock_queue(avhwctx, qf, qidx);
| ^~
fftools/ffplay_renderer.c: In function _hwctx_unlock_queue_:
fftools/ffplay_renderer.c:129:11: error: unknown type name _AVVulkanDeviceContext_; did you mean _AVDRMDeviceContext_?
129 | const AVVulkanDeviceContext *hwctx = avhwctx->hwctx;
| ^~~~~~~~~~~~~~~~~~~~~
| AVDRMDeviceContext
fftools/ffplay_renderer.c:132:10: error: request for member _unlock_queue_ in something not a structure or union
132 | hwctx->unlock_queue(avhwctx, qf, qidx);
| ^~
fftools/ffplay_renderer.c: In function _create_vk_by_hwcontext_:
fftools/ffplay_renderer.c:208:5: error: unknown type name _AVVulkanDeviceContext_; did you mean _AVDRMDeviceContext_?
208 | AVVulkanDeviceContext *hwctx;
| ^~~~~~~~~~~~~~~~~~~~~
| AVDRMDeviceContext
fftools/ffplay_renderer.c:232:14: error: request for member _get_proc_addr_ in something not a structure or union
232 | if (hwctx->get_proc_addr != SDL_Vulkan_GetVkGetInstanceProcAddr()) {
| ^~
fftools/ffplay_renderer.c:239:31: error: request for member _get_proc_addr_ in something not a structure or union
239 | ctx->get_proc_addr = hwctx->get_proc_addr;
| ^~
fftools/ffplay_renderer.c:240:22: error: request for member _inst_ in something not a structure or union
240 | ctx->inst = hwctx->inst;
| ^~
fftools/ffplay_renderer.c:243:30: error: request for member _inst_ in something not a structure or union
243 | .
.....
After some research I tried some trial and I found the solution. The solution is :
- Rebuild libplacebo with vulkan enabled.
- build the ffmpeg with vulkan enabled.
It's really weird, because the previous ffmpeg build I disable vulkan and somehow ffplay still need it.