DM816x算法具体解释--之OSD
简单介绍:
本文介绍DM8168 DVRRDK中传入DSP内部的视频格式以及大概的处理流程。
背景:
可能有非常多人为了加快研发的速度、减少难度,选择在DVRRDk已有的OSD内加入自己的DSP算法。
今天我打算将自己的算法加入进去,发现无论是隔行採集的视频和逐行採集的视频都是能够支持的。那么内部怎么实现的呢?
详述:
DVR_RDK_McFW_Link_API_Training.pdf中写道:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VvODExMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">
可见算法支持隔行(Interlaced)或逐行(progressive)的扫描格式。支持YUV420、YUV422的数据输入格式。
事实上在算法的内部输入的须要叠加的窗体数据graphicsWindowPrm与视频数据videoWindowPrm的格式是要保持一致的,当然须要叠加的窗体数据因为在ARM端读入,数据格式能够随意。可是须要保证进入OSD DSP算法的格式遵循上述要求。
1.OSD ALG的算法调用顺序:
AlgLink_tskMain
switch (cmd)
case SYSTEM_CMD_NEW_DATA:
接收到新数据,開始运行
AlgLink_algProcessData。然后运行顺序大致例如以下:
2.OSD中数据的准备处理
採用隔行模式时
FVID2_Frame结构中有fid变量标记是奇偶帧,fid=0,1;
通过fid来识别奇偶帧,从而选择性的处奇偶行
if(isInterlaced)
{
/* OSD plane is always progressive
Input can be interlaced in this case we need to skip alternate lines in OSD plane
and feed for blending
*/
if(pFrame->fid==1)
fid = 1; /* this will half the processing height */
divY = 2;
}
然后获取视频数据:
/* YUV422i or YUV420SP - Y-plane processing */
pSwOsdObj->videoWindowAddr = pFrame->addr[0][0];
设置windowsprm的起始地址,这里进行奇偶的选择:
pSwOsdObj->graphicsWindowAddr =
pChObj->osdWinObj[winId].addr[0][0] + fid*pSwOsdObj->graphicsWindowPrm.lineOffset*scaleX;
可见上式中假设fid=1,则从第二行開始叠加。
SWOSD_blendWindow(pSwOsdObj);
假设是420sp,由于其UV分量在pFrame->addr[0][1]中,须要另行叠加
/* YUV420SP - C -plane processing */
if(pSwOsdObj->graphicsWindowPrm.format == SWOSD_FORMAT_YUV420sp)
{
pSwOsdObj->videoWindowAddr = pFrame->addr[0][1];
具体代码见mcfw/src_bios6/links_c6xdsp/AlgLink/Swosd/osdLink_alg.c
共享知识,共同进步,促进发展。
转载请注明;guo8113
http://blog.csdn.net/guo8113/article/details/27093973
DM816x算法具体解释--之OSD的更多相关文章
- DEM山体阴影原理以及算法具体解释
山体阴影原理以及算法具体解释 山体阴影基本原理: 山体阴影是假想一个光源在某个方向和某个太阳高度的模拟下.用过临近像元的计算来生成一副0-255的灰度图. 一.山体阴影的主要參数: 1. 太阳光线的 ...
- 机器学习经典算法具体解释及Python实现--线性回归(Linear Regression)算法
(一)认识回归 回归是统计学中最有力的工具之中的一个. 机器学习监督学习算法分为分类算法和回归算法两种,事实上就是依据类别标签分布类型为离散型.连续性而定义的. 顾名思义.分类算法用于离散型分布预測, ...
- 机器学习经典算法具体解释及Python实现--K近邻(KNN)算法
(一)KNN依旧是一种监督学习算法 KNN(K Nearest Neighbors,K近邻 )算法是机器学习全部算法中理论最简单.最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值 ...
- KMP算法具体解释(贴链接)
---------------------------------------------------------------------------------------------------- ...
- KMP算法具体解释(转)
作者:July. 出处:http://blog.csdn.net/v_JULY_v/. 引记 此前一天,一位MS的朋友邀我一起去与他讨论高速排序,红黑树,字典树,B树.后缀树,包含KMP算法,只有在解 ...
- 最短路算法之Dijkstra算法通俗解释
Dijkstra算法 说明:求解从起点到任意点的最短距离,注意该算法应用于没有负边的图. 来,看图. 用邻接矩阵表示 int[][] m = { {0, 0, 0, 0, 0, 0}, {0, 0, ...
- 图像算法研究---Adaboost算法具体解释
本篇文章先介绍了提升放法和AdaBoost算法.已经了解的可以直接跳过.后面给出了AdaBoost算法的两个样例.附有详细计算过程. 1.提升方法(来源于统计学习方法) 提升方法是一种经常使用的统计学 ...
- Bloom Filter 算法具体解释
Bloom Filter 算法 Bloom filter是由Burton Bloom 在1970年提出的,其后在P2P上得到了广泛的应用.Bloom filter 算法可用来查询某一数据是否在某一数据 ...
- KMP算法具体解释
这几天学习kmp算法,解决字符串的匹配问题.開始的时候都是用到BF算法,(BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配 ...
随机推荐
- eclipse软件与git配合使用创建git仓库
一.在eclipse上安装git,和安装其他插件一样 help->Install new software->add... 在弹出框中输入name:git,location:http:// ...
- Android系统架构剖析(一)
要说剖析,可能这个词可能用的太大了,以下对Android系统的介绍也就是从我个人理解来说吧. 以前有人问我,Android是什么?当时这个问题问的我真的蒙了,我就简单的回了一下 ...
- A-Frame WebVR开发新手教程
WebVR和WebGL应用程序接口使得我们已经能够在浏览器上创建虚拟现实(VR)体验.但从project化的角度而言,开发社区还须要很多其它方便强大的开发库来简化编程.Mozilla的 A-Frame ...
- mac重装系统
通过 macOS 恢复功能启动macOS 恢复功能会根据您在电脑启动时按下的组合键来安装不同版本的 macOS.在按电源按钮打开 Mac 后,立即按住以下组合键之一.然后在看到 Apple 标志或旋转 ...
- php教程之Smarty模板用法实例
分享下php之Smarty模板的使用方法. 剖析了smarty模板的使用方法,对于学习smarty的朋友有一定的参考价值. 详情如下: 一.模板中的注释每一个Smarty模板文件,都是通过Web前台语 ...
- Altera FPGA管脚弱上拉电阻详细设置方法
Altera FPGA管脚弱上拉电阻的软件设置方法 在使用 Altera 的 FPGA 时候, 由于系统需求, 需要在管脚的内部加上上拉电阻. Quartus II 软件中在 Assignment E ...
- 在Maprecue中利用MultipleOutputs输出多个文件
用户在使用Mapreduce时默认以part-*命名, MultipleOutputs能够将不同的键值对输出到用户自己定义的不同的文件里. 实现过程是在调用output.write(key, new ...
- gitlab人备份与恢复
注意新建备份目录是:/usr/local/src/repositories 属主和属组: # ll -d repositories/ drwx------ git root Feb : reposit ...
- js正则匹配中文
alert(/[\u4e00-\u9fa5]{4}/.test("司徒正美"))//true alert(/[\u4e00-\u9fa5]{4}/.test("司正美&q ...
- python 列表排序方法reverse、sort、sorted基础篇
python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...