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. 李洪强iOS开发之计算数组的最大最小值

    // //  ViewController.m //  A21 - 李洪强 - 输出参数 // //  Created by vic fan on 16/7/3. //  Copyright © 20 ...

  2. 李洪强iOS开发之UICollectionView的使用

    想做如下的界面效果(纯代码) ------------------------------------------------------------------------------------ ...

  3. Project Euler 101 :Optimum polynomial 最优多项式

    Optimum polynomial If we are presented with the first k terms of a sequence it is impossible to say ...

  4. C#的控制台程序输出

    1. int nChar; string mystring; Console.WriteLine("{0} {1}",nChar,mystring); 其中{0},{1}为占位符 ...

  5. Android 怎么使用Bitmap+Canvas 自适应屏幕

    我们可以使用Matrix 来放缩我们得到的Bitmap 从而使我们的BItmap适应我们的手机屏幕 首先我们得先获取我们的手机屏幕的大小 WindowManager wm = (WindowManag ...

  6. oracle服务、客户端 plsql配置

    1.oracle服务端安装 Oracle 9i 的安装(图解) 2.oracle客户端安装 http://wenku.baidu.com/view/8be28581f524ccbff0218427.h ...

  7. linux下c程序调用reboot函数实现直接重启【转】

    转自:http://www.blog.chinaunix.net/uid-20564848-id-73878.html linux下c程序调用reboot函数实现直接重启 当然你也可以直接调用syst ...

  8. UBoot常用命令手册

    UBoot常用命令手册 U-Boot还提供了更加详细的命令帮助,可以通过”?”显示支持的命令列表,通过help [CommandName]命令还可以查看每个命令的参数说明. 1.bootm bootm ...

  9. android 从assets和res中读取文件

    1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的.assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译, ...

  10. [HDOJ2512]一卡通大冒险(DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512 给一个数n,问1~n这n个数内的划分.设dp(i,j)为i划分为j个集合时有多少个. 初始化条件 ...