嵌入式 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 ...
随机推荐
- C#DataGridView 美化
private void dataGridView(DataGridView dataGridView) { System.Windows.Forms.DataGridViewCellStyle da ...
- C++函数默认参数
C++中允许为函数提供默认参数,又名缺省参数. 使用默认参数时的注意事项: ① 有函数声明(原型)时,默认参数可以放在函数声明或者定义中,但只能放在二者之一 double sqrt(double f ...
- maven也是apache下的项目
maven也是apache下的项目,你看maven官网了,域名都在Apache下
- wordpress可视化编辑器的开启/关闭
这个可视化编辑器还真是有些难找,在后台菜单“用户”->"我的个人资料" 对以下勾选即可
- Java:IO流与IO设备
打印流:PrintWriter和PrintStream 特点:可以直接操作输入流和文件 //例子1:使用PrintStream将格式化的日期打印到文件中 import java.io.*; impor ...
- TCP三次握手和四次挥手过程及套接字在各个过程中的状态解析
说起TCP,我们一般都需要知道发起一个tcp连接和终止一个tcp连接是所发生的事情,下边,我将跟大家介绍下tcp的三次握手及四次挥手的过程. TCP三路握手 (1)服务器必须准备好接受外来的连接.这通 ...
- chrome开发配置(一)安装配置工具
1.下载depot_tools,解压到本地,然后将解压后的depot_tools根目录添加到path环境变量: depot_tools下载地址 2.cmd 运行gclient,git比较大,有100M ...
- LinuxMint使用中文输入法
自从转战linux系统以来,最痛苦的事情就是没有一款能让我满意的中文输入法了 不过今天我终于发现了一个让我比较满意的输入法(小小输入法),真的很不错 我试过不少输入法,但是还是小小输入法最适合我: 搜 ...
- 安卓自动化测试之MonkeyRunner环境的搭建
最近在抽时间学习一些安卓自动化的知识,把学到东西都就记录下来,避免以后记性不好忘记,也方便对自己积累知识的查阅 MonkeyRunner是基于坐标点来操作控件的,你可以通过写python脚本来调用mo ...
- VIM下CS命令
01) :vs 文件目录//打开新的目录02) :cs f s 函数名 //查找那些文件中都用这个函数/变量03) :vert diffsplit A函数 //当前函数与A函数做对比(在对比情况下 ...