简单介绍:

本文介绍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的更多相关文章

  1. DEM山体阴影原理以及算法具体解释

    山体阴影原理以及算法具体解释 山体阴影基本原理: 山体阴影是假想一个光源在某个方向和某个太阳高度的模拟下.用过临近像元的计算来生成一副0-255的灰度图. 一.山体阴影的主要參数: 1.  太阳光线的 ...

  2. 机器学习经典算法具体解释及Python实现--线性回归(Linear Regression)算法

    (一)认识回归 回归是统计学中最有力的工具之中的一个. 机器学习监督学习算法分为分类算法和回归算法两种,事实上就是依据类别标签分布类型为离散型.连续性而定义的. 顾名思义.分类算法用于离散型分布预測, ...

  3. 机器学习经典算法具体解释及Python实现--K近邻(KNN)算法

    (一)KNN依旧是一种监督学习算法 KNN(K Nearest Neighbors,K近邻 )算法是机器学习全部算法中理论最简单.最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值 ...

  4. KMP算法具体解释(贴链接)

    ---------------------------------------------------------------------------------------------------- ...

  5. KMP算法具体解释(转)

    作者:July. 出处:http://blog.csdn.net/v_JULY_v/. 引记 此前一天,一位MS的朋友邀我一起去与他讨论高速排序,红黑树,字典树,B树.后缀树,包含KMP算法,只有在解 ...

  6. 最短路算法之Dijkstra算法通俗解释

    Dijkstra算法 说明:求解从起点到任意点的最短距离,注意该算法应用于没有负边的图. 来,看图. 用邻接矩阵表示 int[][] m = { {0, 0, 0, 0, 0, 0}, {0, 0, ...

  7. 图像算法研究---Adaboost算法具体解释

    本篇文章先介绍了提升放法和AdaBoost算法.已经了解的可以直接跳过.后面给出了AdaBoost算法的两个样例.附有详细计算过程. 1.提升方法(来源于统计学习方法) 提升方法是一种经常使用的统计学 ...

  8. Bloom Filter 算法具体解释

    Bloom Filter 算法 Bloom filter是由Burton Bloom 在1970年提出的,其后在P2P上得到了广泛的应用.Bloom filter 算法可用来查询某一数据是否在某一数据 ...

  9. KMP算法具体解释

    这几天学习kmp算法,解决字符串的匹配问题.開始的时候都是用到BF算法,(BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配 ...

随机推荐

  1. Docker介绍以及Registry的安装 -摘自http://dockone.io/article/108

    本文介绍了Docker与Registry,作者说Docker是一个application hosting框架,亮点是简化应用的部署以及应用部署的版本控制.同时,作者介绍了Docker Registry ...

  2. PHP采集库-Snoopy.class.php

    Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单. Snoopy的特点: 1.抓取网页的内容 fetch 2.抓取网页的文本内容 (去除HTML标签) fetchtext ...

  3. C++顺序容器vector、deque、list

    1.容器元素类型 C++中大多数数据类型能够作为容器的元素类型.容器元素类型必须满足一下两个条件:支持赋值和复制操作. 所以没有元素是引用类型的容器,同一时候IO对象和auto_ptr也不能作为容器的 ...

  4. Mongodb查询引用

    var result = db.users.findOne({"name":"Tom Wu"},{"address_ids":1,_id:0 ...

  5. python random模块(获取随机数)的常用方法及示例

    random.randomrandom.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0 random.uniformrandom.uniform(a, b),用 ...

  6. ubuntu 14.04英文环境设置成中文

    适用于ubuntu 14.04英文版的系统,其它版本的设置应该是大同小异的. 进入ubuntu系统,在顶部齿状标志找到system... 2.在personal找到Language Support 3 ...

  7. CoCos2D-X-2.1.5在Eclipse中导入HelloCpp项目搭建

    1.前言 最新正在做一个校园增强现实的应用,虽然不知道cocos2d-x具体到最后能做成什么样子,但还是拿来试试,本文章仅从在Eclipse中采用复制一个新项目副本的方式来导入一个现成的HelloCp ...

  8. nyoj905 卡片游戏

    卡片游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 小明最近宅在家里无聊,于是他发明了一种有趣的游戏,游戏道具是N张叠在一起的卡片,每张卡片上都有一个数字,数字 ...

  9. Ajax的XMLHttpRequest对象的属性和方法总结

    1.redayState属性: 当一个XMLHttpRequest对象被创建后,readyState属性别哦是当前对象正处于什么状态:0:未初始化状态:已经建立:1:准备发送状态:此时XMLHttpR ...

  10. django 线上线下使用不同的数据库 上线:mysql 线下sqlite3 以及debug模式的开和关

    hostname = socket.gethostname() 获取主机名称 import os import socket hostname = socket.gethostname() if ho ...