1. <span style="font-family:Courier New;">
  2. /******************************************************************************
  3. function : overlay process
  4. 1) create some overlay regions
  5. 2) display overlay regions ( One Region -- Multi-VencGroup )
  6. 3) change all vencGroups Regions' positio
  7. 4) change all vencGroups Regions' Layern
  8. 5) change all vencGroups Regions' color
  9. 6) load bmp form bmp-file to Region-0
  10. 7) change all vencGroups Regions' front alpha
  11. 8) change all vencGroups Regions' backgroud alpha
  12. 9) update bitmap(not support now)
  13. 10) show or hide overlay regions
  14. 11) Detach overlay regions from chn
  15. 12) Detroy overlay regions
  16. ******************************************************************************/
  17. HI_S32 JOSEPH_SAMPLE_RGN_OverlayProcess(void)
  18. {
  19. HI_S32 s32Ret = HI_FAILURE;
  20. RGN_HANDLE RgnHandle;
  21. RGN_ATTR_S stRgnAttr;
  22. MPP_CHN_S stChn;
  23. VENC_GRP VencGrp;
  24. RGN_CHN_ATTR_S stChnAttr;
  25. HI_U32 Joseph_u32Layer = 7;
  26. HI_U32 Joseph_bind_DevId = 0;
  27. int last_sec = 0;
  28. /****************************************
  29. step 1: create overlay regions
  30. ****************************************/
  31. stRgnAttr.enType = OVERLAY_RGN;
  32. stRgnAttr.unAttr.stOverlay.enPixelFmt = PIXEL_FORMAT_RGB_1555;//PIXEL_FORMAT_RGB_565
  33. stRgnAttr.unAttr.stOverlay.stSize.u32Width  = 288;
  34. stRgnAttr.unAttr.stOverlay.stSize.u32Height = 128;
  35. stRgnAttr.unAttr.stOverlay.u32BgColor = 0xffffff;
  36. RgnHandle = 0;
  37. s32Ret = HI_MPI_RGN_Create(RgnHandle, &stRgnAttr);
  38. if(HI_SUCCESS != s32Ret)
  39. {
  40. SAMPLE_PRT("HI_MPI_RGN_Create (%d) failed with %#x!\n", \
  41. RgnHandle, s32Ret);
  42. return HI_FAILURE;
  43. }
  44. SAMPLE_PRT("the handle:%d,creat success!\n",RgnHandle);
  45. /*********************************************
  46. step 2: display overlay regions to venc groups
  47. *********************************************/
  48. for(Joseph_bind_DevId = 0; Joseph_bind_DevId < joseph_ipnc_param.joseph_s32ChnNum; Joseph_bind_DevId++)
  49. {
  50. VencGrp = 0;
  51. stChn.enModId = HI_ID_GROUP;
  52. stChn.s32DevId = Joseph_bind_DevId;
  53. stChn.s32ChnId = VencGrp;
  54. RgnHandle = 0;
  55. printf("%s:[%d] stChn.s32ChnId is %d ,\n",__FUNCTION__,__LINE__,stChn.s32ChnId);
  56. memset(&stChnAttr,0,sizeof(stChnAttr));
  57. stChnAttr.bShow = HI_TRUE;
  58. stChnAttr.enType = OVERLAY_RGN;
  59. stChnAttr.unChnAttr.stOverlayChn.stPoint.s32X = 16;
  60. stChnAttr.unChnAttr.stOverlayChn.stPoint.s32Y = 32;
  61. stChnAttr.unChnAttr.stOverlayChn.u32BgAlpha = 128;
  62. stChnAttr.unChnAttr.stOverlayChn.u32FgAlpha = 0;
  63. stChnAttr.unChnAttr.stOverlayChn.u32Layer = Joseph_u32Layer--;
  64. stChnAttr.unChnAttr.stOverlayChn.stQpInfo.bAbsQp = HI_FALSE;
  65. stChnAttr.unChnAttr.stOverlayChn.stQpInfo.s32Qp  = 0;
  66. stChnAttr.unChnAttr.stOverlayChn.stInvertColor.stInvColArea.u32Height = 32;
  67. stChnAttr.unChnAttr.stOverlayChn.stInvertColor.stInvColArea.u32Width = 16;
  68. stChnAttr.unChnAttr.stOverlayChn.stInvertColor.u32LumThresh = 64;
  69. stChnAttr.unChnAttr.stOverlayChn.stInvertColor.bInvColEn = HI_TRUE;
  70. stChnAttr.unChnAttr.stOverlayChn.stInvertColor.enChgMod = LESSTHAN_LUM_THRESH;
  71. s32Ret = HI_MPI_RGN_AttachToChn(RgnHandle, &stChn, &stChnAttr);
  72. if(HI_SUCCESS != s32Ret)
  73. {
  74. SAMPLE_PRT("HI_MPI_RGN_AttachToChn (%d) failed with %#x!\n",\
  75. RgnHandle, s32Ret);
  76. return HI_FAILURE;
  77. }
  78. printf("display region to s32DevId %d chn success!\n",stChn.s32DevId);
  79. }
  80. /*********************************************
  81. step 3: show bitmap
  82. *********************************************/
  83. struct tm *tmnow;
  84. struct timeval tv;
  85. BITMAP_S Joseph_Osd_Bmp;
  86. gettimeofday(&tv,NULL);
  87. setlocale(LC_ALL,"zh_CN.UTF-8");
  88. char osd_content[256] = {0};
  89. char week_chinese[16] = {0};
  90. tmnow = localtime(&tv.tv_sec);
  91. TTF_Font *font;
  92. /* Initialize the TTF library */
  93. if ( TTF_Init() < 0 ) {
  94. return -1;
  95. }
  96. font = TTF_OpenFont(JOSEPH_FONT_FILE, JOSEPH_FONT_SIZE);
  97. if ( font == NULL ) {
  98. printf("%s %d The fonts is NULL !\n",__FUNCTION__,__LINE__);
  99. return -1;
  100. }
  101. /*TTF_SetFontStyle(font,  TTF_STYLE_ITALIC);*/
  102. while(1)
  103. {
  104. memset(osd_content,0,sizeof(osd_content));
  105. memset(week_chinese,0,sizeof(week_chinese));
  106. while(1)
  107. {
  108. gettimeofday(&tv,NULL);
  109. if(tv.tv_sec != last_sec)
  110. {
  111. last_sec = tv.tv_sec;
  112. break;
  113. }
  114. usleep(20000);
  115. }
  116. tmnow = localtime(&tv.tv_sec);
  117. #if 0
  118. sprintf(osd_content,"%04d-%02d-%02d %02d:%02d:%02d %s ",\
  119. tmnow->tm_year+1900, tmnow->tm_mon+1, tmnow->tm_mday,tmnow->tm_hour,\
  120. tmnow->tm_min, tmnow->tm_sec,Joseph_utf_weeky_show(tmnow->tm_wday,week_chinese));
  121. #else
  122. sprintf(osd_content,"%04d-%02d-%02d %s %02d:%02d:%02d",\
  123. tmnow->tm_year+1900, tmnow->tm_mon+1, tmnow->tm_mday, Joseph_utf_weeky_show(tmnow->tm_wday,week_chinese),\
  124. tmnow->tm_hour,tmnow->tm_min, tmnow->tm_sec);
  125. #if 0
  126. printf("%s:[%d] The time stamp is %s ... \n",__FUNCTION__,__LINE__,osd_content);
  127. #endif
  128. joseph_get_luminance_from_sensor_test();
  129. #endif
  130. #if 0
  131. joseph_creat_bmp_data(font,osd_content);
  132. #else
  133. joseph_creat_bmp_data_show(font,osd_content,&Joseph_Osd_Bmp);
  134. #endif
  135. for(RgnHandle = 0;RgnHandle < 1;RgnHandle++)
  136. {
  137. #if 0
  138. s32Ret = HI_MPI_RGN_SetBitMap(RgnHandle,&stBitmap);
  139. #else
  140. s32Ret = HI_MPI_RGN_SetBitMap(RgnHandle,&Joseph_Osd_Bmp);
  141. #endif
  142. if(s32Ret != HI_SUCCESS)
  143. {
  144. SAMPLE_PRT("HI_MPI_RGN_SetBitMap failed with %#x!\n", s32Ret);
  145. exit(0);
  146. return HI_FAILURE;
  147. }
  148. free(Joseph_Osd_Bmp.pData);
  149. Joseph_Osd_Bmp.pData = NULL;
  150. }
  151. }
  152. TTF_CloseFont(font);
  153. font = NULL;
  154. TTF_Quit();
  155. #if 1
  156. /*********************************************
  157. step 4: destory region
  158. *********************************************/
  159. for(Joseph_bind_DevId = 0; Joseph_bind_DevId < joseph_ipnc_param.joseph_s32ChnNum; Joseph_bind_DevId++)
  160. {
  161. RgnHandle = 0;
  162. VencGrp = 0;
  163. stChn.enModId = HI_ID_GROUP;
  164. stChn.s32DevId = Joseph_bind_DevId;
  165. stChn.s32ChnId = VencGrp;
  166. RgnHandle = 0;
  167. s32Ret = HI_MPI_RGN_DetachFrmChn(RgnHandle, &stChn);
  168. if(HI_SUCCESS != s32Ret)
  169. {
  170. SAMPLE_PRT("HI_MPI_RGN_DetachFrmChn (%d) failed with %#x!\n",\
  171. RgnHandle, s32Ret);
  172. return HI_FAILURE;
  173. }
  174. }
  175. RgnHandle = 0;
  176. s32Ret = HI_MPI_RGN_Destroy(RgnHandle);
  177. if (HI_SUCCESS != s32Ret)
  178. {
  179. SAMPLE_PRT("HI_MPI_RGN_Destroy [%d] failed with %#x\n",\
  180. RgnHandle, s32Ret);
  181. }
  182. SAMPLE_PRT("destory all region success!\n");
  183. #endif
  184. return HI_SUCCESS;
  185. }
  186. </span>

