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

nvdec与vaapi与vdpau的关系 简要分析nvdec与vaapi与vdpau的关系,需要修改driver来支持vaapi到vdpau或者nvdec的转换 阅读详情

VDPAU硬件加速有两个模块。

1、VDPAU解码。

2、VDPAU演示。


VDPAU解码模块使用FFmpeg解析机制解析所有头,并使用VDPAU进行实际解码。

根据当前的实现,实际的解码和渲染(API调用)作为VDPAU演示(vo_vdpau.c)模块的一部分完成。



一、文件

vdpau.h

公共libavcodec VDPAU头文件。



二、数据结构

union   AVVDPAUPictureInfo{

VdpPictureInfoH264 h264;

VdpPictureInfoMPEG1Or2 mpeg;

VdpPictureInfoVC1 vc1;

VdpPictureInfoMPEG4Part2 mpeg4;

}


struct   AVVDPAUContext{

VdpDecoder decoder;

VDPAU解码器手柄。

被用户设置。


VdpDecoderRender * render;

VDPAU解码器渲染回调。

被用户设置。


attribute_deprecated union AVVDPAUPictureInfo info;

VDPAU图片信息。

被libavcodex设置。


attribute_deprecated int bitstream_buffers_allocated;

分配比特率缓冲表的大小。

被libavcodex设置。


attribute_deprecated int bitstream_buffers_used

比特流缓冲表中有用的比特流缓冲器。

被libavcodex设置。


attribute_deprecated  VdpBitstreamBuffer * bitstream_buffers;

比特流缓冲区表。

被libavcodex设置。


AVVDPAU_Render2 render2;

}

该结构用于在libavcodec库和客户端视频应用程序之间共享数据。


struct   vdpau_render_state{

VdpVideoSurface surface;

用作渲染表面,从未改变。


int state;

保存FF_VDPAU_STATE_ *值。


union AVVDPAUPictureInfo info;

所有支持的编解码器的图像参数信息。


int bitstream_buffers_allocated;

描述压缩视频数据的大小/位置。

释放比特流缓存时设置为0。


int digits_buffers_used;

VdpBitstreamBuffer * bitstream_buffers;

用户负责使用av_freep()释放此缓冲区。

}

该结构用作FFmpeg解码器(vd_)和显示(vo_)模块之间的回调。

这用于定义包含在FFmpeg解码器和其客户端之间传递的表面,图像参数,比特流信息等的视频帧。



三、宏

#define FF_VDPAU_STATE_USED_FOR_RENDER   1

videoSurface用于渲染。


#define FF_VDPAU_STATE_USED_FOR_REFERENCE   2

被参数/预测需要

编解码器操作此宏。



四、类型定义

typedef int(* AVVDPAU_Render2 )(struct AVCodecContext *, struct AVFrame *, const VdpPictureInfo *, uint32_t, const VdpBitstreamBuffer *)

   


五、函数

AVVDPAUContext * av_alloc_vdpaucontext (void);

AVVDPAUContext的分配函数。

解析:允许扩展结构而不会中断API / ABI。


AVVDPAU_Render2 av_vdpau_hwaccel_get_render2 (const AVVDPAUContext *);


void av_vdpau_hwaccel_set_render2 (AVVDPAUContext *, AVVDPAU_Render2);


int av_vdpau_bind_context (AVCodecContext *avctx, VdpDevice device, VdpGetProcAddress *get_proc_address, unsigned flags);

解析:将VDPAU设备与编解码器上下文相关联以进行硬件加速。

这个函数的意思是从get_format()编解码器回调或更早版本调用。 也可以在avcodec_flush_buffers()之后调用底层VDPAU设备中间流(例如从非透明显示抢占恢复)。

注意:如果此函数成功完成,get_format()必须返回AV_PIX_FMT_VDPAU。

参数:avctx - 解调其调用get_format()回调的上下文。

    device - VDPAU设备手柄用于硬件加速。

    get_proc_address - VDPAU设备驱动。

    flags - 零个或多个OR'AV_HWACCEL_FLAG_ *标志

返回:0表示成功,AVERROR代码表示失败。


