下载资源

下载资源我们直接从官网页面进入链接就行了:

或者直接戳链接:https://github.com/GPUOpen-LibrariesAndSDKs/AMF
界面如图:

但我下了很久都没下载下来,后面找了点特殊方法终于把release和master都下载下来了,都是最新的,release版本到了AMF-1.4.7.0,大家可以自行下载,由于个别同学下载可能会遇到问题,所以我稍后会把我下载到的资源上传,供需要的同学。
AMF-master
AMF-1.4.7.0

编译samples

这里我们编辑master版本的,毕竟我们在研究学习嘛,用最新的会比较舒服。

  • 解压如图:
  • 使用vs2017打开项目,如图:
  • 编译,报错:
1>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
1>已完成生成项目“ComponentsFFMPEG.vcxproj”的操作 - 失败。
5>------ 已启动生成: 项目: PlaybackHW, 配置: Debug Win32 ------
2>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
2>已完成生成项目“VideoStitch.vcxproj”的操作 - 失败。
3>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
3>已完成生成项目“CapabilityManager_VS2017.vcxproj”的操作 - 失败。
4>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
4>已完成生成项目“SimpleConverter_VS2017.vcxproj”的操作 - 失败。
6>------ 已启动生成: 项目: SimpleDecoder, 配置: Debug Win32 ------
5>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
5>已完成生成项目“PlaybackHW_VS2017.vcxproj”的操作 - 失败。
7>------ 已启动生成: 项目: SimpleEncoder, 配置: Debug Win32 ------
8>------ 已启动生成: 项目: SVCSplitter, 配置: Debug Win32 ------
6>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
6>已完成生成项目“SimpleDecoder_VS2017.vcxproj”的操作 - 失败。
7>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
7>已完成生成项目“SimpleEncoder_VS2017.vcxproj”的操作 - 失败。
9>------ 已启动生成: 项目: TranscodeHW, 配置: Debug Win32 ------
10>------ 已启动生成: 项目: VCEEncoderD3D, 配置: Debug Win32 ------
8>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
8>已完成生成项目“SVCSplitter_VS2017.vcxproj”的操作 - 失败。
9>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
9>已完成生成项目“TranscodeHW_VS2017.vcxproj”的操作 - 失败。
11>------ 已启动生成: 项目: SimpleEncoderC, 配置: Debug Win32 ------
12>------ 已启动生成: 项目: DVR, 配置: Debug Win32 ------
13>------ 已启动生成: 项目: Stitch, 配置: Debug Win32 ------
10>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
10>已完成生成项目“VCEEncoderD3D_VS2017.vcxproj”的操作 - 失败。
11>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
11>已完成生成项目“SimpleEncoderC_VS2017.vcxproj”的操作 - 失败。
12>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
12>已完成生成项目“DVR_VS2017.vcxproj”的操作 - 失败。
13>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
13>已完成生成项目“Stitch_VS2017.vcxproj”的操作 - 失败。

分析错误原因是我们没有项目中的对应版本的windows sdk,这里我们只需在项目配置中设置为我们的版本(最好比他新的版本)就行。

  • 再编译,报错,提示差头文件,如图:

    差cl.h和vulkan.h,我们从官网看出我们还需要OCL_SDK_LIGHT的,那么我们需要安装它,资源我也会上传,大家可以从官网链接下载,也可以下载我上传的。

    除了OCL_SDK_LIGHT,我们还需要Vulkan SDK。
    下面我们分别介绍下两个sdk的功能。

Vulkan SDK功能

Vulkan API是一种低开销,明确的跨平台图形API,可为应用程序提供对GPU的直接控制,从而最大限度地提高应用程序性能。 有关Vulkan规范和API的更多信息,请参阅Khronos.org。 有关教程级别的信息,请参阅Vulkan教程,该教程可以在Documentation \ Tutorial \ html目录和Vulkan SDK下载站点的SDK中找到。

Vulkan SDK提供构建,运行和调试Vulkan应用程序所需的开发和运行时组件。此SDK基于Khronos Vulkan API标头,其版本反映在Vulkan SDK版本号中(例如,SDK版本1.1.70.0表示SDK使用Vulkan标头版本1.1.70)。 SDK还包括用于窗口系统集成和调试扩展的某些Vulkan扩展(有关更多详细信息,请参阅发行说明)。

注意:此版本号并不表示无法为早期的Vulkan版本开发应用程序。因此,1.1 SDK仍可用于开发Vulkan 1.0应用程序,但不能用于为未来版本的Vulkan开发应用程序。此外,1.1 SDK的存在并不一定表明系统可以实际运行Vulkan 1.1。应用程序需要Vulkan 1.1驱动程序才能使用大多数Vulkan 1.1功能。有关如何以编程方式查询Vulkan版本的更多信息,请参阅SDK中的1.1示例。

OCL_SDK_LIGHT

