嵌入式 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 ...
随机推荐
- ubuntu下搭建cocos2dx编程环境-中
上篇文章里讲了在ubuntu下部署cocos2d-x开发环境,这篇文章主要示范在ubuntu下部署cocos2d-x android开发环境.分开写就是因为我看很多文章里都将这两件事情混杂着写 ...
- mysql C api
1.初始化一个链接结构. 2.创建一个链接. 3.执行查询. 4.关闭链接. MYSQL* conn; 首先,声明一个conn指针指向一个MYSQL结构体,这个结构体就是一个数据库连接句柄. conn ...
- Java:抽象类abstract和接口Interface
一.抽象类:abstract 抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情.对于一个父类,如果它的某个方法在父类中实现出来 ...
- USACO Section 3.2: Feed Ratios
直接暴力搜 /* ID: yingzho1 LANG: C++ TASK: ratios */ #include <iostream> #include <fstream> # ...
- extern的意思
还是在重温C++,看到extern的意思,觉得很有必要记下来. extern是用来干什么的大家想必都是很明白的. 如果有个全局变量,或者其他文件的全局变量,要在本文件或函数中使用,可以通过extern ...
- hdu 3177
题目大意:向体积为v的山洞中搬运n个物品,每个物品具有(a,b) 属性.其中a是停放体积,b是移动体积.输出这个山东是否能放下这n个物品 解题思路: 1)当前物品能否放进山洞取决于当前物品的的移动体积 ...
- linux下c程序调用reboot函数实现直接重启【转】
转自:http://www.blog.chinaunix.net/uid-20564848-id-73878.html linux下c程序调用reboot函数实现直接重启 当然你也可以直接调用syst ...
- git环境搭建
Linux kernel 的官方 GIT地址是: http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git 可以从这个地 ...
- linux常用头文件及说明
linux常用头文件及说明 1. Linux中一些头文件的作用: <assert.h>:ANSI C.提供断言,assert(表达式)<glib.h>:GCC.GTK,GNOM ...
- 常见NoSQL的特点分析与比较
3.分类: 3.1(最常见的键值存储) a.临时性的:保存在内存中,可以进行快速的保存和读取操作, 数据有可能丢失 b.永久性:在磁盘上保存数据,可以进行快读的读写(没有内存中快),数据不会丢失 c. ...