int av_vdpau_get_surface_parameters (AVCodecContext *avctx, VdpChromaType *type, uint32_t *width, uint32_t *height);

解析:获取参数以使用VDPAU硬件解码加速为编解码器环境创建足够的VDPAU视频表面。

注意:如果上下文未使用av_vdpau_bind_context()成功绑定到VDPAU设备,行为是未定义的。

参数:avctx - 用于解码流的编解码器上下文

    type - 存储空间用于VDPAU视频表面色度类型(或NULL忽略)。

    width - 存储空间为VDPAU视频表面像素宽度(或NULL忽略)。

    height - 存储空间为VDPAU视频表面像素高度(或NULL忽略)。

返回:0成功,失败时出现负ERROR代码。


AVVDPAUContext * av_vdpau_alloc_context (void);

解析:分配AVVDPAUContext。

返回:新分配的AVVDPAUContext或NULL失败。


attribute_deprecated int av_vdpau_get_profile (AVCodecContext *avctx, VdpDecoderProfile *profile);

获取应用于初始化VDPAU解码器的解码器配置文件。

应该从AVCodecContext.get_format()回调调用。

已废弃:请改用av_vdpau_bind_context()。

参数:avctx -  用于解码流的编解码器上下文。

    profile - 一个指针,其结果将被写入成功。 如果此函数返回错误,则配置文件的内容将不会被定义。

返回:0成功(非负),否定AVERROR错误码表示失败。

ffmpeg的解码过程 上面步骤结束后,就可以调用API。 阅读详情

相关推荐

视频编解码(五)之vdpau存在的意义?

视频编解码中VAAPI接口转为VDPAU接口分析,vdpau-driver驱动作用分析以及vdpau存在的意义

大吉 1715

linux下ffmpeg调用GPU硬件解码(VDPAU/VAAPI)保存文件

本文讲解在linux下面,如何通过ffmpeg调用GPU硬件解码,并保存解码完的yuv文件。其实,ffmpeg自带的例子hw_decode.c这个文件,就已经能满足要求了,因此,本文就尝试讲解以下hw_decode这个例子。hw_decode.c可以调用VDPAU硬件解码,也可以调用VAAPI硬件解码,下面依次讲解如何进行操作。

snail_hunan的专栏 7852

DXVA -- VDPAU -- CUVID -- VAAPI

// DXVA常见问题论坛 http://www.codecguide.com/faq_dxva.htm // DXVA简介 http://blog.youkuaiyun.com/xuxinhua/article/details/7221995 // 高清视频相关知识和 KMPlayer 硬解码(DXVA)设置 http://wenku.baidu.com/link?url=ln

tkp2014的专栏 5028

【GPU-硬解码介绍】

硬解码介绍

weixin_46867385的博客 6455

VDPAU 的简介

Video Decode and Presentation API for Unix简称:(VDPAU) 主体框架如下: 这个在很多地方有用到,尤其是在linux/unix下面的图像处理。 在mplayer,vlc,gstreamer等的多媒体框架中的使用非常普遍。随着硬件的智能化,很多图像视频处理都会涉及到这些东西。而且市场对性能和体验的要求越来越高,开发过程中能够用一些...

道亦无名 1万+

FFmpeg 硬件加速(硬解码)介绍

参考地址 概述   本文主要针对ffmpeg支持的硬解码做一个总结阐述。   许多平台提供对专用硬件的访问,以执行一系列与视频相关的任务。使用此类硬件可以更快地完成某些操作,例如解码、编码或过滤,或者使用更少的其他资源(尤其是 CPU),但可能会产生不同或较差的结果,或者施加仅使用软件时不存在的额外限制。在类似 PC 的平台上,视频硬件通常集成到 GPU(来自 AMD、Intel 或 NVIDIA)中,而在移动 SoC 类型的平台上,它通常是一个独立的 IP 核(许多不同的供应商)。   硬件解码器将产生与

学无止尽,谨言慎行! 1万+

FFmpeg新版本支持的硬件解码

【代码】FFmpeg新版本支持的硬件解码。

tugouxp的专栏 2939

