嵌入式 hi3518平台多路码流添加osd
- <span style="font-family:Courier New;">
- /******************************************************************************
- function : overlay process
- 1) create some overlay regions
- 2) display overlay regions ( One Region -- Multi-VencGroup )
- 3) change all vencGroups Regions' positio
- 4) change all vencGroups Regions' Layern
- 5) change all vencGroups Regions' color
- 6) load bmp form bmp-file to Region-0
- 7) change all vencGroups Regions' front alpha
- 8) change all vencGroups Regions' backgroud alpha
- 9) update bitmap(not support now)
- 10) show or hide overlay regions
- 11) Detach overlay regions from chn
- 12) Detroy overlay regions
- ******************************************************************************/
- HI_S32 JOSEPH_SAMPLE_RGN_OverlayProcess(void)
- {
- HI_S32 s32Ret = HI_FAILURE;
- RGN_HANDLE RgnHandle;
- RGN_ATTR_S stRgnAttr;
- MPP_CHN_S stChn;
- VENC_GRP VencGrp;
- RGN_CHN_ATTR_S stChnAttr;
- HI_U32 Joseph_u32Layer = 7;
- HI_U32 Joseph_bind_DevId = 0;
- int last_sec = 0;
- /****************************************
- step 1: create overlay regions
- ****************************************/
- stRgnAttr.enType = OVERLAY_RGN;
- stRgnAttr.unAttr.stOverlay.enPixelFmt = PIXEL_FORMAT_RGB_1555;//PIXEL_FORMAT_RGB_565
- stRgnAttr.unAttr.stOverlay.stSize.u32Width = 288;
- stRgnAttr.unAttr.stOverlay.stSize.u32Height = 128;
- stRgnAttr.unAttr.stOverlay.u32BgColor = 0xffffff;
- RgnHandle = 0;
- s32Ret = HI_MPI_RGN_Create(RgnHandle, &stRgnAttr);
- if(HI_SUCCESS != s32Ret)
- {
- SAMPLE_PRT("HI_MPI_RGN_Create (%d) failed with %#x!\n", \
- RgnHandle, s32Ret);
- return HI_FAILURE;
- }
- SAMPLE_PRT("the handle:%d,creat success!\n",RgnHandle);
- /*********************************************
- step 2: display overlay regions to venc groups
- *********************************************/
- for(Joseph_bind_DevId = 0; Joseph_bind_DevId < joseph_ipnc_param.joseph_s32ChnNum; Joseph_bind_DevId++)
- {
- VencGrp = 0;
- stChn.enModId = HI_ID_GROUP;
- stChn.s32DevId = Joseph_bind_DevId;
- stChn.s32ChnId = VencGrp;
- RgnHandle = 0;
- printf("%s:[%d] stChn.s32ChnId is %d ,\n",__FUNCTION__,__LINE__,stChn.s32ChnId);
- memset(&stChnAttr,0,sizeof(stChnAttr));
- stChnAttr.bShow = HI_TRUE;
- stChnAttr.enType = OVERLAY_RGN;
- stChnAttr.unChnAttr.stOverlayChn.stPoint.s32X = 16;
- stChnAttr.unChnAttr.stOverlayChn.stPoint.s32Y = 32;
- stChnAttr.unChnAttr.stOverlayChn.u32BgAlpha = 128;
- stChnAttr.unChnAttr.stOverlayChn.u32FgAlpha = 0;
- stChnAttr.unChnAttr.stOverlayChn.u32Layer = Joseph_u32Layer--;
- stChnAttr.unChnAttr.stOverlayChn.stQpInfo.bAbsQp = HI_FALSE;
- stChnAttr.unChnAttr.stOverlayChn.stQpInfo.s32Qp = 0;
- stChnAttr.unChnAttr.stOverlayChn.stInvertColor.stInvColArea.u32Height = 32;
- stChnAttr.unChnAttr.stOverlayChn.stInvertColor.stInvColArea.u32Width = 16;
- stChnAttr.unChnAttr.stOverlayChn.stInvertColor.u32LumThresh = 64;
- stChnAttr.unChnAttr.stOverlayChn.stInvertColor.bInvColEn = HI_TRUE;
- stChnAttr.unChnAttr.stOverlayChn.stInvertColor.enChgMod = LESSTHAN_LUM_THRESH;
- s32Ret = HI_MPI_RGN_AttachToChn(RgnHandle, &stChn, &stChnAttr);
- if(HI_SUCCESS != s32Ret)
- {
- SAMPLE_PRT("HI_MPI_RGN_AttachToChn (%d) failed with %#x!\n",\
- RgnHandle, s32Ret);
- return HI_FAILURE;
- }
- printf("display region to s32DevId %d chn success!\n",stChn.s32DevId);
- }
- /*********************************************
- step 3: show bitmap
- *********************************************/
- struct tm *tmnow;
- struct timeval tv;
- BITMAP_S Joseph_Osd_Bmp;
- gettimeofday(&tv,NULL);
- setlocale(LC_ALL,"zh_CN.UTF-8");
- char osd_content[256] = {0};
- char week_chinese[16] = {0};
- tmnow = localtime(&tv.tv_sec);
- TTF_Font *font;
- /* Initialize the TTF library */
- if ( TTF_Init() < 0 ) {
- return -1;
- }
- font = TTF_OpenFont(JOSEPH_FONT_FILE, JOSEPH_FONT_SIZE);
- if ( font == NULL ) {
- printf("%s %d The fonts is NULL !\n",__FUNCTION__,__LINE__);
- return -1;
- }
- /*TTF_SetFontStyle(font, TTF_STYLE_ITALIC);*/
- while(1)
- {
- memset(osd_content,0,sizeof(osd_content));
- memset(week_chinese,0,sizeof(week_chinese));
- while(1)
- {
- gettimeofday(&tv,NULL);
- if(tv.tv_sec != last_sec)
- {
- last_sec = tv.tv_sec;
- break;
- }
- usleep(20000);
- }
- tmnow = localtime(&tv.tv_sec);
- #if 0
- sprintf(osd_content,"%04d-%02d-%02d %02d:%02d:%02d %s ",\
- tmnow->tm_year+1900, tmnow->tm_mon+1, tmnow->tm_mday,tmnow->tm_hour,\
- tmnow->tm_min, tmnow->tm_sec,Joseph_utf_weeky_show(tmnow->tm_wday,week_chinese));
- #else
- sprintf(osd_content,"%04d-%02d-%02d %s %02d:%02d:%02d",\
- tmnow->tm_year+1900, tmnow->tm_mon+1, tmnow->tm_mday, Joseph_utf_weeky_show(tmnow->tm_wday,week_chinese),\
- tmnow->tm_hour,tmnow->tm_min, tmnow->tm_sec);
- #if 0
- printf("%s:[%d] The time stamp is %s ... \n",__FUNCTION__,__LINE__,osd_content);
- #endif
- joseph_get_luminance_from_sensor_test();
- #endif
- #if 0
- joseph_creat_bmp_data(font,osd_content);
- #else
- joseph_creat_bmp_data_show(font,osd_content,&Joseph_Osd_Bmp);
- #endif
- for(RgnHandle = 0;RgnHandle < 1;RgnHandle++)
- {
- #if 0
- s32Ret = HI_MPI_RGN_SetBitMap(RgnHandle,&stBitmap);
- #else
- s32Ret = HI_MPI_RGN_SetBitMap(RgnHandle,&Joseph_Osd_Bmp);
- #endif
- if(s32Ret != HI_SUCCESS)
- {
- SAMPLE_PRT("HI_MPI_RGN_SetBitMap failed with %#x!\n", s32Ret);
- exit(0);
- return HI_FAILURE;
- }
- free(Joseph_Osd_Bmp.pData);
- Joseph_Osd_Bmp.pData = NULL;
- }
- }
- TTF_CloseFont(font);
- font = NULL;
- TTF_Quit();
- #if 1
- /*********************************************
- step 4: destory region
- *********************************************/
- for(Joseph_bind_DevId = 0; Joseph_bind_DevId < joseph_ipnc_param.joseph_s32ChnNum; Joseph_bind_DevId++)
- {
- RgnHandle = 0;
- VencGrp = 0;
- stChn.enModId = HI_ID_GROUP;
- stChn.s32DevId = Joseph_bind_DevId;
- stChn.s32ChnId = VencGrp;
- RgnHandle = 0;
- s32Ret = HI_MPI_RGN_DetachFrmChn(RgnHandle, &stChn);
- if(HI_SUCCESS != s32Ret)
- {
- SAMPLE_PRT("HI_MPI_RGN_DetachFrmChn (%d) failed with %#x!\n",\
- RgnHandle, s32Ret);
- return HI_FAILURE;
- }
- }
- RgnHandle = 0;
- s32Ret = HI_MPI_RGN_Destroy(RgnHandle);
- if (HI_SUCCESS != s32Ret)
- {
- SAMPLE_PRT("HI_MPI_RGN_Destroy [%d] failed with %#x\n",\
- RgnHandle, s32Ret);
- }
- SAMPLE_PRT("destory all region success!\n");
- #endif
- return HI_SUCCESS;
- }
- </span>
具体Demo代码可以下载:http://download.csdn.net/detail/skdkjxy/8838309 仅供参考,谢谢~
from:http://blog.csdn.net/skdkjzz/article/details/40429587
嵌入式 hi3518平台多路码流添加osd的更多相关文章
- 嵌入式 hi3518平台uboot引导nfs文件系统
首先贴出来我的bootargs的设置(注没有换行符!!!): setenv bootargs noinitrd mem=64M root=/dev/nfs init=/linuxrc rw nfsro ...
- 嵌入式 hi3518平台增加路由代码
<span style="font-family:Courier New;"> /********************************** (C) COPY ...
- 嵌入式 hi3518平台检测网线是否插上
/********************************** (C) COPYRIGHT ******************************* * File Name ...
- 嵌入式 hi3518平台指定网卡测试是否通外网
版权声明:本文为博主原创文章,未经博主允许不得转载. /********************************** (C) COPYRIGHT *********************** ...
- 嵌入式 hi3518平台获取网络环境中的ip、netmask、broadcast等信息
<span style="font-family:Courier New;"> /********************************** (C) COPY ...
- 嵌入式 hi3518平台获取网关
</pre><pre code_snippet_id="495447" snippet_file_name="blog_20141024_1_70650 ...
- 嵌入式 hi3518平台以太网网络模块设计包括重连机制和网线检测机制
<span style="font-family:Courier New;"> #include <sys/types.h> #include <st ...
- 嵌入式 H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
一.MP4格式基本概念 MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二.MP4封装格式核心概念 1 MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象 ...
- 如何实现Windows平台RTMP播放器/RTSP播放器播放窗口添加OSD文字叠加
好多开发者在做Windows平台特别是单屏多画面显示时,希望像监控摄像机一样,可以在播放画面添加OSD台标,以实现字符叠加效果,大多开发者可很轻松的实现以上效果,针对此,本文以大牛直播SDK (Git ...
随机推荐
- AA投资
AA投资创建于2015年,总部位于北京,创始人成妙绮和王浩泽,专注于天使轮的技术创新驱动的TMT项目投资. 投资方向 AA投资是一家2015年才成立的风险投资机构,专注于种子轮.天使轮.Pre-A轮的 ...
- OpenStack学习系列-----第一篇 OpenStack介绍
刚开始接触OpenStack,被它所承诺的前景,以及现在业界对它的期望吸引(OpenStack被誉为21世纪的Linux开源社区,可以预见其的发展前景是何其广阔.).怎么说呢,我现在也暂时相信,Ope ...
- iOS 苹果真机鉴定
iPhone 4S(GSM) 16GB 黑色序列号:DX4KN69EDTC0设备名称:iPhone 4S容 量:16GB颜 色:黑色类 型:iPhone4,1代 号:n94ap型 号:MD235激活状 ...
- linux查看内存
cat /proc/meminfo 查看内存,查看最为准确. cat /proc/cpuinfo 察看CPU情况. dmesg | less 这样也可以看到,不过带太多的其他信息了. top也可 ...
- Spring AOP基础知识
Spring AOP使用动态代理技术在运行期织入增强的代码,两种代理机制包括:一是基于JDK的动态代理,另一种是基于CGLib的动态代理.之所以需要两种代理机制,很大程度上是因为JDK本身只提供接口的 ...
- js dom
JavaScript的DOM操作 1.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 2.Window对象操作 一.属性和方 ...
- Vi Usage
标签: linux 编辑工具 md 快捷键以及常用命令(前面带:的是命令) h -> 左移一个字符 j -> 下移一行 k -> 上移一行 l -> 右移一个字符 w或Shif ...
- 截取usb数据包,控制usb设备----Relay设备
在项目开发当中,我们需要一个usb转继电器的设备当开关控制无线发射设备,采购部采购时并未详细了解Relay设备的运行环境就买了一批设备,之后发现设备厂家只提供了windows库,而我们是要在linux ...
- MTK
1.mt_boot_init->boot_linux_from_storage->boot_linux->boot_linux_fdt
- Back to Back Order Process
Steps involved involved in back to back order process in oracle apps 1. Enter Sales Order 2. Book Sa ...