• DM816x算法具体解释--之OSD


    简单介绍:

    本文介绍DM8168 DVRRDK中传入DSP内部的视频格式以及大概的处理流程。

    背景:

    可能有非常多人为了加快研发的速度、减少难度,选择在DVRRDk已有的OSD内加入自己的DSP算法。

    今天我打算将自己的算法加入进去,发现无论是隔行採集的视频和逐行採集的视频都是能够支持的。那么内部怎么实现的呢?

    详述:

    DVR_RDK_McFW_Link_API_Training.pdf中写道:

    可见算法支持隔行(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

    

  • 相关阅读:
    (十三)过滤器Filter(转)
    (十二)会话跟踪技术之servlet通信(forward和include)
    (十一)会话跟踪技术之作用域(request、session、servletContext)
    openjdk源码目录结构
    java socket相关的timeout
    eclipse创建maven web app
    hadoop mapred和mapreduce包
    hadoop shuffle
    bash shell和进程
    bash shell中的特殊用法
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6732651.html
Copyright © 2020-2023  润新知