FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:VDA
一、文件
vda.h
公共libavcodec VDA头文件。
二、数据结构
struct vda_context{
VDADecoder decoder;
VDA解码器对象。
编码:未使用。
解码:通过libavcodec设置/取消。
CVPixelBufferRef cv_buffer;
包含当前图像数据的Core Video像素缓冲区。
编码:未使用。
编码:通过libavcodec设置。通过用户取消。
int use_sync_decoding;
在同步模式下使用硬件解码器。
编码:未使用。
解码:通过用户设置。
int width;
帧宽度。
编码:未使用。
解码:通过用户设置/取消。
int height
帧高度
编码:未使用。
解码:通过用户设置/取消。
int format;
帧格式。
编码:未使用。
解码:通过用户设置/取消。
OSType cv_pix_fmt_type;
输出图像缓冲区的像素格式。
编码:未使用。
解码:通过用户设置/取消。
uint8_t * priv_bitstream;
未使用
编码:未使用。
解码:通过用户设置/取消。
int priv_bitstream_size;
未使用;
int priv_allocated_size;
未使用
int use_ref_buffer;
使用av_buffer来管理缓冲区。
当标志设置时,解码器返回的CVPixelBuffers将自动释放,因此必要时必须保留它们。 不设置此标志可能会导致内存泄漏。
编码:未使用。
解码:通过用户设置。
}
该结构用于向VDA FFmpeg HWAccel实现提供必要的配置和数据。
struct AVVDAContext{
VDADecoder decoder;
VDA解码器对象。
由调用者创建和释放。
VDADecoderOutputCallback output_callback;
必须传递给VDADecoderCreate的输出回调。
OSType cv_pix_fmt_type;
CVPixelBuffer格式VDA将用于解码帧的类型; 由调用者设置。
}
该结构体保存了用于初始化VDA解码的调用者和libavcodec之间需要传递的所有信息。
它的大小不是公共ABI的一部分,它必须使用av_vda_alloc_context()分配,并与av_free()一起释放。
三、函数
int ff_vda_create_decoder (struct vda_context *vda_ctx, uint8_t *extradata, int extradata_size)
解析:创建视频解码器。
int ff_vda_destroy_decoder (struct vda_context *vda_ctx)
销毁视频解码器。
AVVDAContext * av_vda_alloc_context (void)
解析:分配并初始化VDA上下文。
当调用者选择AV_PIX_FMT_VDA格式时,该函数应从get_format()回调中调用。 然后,主叫方必须创建将用于VDA加速解码的解码器对象(使用由libavcodec提供的输出回调)。
当使用VDA解码完成时,调用者必须摧毁解码器对象,并使用av_free()释放VDA上下文。
返回:新分配的上下文,失败时为NULL。
int av_vda_default_init (AVCodecContext *avctx)
解析:这是一个便捷的功能,可以使用内部实现创建和设置VDA上下文。
参数avctx - 相应的编解码器上下文。
返回:> = 0成功,失败时出现负ERROR码
int av_vda_default_init2(AVCodecContext * avctx,AVVDAContext * vdactx)
解析:这是一个便捷的功能,可以使用内部实现创建和设置VDA上下文。
参数: avctx - 相应的编解码器上下文
vdactx - 用来使用的VDA上下文
返回:> = 0成功,失败时出现负ERROR码
void av_vda_default_free(AVCodecContext * avctx)
解析:必须调用此函数来释放使用av_vda_default_init()初始化的VDA上下文。
参数: avctx - 相应的编解码器上下文
FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:VDA相关推荐
- 实验项目5.1 深度学习算法与硬件加速器
实验对CPU的修改不多,如果完全按照RISC-V的要求设计CPU,将mul归类为R-Type的话,改动较多.但是我们可以单独设计一跟op_mul电线,然后单独设计乘法指令. 乘法指令的实现,直接使用其 ...
- FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:VDPAU解码器和渲染器
VDPAU硬件加速有两个模块. 1.VDPAU解码. 2.VDPAU演示. VDPAU解码模块使用FFmpeg解析机制解析所有头,并使用VDPAU进行实际解码. 根据当前的实现,实际的解码和渲染(AP ...
- ffmpeg学习 源代码编译、英伟达硬件加速
使用cpu进行软编解码时,cpu效率低并且占用高.使用硬件加速,能够明显降低CPU的占用,参看博客 ffmpeg学习(16)AVDevice使用. 这里以使用英伟达gpu进行h264编解码加速为例说明 ...
- 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 等)对视频进行解码,从而提高解码效 ...
- 树莓派编译安装FFmpeg(添加H.264硬件编解码器支持)
说明 FFmpeg是一套开源的音视频编解码库,有非常强大的功能,包括视频采集功能.视频格式转换等.众所周知视频编解码是一个非常消耗系统资源的过程,而树莓派自带了H.264的硬件编解码器,因此本文将详解 ...
- FFmpeg学习(一)开篇
文章目录 FFmpeg学习(一)开篇 为什么要学习FFmpeg 1. FFmpeg简介 2. FFmpeg能做什么 3. FFmpeg架构模块组成 3. 1 libavutil 3. 2 libavf ...
- FFmpeg学习(1)开篇
FFmpeg学习(1)开篇 FFmpeg学习(2)源码编译,环境配置 为什么要学习FFmpeg 本人希望打算深入研究音视频领域,音视频领域的内容很多,我自己打算从几方面循序渐进:FFmpeg常用功能实 ...
- FFmpeg学习(音视频理论知识)
文章目录 1. 音视频理论知识 1.1 基本概念 1.1.1 音视频必备的基本概念 常用的视频封装格式 常用的视频编码器 常用的音频编程器: 视频流 裸数据YUV 1.1.2 音视频常见处理 采集 处 ...
- FFmpeg学习之八(FFmpeg源码编译)
FFmpeg学习之八(FFmpeg源码编译) Mac下 FFmpeg源码编译 安装 1. 使用终端安装FFmpeg 2. 手动编译 2.1 编译环境 - Xcode 2.2 安装依赖库 2.3 安装F ...
- FFmpeg 学习:FFmpeg 学习整理总结
一.FFmpeg 播放视频的基本流程整理 播放流程: video.avi(Container) -> 打开得到 Video_Stream -> 读取Packet -> 解析到 Fra ...
最新文章
- 学习笔记之三(数组中的一些方法)
- 从hook007学习dll劫持自启动方式
- ORA-01092: ORACLE 例程终止 强行断开连接
- 信号处理:希尔伯特黄变换
- Unity3D GUI中的图片尾随鼠标旋转脚本
- const int是什么类型_C++的const语义
- 霍金一生重要时刻照片合集,3次来中国,年轻时也是帅哥一枚
- 用非递归方式实现二叉树先序便利
- 产品质量不过关怎么办?一招帮你大幅提高生产质量
- 厉害了!厦门大学“嘉庚一号”火箭成功发射 问鼎九天
- python基础分析_python基础--函数全解析(1)
- nodejs API(二)
- 华泰证券高薪诚聘 技术大牛/运维平台架构师
- 32、至少列举8个常用模块都有那些?
- 软著 代码合并 脚本递归合并目录下所有代码
- 微信小程序开发(后端 Java)
- vi删除选中内容_Vim快速选中、删除、复制引号或括号中的内容
- 入门STM32--怎么学习STM32
- nmds与mds的区别_数量生态学笔记||非约束排序|NMDS
- 580刷590bios_身价瞬间涨几百 RX 480刷bios变身RX 580
热门文章
- 今天是2012年8月14日
- 基于MATLAB Arnold 的图像置乱加密及解密
- php个人微信公众号,PHP实现微信公众号自定义菜单
- python 与_Python爬取拉勾网python职位数据
- Wireshark TS | 丢包?不要轻易下结论续
- 青橙 GO M3 3G手机(珍珠黑)WCDMA/GSM 双卡双待 360特供机--高通胶水双核,A5老架构,内存缩水,,,强烈要求降价...
- 《东周列国志》第三十八回 周襄王避乱居郑 晋文公守信降原
- QQ空间说说批量删除
- 美团校招,百度校招经历
- iphone3GS iOS6.0.1不完美越狱详细图文教程