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. C#DataGridView 美化

    private void dataGridView(DataGridView dataGridView) { System.Windows.Forms.DataGridViewCellStyle da ...

  2. C++函数默认参数

    C++中允许为函数提供默认参数,又名缺省参数. 使用默认参数时的注意事项: ① 有函数声明(原型)时,默认参数可以放在函数声明或者定义中,但只能放在二者之一 double sqrt(double f ...

  3. maven也是apache下的项目

    maven也是apache下的项目,你看maven官网了,域名都在Apache下

  4. wordpress可视化编辑器的开启/关闭

    这个可视化编辑器还真是有些难找,在后台菜单“用户”->"我的个人资料" 对以下勾选即可

  5. Java:IO流与IO设备

    打印流:PrintWriter和PrintStream 特点:可以直接操作输入流和文件 //例子1:使用PrintStream将格式化的日期打印到文件中 import java.io.*; impor ...

  6. TCP三次握手和四次挥手过程及套接字在各个过程中的状态解析

    说起TCP,我们一般都需要知道发起一个tcp连接和终止一个tcp连接是所发生的事情,下边,我将跟大家介绍下tcp的三次握手及四次挥手的过程. TCP三路握手 (1)服务器必须准备好接受外来的连接.这通 ...

  7. chrome开发配置(一)安装配置工具

    1.下载depot_tools,解压到本地,然后将解压后的depot_tools根目录添加到path环境变量: depot_tools下载地址 2.cmd 运行gclient,git比较大,有100M ...

  8. LinuxMint使用中文输入法

    自从转战linux系统以来,最痛苦的事情就是没有一款能让我满意的中文输入法了 不过今天我终于发现了一个让我比较满意的输入法(小小输入法),真的很不错 我试过不少输入法,但是还是小小输入法最适合我: 搜 ...

  9. 安卓自动化测试之MonkeyRunner环境的搭建

    最近在抽时间学习一些安卓自动化的知识,把学到东西都就记录下来,避免以后记性不好忘记,也方便对自己积累知识的查阅 MonkeyRunner是基于坐标点来操作控件的,你可以通过写python脚本来调用mo ...

  10. VIM下CS命令

    01) :vs 文件目录//打开新的目录02) :cs f s 函数名 //查找那些文件中都用这个函数/变量03) :vert diffsplit A函数  //当前函数与A函数做对比(在对比情况下  ...