简单介绍:

本文介绍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. java连接mysql数据库实例

    做游戏客户端多一年多了,在大学学的java的SSH,基本上都忘完了,今天看了一下发现基本的连接数据库的都忘了...太可怕了这遗忘的速度. 所以写了个连接的例子吧..安装好mysql数据库之后新建了两张 ...

  2. U3D-LookAt插值动画

    var qua = Quaternion.FromToRotation(Vector3.forward, target.transform.position - transform.position) ...

  3. [na][QoS]cisco3560限速配置案例-收集于网工泡泡

    网络中常用到这些:CISCO和H3C-MAC过滤+端口限速+端口镜像+端口隔离 不同的方式不同的思想:嘎嘎 其他各个厂商的限速链接:http://pan.baidu.com/s/1hrIMoSG 密码 ...

  4. 【Android】6.1 Toast(信息提示框)

    分类:C#.Android.VS2015: 创建日期:2016-02-08 一.简介 Toast用于向用户显示一些帮助或者提示信息.前面我们已经多次用到它,这里只是系统地将其总结一下,并演示它的各种基 ...

  5. oracle 存储过程实现数据CURD操作

    1.创建数据库表: -- Create table create table TEST_TABLE ( userid NUMBER not null, username NVARCHAR2(50), ...

  6. android 使用 sqlite

    SQLiteHelper .class  (升级的时候,做点小技巧) package com.keyue.qlm.util;  import android.content.Context;  imp ...

  7. android中activity向service中传值

    和activity中互相传值类似 在activity中 Intent regIntent = new Intent(this, ChatService.class);  regIntent.putEx ...

  8. BNUOJ-1065或运算的简单解法

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=1065 下面有一个程序:--------------------------------------- ...

  9. [sz,rz]使用sz/rz在两台Linux设备之间传输数据

    转自:https://superuser.com/questions/604055/using-rz-and-sz-under-linux-shell zsend #!/bin/sh DEV=/dev ...

  10. redis的window客户端下载地址

    这里是window的版本,由微软维护的: https://github.com/MicrosoftArchive/redis/releases