华为MA5626 ONU开局配置实战:从零到业务就绪的完整命令手册

本文详细介绍了华为MA5626 ONU设备的开局配置全流程,包括物理连接、命令行初始化、业务VLAN划分、PoE功能配置及故障排查。通过实战命令手册,帮助网络工程师快速完成从设备上电到业务就绪的完整配置,特别适合FTTB场景部署。

weixin_26934905的博客 561

【视频开发】 ffmpeg支持的硬解码接口

https://blog.youkuaiyun.com/lg1259156776/article/details/73274222 要启用DXVA2,请使用--enable-dxva2ffmpeg配置开关。 要测试解码,请使用以下命令: <span style="color:#333333">ffmpeg -hwaccel dxva2 -threads 1 -i INPUT -f ...

mengzhengjie的专栏 2861

扫地机器人全场景测试实战:从实验室到真实家庭的可靠性验证

本文深入探讨了扫地机器人从实验室到真实家庭的全场景测试方法,揭示了软硬件测试中的关键挑战。通过分析场景化测试的重要性,文章详细介绍了硬件耐久性、软件稳定性和环境适应性三大测试维度,并提供了真实家庭测试的实用方法论。消费者可重点关注清洁率、覆盖率等核心指标,同时了解测试工程师的私房建议,帮助选择更可靠的扫地机器人产品。

hhh00的博客 1076

简易电梯控制系统设计(两层楼)(

(电子科技大学 数字系统实验二 结课验收项目 ) 题目要求:

m0_48801027的博客 1万+

Ubuntu 编译安装ffmpeg,mplayer,x264全教程支持VDPAU(高清硬解)

这个是针对Ubuntu 10.04 AMD64的安装ffmpeg,mplayer,x264全教程,包括VDPAU Ubuntu 10.10AMD64也是可以的。 目前mplayer仍然使用svn,编译mplayer时要把ffmpeg的代码拷贝进去。! libxvidcore4-dev 这个包在10.10里面是libxvidcore-dev 这个名字 普通版 我的工作根目录为~

矩阵实验室 7323

开源收银系统_大型收银系统源码_OctShop

开源收银系统正成为大型连锁企业数字化转型的关键工具。相比传统闭源系统,开源方案具有成本低(年均降本60%+)、定制灵活(支持多业态协同)、自主可控等优势,能有效解决高并发、多门店数据同步等痛点。核心价值在于:1)分布式架构适配规模化扩张;2)模块化设计实现个性化开发;3)开放接口打通ERP/CRM等系统。典型案例显示,连锁商超通过源码二次开发实现库存实时同步,补货效率提升50%;餐饮集团统一多业态收银流程后会员复购率增长35%。选型需关注源码成熟度、技术兼容性和安全合规,建议采用"开源+服务商&q

OctShop全栈工程师 938

ffmpeg支持的硬解码接口

GPU可以支持视频解码,而且在ffmpeg中也提供了解码的接口,一个是NVIDIA的VDPAU,一个是intel的VAAPI。 1、首先安装最新的Nvidia显卡驱动 安装后一般会在/usr/lib下面找到libvdpau库,查看/usr/include下面有无vdpau文件夹及相关头文件,如果没有,在这里下载:ftp://download.nvidia.com/XFree86/vdp

ljh081231的专栏 4万+

Unity之OpenXR+XR Interaction Toolkit实现 VR控制第一人称角色模型动画

我们在开发VR项目时,有时会有第一人称视角的需求,即我们自己带上VR头显,能够看到自己的身体,如果模拟一些人物触电死亡,使用工具动画之类的需求,那么VR控制第一人称视角就比较实用了。我们今天就来介绍一下如何实现VR设备控制第一人称:1.角色手部跟随手柄移动和旋转2.角色头部跟随VR头显转动和移动3.角色腿部跟随角色头显移动和下蹲。

TxNet 2843

DSP开发环境及工具之CCS

