GPU-CODEC-VAAPI析序
前记
人随时年纪的增长,特别是程序民工,觉的,越走越路不宽且陡,随着学习知识和技能增加,但能用能落地的越来越少,不知不觉已又几年光阴飞逝。一波又一波的职场优化,感觉职涯越来越近,怕以后再也不会做这些了,趁现在还在工地上,赶紧记录下曾经,曾几何时无路可走,盾入了这行与GPU和操作系统相关苦工队伍中,遂从kernel /drivers/gpu/drm, libdrm, mesa,整理起了linux 图形stack;这些都是出自己前多年前工作目标规划的延续,后又现工作原因,入门codec ffmpeg/gstream; 林林总总、走马观花,有拂面而过,有管中窥豹,但始终末吹成一曲,不得要领。
管他的,先断章取义记如下
GPU的5大应用功能简记
- display,又称显示控制,多年前工作有点淺触;
- 图形栈2d
- 图形栈3d-mesa,(与图形栈x11/wayland相关,也与游戏开发底层有关)
- codec 编解码(有的称VPU)
- Computer-GPU 即通用计算,现最热门的应用神经网络AI.
目前精力主要聚散在1~4点上,第5点目前个人条件就暂时不去碰了,后续有缘再理。
display,又称显示控制,多年前从top-gate/bottom-gate硅管组成大大小小面板,再gate/source driver 各种控制,再到前级 TCON/GRAM,FPGA-TCON ,各种LCD driver , LCD-Controller, 再次升级到PC上的linux-drm,一直较迷惑绕道的就是GEM,直到看到mesa3D,才对GEM有点不绕道。
说了这么多费话,还是选从管中窥的豹一斑开始吧!
选的第一斑即codec 编解码-VAAPI
codec 编解码-VAAPI
一直以来老是搬用WIKI :VAAPI (Video Acceleration API) is an open-source library and API specification, which provides access to graphics hardware acceleration capabilities for video processing. It consists of a main library and driver-specific acceleration backends for each supported hardware vendor.
这一句我都懒的翻译了,老是拿来作开场白,接下来排一堆生硬的API接口,写demo, 老生常谈,我都觉的没的意思。
相比,我还是觉的了解并理清如何在GPU中实现,如何在应用中拉通落地,更无聊,但标记在这,表明曾经来过, 如果要作优化,可能对入门的人也许用的上。
接下来从 Mesa中的开源实现VAAPI 说起,对比下vdpau及相关的,及其它各家实现。
再看看应用ffmpeg 和MPV。
好了,想了想,要继写的话会很多,我还是记成个系列吧
先拟个草项如下:
GPU-CODEC_vaapi_mesa_front_API
GPU-CODEC_vaapi_mesa_backend_driver_intel
GPU-CODEC_vaapi_mesa_backend_driver_amd
GPU-CODEC_vaapi_utily验证
GPU-CODEC_vaapi_ffmpeg_example
GPU-CODEC_vaapi_mpv
GPU-CODEC_vaapi_gstreamer