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:内部类

    1.内部类的定义: 一个内部类可以定义在另一个类里,可以定义在函数里,甚至可以作为一个表达式的一部分. 2.内部类的分类: Java中的内部类共分为四种: 成员内部类member inner clas ...

  2. php脚本的执行过程(编译与执行相分离)

    php脚本的执行过程(编译与执行相分离) 深入理解PHP代码的执行的过程 PHP程序的执行流程 Apache + PHP 的并发访问

  3. xml bug之cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration...

    1.今天重装了一下MyEclipse7.5,打开原来的Flex项目,又报了以下两个错误,之前解决过,但不想又出现,于是把它的解决方法贴出来,做个备忘! 错误信息为 错误信息 写道 cvc-comple ...

  4. java开发--配置ssh

    下面,我查阅了大量资料,走了不少错路,最后总结了经验后搭建出来的SSH框架. 希望第一次搭建SSH框架的会从中得到启发. 开发环境: eclipse-jee-kepler-SR1-win32 4.3. ...

  5. iOS开发cell--滑动手势显示按钮

    // 主要代码 #warning iOS8 - #pragma mark 在滑动手势删除某一行的时候,显示出更多的按钮 - (NSArray *)tableView:(UITableView *)ta ...

  6. SSL简介

    注:本文基于互联网内容整合而成,非原创.参考文章参加[7.参考资料].引用时请附上原文地址. SSL(Secure Socket Layer,安全套接字层)是位于可靠的面向连接的网络层协议和应用层协议 ...

  7. Linux系统PATH变量配置

    alias命令用于设置命令的别名,格式为“alias 别名=命令” 例如担心复制文件时误将文件被覆盖,可以执行alias cp=" cp -i",如此一来 每次复制命令都会询问用户 ...

  8. Java Map各遍历方式的性能比较

    1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的 ...

  9. HDU 4662 MU Puzzle 简单找规律

    没有任何变换(III变U和删UU操作)之前,I 的个数一定是2^x个(也就是2的整数次幂) 若仅考虑III变U,那么设U的个数为k,I 的个数变为2^x-3*k 再加上删除UU操作,假设我们删除了2* ...

  10. Activity 跳转动画 全局定义

    定义application 的 theme <application android:allowBackup="true" android:icon="@drawa ...