基于FFmpeg的Dxva2硬解码及Direct3D显示(一)

前言

关于视频软解码的资料网上比较多了,但是关于硬解可供参考的资料非常之有限,虽然总得来说软解和硬解的基本逻辑一样,但是实现细节上的差别还是比较多的。虽然目前功能已实现,但是理解不到位的地方还是有的,文中我会抛出来,希望大神们不吝赐教。
1566872-20190128192934614-1314756584.png

上图大致说明了软解和硬解的流程,其中红色箭头表示需要在系统内存与显存之前进行IO,比较费时。

名词解释

FFmpeg:通俗理解就是一套包含视音频编解码、采集、转码及处理等功能的开源库,源码由C语言编写。

Dxva2:就是DirectX Video Acceleration 2.0规范,即利用DirectX 的视频加速规范的2.0版本。值得注意的是这个规范是一个分级的标准,支持该标准的前提下还得看看当前实现了该标准下的哪几种解码能力。比如针对H.264的解码能力从高到低依次分为 A~F 6个等级。

DirectX :微软开发的多媒体编程接口,由C++语言实现,用于加强3D图形和声音效果,字面意思Direct代表直接操作硬件,X代表可以获取各种硬件服务。

Direct3D:DirectX 的一部分,渲染方式和GDI不一样,可以加速渲染,对标(OpenGL)。

小结:Dxva2 是规范,具体功能实现通过调用 DirectX 提供的API。

代码实现逻辑

1566872-20190128192711671-1661536260.png

实现逻辑还是比较简单的,分为四大块:

  1. 解析视频源
  2. 初始化D3D
  3. 初始化硬件解码器
  4. 解码显示

接下来将分成四篇博文依次进行介绍。

转载于:https://www.cnblogs.com/huluwa508/p/10298210.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值