Intel Quick Sync Video Encoder 2
这边博客主要记录在预研quick sync中涉及到的一些性能质量相关的关键参数设置。
github: https://github.com/MarkRepo/qsve
1. VPP处理过程伪代码:
MFXVideoVPP_QueryIOSurf(session, &init_param, response); allocate_pool_of_surfaces(in_pool, response[0].NumFrameSuggested); allocate_pool_of_surfaces(out_pool, response[1].NumFrameSuggested); MFXVideoVPP_Init(session, &init_param); in=find_unlocked_surface_and_fill_content(in_pool); out=find_unlocked_surface_from_the_pool(out_pool); for (;;) { sts=MFXVideoVPP_RunFrameVPPAsync(session,in,out,aux,&syncp); if (sts==MFX_ERR_MORE_SURFACE || sts==MFX_ERR_NONE) {MFXVideoCore_SyncOperation(session,syncp,INFINITE); process_output_frame(out); out=find_unlocked_surface_from_the_pool(out_pool); } if (sts==MFX_ERR_MORE_DATA && in==NULL) break; if (sts==MFX_ERR_NONE || sts==MFX_ERR_MORE_DATA) { in=find_unlocked_surface(in_pool); fill_content_for_video_processing(in); if (end_of_input_sequence()) in=NULL; } } MFXVideoVPP_Close(session); free_pool_of_surfaces(in_pool); free_pool_of_surfaces(out_pool);
2.Encoder处理过程伪代码:
MFXVideoENCODE_QueryIOSurf(session, &init_param, &request); allocate_pool_of_frame_surfaces(request.NumFrameSuggested); MFXVideoENCODE_Init(session, &init_param); sts=MFX_ERR_MORE_DATA; for (;;) {if (sts==MFX_ERR_MORE_DATA && !end_of_stream()) {find_unlocked_surface_from_the_pool(&surface);fill_content_for_encoding(surface);}surface2=end_of_stream()?NULL:surface;sts=MFXVideoENCODE_EncodeFrameAsync(session,NULL,surface2,bits,&syncp);if (end_of_stream() && sts==MFX_ERR_MORE_DATA) break;… // other error handlingif (sts==MFX_ERR_NONE) {MFXVideoCORE_SyncOperation(session, syncp, INFINITE);do_something_with_encoded_bits(bits);} } MFXVideoENCODE_Close(); free_pool_of_frame_surfaces();
3. Lowlatency 低延时参数设置:
//Encoder参数设置: m_mfxEncParams.mfx.GopRefDist = 1; m_mfxEncParams.AsyncDepth = 1; m_mfxEncParams.mfx.NumRefFrame = 1;//Vpp参数设置: m_mfxVppParams.AsyncDepth = 1;
4. Quality 编码质量相关参数:
m_mfxEncParams.mfx.TargetKbps // 码率越高,质量越好, 流量越大 m_mfxEncParams.mfx.TargetUsage // 1~7 质量从高到低, 流量几乎不变,质量变化不明显
5.SPS PPS信息(开始一个新的编码序列)
//获取当前参数设置 mfxVideoParam par; memset(&par, 0, sizeof(p ar)); sts = m_pMfxEnc->GetVideoParam(&par); MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, sts);//设置编码器扩展选项,开始一个新序列 mfxExtEncoderResetOption resetOption; memset(&resetOption, 0, sizeof(resetOption)); resetOption.Header.BufferId = MFX_EXTBUFF_ENCODER_RESET_OPTION; resetOption.Header.BufferSz = sizeof(resetOption); resetOption.StartNewSequence = MFX_CODINGOPTION_ON; mfxExtBuffer* extendedBuffers[1]; extendedBuffers[0] = (mfxExtBuffer*) & resetOption; par.NumExtParam = 1; par.ExtParam = extendedBuffers; sts = m_pMfxEnc->Reset(&par); MSDK_CHECK_RESULT(sts,MFX_ERR_NONE,sts);//手动设置编码参数 mfxEncodeCtrl curEncCtrl; memset(&curEncCtrl, 0, sizeof(curEncCtrl)); curEncCtrl.FrameType = MFX_FRAMETYPE_I | MFX_FRAMETYPE_REF | MFX_FRAMETYPE_IDR; sts = m_pMfxEnc->EncodeFrameAsync(&curEncCtrl, &m_pVPPSurfacesVPPOutEnc[nEncSurfIdx], &m_mfxBS, &syncpEnc);
6. 运行环境依赖的rpm
libdrm, libdrm-devel, libva, intel-linux-media, kmod-ukmd(内核模块), libippcc.so, libippcore.so,(libippcc.so 会根据cpu型号依赖不同的动态库,如E3 1275 依赖libippccl9.so, i5 6400 依赖libippccy8.so)
7. 剩下的细节参考github上的源代码,稍后把代码放到github上管理起来。
转载于:https://www.cnblogs.com/programmer-wfq/p/7147042.html
Intel Quick Sync Video Encoder 2相关推荐
- 2023-04-18:ffmpeg中的hw_decode.c的功能是通过使用显卡硬件加速器(如 NVIDIA CUDA、Intel Quick Sync Video 等)对视频进行解码,从而提高解码效
2023-04-18:ffmpeg中的hw_decode.c的功能是通过使用显卡硬件加速器(如 NVIDIA CUDA.Intel Quick Sync Video 等)对视频进行解码,从而提高解码效 ...
- core sync是什么软件_什么是Quick Sync Video
以超快的速度制作.编辑与分享视讯 Intel Quick Sync Video (Intel 高速影像同步转文件技术) 让您迅速制作.编辑与分享视讯,无论是要在家中分享,或是张贴到网络上,都不需要再花 ...
- H.264转码加速:NVENC大战Quick Sync
GPU加速技术对普通消费者最直观的影响就是视频转码应用上了,NVIDIA..AMD以及Intel都有自己的加速技术,而在新一代CPU和GPU架构上,三方都有更新的技术方案.<br>< ...
- H.265 HD 和H.265 4K Video Encoder IP Core
H.265 HD 和H.265 4K Video Encoder IP Core H.265 HD Video Encoder IP Core(H.265 HD Video/Audio Encoder ...
- Flash 8 Video Encoder安装事项
Flash 8 Video Encoder 在 Flash 8的安装中有带,但运行需要 DirectShow9和 QuickTime6.5以上支持.实际上装DirectX9就可以了. ...
- Intel Media SDK H264 encoder GOP setting
1 I帧,P帧,B帧,IDR帧,NAL单元 I frame:帧内编码帧,又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随 ...
- 《翻译》Intel 64 与 IA-32 架构软件开发者手册卷1翻译
<前言> 翻译自官方的PDF版手册,可以从下述站点下载英文原版: http://www.intel.com/content/www/us/en/processors/architectur ...
- LiveVideoStackCon讲师热身分享 ( 十三 ) —— Intel QSV技术在FFmpeg中的实现与使用
LiveVideoStackCon 2018音视频技术大会是每年的多媒体技术人的盛宴,为了让参会者与大会讲师更多互动交流,我们推出了LiveVideoStackCon讲师热身分享第一季,在每周四晚19 ...
- LiveVideoStackCon讲师热身分享 ( 十三 ) —— Intel QSV技术在FFmpeg中的实现与使用
LiveVideoStackCon 2018音视频技术大会是每年的多媒体技术人的盛宴,为了让参会者与大会讲师更多互动交流,我们推出了LiveVideoStackCon讲师热身分享第一季,在每周四晚19 ...
- ffmpeg Intel硬件加速总结
0. 概述 FFmpeg可通过Intel的GPU进行加速,加速器的名称是Intel Quick Sync Video,简称qsv,支持该加速器的Intel处理器的型号是带有Intel Iris gra ...
最新文章
- 硬刚一周,3W字总结,一年的经验告诉你如何准备校招!
- python使用imbalanced-learn的NearMiss方法进行下采样处理数据不平衡问题
- web实现QQ第三方登录 开放平台-web实现QQ第三方登录
- 周日21点50:关注电子阅读的大潮到来
- LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和
- Asp.net在IIS6.0权限设置的问题,大牛进
- java锁机制ppt_总结:Java锁机制
- uvalive 3938 Ray, Pass me the dishes! 线段树 区间合并
- Visual Studio 2017 15.6预览版最新进展
- Atitit.木马病毒的免杀原理---sikuli 的使用
- 《解读量化投资:西蒙斯用公式打败市的故事》内容简介及PDF下载
- 链表:头插法与尾插法(简易图解和代码)
- java编写平行四边形的代码_CSS 实现平行四边形的示例代码
- windows10自带屏保设置
- spring cache annotation(二)
- maximal-rectangle
- 数据沼泽_数据湖:只是一片沼泽,没有数据治理和目录
- vue开发PC端响应式项目
- Javascript:ES6-ES11(1)
- 软件测试基础知识bbst,海盗派测试管理: RSTM.PDF