目录一.OSD的概念1.1. 视频信号的处理:1.2.OSD图像的生成1.3.OSD图像的叠加二.RV1126的OSD结构体模块2.1OSD_REGION_INFO_S结构体2.2BITMAP_S结构体2.3 RV1126的OSD模块API讲解三.SDL_TTF库渲染文字3.1SDL_TTF库渲染文字的流程3.2 SDL_TTF库每个步骤的讲解3.2.1 TTF_Init初始化TTF的全局环境3.2.2 TTF_OpenFont打开字符库3.2.3 TTF_RenderUTF8_Solid对输入的字符串进行渲染3.2.4填充SDL_PixelFormat信息3.2.5SDL_ConvertSurface3.3 代码截图四.RV1126多线程处理输出OSD字符叠加图层的整体流程4.1具体代码:一.OSD的概念OSD(on-screen-display)中文名称是屏幕菜单调节显示方式,它的作用是对屏幕显示器做各种工作指标,包括:色彩、几何图形等进行调整,从而使得整个显示器得到最佳的状,最常见的OSD调试就是在屏幕上添加水印、LOGO。OSD技术广泛运用在PC个人电脑、电视机顶盒、ETC屏幕显示等等,后来随着网络技术的发展OSD调节也从屏幕发展到了编码图层的叠加,换言之在编码图层也可以通过OSD的叠加方法显示出自定义的图层。 (OSD应用在音视频推流上) (OSD应用在ETC上)OSD的实现原理:OSD实现一般分为下面几个部分,分别是视频信号处理、OSD图像的生成、OSD图像的叠加。1.1.视频信号的处理:OSD叠加的第一个步骤,就是要对视频信号进行处理。这种信号处理就是要从模拟信号转换成数字信号,转换完成之后需要通过芯片对数字信号进行后处理工作,包括:去噪、锐化等等。1.2.OSD图像的生成视频数据经过数字信号处理后,就可以对其进行OSD图像的生成。OSD的图像包含很多种类型,比方说LOGO图形、文字、图标等,而生成OSD图像的方式一般分为软件模式和硬件模式。硬件模式是利用专门的OSD处理芯片,通过硬件的图像合成器将OSD图像和视频信号合成,整个过程CPU不去进行处理;软件模式是通过软件的图像处理算法生成OSD图像,整个过程CPU都参与处理,常用的OSD生成的框架有:OPENCV、 FFMPEG等。(OSD硬件生成器) (OSD软件生成器)1.3.OSD图像的叠加最后一步就是把OSD的图像进行叠加,所谓叠加就是把OSD图像和视频信号结合在一起。OSD信号叠加一般分为两种一种是上方叠加、另外一种是下方叠加,上方叠加相当于把OSD图像显示在视频的顶部、下方叠加相当于把OSD图像显示在视频的底部。OSD叠加的原理也非常简单,就是把OSD图像的像素点和视频信号的像素点进行合成,并且在合成的过程中可以通过调整位置、大小等参数显示出来。 (OSD叠加原理) (OSD顶部位置、底部位置)二.RV1126的OSD结构体模块在RV1126开发OSD模块的时候,一般要使用下面的结构体分别是OSD_REGION_INFO_S和BITMAP_S。OSD_REGION_INFO_S主要作用是是在编码图像里面划分一个OSD区域,相当于在编码图像中空出一块空间给OSD图层来用,BITMAP_S的作用是向OSD图层以位图的形式把具体的内容显示出来,下面是OSD_REGION_INFO和Bitmap的关系:从上面这张图可以看出来,BITMAP_S包含在OSD_REGION_INFO里面,BITMAP_S是OSD_REGION_INFO的具体内容。2.1OSD_REGION_INFO_S结构体