dxva简介

http://www.nmm-hd.org/doc/index.php?title=DXVA%E5%92%8Cpsp&variant=zh-cn


DXVA和psp

目录

  [隐藏]

硬件加速介绍篇

DirectX视频加速简介:

  DirectX视频加速(DirectX Video Acceleration/DXVA)是微软在Windows以及Xbox 360平台上的一种API技术规范,它允许通过硬件加速视频解码。以管线方式,将CPU疲于处理的运算,诸如反余弦变换(iDCT)、运动补偿(Motion Compensation)和反交错(Deinterlacing)等,交给GPU完成。DXVA 2.0能让更多的运算实现硬件加速,包括视频捕捉和处理。DXVA在显卡(Video Card)的视频渲染模块中工作。在Windows 2000中,DXVA 1.0作为一个标准的API被引入,并且在Windows 98以及之后的Windows中依然可用。DXVA 1.0可在覆盖合成器(Overlay Mixer)或VMR 7/9运行。DXVA 2.0,仅在Windows Vista、Windows 7以及之后的微软操作系统中可用,与Media Foundation合并,并且在MF(Media Foundation)中使用的是增强型视频渲染器(Enhanced Video Renderer/EVR)。 视频解码器为硬件加速解码和渲染特别定义了一条特殊的解码管线以使用DXVA。CPU分析流媒体并转换成DXVA兼容的数据结构。DXVA定义了一组可硬件加速的运算。除此之外,还定义了一组可以让图形驱动实现运算加速的硬件驱动接口(Device Driver Interfaces/DDIs)。如果解码器需要用到任何DXVA已支持的运算,那么通过调用这些接口,它便可实现运算的硬件加速。如果图形驱动未能调用这些接口,它将会返回给解码器进行软解码。然后已解码的视频输出给视频渲染设备。

DXVA的实现

DXVA有三种视频加速级别

  • MC加速
  • MC加速+iDCT加速
  • MC加速+iDCT加速+VLD[1]加速

[1]VLD: Variable-Length Decoding,即可变长度解码

几种常见的支持DXVA的播放器或解码器

  • PowerDVD(CyberLink): 著名的商业播放器
  • Nvidia PureVideo: 从名字就可以看出,Nvidia公司出品的视频解码器
  • MPC-HC: 继承了历史悠久的开源播放器MPC的衣襟,并在其基础上增加了许多实用功能
  • PotPlayer: 原Kmplayer作者开发的另一款播放器
  • ffdshow: 著名的开源编解码器,功能强大,内置了许多实用滤镜,在最近的版本中加入了DXVA模块

  在目前,虽然有许多播放器支持DXVA解码,但综合考虑MPC-HC是最为实用并且方便实用的。首先MPC-HC是开源软件,其次MPC-HC是绿色软件,无需安装即可使用,再则MPC-HC内置的字幕滤镜比起其他播放器,对ASS/SSA的支持度最高。因此接下来着重介绍MPC-HC


MPC-HC的DXVA对显卡的限制:

  • nVidia 8(9)xxx系列,仅支持H.264
  • ATI Radeon HD系列,支持H.264和VC-1
  • Intel G45,仅支持H.264

在未来,MPC-HC可能会增加对运动补偿模式的支持,以兼容更多古老的显卡。但在目前,还不支持MPEG2和WMV的硬件加速。


由于DXVA的限制,所使用的渲染器必须遵守以下规则:

Windows XP用户,必须使用覆盖合成器(Overlay Mixer),VMR 7或VMR9作为视频渲染器(Video Renderer)

Windows Vista/7用户,必须使用增强型视频渲染器(Enhanced Video Renderer/EVR)或EVR custom renderer


MPC-HC视频解码器必须直接连接视频渲染器,因此中间无法插入DirectVobSub或ffdshow之类的滤镜。 在DXVA模式中,外挂字幕可以通过MPC-HC内置的字幕滤镜来显示,但是对渲染器的要求更苛刻

Windows XP用户,必须使用VMR9

Windows Vista/7用户,必须使用EVR custom renderer


在 选项(Options)/播放(Playback) 中,勾上 自动装载字幕(Auto-load subtitles)


支持DXVA的视频

可以通过软件来检测:DXVAChecker


  说了那么多,其实只是想说视频加速解码真是个复杂的东西。需要硬件,解码器,视频本身等多方面的支持方可促成视频硬解。虽然复杂,但这是值得的。通过视频加速解码,我们可以将CPU从繁重又重复的工作中解放出来,让它在别的地方发挥自己的性能,以及让那些由于CPU性能孱弱但有一块还不错的显卡的电脑同样可以享受高清视频。

压制篇(x264版)

