看到DSP征文这个活动,很有兴趣!
活动进行快1周了,还没有人参与,是不是大家还在酝酿中呢,我先献丑了!
----------------------------------------------------------------------------------------------------------------------------------------
毕业工作有一段时间了,大学里面一直是eeworld陪这走过来的,在读大学的时候,感觉经常可以接触到很多新的东西,什么电路模块,各种液晶屏,各种小项目,每次做完后都很想第一时间在eeworld和大家一起分享,分享学习的心得,分享调试成功的喜悦。
现在工作了,可以和大家分享的机会也少了很多。在工作中很长一段时间都在一个平台上面维护着一份代码,而且这个也涉及到企业内部的机密。在这里就和大家分享一下在工作过程中的一些经验。
现在工作的平台是在TMS320DM368上面进行开发,下一阶段将是TMS320DM8168上面进行开发。
在公司里面做的事情不是特别的多,主要是打bug,很多都是在论坛或者是网友在交流,记得有一次是公司的工作任务比较小,没有什么压力。网友有问题,是一个视频添加字幕的问题,我们公司还没有做这个,刚好对这个非常的感兴趣,就和网友一起来处理,这里有两个技巧在里面,一个是视频流YUYV数据内存分布的问题,另外一个就是汉字字库取点相与的问题。在视频解码的时候一帧数据在内存中的结构分布可以从colorSpace 中可以看出,YUV420PSEMI中内存的分布是如果是1280*720,Y分量就是1280*720为前面部分的内存像素点的,接下来是1280*720/2这部分,每一个u分量后面都有一个v分量,而且是1280*720每4个像素点中取一个点,也就是行列各少了一半。知道了内存结构的分布就好说了,剩下的就是像素点相与的问题了,这样的话,我们就可以修改容易一个像素点的颜色了。
ColorSpace_Type colorSpace = ColorSpace_YUV420PSEMI;
/**
* @brief YUV 422 semi planar corresponding to V4L2_PIX_FMT_YUV422UVP. This
* format was added to v4l2 by TI because the dm6467 VDCE and VPSS
* peripherals use this format. The format consists of two planes:
* one with the Y component and one with the CbCr components
* interleaved (hence semi) See the LSP VDCE documentation for a
* thorough description of this format.
*/
复制代码在这里还有中内存分布结构就是YUV420P的分布,Y还是1280*720,后面是1280*720/4为U分量,接着是1280*720/4为U分量的内存,采集点还是安装YUV420进行采集的。如果大家接触到这方面的问题可以先查一下YUV420进行了解一下。
下面是一个简单的处理程序:
#if 1
unsigned char *offsetY, *offsetU, *offsetV;
unsigned long offset;
unsigned short p16, mask16; // for reading hzk16 dots
unsigned char tagY, tagU, tagV,osdchar2;
int i, j, k, x, y,color;
const unsigned char table[] = {
/*-- 文字: 北 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x44,0x04,0x4E,0x7C,0x58,0x04,0x60,0x04,0x40,
0x04,0x40,0x04,0x40,0x0C,0x40,0x34,0x42,0xE4,0x42,0x44,0x42,0x04,0x3E,0x00,0x00,
/*-- 文字: 京 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x02,0x00,0x01,0x08,0x7F,0xFC,0x00,0x00,0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,
0x1F,0xF0,0x01,0x00,0x09,0x30,0x19,0x18,0x31,0x0C,0x41,0x08,0x05,0x00,0x02,0x00,
/*-- 文字: 科 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x00,0x19,0xFC,0x11,0x04,0xFD,0x24,0x05,0x24,0x09,0x24,0x11,0x24,0x29,0x24,
0x55,0x24,0x96,0x54,0x14,0x50,0x10,0x90,0x10,0x92,0x11,0x12,0x12,0x0E,0x14,0x00,
};
#endif
#if 1
offsetY = Buffer_getUserPtr(hDstBuf);
offsetU = offsetY + 1280 * 720;
offsetV = offsetU + 1280 * 720 / 2;
for(i=0;i<6;i++)
{
color = 3;
switch (color)
{
case 0: // Yellow
tagY = 226;
tagU = 0;
tagV = 149;
break;
case 1: // Red
tagY = 76;
tagU = 85;
tagV = 255;
break;
default: // White
tagY = 128;
tagU = 128;
tagV = 128;
}
}
// chinese char
// osdchar2 = *(unsigned char *)(table);
// offset = osdchar2 * 8;
for (j = 0, y = 100; j < 16 && y < 720 - 1; j++, y+=2) // line dots per char
{
p16 = *(unsigned short *) (table + j*2 + i*32);
mask16 = 0x0080;
for (k = 0, x = 50+i*40; k < 16 && x < 1280 - 1; k++, x+=2) // dots in a line
{
if (p16 & mask16)
{
*(offsetY + y*1280 + x) = *(offsetY + y*1280 + x+1) = tagY;
*(offsetY + (y+1)*1280 + x) = *(offsetY + (y+1)*1280 + x+1) = tagY;
*(offsetU + y * 1280 / 2 + x) =tagU;
*(offsetU + y * 1280 / 2 + x +1) = tagV;
}
mask16 = mask16 >> 1;
if (mask16 == 0)
mask16 = 0x8000;
}
}
static int tmp = 0;
if(tmp == 300){
FILE *fp1 = fopen ("3333.raw","wb");
if(!fp1){
printf("**********************file1 error!\n");
goto do_exit;
}
fwrite(Buffer_getUserPtr(hSrcBuf), 1, Buffer_getNumBytesUsed(hSrcBuf), fp1);
fclose(fp1);
}
tmp ++;
#endif
复制代码调试显示效果如下:
调试正常以后的效果是:
如果上面的有什么疑问的,可以一起来交流的哦!
下面来简单介绍一下DM368把: DM368 是高清视频摄像机、实时数码摄像机 (DVR)、高清视频通信系统以及数字标牌等众多视频应用的理想选择。除支持更高的视频分辨率之外,客户还可获得超过 40% 的 ARM 性能提升,可为高清视频处理与高级用户体验提供高级应用编程接口 (API)。
DM368 支持多格式高清视频,包括 VC1、MPEG2、MPEG4、MJPEG 以及 H.264 等,最高支持每秒 30 帧编码的 1080p 标准。此外,该器件不但支持多格式解码、多速率多流以及高清多通道功能,而且还可提供音频、语音以及其它高清视频编解码器,可实现更高的灵活性与更低的设计复杂性。由于 DM368 实现了引脚对引脚以及软件兼容,因此可使用 TI TMS320DM365 达芬奇视频处理器支持从 D1、720p 乃至高达 30 帧每秒的 1080p 的全系列产品。
TMS320DM368 达芬奇视频处理器的特性与优势:
ARM926EJ-S 内核可实现超过 40% 的性能提升,频率提高达 432 MHz,同时还可将视频编码/解码功能交由集成高清视频加速器完成,从而可优化系统性能;
集成型外设(EMAC、USB 2.0 Phy、16 位 DDR2、16 KHz 语音编解码器、实时时钟以及 3 个 10 位 DAC)可将电路板尺寸与系统成本锐降 20% 以上;
可直接用于生产的免专利费独立式音频及语音编解码器(MP3、WMA、AAC LC、G.711 以及回声抵消器)加上支持免专利费视频编解码器(H.264、MPEG-2、MPEG-4 JPEG 以及 VC1/WMV9)的多格式多速率多流高清视频,不但可降低设计复杂性,而且还可加速产品的上市进程;
适用于 DM368 处理器与 DM365 处理器的扩展型温度版本,支持零下 40 ℃到零上 85℃的温度范围。
接下来就是和大家一起来分享一些比较好的数据,在达芬奇方面的中文书籍非常的少,下面这本书感觉是非常的好,为什么感觉好,因为里面详细介绍了DVSDK的开发使用、音视频编解码技术已经一些开发流程,感觉这个比较的给力。相信对初学者的话会有一定的帮助的!
达芬奇技术.pdf
(6.9 MB, 下载次数: 4353)
最后希望大家都可以分享一下自己在开发过程中的一下经验和心得体会!
[ 本帖最后由 37°男人 于 2012-8-7 09:13 编辑 ]
|