一、文件

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相关推荐

  1. 实验项目5.1 深度学习算法与硬件加速器

    实验对CPU的修改不多,如果完全按照RISC-V的要求设计CPU,将mul归类为R-Type的话,改动较多.但是我们可以单独设计一跟op_mul电线,然后单独设计乘法指令. 乘法指令的实现,直接使用其 ...

  2. FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:VDPAU解码器和渲染器

    VDPAU硬件加速有两个模块. 1.VDPAU解码. 2.VDPAU演示. VDPAU解码模块使用FFmpeg解析机制解析所有头,并使用VDPAU进行实际解码. 根据当前的实现,实际的解码和渲染(AP ...

  3. ffmpeg学习 源代码编译、英伟达硬件加速

    使用cpu进行软编解码时,cpu效率低并且占用高.使用硬件加速,能够明显降低CPU的占用,参看博客 ffmpeg学习(16)AVDevice使用. 这里以使用英伟达gpu进行h264编解码加速为例说明 ...

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

  5. 树莓派编译安装FFmpeg(添加H.264硬件编解码器支持)

    说明 FFmpeg是一套开源的音视频编解码库,有非常强大的功能,包括视频采集功能.视频格式转换等.众所周知视频编解码是一个非常消耗系统资源的过程,而树莓派自带了H.264的硬件编解码器,因此本文将详解 ...

  6. FFmpeg学习(一)开篇

    文章目录 FFmpeg学习(一)开篇 为什么要学习FFmpeg 1. FFmpeg简介 2. FFmpeg能做什么 3. FFmpeg架构模块组成 3. 1 libavutil 3. 2 libavf ...

  7. FFmpeg学习(1)开篇

    FFmpeg学习(1)开篇 FFmpeg学习(2)源码编译,环境配置 为什么要学习FFmpeg 本人希望打算深入研究音视频领域,音视频领域的内容很多,我自己打算从几方面循序渐进:FFmpeg常用功能实 ...

  8. FFmpeg学习(音视频理论知识)

    文章目录 1. 音视频理论知识 1.1 基本概念 1.1.1 音视频必备的基本概念 常用的视频封装格式 常用的视频编码器 常用的音频编程器: 视频流 裸数据YUV 1.1.2 音视频常见处理 采集 处 ...

  9. FFmpeg学习之八(FFmpeg源码编译)

    FFmpeg学习之八(FFmpeg源码编译) Mac下 FFmpeg源码编译 安装 1. 使用终端安装FFmpeg 2. 手动编译 2.1 编译环境 - Xcode 2.2 安装依赖库 2.3 安装F ...

  10. FFmpeg 学习:FFmpeg 学习整理总结

    一.FFmpeg 播放视频的基本流程整理 播放流程: video.avi(Container) -> 打开得到 Video_Stream -> 读取Packet -> 解析到 Fra ...

最新文章

  1. 学习笔记之三(数组中的一些方法)
  2. 从hook007学习dll劫持自启动方式
  3. ORA-01092: ORACLE 例程终止 强行断开连接
  4. 信号处理:希尔伯特黄变换
  5. Unity3D GUI中的图片尾随鼠标旋转脚本
  6. const int是什么类型_C++的const语义
  7. 霍金一生重要时刻照片合集,3次来中国,年轻时也是帅哥一枚
  8. 用非递归方式实现二叉树先序便利
  9. 产品质量不过关怎么办?一招帮你大幅提高生产质量
  10. 厉害了!厦门大学“嘉庚一号”火箭成功发射 问鼎九天
  11. python基础分析_python基础--函数全解析(1)
  12. nodejs API(二)
  13. 华泰证券高薪诚聘 技术大牛/运维平台架构师
  14. 32、至少列举8个常用模块都有那些?
  15. 软著 代码合并 脚本递归合并目录下所有代码
  16. 微信小程序开发(后端 Java)
  17. vi删除选中内容_Vim快速选中、删除、复制引号或括号中的内容
  18. 入门STM32--怎么学习STM32
  19. nmds与mds的区别_数量生态学笔记||非约束排序|NMDS
  20. 580刷590bios_身价瞬间涨几百 RX 480刷bios变身RX 580

热门文章

  1. 今天是2012年8月14日
  2. 基于MATLAB Arnold 的图像置乱加密及解密
  3. php个人微信公众号,PHP实现微信公众号自定义菜单
  4. python 与_Python爬取拉勾网python职位数据
  5. Wireshark TS | 丢包?不要轻易下结论续
  6. 青橙 GO M3 3G手机(珍珠黑)WCDMA/GSM 双卡双待 360特供机--高通胶水双核,A5老架构,内存缩水,,,强烈要求降价...
  7. 《东周列国志》第三十八回 周襄王避乱居郑 晋文公守信降原
  8. QQ空间说说批量删除
  9. 美团校招,百度校招经历
  10. iphone3GS iOS6.0.1不完美越狱详细图文教程