接下来将介绍如何压制一个能使绝大多数硬件加速解码方案都支持的视频 使用的编码器是x264,它是一个效率非常高的开源编码器,基于H.264标准设计。

H.264的规格分类

首先H.264的视频按照标准被分为几个规格

Profile在x264中被分为baseline/main/high (Profile越高级,支持越多的高级特性,成品的压缩率越高)

x264相关参数:--profile 可强制指定Profile,一般情况下可不选,x264将会根据其他参数自行设定此项。如果设置此项,x264将会自动无视所设Profile无法支持的高级特性。

特性支持表:http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles

Level被分为1/1.1/1.2/1.3/2/2.1/2.2/3/3.1/3.2/4/4.1/4.2/5/5.1 (Level越高,对分辨率/参考帧/码率的限制越小)

x264相关参数:--level 可强制指定Level,一般情况下可不选,x264将会根据实际情况自行设定此项,但自动设定并不一定准确。如果设置此项,x264将会自动限制DBP[2]。

具体规格详见:http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels

[2]DPB,即Decoded Picture Buffer。

兼容性

目前,随着软硬件的发展,播放硬件加速播放高清视频对视频本身的限制越来越小,有些甚至已经宣称支持 High Profile @ Level 5.1。但这些毕竟只有少数软硬件支持,为考虑支持更普遍的硬件加速方案。推荐压制视频不超过 High Profile @ Level 4.1。此规格被绝大多数主流硬件加速播放方案支持。


相关参数

因为大多数方案已经支持 High Profile。因此我们只需着重考虑Level对硬件加速的兼容。 Level与DPB以及码率息息相关。而DPB与分辨率(resolution)、参考帧(ref)相关。

DPB的参考帧限制公式: ref=Min(Floor(MaxDpbMbs / (PicWidthInMbs * FrameHeightInMbs)), 16)

MaxDpbMbs:

Level11b1.11.21.322.12.233.13.244.14.255.1
MaxDpbMbs3963969002,3762,3762,3764,7528,1008,10018,00020,48032,76832,76834,816110,400184,320

PicWidthInMbs * FrameHeightInMbs(分辨率) 举个例子:宽为1920时,PicWidthInMbs=120;高为1080时,FrameHeightInMbs=68。其它分辨率按比例计算即可。

常见高清视频视频分辨率参考帧限制:

Level 4.1
1920x1080:  4
1440x1080:  5
1280x960 :  6
1280x720 :  9
960x720  : 12

关于码率,BD原盘都是Level 4.1,那压出来的东西一般不会超过原盘吧。

如果你有特别需求需要限制的话,可用 --vbv-maxrate 和 --vbv-bufsize 。


另外有些视频虽然标注 High Profile @ Level 5.1,但实际上这些视频也同样满足Level 4.1的限制。但由于一些解码方案直接读取视频的中压制者强制写入的Level信息,而导致无法播放。这时,我们不必重新压制,可以使用roozhou所修改的ffmpeg来简单的更改视频中的Level信息。

地址:ffmpeg

使用范例(命令行):

>ffmpeg -i input.mkv -vcodec copy -acodec copy -vbsf h264_changesps=level=41 output.mkv


参考文献:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一款由 KMPlayer 的原作者姜勇希在跳槽到 Daum 公司后使用 C++ 完全重写的播放器。它基本上继承了 KMPlayer 方便的滤镜的管理系统。同时简化了内部的解码器体系。现在基本依靠 Bass 和 FFmpeg 系滤镜解决播放问题。Potplayer 具有DXVA 硬件解码以及多线程解码功能,使您能更流畅的观看高清影片。在相对小巧的体积下 Potplayer 实现支持绝大多数视频格式的功能。美化主程序图标和关联图标,移除了聊天模块、VC库和连接,集成了real解码器,加入一款精美透明皮肤(开启皮肤D3D模式可实现)。体积小巧、界面简洁、功能强大,没有任何广告和垃圾信息,是本地视频播放器的最佳不二之选。同时汉化版抛弃了以往 KMP 制作时追求大而全的模式而改以精简的方式,使 Potplayer 成为真正的便携播放器! PotPlayer就是KMPlayer作者换公司之后基于KMPlayer开发出来的。当年全能播放器领域最出名的数暴风影音和Kmplayer。Kmplayer站到了傻瓜播放器对面的队伍,适合有一定动手能力的玩家,它可以满足各类用户的定制需求,有丰富的参数设定可以满足你的要求,比如多字幕的挂载。本身也很全能,性能强悍。专业性尤其迎合了高清党的需求。Potplayer作为后辈,继承了Kmplayer的衣钵,而且有64bit版本,简直找不到更好的播放器。最大的优点——不流氓!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值