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的第一个字符进行匹配 ...
随机推荐
- 开发Yii2过滤器并通过behaviors()行为调用(转)
在Yii2的几乎每个controller中,我们都会看到一个函数behaviors(),通常,我们用这个函数来配置控制器的权限,例如:public function behaviors() { ...
- django中templates阅读笔记
一.基本知识 1.模版是独立于django的,可以独立运行. 模版变量是用两个大括号括起来的字符串,表示变量.例如{{ person_name }} 模版标签,是用一对大括号和一对百分号括起来的,例如 ...
- C#的MD5哈希值计算
MD5哈希值计算:(仅仅是记录一下) /// <summary> /// 获取字符串的MD5值 /// </summary> /// <param name=" ...
- 翻翻git之---效果鲜明的类ViewPager库 ConvenientBanner(对图片载入部分进行改动)
转载请注明出处:王亟亟的大牛之路 昨天写了篇基础的View绘制的内容貌似观众老爷们不怎么喜欢.那再这里再安利下自己定义View时.用到Paint Canvas的一些温故.讲讲用路径绘画实现动画效果(基 ...
- centos 7 sshd 重启 停止 启动
# systemctl stop sshd.service #restart stop start
- hadoop输出lzo文件并添加索引
public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); ...
- C#中一道关于多线程的基础练习题——模拟仓库存销过程
题目:模拟生产.入库.销售(50分) 假设某企业自产.自存.自销,需要将工厂生产的各类产品不定时的运到仓库,与此同时,需要将仓库中的货物运往超市和商场中进行销售,请编写一个程序模拟此过程(主要是存取这 ...
- Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
1. 添加一个新对象 前面介绍了映射到实体表的映射类User,如果我们想将其持久化(Persist),那么就需要将这个由User类建立的对象实例添加到我们先前创建的Session会话实例中: 复制代码 ...
- tomcat架构分析(概览)
出处:http://gearever.iteye.com Tomcat是目前应用比较多的servlet容器.关于tomcat本身的特点及介绍,网上已经有很多描述了,这里不再赘述.Tomcat除了能够支 ...
- 【JS】通过JS实现超市小票打印功能——ActiveX控件
应客户的需求= = ,要在网页端实现打印小票的功能 先来一张打印出的小票效果图(合计明显不对,因为有修改订单功能,请各位忽略) 用什么方法实现呢: 我想应该是有三种吧 1.用第三方的浏览器控件(这个好 ...