具体Demo代码可以下载:http://download.csdn.net/detail/skdkjxy/8838309 仅供参考,谢谢~

from:http://blog.csdn.net/skdkjzz/article/details/40429587

嵌入式 hi3518平台多路码流添加osd的更多相关文章

  1. 嵌入式 hi3518平台uboot引导nfs文件系统

    首先贴出来我的bootargs的设置(注没有换行符!!!): setenv bootargs noinitrd mem=64M root=/dev/nfs init=/linuxrc rw nfsro ...

  2. 嵌入式 hi3518平台增加路由代码

    <span style="font-family:Courier New;"> /********************************** (C) COPY ...

  3. 嵌入式 hi3518平台检测网线是否插上

    /********************************** (C) COPYRIGHT ******************************* * File Name        ...

  4. 嵌入式 hi3518平台指定网卡测试是否通外网

    版权声明:本文为博主原创文章,未经博主允许不得转载. /********************************** (C) COPYRIGHT *********************** ...

  5. 嵌入式 hi3518平台获取网络环境中的ip、netmask、broadcast等信息

    <span style="font-family:Courier New;"> /********************************** (C) COPY ...

  6. 嵌入式 hi3518平台获取网关

    </pre><pre code_snippet_id="495447" snippet_file_name="blog_20141024_1_70650 ...

  7. 嵌入式 hi3518平台以太网网络模块设计包括重连机制和网线检测机制

    <span style="font-family:Courier New;"> #include <sys/types.h> #include <st ...

  8. 嵌入式 H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流

    一.MP4格式基本概念 MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二.MP4封装格式核心概念 1  MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象 ...

  9. 如何实现Windows平台RTMP播放器/RTSP播放器播放窗口添加OSD文字叠加

    好多开发者在做Windows平台特别是单屏多画面显示时,希望像监控摄像机一样,可以在播放画面添加OSD台标,以实现字符叠加效果,大多开发者可很轻松的实现以上效果,针对此,本文以大牛直播SDK (Git ...

随机推荐

  1. Java学习笔记之:Java 流

    一.介绍 Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一 ...

  2. ThreadLocal,ThreadLocalMap,Thread 的相互关系

    1.ThreadLocal. 真正关键的类是它的内部类ThreadLocalMap,ThreadLocal 基本上相当于一个代理,或者算是Facade模式的应用,还没想清楚这种设计的妙处.(经过分析, ...

  3. (八)ASP.NET自定义用户控件(1)

    http://blog.csdn.net/laodao1/article/details/5897366 ASP.NET自定义控件组件开发 第一章:从一个简单的控件谈起 起始开发ASP.NET自定义控 ...

  4. Linux守护进程详解(init.d和xinetd) [转]

    一 Linux守护进程 Linux 服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台 的守护进程来执行的 ...

  5. poj - 3723 Conscription(最大权森林)

    http://poj.org/problem?id=3723 windy需要挑选N各女孩,和M各男孩作为士兵,但是雇佣每个人都需要支付10000元的费用,如果男孩x和女孩y存在亲密度为d的关系,只要他 ...

  6. hdu3270Arranging Your Team(dfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=3720 #include <iostream> #include<cstdio> #inc ...

  7. hdu 4405 Aeroplane chess(简单概率dp 求期望)

    Aeroplane chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  8. tc srm 636 div2 500

    100的数据直接暴力就行,想多了... ac的代码: #include <iostream> #include <cstdio> #include <cstring> ...

  9. content management system

    Defination of CMS: The definition of a CMS is an application (more likely web-based), that provides ...

  10. Qt之自定义搜索框

    简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void ...