CCS( Code Composer Studio)是美国德州仪器(TI)公司的嵌入式处理器的开发环境,可以用于TI公司的各个系列处理器的软件开发和调试,如DSP,MCU,ARM等。CMD的专业名称叫链接器配置文件,是存放链接器的配置信息的,我们简称为命令文件。从其名称可以看出,该文件的作用是指明如何链接程序的。编辑完C语言设置,添加cmd文件之后,然后检查编译配置选项。主要的操作都是在这个窗口之间做相应的切换。

小柚子的博客 4311

ffmpeg 硬解码

硬件编解码 如何利用日益强大的硬件来实现高效的编解码有则非比寻常的意义,对于开发者来说,面对日益增加的不同硬件,带来的不同的接口,如何快速的使用和对接,本身就是一个问题,还好ffmpeg为了我们提供非常好的解决方案,完全不用去关心底层的实现,一切面向接口的良好体现。 hwcontext模块 支持的平台 static const char *const hw_type_names[] = { [AV_HWDEVICE_TYPE_CUDA] = “cuda”, //CUDA是Nvidia出的一个GPU计算库 [

qianbo042311的博客 4044

Vite 任意文件读取漏洞复现(CVE-2026-39363)

Vite开发服务器 WebSocket中的fetchModule方法未实施server.fs访问控制,导致攻击者可通过WebSocket连接并读取服务器上的任意文件(CVE-2026-39363)

iSee857的博客 220

H264 VDPAU 硬解及环境布置

==================================================================================================================================== 1:安装英伟达显卡驱动  http://www.nvidia.com/object/unix.html    1. Add PPA

GPU全栈博主 5944

❤️爆肝十二万字《python从零到精通教程》,从零教你变大佬❤️(建议收藏)

文章目录强烈推荐系列教程,建议学起来!!一.pycharm下载安装二.python下载安装三.pycharm上配置python四.配置镜像源让你下载嗖嗖的快4.1pycharm内部配置4.2手动添加镜像源4.3永久配置镜像源五.插件安装(比如汉化?)5.1自动补码神器第一款5.2汉化pycharm5.3其它插件六.美女背景七.自定义脚本开头八、这个前言一定要看九、python入门十、python缩进十一、Python注释1.单行注释2.多行注释十二、Python 变量1.变量定义理解2. 变量名命名3. 分

全栈川川 26万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

centos安装vdpau

一、vdpau与NVIDIA的关系。vdpau是最基础的组件, NVIDIA是牌子。二、下载网址https://developer.nvidia.com/cuda-toolkit-65三、安装方法:添加执行权限后,运行即可。chmod +x c*./ ...run这个傻逼的安装包,在运行run后竟然先弹出来个声明。退出声明才能继续安装。默认的安装路径是: /usr/local/Enter Tool

u010029439的博客 1975

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

视频编解码(一)之virtio-gpu环境搭建

视频编解码之virtio-gpu环境搭建以及h264/h265视频播放测试

大吉 9022

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ffmpeg NVIDIA编解码二:英伟达硬解码

ffmpeg所有解码流程都是一样的:打开解码器、分配解码器上下文,av_read_frame读取视频帧、avcodec_send_packet送入解码器、avcodec_receive_frame获取解码后的视频帧、关闭解码器。不过硬解码在这个流程基础上增加了几步:获取硬件加速的解码格式、创建设备上下文、把解码后的数据从GPU拷贝达到CPU上。下面是ffmpeg NVIDIA硬解码流程图,带。

不定期更新关于音视频的文章 4762

FFmpeg视频解码硬件加速

《音视频应用开发系列文章目录》 ffmpeg支持的硬件解码器 enum AVHWDeviceType { AV_HWDEVICE_TYPE_NONE, AV_HWDEVICE_TYPE_VDPAU, AV_HWDEVICE_TYPE_CUDA, AV_HWDEVICE_TYPE_VAAPI, AV_HWDEVICE_TYPE_DXVA2, AV...

楷尘·极客 5090

FFmpeg hardware GUP codec

from:https://trac.ffmpeg.org/wiki/HWAccelIntro Many platforms offer access to dedicated hardware to perform a range of video-related tasks. Using such hardware allows some operations like decodin...

chinabinlang的专栏 5497
上一篇: FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:VDA
下一篇: FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:XvMC
一世豁然
博客等级 码龄15年 1276粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值