嵌入式 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 ...
随机推荐
- JSON 与JAVA对象之间的转换(转)
JSON与XML两者目前在数据交互方面都有很高的使用率,随着现在SOA的兴起,异构系统的整合地位相应提高,本篇文章主要介绍JSON与JAVA对象之间的相互转换. 一.对普通类型的JSON模式的转换 一 ...
- scp在Linux主机之间复制不用输入密码
把你的本地主机用户的ssh公匙文件复制到远程主机用户的~/.ssh/authorized_keys文件中,假设本地主机linux(10.1.1.1),远程主机linux(10.1.1.2) 一,在li ...
- C#之你懂得的序列化/反序列化
前言:写此文章一方面是为了巩固对序列化的认识,另一方面是因为本人最近在面试,面试中被问到“为什么要序列化”.虽然一直在使用,自己也反复的提到序列化,可至于说为什么要序列化,还真的没想过,所以本文就这样 ...
- TCP建立连接的三次握手过程
TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程. 上图画出了TCP建立连接的过程.假定主机A运行的是TCP客户程序,B运行的是TCP服务器程序.最初两端的TCP进 ...
- 使用 tar 命令管理存档文件
tar命令用于将大型文件集汇集为一个文件(存档) tar的三种操作:c(创建存档).t(列出存档的内容).x提取存档 tar的常用选项:f(要操作的存档文件名).v(可视化操作) 创建压缩的tar存档 ...
- Java安全编码之用户输入
0x00 安全引言 1.传统Web应用与新兴移动应用 (1)传统Web应用:浏览器 HTTP 服务器(2)新兴移动应用:APP HTTP 服务器 从安全角度看,传统Web应用与新兴移动应用没有本质区别 ...
- IP地址的定义和含义
IP的定义 ip 是32位无符号整数,最小,最大分别是- 0.0.0.0 - 255.255.255.255 具体来说,由一个ip由 Net-ID+Host-ID 两部分组成,Net-ID 相同,那么 ...
- Eclipse 下如何引用另一个项目的资源文件
为什么要这么做?可参考:Eclipse 下如何引用另一个项目的Java文件 下面直接说下步骤:(项目A 引用 项目B的资源文件) 1.右键 项目A,点击菜单 Properties 2.在弹出的框中,点 ...
- leetcode Database3
一.Rank Scores Write a SQL query to rank scores. If there is a tie between two scores, both should ha ...
- HibernateTools的使用
1. 到 Hibernate.org官网上 下载最新版的 Hibernate Tools,我用的是 HibernateTools-3.2.4.GA版 2. 将 下载下来的压缩包解压缩,里面会有 plu ...