Tegra_Multimedia API 例程学习之--00_video_decode
视频解码
- 概述
- 编译运行
- 流程图
- 关键类和结构体
- 代码分析
概述
视频解码示例应用程序演示如何使用libv4l2组件分配的缓冲区来解码H.264、H.265、vp8、vp9、mpeg4或mpeg2视频流。
应用程序读取H.264、H.265、VP8、VP9、MPEG4或MPEG2基本视频文件,对其进行解码,并将其传递给EGL渲染器,以显示解码图像,而无需任何额外的内存copy。
支持的视频格式有:
H.264
H.265号
VP8型
VP9型
MPEG4标准
MPEG2标准
编译运行
$ cd $HOME/multimedia_api/samples/00_video_decode$ make
运行
$ ./video_decode <in-format> [options] <in-file>
$ ./video_decode H264 ../../data/Video/sample_outdoor_car_1080p_10fps.h264
流程图
1.Output Plane接收比特流格式的输入并将其传送给解码器进行解码。
2. 应用程序将解码后的帧以yuv格式传输到Capture Plane。
3. 对于Output Plane,应用程序支持MMAP和USRPTR内存类型。对于Capture Plane,它支持MMAP和DMABUF内存类型。
4. 应用程序还可以从 Capture Plane转储文件。
关键类和结构体
关键的类有两个:NvVideoDeocder,NvEglRenderer,前者是硬件解码器,后者是显示用的渲染器,用于显示图像。
NvVideoDeocder里面有一些成员函数,
NvVideoDecoder包含以下成员:
元素 | 描述 |
---|---|
output_plane | V4l2 output plane |
capture_plane | V4l2 capture plane |
createVideoDecoder | 创建Decoder的静态函数 |
subscribeEvent | 订阅事件 |
setExtControls | Set external control to V4l2 device |
setOutputPlaneFormat | Set output plane format. |
setCapturePlaneFormat | Set capture plane format. |
getControl | TBD |
dqEvent | Dqueue the event which report by V4l2 device. |
isInError | Check if under error state. |
NvVideoDecoder有两个关键成员,output_plane and capture_plane 都继承自NvV4l2ElementPlane.包含以下成员:
Element | Description |
---|---|
setupPlane | Setup the plane of V4l2 element. |
deinitPlane | Destroy the plane of V4l2 element. |
setStreamStatus | Start/Stop the stream. |
setDQThreadCallback | Set the callback function of dqueue buffer thread. |
startDQThread | Start the thread of dqueue buffer. |
stopDQThread | Stop the thread of dqueue buffer. |
qBuffer | Queue V4l2 buffer. |
dqBuffer | Dqueue V4l2 buffer. |
getNumBuffers | Get the number of V4l2 buffer. |
getNumQueuedBuffers | Get the number of V4l2 buffer which under queue. |
getNthBuffer | Gets the NvBuffer object at index n. |
代码分析
下面来看一下代码的具体流程。
程序使用一个
Tegra_Multimedia API 例程学习之--00_video_decode相关推荐
- 【学习总结】-Apsara Clouder专项技能认证:实现调用API接口学习总结
Apsara Clouder专项技能认证:实现调用API接口-学习总结 API的概念: API的特点: API的分类: 为什么要使用API 阿里云API市场 API请求与认证 Web API协议 HT ...
- 阿里云Apsara Clouder专项技能认证-实现调用API接口-学习笔记
Apsara Clouder专项技能认证-实现调用API接口-学习笔记 阿里云的一个小认证,闲来无事,考一下 一.API简介 API的概念 API(Application Programming In ...
- 今晚直播 | 谷歌资深工程师手把手教你使用TensorFlow最新API构建学习模型
目前,深度学习的研究和应用大受追捧,各种开源的深度学习框架层出不穷.TensorFlow 作为目前最受欢迎的深度学习框架,已经在 GitHub 上获得了 112194 个 star,受欢迎程序可见一斑 ...
- Halcon例程学习:adaption_ocv.hev(光学字符检测)
**************************************************************************************************** ...
- Halcon例程学习:print_check.hev(光学字符检测)
**************************************************************************************************** ...
- 通过 Land of Lisp 中的超简短字符游戏例程学习 loop 和 format
2019独角兽企业重金招聘Python工程师标准>>> 通过 Land of Lisp 中的超简短字符游戏例程学习 Common Lisp 的 loop 和 format 介绍 在 ...
- 2.python爬虫实战:爬取近5年的中国大学排行榜信息【Python】(测试代码+api例程)
目录 API说明: 思路 注意事项 完整代码 总结 欢迎关注 『Python』 系列,持续更新中 欢迎关注 『Python』 系列,持续更新中 爬取近5年的中国大学排行榜信息,在python爬虫爬取2 ...
- 如何借助官网例程学习STM32
如何借助官网例程学习STM32 现在STM32的资料已经非常多了,那么假如市场上这款芯片刚刚出现,没有可参考的TB店家,应该怎么办呢?答案是可以参考官网例程! 1.首先打开官方网址:https://w ...
- 【安卓】1.修改按钮样式之圆角按钮+按钮图标(保姆级图文+附示例+api例程)
目录 1.按钮图标 1.1获取按钮图标文件 1.2 按钮图标API说明: 1.3 按钮图标基本例程 2.按钮样式文件 2.1 new_button_style.xml 2.2 color.xml 2. ...
最新文章
- [转]html5: postMessage解决跨域和跨页面通信的问题
- 【SeeMusic】音符方块颜色设置 ( 单一颜色设置 | 多彩音符设置 | 定时变色设置 | 渐变颜色 | 分轨道提示 )
- Java 8 - Stream流骚操作解读
- JavaScript中getter/setter的实现
- 【Java代码】Lamda表达式将List对象中的Map对象的key全部转化为大写或者小写【去除外层循环:可用于Map对象中的key全部转化为大写或者小写】
- php获取字符串商都_php strlen获取字符串字节长度和mb_strlen获取字符串个数长度的区别(strlen获取中文长度)...
- USACO Section 1.2 Greedy Gift Givers (简单查找)
- MD5加密以及产生唯一的ID
- [转载] python中的numpy模块和pandas模块的区别_numpy 模块和 pandas 模块
- 今天闲来无事,做了个简易的ORM 感觉有点像ActiveRecord作业风格,又有点像iBatis...
- 32 道常见的 Kafka 面试题
- deepin安装 oracle_deepin 安装oracle12c过程
- C语言求三角形斜边长
- MySQL报错: Incorrect string value: '\xE5\x85\xA8\xE7\x90\x83...' for column 'cname' at row 1
- 创业公司的融资阶段:天使轮、种子轮、A轮、C轮、E轮到底是什么意思?
- H5前端性能测试点及优化方法
- 本科进了大厂拿高薪,为什么硕士和博士却要挤破头进高校?
- 优学院计算机基础网课答案,最新网课答案2020优学院大学计算机基础
- 【大数据分析软件应用在足球预测实例】足球滚球走地大小球分析方法和技巧
- WinForm使用Prism和DryIoc实现跨窗体数据绑定