【海思SS528 | VDEC】MPP媒体处理软件V5.0 | 视频解码模块——学习笔记

本文主要是介绍【海思SS528 | VDEC】MPP媒体处理软件V5.0 | 视频解码模块——学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭

目录

  • 🎄一、概述
    • ✨1.1 VDEC模块
    • ✨1.2 什么是视频解码
  • 🎄二、码流发送方式
    • ✨ 2.1 流式发送(OT_VDEC_SEND_MODE_STREAM)
    • ✨ 2.2 按帧发送(OT_VDEC_SEND_MODE_FRAME)
    • ✨ 2.3 按兼容模式发送(OT_VDEC_SEND_MODE_COMPAT)
  • 🎄三、时间戳(PTS)处理
  • 🎄四、用户图片
  • 🎄五、解码帧存分配方式
  • 🎄六、总结


在这里插入图片描述

🎄一、概述

✨1.1 VDEC模块

海思平台的视频解码是硬件解码。VDEC模块提供驱动视频解码硬件工作的MPI接口,实现视频解码功能。
硬件解码模块有VDH、JPEGD,可支持解码协议有:H.264/H.265JPEG/MJPEG
VDEC模块支持解码最大通道数为128个,支持的最大最小分辨率分别为:

  • H.264/H.265:max 8192x8192, min 96x96;
  • JPEG/MJPEG:max 16384x16384,min 8x8。

本文涉及到的SDK文档:《MPP媒体处理软件V5.0》

✨1.2 什么是视频解码

一段连续的视频是由一张张画面组成的,每一张的画面称为一帧。一秒钟的画面总数称为帧率。
由于完整地保存视频的每一帧画面会使得数据量很大,不利于传输和保存。所以人们就把视频进行压缩编码。
常见的编码有:H.264/H.265JPEG/MJPEG
将视频编码数据(H.264/H.265JPEG/MJPEG)解析成YUV格式或RGB格式的数据的整个过程就是视频解码。


在这里插入图片描述

🎄二、码流发送方式

码流发送方式决定了我们怎样将编码帧发送给VDEC模块,VDEC模块一共提供了三种方式:

✨ 2.1 流式发送(OT_VDEC_SEND_MODE_STREAM)

用户每次可发送任意长度码流到解码器,由解码器内部完成一帧码流的识别过程

  • 优点:不需自己检查帧的开始、结束;
  • 缺点:不能希望马上开始解码图像,也就是解码可能会稍微延时。

✨ 2.2 按帧发送(OT_VDEC_SEND_MODE_FRAME)

用户每次发送完整一帧码流到解码器,每调用一次发送接口,解码器就认为该帧码流已经结束,开始解码图像,因此需保证每次调用发送接口发送的码流必须为一帧,否则会出现解码错误。

  • 优点:可以达到快速解码的目的;
  • 缺点:需要自己判断是否为完整的编码帧,要等一帧完整数据才可发送。

✨ 2.3 按兼容模式发送(OT_VDEC_SEND_MODE_COMPAT)

支持一帧码流分多次发送给解码器,但是每帧码流结束时必须配置帧结束标志end_of_frame为TD_TRUE,否则认为当前帧码流还未结束。

  • 优点:不需要等到一帧数据都到了才发送。
  • 缺点:需要自己判断是否编码帧结束。

在这里插入图片描述

🎄三、时间戳(PTS)处理

在模式OT_VDEC_SEND_MODE_FRAME下发送码流时,解码输出的图像时间戳PTS为发送码流接口(ss_mpi_vdec_send_stream)中用户送入的PTS,解码器不会更改此值;

如果用户配置的PTS值为0,则表示用户不进行帧率控制,而是由视频输出模块( VO)进行帧率控制;

当VDEC为回放模式且VPSS为AUTO模式时,如果用户送入的PTS值为-1,则表示此图像不会被视频输出模块( VO)显示;

如果是其他值,则表示视频输出模块( VO)根据用户设置的PTS值进行帧率控制。

注意:不能出现PTS值为0和非0混合的情况。


在这里插入图片描述

🎄四、用户图片

如果出现没有视频流发送给解码器了,这时解码器允许用户设置一帧图像,来表示当前没有新的视频帧。

当网络异常断开,前端没有码流送来时,用户可通过设置插入用户图片显示在VO上,以提示当前网络异常或没有码流可解码。 VDEC提供两种插入用户图片方式:

  • 立刻插入用户图片: VDEC会先清空解码器内部的码流和图像,然后插入用户
    图片。
  • 延迟插入用户图片: VDEC会先把解码器内部的码流全部解完,待解码图像全
    部输出之后再插入用户图片。

在这里插入图片描述

🎄五、解码帧存分配方式

  • 解码ModuleVB池:OT_VB_SRC_MOD
    创建解码通道时不分配图像Buffer,而是由用户调用相应的MPI接口创建专属于解码模块的ModuleVB池,该VB池只允许VDEC获取VB块,其它模块只能使用不能获取。
  • 解码PrivateVB池:OT_VB_SRC_PRIVATE
    创建解码通道时由VDEC创建私有VB池作为该通道的图像Buffer,用户可以在创建通道接口ss_mpi_vdec_create_chn中设置私有VB池的个数frame_buf_cnt和VB块的大小frame_buf_size
  • 解码UserVB池:OT_VB_SRC_USER
    创建解码通道时不分配图像Buffer,而是由用户调用接口ss_mpi_vb_create_pool创建一个视频缓存VB池,再通过调用接口ss_mpi_vdec_attach_vb_pool把某个解码通道绑定到固定的视频缓存VB池中。

三种解码帧存分配方式可通过接口ss_mpi_vdec_set_mod_param的参数vb_src来设置。当解码帧存使用ModuleVB池或者UserVB池方式时,可以不用销毁解码通道直接销毁VB池,但是销毁解码VB池前用户必须保证没有任何模块正在使用这个VB池里的任何一块VB(可通过复位解码通道,以及复位解码直接绑定的后级模块实现,如VDEC绑定VPSS,则就要同时复位VDEC和VPSS;如果用户是从VDEC里获取图像上去,也必须保证全部图像释放回VDEC。),否则会出现程序异常的情况。

在这里插入图片描述

🎄六、总结

本文记录海思SS528 的 VDEC 模块的一些基础知识,用于日后复习。
在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

这篇关于【海思SS528 | VDEC】MPP媒体处理软件V5.0 | 视频解码模块——学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/435983

相关文章

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

Python模块导入的几种方法实现

《Python模块导入的几种方法实现》本文主要介绍了Python模块导入的几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录一、什么是模块?二、模块导入的基本方法1. 使用import整个模块2.使用from ... i

通过C#和RTSPClient实现简易音视频解码功能

《通过C#和RTSPClient实现简易音视频解码功能》在多媒体应用中,实时传输协议(RTSP)用于流媒体服务,特别是音视频监控系统,通过C#和RTSPClient库,可以轻松实现简易的音视... 目录前言正文关键特性解决方案实现步骤示例代码总结最后前言在多媒体应用中,实时传输协议(RTSP)用于流媒体服

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS