了解FFmpeg dxva2 代码结构

了解FFmpeg dxva2 代码结构ffmpeg 官方地址 http ffmpeg org dxva2 h 头文件 http www ffmpeg org doxygen 3 2 dxva2 8h source htmlffmpeg dxva2 c 源文件 http www ffmpeg org doxygen 3 2 ffmpeg dxva2 8c source html 获取 ffmpeg 源码 git

ffmpeg官方地址

http://ffmpeg.org/

dxva2.h头文件

http://www.ffmpeg.org/doxygen/3.2/dxva2_8h_source.html

ffmpeg_dxva2.c源文件

http://www.ffmpeg.org/doxygen/3.2/ffmpeg__dxva2_8c_source.html

获取ffmpeg源码

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

ffmpeg硬件加速桥梁

http://www.ffmpeg.org/doxygen/3.2/group__lavc__codec__hwaccel.html

Modules

  Direct3D11
 
  DXVA2
 
  VA API Decoding
 
  VDA
 
  VDPAU Decoder and Renderer
  VDPAU hardware acceleration has two modules.
 
  XvMC

ffmpeg常用示例

http://www.ffmpeg.org/doxygen/3.4/examples.html

  • avio_reading.c
  • decode_audio.c
  • decode_video.c
  • demuxing_decoding.c
  • encode_audio.c
  • encode_video.c
  • ffhash.c
  • filter_audio.c
  • filtering_audio.c
  • filtering_video.c
  • http_multiclient.c
  • hw_decode.c
  • metadata.c
  • muxing.c
  • qsvdec.c
  • remuxing.c
  • resampling_audio.c
  • scaling_video.c
  • transcode_aac.c
  • transcoding.c

ffmpeg一般操作流程

1、注册编解码器

2、申明和使用内存上下文变量

3、打开音视频文件,探测音视频文件流

4、打开编、解码器

5、持续编解码将数据放入生产队列处理

6、关闭编、解码器

7、释放内存

ffmpeg视频硬件加速代码分析

dxva2.h定义了dxva的上下文

了解FFmpeg dxva2 代码结构

ffmpeg_dxva2.c是ffmpeg对dxva2的实现:

定义了支持GPU编码的格式

了解FFmpeg dxva2 代码结构

dxva2 上下文结构:

了解FFmpeg dxva2 代码结构

初始化 dxva2:

了解FFmpeg dxva2 代码结构

分配dxva2操作内存:

了解FFmpeg dxva2 代码结构

创建 解码器:

了解FFmpeg dxva2 代码结构

获取解码器配置:

了解FFmpeg dxva2 代码结构

获取buffer:

了解FFmpeg dxva2 代码结构

数据转换:

了解FFmpeg dxva2 代码结构

反初始化dxva2:完成内存释放

了解FFmpeg dxva2 代码结构

 示例程序关注

根据ffmpeg实现dxva2硬件加速转载一文进行剖析。从最新版本的代码来看,有些跟转载文章上面是不一样的。

从上面源码的结构来看,已经很清晰的反映了代码实现需要的步骤。我们主要关注的是D3D是如何将视频渲染到绑定窗口的。

另外,代码里面多出来的调用方法(实际调用还是ffmpeg_dxva2.c的方法):

int dxva2_retrieve_data_call(AVCodecContext *s, AVFrame *frame) { return dxva2_retrieve_data(s, frame); } 

核心代码见函数运行LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)。

注 :关于内存问题先初始化,使用后及时销毁内存。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220496.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午8:21
下一篇 2026年3月17日 下午8:21


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号