这边博客主要记录在预研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相关推荐

  1. 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 等)对视频进行解码,从而提高解码效 ...

  2. core sync是什么软件_什么是Quick Sync Video

    以超快的速度制作.编辑与分享视讯 Intel Quick Sync Video (Intel 高速影像同步转文件技术) 让您迅速制作.编辑与分享视讯,无论是要在家中分享,或是张贴到网络上,都不需要再花 ...

  3. H.264转码加速:NVENC大战Quick Sync

    GPU加速技术对普通消费者最直观的影响就是视频转码应用上了,NVIDIA..AMD以及Intel都有自己的加速技术,而在新一代CPU和GPU架构上,三方都有更新的技术方案.<br>< ...

  4. 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 ...

  5. Flash 8 Video Encoder安装事项

    Flash 8 Video Encoder 在 Flash 8的安装中有带,但运行需要 DirectShow9和 QuickTime6.5以上支持.实际上装DirectX9就可以了.          ...

  6. Intel Media SDK H264 encoder GOP setting

    1 I帧,P帧,B帧,IDR帧,NAL单元 I frame:帧内编码帧,又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随 ...

  7. 《翻译》Intel 64 与 IA-32 架构软件开发者手册卷1翻译

    <前言> 翻译自官方的PDF版手册,可以从下述站点下载英文原版: http://www.intel.com/content/www/us/en/processors/architectur ...

  8. LiveVideoStackCon讲师热身分享 ( 十三 ) —— Intel QSV技术在FFmpeg中的实现与使用

    LiveVideoStackCon 2018音视频技术大会是每年的多媒体技术人的盛宴,为了让参会者与大会讲师更多互动交流,我们推出了LiveVideoStackCon讲师热身分享第一季,在每周四晚19 ...

  9. LiveVideoStackCon讲师热身分享 ( 十三 ) —— Intel QSV技术在FFmpeg中的实现与使用

    LiveVideoStackCon 2018音视频技术大会是每年的多媒体技术人的盛宴,为了让参会者与大会讲师更多互动交流,我们推出了LiveVideoStackCon讲师热身分享第一季,在每周四晚19 ...

  10. ffmpeg Intel硬件加速总结

    0. 概述 FFmpeg可通过Intel的GPU进行加速,加速器的名称是Intel Quick Sync Video,简称qsv,支持该加速器的Intel处理器的型号是带有Intel Iris gra ...

最新文章

  1. 硬刚一周,3W字总结,一年的经验告诉你如何准备校招!
  2. python使用imbalanced-learn的NearMiss方法进行下采样处理数据不平衡问题
  3. web实现QQ第三方登录 开放平台-web实现QQ第三方登录
  4. 周日21点50:关注电子阅读的大潮到来
  5. LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和
  6. Asp.net在IIS6.0权限设置的问题,大牛进
  7. java锁机制ppt_总结:Java锁机制
  8. uvalive 3938 Ray, Pass me the dishes! 线段树 区间合并
  9. Visual Studio 2017 15.6预览版最新进展
  10. Atitit.木马病毒的免杀原理---sikuli 的使用
  11. 《解读量化投资:西蒙斯用公式打败市的故事》内容简介及PDF下载
  12. 链表:头插法与尾插法(简易图解和代码)
  13. java编写平行四边形的代码_CSS 实现平行四边形的示例代码
  14. windows10自带屏保设置
  15. spring cache annotation(二)
  16. maximal-rectangle
  17. 数据沼泽_数据湖:只是一片沼泽,没有数据治理和目录
  18. vue开发PC端响应式项目
  19. Javascript:ES6-ES11(1)
  20. 软件测试基础知识bbst,海盗派测试管理: RSTM.PDF

热门文章

  1. access怎么查询工龄_电子商务专业怎么样?学什么?前景好吗?
  2. c语言098十进制输出,C语言题库098.doc
  3. CacheCloud部署与群集申请流程测试
  4. 6. 同步化器(Synchronizers)
  5. 【渝粤教育】国家开放大学2018年秋季 1374T班级管理 参考试题
  6. 博弈论(一)基本概念
  7. 求解偏微分方程开源有限元软件deal.II学习--Step 37
  8. CF932E Team Work
  9. PEB标记反调试方法
  10. 手写一个类django框架