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. JSON 与JAVA对象之间的转换(转)

    JSON与XML两者目前在数据交互方面都有很高的使用率,随着现在SOA的兴起,异构系统的整合地位相应提高,本篇文章主要介绍JSON与JAVA对象之间的相互转换. 一.对普通类型的JSON模式的转换 一 ...

  2. scp在Linux主机之间复制不用输入密码

    把你的本地主机用户的ssh公匙文件复制到远程主机用户的~/.ssh/authorized_keys文件中,假设本地主机linux(10.1.1.1),远程主机linux(10.1.1.2) 一,在li ...

  3. C#之你懂得的序列化/反序列化

    前言:写此文章一方面是为了巩固对序列化的认识,另一方面是因为本人最近在面试,面试中被问到“为什么要序列化”.虽然一直在使用,自己也反复的提到序列化,可至于说为什么要序列化,还真的没想过,所以本文就这样 ...

  4. TCP建立连接的三次握手过程

    TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程. 上图画出了TCP建立连接的过程.假定主机A运行的是TCP客户程序,B运行的是TCP服务器程序.最初两端的TCP进 ...

  5. 使用 tar 命令管理存档文件

    tar命令用于将大型文件集汇集为一个文件(存档) tar的三种操作:c(创建存档).t(列出存档的内容).x提取存档 tar的常用选项:f(要操作的存档文件名).v(可视化操作) 创建压缩的tar存档 ...

  6. Java安全编码之用户输入

    0x00 安全引言 1.传统Web应用与新兴移动应用 (1)传统Web应用:浏览器 HTTP 服务器(2)新兴移动应用:APP HTTP 服务器 从安全角度看,传统Web应用与新兴移动应用没有本质区别 ...

  7. IP地址的定义和含义

    IP的定义 ip 是32位无符号整数,最小,最大分别是- 0.0.0.0 - 255.255.255.255 具体来说,由一个ip由 Net-ID+Host-ID 两部分组成,Net-ID 相同,那么 ...

  8. Eclipse 下如何引用另一个项目的资源文件

    为什么要这么做?可参考:Eclipse 下如何引用另一个项目的Java文件 下面直接说下步骤:(项目A 引用 项目B的资源文件) 1.右键 项目A,点击菜单 Properties 2.在弹出的框中,点 ...

  9. leetcode Database3

    一.Rank Scores Write a SQL query to rank scores. If there is a tie between two scores, both should ha ...

  10. HibernateTools的使用

    1. 到 Hibernate.org官网上 下载最新版的 Hibernate Tools,我用的是 HibernateTools-3.2.4.GA版 2. 将 下载下来的压缩包解压缩,里面会有 plu ...