前面分析了ffmpeg中硬件解码的框架,今天来具体分析下硬解码接口的实现过程。 一开始初始化pci显卡,获取显卡解码视频物理地址和寄存器地址,再将地址映射到虚拟地址上。然后调用视频解码驱动,将AVPacket解码成AVFrame,yuv格式的视频,真正驱动中如何去解码,暂时不可知。 这里介绍下pci的映射,pci_device_map_range可以将物理地址映射到虚拟地址上,而且不会涉及到权限问题。如果用/dev/mem设备去映射,会涉及到权限。 ffmpeg存储编码的结构体为AVPacke,这里硬解得到AVPacket,再调用硬解驱动,得到yuv,最后存储在AVFrame中。这里稍微介绍了硬解的整个流程,至于驱动中如何实现h264解码算法,没有过多研究。 H.264学习笔记先画图
pci空间映射
void **result = (void**)&m_vtReg; /*Map the specified memory range so that it can be accessed by the CPU.*/ error = pci_device_map_range( m_dev, m_pyReg, m_szReg, PCI_DEV_MAP_FLAG_WRITABLE | PCI_DEV_MAP_FLAG_WRITE_COMBINE, result); if(error){ goto exit; }
解码成yuv
参考
H264基础简介
从零了解H264结构
关于视频的一些概念
深入浅出理解视频编码H264结构
新一代视频压缩编码标准H.264
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算