OCL是OpenCL的简称,“OpenCL是用于编写在异构平台上运行程序的框架,所谓异构平台,一般情况我们指GPU和CPU两种处理器混合的平台。OpenCL由一门用于编写kernels (在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。”
OpenCL可以实现GPGPU(General-purpose computing on graphics processing units, 通用图形处理器)运算, “是一种利用处理图形任务的GPU来计算原本由CPU处理的通用计算任务。这些通用计算常常与图形处理没有任何关系。由于现代图形处理器强大的并行处理能力和可编程流水线,令流处理器可以处理非图形数据。特别在面对单指令流多数据流(SIMD),且数据处理的运算量远大于数据调度和传输的需要时,通用图形处理器在性能上大大超越了传统的中央处理器应用程序。” – 摘自wikipedia

简单解释一下这段话中几个重点:

  • 利用GPU强大的并行能力代替CPU进行运算
    GPU的并行能力特别适合于关于矩阵的运算。利用GPU,我们可以发起很多个轻量级线程,每个线程仅处理一个元素的计算来实现数据并行;而对于CPU,我们只能按顺序每个元素迭代运算。GPU和CPU运算对比起来可以想象成4辆坦克与1万个士兵的战斗力水平的对比;孰胜孰劣,还要看具体进行的任务。因此,并不是所有的OpenCV函数都适合移植到GPU上进行运算。
  • OpenCL由在OpenCL设备上运行的kernel函数语言和控制平台的API组成。
  • OpenCL包含两个主要部分:device和host。在CPU和GPU组成的异构平台中,我们一般把运行核函数的GPU处理器部分称为device,把控制平台API的CPU称为host。相应的,把host上的内存(就是内存)称为host memory;而把device上的内存(GPU显存)称为device memory或者device buffer。在OpenCV里,我们把这两种内存封装为cv::Mat和cv::ocl::oclMat结构。

数据调度和传输

OpenCV的OCL模块中,在GPU上进行运算之前我们必须把内存转成GPU可以直接调用的显存。而在GPU上的运算结束后,我们还需要将在GPU显存上的数据转移到CPU可用的内存上。这两个操作在oclMat中定义为两个成员函数,分别为oclMat::download和oclMat::upload。由于这两个数据传输操作受PCI总线宽带的限制,在实际应用中应尽量减少数据传输,把尽可能多的运算在gpu device上计算完成后,再把数据传回cpu host,以达到最大的数据吞吐量。

安装两个sdk

现在我们将两个sdk下载并进行安装,下载你们可以选择官网,也可以下载我下载的,稍后我会上传我的资源,官网:Vulkan SDK、OCL_SDK_LIGHT
我的资源:
Vulkan SDK
OCL_SDK_LIGHT

  • 安装后,我们再一次编译,发现还是爆同样的错,但这次我们知道是因为,我们配置的系统变量,没加载上,重启一下vs项目后,继续编译还是有报错,但错误变了,如图:
 error C2220: 警告被视为错误 - 没有生成“object”文件 (编译源文件 ..\common\PlaybackPipelineBase.cpp)


出现这个错误的原因是:因为我们的系统大部分使用的是中文,而cpp文件是英文的。
解决方案:使用virtual studio 打开cpp文件,然后进行保存即可。
点击VS工具栏的【文件】->【打开】->找到math_function.cpp文件打开,再保存即可,或者直接找到该文件,通过VS打开再保存也可。
打开如图:

点击“确定”按钮,然后保存文件,再次编译,最后发现还剩一个错误:

5>D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: 命令“xcopy /Y "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\d3dcompiler_47.dll" D:\amd\AMF-master\amf\public\samples\..\..\bin\vs2017x32Debug\

出现该错误的原因:拷贝出错了
编译VC程序时候报错:error MSB3073: 命令“copy /y
查看:
项目的属性-》配置属性-》生成事件-》后期生成事件-》命令行:

copy /y "$(TargetPath)" "$(ProjectDir)..\bin\$(Platform)$(Configuration)"

解决方案:
1、配置上面正确的拷贝路径。
2、如果不需要去掉上面的copy代码。
我们这里是C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\d3dcompiler_47.dll这个路径不存在,找到我们刚刚前面设置的windows sdk的路径,我的是D:\Windows Kits\10\bin

配置上去后,继续编译,终于成功了。

好了,本文就介绍到此,从下一篇开始,我们开始分析解码例子。

AMD 硬解码开发(四)之边摸索边编译samples相关推荐

  1. android硬编码封装mp4,【Android 音视频开发打怪升级:音视频硬解码篇】四、音视频解封和封装:生成一个MP4...

    [声 明] 首先,这一系列文章均基于自己的理解和实践,可能有不对的地方,欢迎大家指正. 其次,这是一个入门系列,涉及的知识也仅限于够用,深入的知识网上也有许许多多的博文供大家学习了. 最后,写文章过程 ...

  2. 【Android 音视频开发-音视频硬解码篇】1.音视频基础知识

    这是一个入门系列,涉及的知识也仅限于够用. 最后,写文章过程中,会借鉴参考其他人分享的文章,会在文章最后列出,感谢这些作者的分享. 本文你可以了解到 作为开篇的文章,我们先来看看音视频由什么构成的,以 ...

  3. 瑞芯微rk3568移植openbmc(四)----关于novnc h264 webcodec硬解码

    2022.11.04 更新 1.关于h264 novnc 软解码 上一篇中实现了novnc h264的webassembly软解码,kvm功能 运行一切正常,但帧率较低,且cpu负载相对较高,goog ...

  4. 【学习】从零开发的Android音视频开发(13)——MediaCodec到OMX框架过程及其硬解码

    MediaCodec到OMX框架过程 在讲NuPlayer时,NuPlayer解码部分会创建MediaCodec,并且最终到达OMX框架,先看MediaCodec的init函数 从init函数中可以看 ...

  5. Qt音视频开发21-通用硬解码

    一.前言 硬件解码是图形芯片厂家提出的用GPU资源解码视频流的方案,与之相对的是软解,也就是传统的用CPU承担解码工作的方案:优点是效率高,功耗低.热功耗低,缺点是缺乏有力的支持(包括滤镜.字幕等), ...

  6. Qt音视频开发10-ffmpeg内核硬解码

    一.前言 为了极大的降低CPU的占用,实现硬解码(也叫硬件加速)非常有必要,一个视频文件或者一路视频流还好,如果增加到64路视频流呢,如果是4K.8K这种高分辨率的视频呢,必须安装上硬解码才是上上策. ...

  7. 高清视频相关知识和、KMPlayer 硬解码(DXVA)设置、Z520+US15W+GMA500硬解码测试

    "高清",就是高清晰度,是相对于"标清"(即标准清晰度)而言的,主要是指高清晰度的视频媒体,高清技术的发展,越来越多的人接触到高清,现在网络上是铺天盖地的高清视 ...

  8. 启明云端分享| 采用 B to B设计的RK3399核心板来了,邮票孔,支持4K、H.265 硬解码;核心板内置 EDP、MIPI-DSI、HDMI、DP 显示接口,带有 2 路 MIPI-CSI

    RK3399核心板(邮票孔)–IDO-SOM3909 提示:启明云端旗下触觉智能 采用 B to B设计的RK3399核心板来了,邮票孔,支持4K.H.265 硬解码:核心板内置 EDP.MIPI-D ...

  9. “硬解码”与“软解码”的区别

    关于"硬解码"与"软解码" 忧蓝 发布于: 2010-08-02 11:03 由于高清视频的分辨率远远高于一般格式视频,使得高清视频的码率非常高.再加上VC-1 ...

最新文章

  1. ​HOG特征也可以作为图像重建的目标!FAIRJHU提出新的one-stage自监督预训练模型MaskFeat!...
  2. python对字典的基本操作(遍历、排序)总结,Python字典操作简明总结
  3. 【MySQL distinct的使用】如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中
  4. 二、python框架相关知识体系
  5. Unity工程中 .Meta 文件的来龙去脉
  6. ORACLE_mldn_002
  7. 基于FPGA的1080P 60Hz BT1120接口调试过程记录
  8. 阿里云吴磊创办yunQ云桥,完成银杏谷资本2000万元天使轮融资...
  9. cad缩放_CAD中的AL是什么指令? 怎么操作哦
  10. php error unexpected,PHP异常Parse error: syntax error, unexpected错误解决方法
  11. 剧本供不应求,会写课堂助力创作者入局剧本杀
  12. manjaro 配置 独立显卡驱动
  13. P4839 P哥的桶 题解
  14. Adobe国际认证|使用 Adob​e Acrobat 在线增强协作
  15. Source code license
  16. 刷爆了国外朋友圈的英文漫画:人生的意义
  17. 基于SSM实现水果商城批发平台
  18. Leetcode 刷题必须Review 二 Leetcode(912 215 315 53)
  19. 算法梳理:随机森林算法梳理
  20. easyAR学习(二)

热门文章

  1. [DirectX]DirectX9使用Effect和Vertexshader、PixelShader的区别
  2. OCT1400 光耦参数测试仪
  3. 可以插卡的ipad_请问苹果的iPad那几款是能无线也能插卡的
  4. 南京邮电大学计算机专业录取分数线2019,南京邮电大学录取分数线
  5. redis7 Cluster模式 集群
  6. Quartz学习记录
  7. 数字基带信号的功率谱密度
  8. 如何在Excel中使用数据透视表计算百分比变化
  9. MES和ERP在生产过程优化上,谁更胜一筹?
  10. TC397 LIN Master 用例