libva版本内容变化介绍

发布时间:2026/11/2 1:09:29
libva版本内容变化介绍 主要内容本文主要介绍libva的各个版本从libva-1.0.0到libva-2.6.0的重要的差异主要就是各个版本结构体内容的改变libva各个版本的改变的内容都在libva/NEWS文件中油详细的介绍感兴趣的可以仔细研究下其他内容如libva的代码实现改变不做过多介绍。版本介绍截至2021-4-24日止目前libva的版本libva-2.11.0,最古老的版本应该是libva-1.0.0,每个大的版本又分为好几个小的版本如libva-1.6又有libva-1.6.0libva-1.6.1libva-1.6.2,如libva-1.7又有libva-1.7.0libva-1.7.1libva-1.7.2libva-1.7.3。下文中只对大的版本的最新版进行比较即比较libva-1.6和libva-1.7就是比较libva-1.6.2与libva-1.7.3。libva的版本以及API版本号随着时间的变化也是不断变化的API版本号由三部分组成为(MAJOR VERSION).(MINOR VERSION).(MICRO VERSION).libva-1.0.0到libva-1.8.0的版本号是一个阶段如libva-1.6.0版本号为0.38libva-1.6.1版本号为0.38.0对就是0.38.0所有MICRO VERSION为0的API版本号只有两位所以libva-1.6.0版本号对应为0.38libva-1.6.1版本号对应0.38.0。libva-1.6.0到libva-1.8.0的版本号规则为MAJOR VERSION为0MINOR VERSION的38对应libva-1.6.x39对应libva-1.7.xMICRO VERSION为x-1,那么0.40对应libva-1.8.0libva-1.7.2对应0.39.1。对于libva-1.8.xx0的版本都是0.40.0因为这个时候是一个API版本号改变的节点。没有版本libva-1.9.x没有版本libva-1.9.x没有版本libva-1.9.x。对于libva-2.0.0对应的API版本号为1.0.0 以后的API版本号计算方式如下libva-x,y,z的API版本号为x-1.y.z,如libva-2.4.1的API版本号为1.4.1。libva-1.0.0~libva1.3.x增加VA_ERROR值以及VAProfile和VAEntrypoint增加VAConfigAttribs增加VAConfigAttribRTFormat,VAConfigAttribRateControl,VAConfigAttribEncPackedHeaders,VAConfigAttribEncInterlacedVAConfigAttribEncSliceStructure的值增加VAGenericValueType增加surface相关功能增加surface相关API增加VABufferType删除VAEncH264VUIBufferTypeVAEncH264SEIBufferType增加encode的相关结构体以及枚举变量值增加VACodedBufferSegment的status值增加fourcc值修改VADriverContext删除VADriverVTableTPI结构体的APIlibva-1.3.x~libva1.4增加VABufferInfo增加VADriverVTable的APIlibva-1.4~libva1.5增加VAProfile增加结构体VAConfigAttribValEncJPEG修改结构体VAHuffmanTableBufferJPEGBaseline位置,删除VAEncPictureParameterBufferJPEGVAQMatrixBufferJPEG增加HEVC相关结构体libva-1.5~libva1.6增加颜色空间转化标志增加VAProfileVAConfigAttribType增加VAConfigAttribRTFormat值增加VAEncMiscParameterType以及结构体VAEncMiscParameterSkipFrame增加VADriverContext成员libva-1.6~libva1.7增加VAEntrypointEncSliceLP到VAEntrypoint增加 VAConfigAttribEncROI和VAConfigAttribEncRateControlExt到VAConfigAttrib以及相对应的结构体VAConfigAttribValEncROIVAConfigAttribValEncRateControlExt;增加基于rate control的宏块控制项VA_RC_MB到VAConfigAttrib的VAConfigAttribRateControl增加VAEncMiscParameterType中的VAEncMiscParameterTypeROI,VAEncMiscParameterTypeTemporalLayer项以及结构体VAEncMiscParameterBufferROI,VAEncMiscParameterTypeTemporalLayerStruct对VAEncMiscParameterRateControl结构体进行增加但结构体大小不变对VAEncMiscParameterFrameRate进行了增加改变了结构体的大小。libva-1.7~libva-1.8libva-1.7到libva-1.8版本改动内容并不大主要改动如下增加Message Callback函数增加Image和Subpicture的format支持修改了部分注释。libva-1.8~libva-2.0版本改动内容较多主要改动如下结构体对齐的Pad size定义引入运动矢量结构体VAMotionVector的定义以及修改Message Callback的相关参数定义加入VAProfile即将过时的VAProfileH264Baseline的profile使用该profile编译器会提示警告对其他可能废弃的一些枚举值进行了相关标记加入VAConfigAttribFEIFunctionType,VAConfigFEIMVPredictors到VAConfigAttribType中增加VAConfigAttribType中VAConfigAttribEncSliceStructure的value增加关于FEI (Flexible Encoding Infrastructure)的EntrypointVABufferType以及VAEncMiscParameterType为部分结构体增加va_reserved字段扩容以待将来使用该变化基本包括了va.h中所有的结构体所以在版本兼容上比较困难。如果APP和Driver结构体的size不统一就会出现数据错误或者访问越界的问题。该结构体中部结构太多省略部分该结构体中部结构太多省略部分该结构体中部结构太多省略部分除了va.h中的结构体还有va_backendvpp.hva_vpp.h,va_drmcommon.h中的结构体以及decodeencode相关的结构体此处不再一一详述。加入2D format VA_FOURCC_I4209. 改变一些数据类型的定义比如unsigned int 变为uint32_t,为了多平台的兼容。10.放弃va_tpi.h中描述的相关结构体VASurfaceAttributeTPIVASurfaceMemoryType。以及相关接口vaPutSurfaceBufvaCreateSurfacesWithAttribute。11. 增加va_str.h可以将VAProfile,VAConfig,VAConfigAttrib,VABufferType进行打印。libva-2.0~libva-2.1这个版本变更也比较大增加了很多新的结构体和新的API。具体如下增加VAEntrypointStats到VAEntryPoint,增加VAConfigAttribDecJPEG和VAConfigAttribsDecprocecing等VAConfigAttribType以及定义VAConfigAttribType的相关结构体以及结构体的值。中间内容省略中间内容省略中间内容省略中间内容省略中间内容省略中间内容省略中间内容省略增加VAConfigAttribType中VAConfigAttribRateControl的值增加VAConfigAttribRTFormat的值定义Muti-frame的context,以及操作API增加VABufferType中间内容省略增加decode 和encode 的rate control的结构体以及QueryProcessingRate的API。增加encode的相关参数的类型以及对应的结构体。增加encode相关Rate Control的相关字段增加VC1的Picture Paramter字段。中间内容省略增加VACreateBuffer2的API增加VACodedBufferSegment的status字段值。增加vaExportSurfaceHandle的API增加VASurfaceDecodeMBErrors的num_mb字段增加2D format值增加VADisplayAttribMirror的值libva-2.1~libva2.2改变不大具体如下增加VA_ERROR的类型增加VA的profile到VAProfile增加VAConfigAttribRTFormat的值提供10字节和12字节支持。增加VASurfaceAttribUsageHint的flags值增加2D format支持增加HEVC的相关decode的拓展结构体如VAPictureParameterBufferHEVCRextVAPictureParameterBufferHEVCSccVAPictureParameterBufferHEVCExtensionVASliceParameterBufferHEVCRextVASliceParameterBufferHEVCExtension其他少量更改如va_str.h,修改FEI的结构体VAEncMiscParameterFEIFrameControlHEVC等。libva-2.2~libva-2.3增加VAConfigAttribRateControl值增加VABufferType增加VAEncMiscParameterType的值增加VAEncMiscParameterRateControl增加VAEncMiscParameterBufferMultiPassFrameSize增加2D format的值增加其他结构体字段如VASliceParameterBufferHEVC以及增加其他内容如注释va_str.h中的可打印值。libva-2.3~libva-2.4该版本变化较小如下增加fourcc格式增加VAProcHighDynamicRangeMetadataType字段va.c中vaSetDriverName函数的改动其他微小改动如注释等libva-2.4~libva-2.5增加vaPutsurface的flag增加VAConfigAttribValMaxFrameSize到VAConfigAttribType以及对应的结构体VAConfigAttribValMaxFrameSize。标记VAEncMiscParameterBufferMultiPassFrameSizeVAEncMiscParameterBufferMaxFrameSizeVAEncMiscParameterBufferMultiPassFrameSize的deplicated项目VAEncMiscParameterType增加2D format增加可打印的string类型VAStatus其他非重要的改变如代码中结构的改变以及打印信息的改变等。libva-2.5~libva-2.6增加VAConfigAttribType的值取消VAConfigAttribValDecJPEG中的va_reserved字段增加VAConfigAttribPredictionDirection的值增加VAConfigAttribValMultipleFrame结构体增加VADisplayContext结构体的接口增加VASliceParameterBufferHEVC结构体的字段增加VAEncSequenceParameterBufferHEVC的seq_filed的位段。其他增加内容如注释,va_str.h的可打印内容等。总结从以上各个版本的差异可以发现libva-1.0.0到libva-1.3版本API变动比较大 libva-1.3到libva-1.5甚变动不大libva-1.6到libva-1.8的版本内容差异有限很大程度上都是可以兼容也就是说同样的VA驱动可以对应于 libva-1.3到libva-1.5libva-1.3到libva-1.5的版本都可以使用。但是到libva-2.0时由于结构体很多都发生了改变所以驱动会出现不兼容的现象需要根据环境进行现场编译。从内容上来看VA支持的特性越来越多功能越来越完善使用也越来越复杂。从驱动的角度来看只需要支持API和版本内容变动比较大的版本即可无需所有版本都支持。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询