11832|25

888

帖子

3

TA的资源

五彩晶圆(初级)

楼主
 

【聊聊DSP】分享我的DSP开发经验 [复制链接]

看到DSP征文这个活动,很有兴趣!
活动进行快1周了,还没有人参与,是不是大家还在酝酿中呢,我先献丑了!
----------------------------------------------------------------------------------------------------------------------------------------
      毕业工作有一段时间了,大学里面一直是eeworld陪这走过来的,在读大学的时候,感觉经常可以接触到很多新的东西,什么电路模块,各种液晶屏,各种小项目,每次做完后都很想第一时间在eeworld和大家一起分享,分享学习的心得,分享调试成功的喜悦。
      现在工作了,可以和大家分享的机会也少了很多。在工作中很长一段时间都在一个平台上面维护着一份代码,而且这个也涉及到企业内部的机密。在这里就和大家分享一下在工作过程中的一些经验。
     现在工作的平台是在TMS320DM368上面进行开发,下一阶段将是TMS320DM8168上面进行开发。
     在公司里面做的事情不是特别的多,主要是打bug,很多都是在论坛或者是网友在交流,记得有一次是公司的工作任务比较小,没有什么压力。网友有问题,是一个视频添加字幕的问题,我们公司还没有做这个,刚好对这个非常的感兴趣,就和网友一起来处理,这里有两个技巧在里面,一个是视频流YUYV数据内存分布的问题,另外一个就是汉字字库取点相与的问题。在视频解码的时候一帧数据在内存中的结构分布可以从colorSpace 中可以看出,YUV420PSEMI中内存的分布是如果是1280*720,Y分量就是1280*720为前面部分的内存像素点的,接下来是1280*720/2这部分,每一个u分量后面都有一个v分量,而且是1280*720每4个像素点中取一个点,也就是行列各少了一半。知道了内存结构的分布就好说了,剩下的就是像素点相与的问题了,这样的话,我们就可以修改容易一个像素点的颜色了。

  1. ColorSpace_Type         colorSpace =  ColorSpace_YUV420PSEMI;

  2.     /**

  3.       * @brief YUV 422 semi planar corresponding to V4L2_PIX_FMT_YUV422UVP. This

  4.       *        format was added to v4l2 by TI because the dm6467 VDCE and VPSS

  5.       *        peripherals use this format. The format consists of two planes:

  6.       *        one with the Y component and one with the CbCr components

  7.       *        interleaved (hence semi) See the LSP VDCE documentation for a

  8.       *        thorough description of this format.

  9.       */
复制代码
在这里还有中内存分布结构就是YUV420P的分布,Y还是1280*720,后面是1280*720/4为U分量,接着是1280*720/4为U分量的内存,采集点还是安装YUV420进行采集的。如果大家接触到这方面的问题可以先查一下YUV420进行了解一下。
下面是一个简单的处理程序:

  1. #if 1

  2. unsigned char *offsetY, *offsetU, *offsetV;

  3. unsigned long offset;

  4. unsigned short p16, mask16; // for reading hzk16 dots

  5. unsigned char tagY, tagU, tagV,osdchar2;

  6. int i, j, k, x, y,color;

  7. const unsigned char table[] = {

  8. /*--  文字:  北  --*/

  9. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/

  10. 0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x44,0x04,0x4E,0x7C,0x58,0x04,0x60,0x04,0x40,

  11. 0x04,0x40,0x04,0x40,0x0C,0x40,0x34,0x42,0xE4,0x42,0x44,0x42,0x04,0x3E,0x00,0x00,

  12. /*--  文字:  京  --*/

  13. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/

  14. 0x02,0x00,0x01,0x08,0x7F,0xFC,0x00,0x00,0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,

  15. 0x1F,0xF0,0x01,0x00,0x09,0x30,0x19,0x18,0x31,0x0C,0x41,0x08,0x05,0x00,0x02,0x00,

  16. /*--  文字:  科 --*/

  17. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/

  18. 0x20,0x00,0x19,0xFC,0x11,0x04,0xFD,0x24,0x05,0x24,0x09,0x24,0x11,0x24,0x29,0x24,

  19. 0x55,0x24,0x96,0x54,0x14,0x50,0x10,0x90,0x10,0x92,0x11,0x12,0x12,0x0E,0x14,0x00,

  20. };

  21. #endif

  22. #if 1

  23. offsetY = Buffer_getUserPtr(hDstBuf);

  24. offsetU = offsetY + 1280 * 720;

  25. offsetV = offsetU + 1280 * 720 / 2;   


  26. for(i=0;i<6;i++)

  27. {

  28. color = 3;

  29. switch (color)

  30. {

  31. case 0: // Yellow

  32. tagY = 226;

  33. tagU = 0;

  34. tagV = 149;

  35. break;

  36. case 1: // Red

  37. tagY = 76;

  38. tagU = 85;

  39. tagV = 255;

  40. break;

  41. default: // White

  42. tagY = 128;

  43. tagU = 128;

  44. tagV = 128;

  45. }

  46. }  

  47. // chinese char

  48. //  osdchar2 = *(unsigned char *)(table);

  49. //  offset = osdchar2 * 8;

  50. for (j = 0, y = 100; j < 16 && y < 720 - 1; j++, y+=2) // line dots per char

  51. {

  52. p16 = *(unsigned short *) (table + j*2 + i*32);

  53. mask16 = 0x0080;

  54. for (k = 0, x = 50+i*40; k < 16 && x < 1280 - 1; k++, x+=2) // dots in a line

  55. {

  56. if (p16 & mask16)

  57. {

  58. *(offsetY + y*1280 + x) = *(offsetY + y*1280 + x+1) = tagY;

  59. *(offsetY + (y+1)*1280 + x) = *(offsetY + (y+1)*1280 + x+1) = tagY;

  60. *(offsetU + y * 1280 / 2 + x) =tagU;

  61. *(offsetU + y * 1280 / 2 + x +1) = tagV;

  62. }

  63. mask16 = mask16 >> 1;

  64. if (mask16 == 0)

  65. mask16 = 0x8000;

  66. }

  67. }

  68. static int tmp = 0;

  69. if(tmp == 300){

  70. FILE *fp1 = fopen ("3333.raw","wb");

  71. if(!fp1){

  72. printf("**********************file1 error!\n");

  73. goto do_exit;

  74. }

  75. fwrite(Buffer_getUserPtr(hSrcBuf), 1, Buffer_getNumBytesUsed(hSrcBuf), fp1);

  76. fclose(fp1);

  77. }

  78. tmp ++;

  79. #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 编辑 ]

最新回复

楼主,基于encode的live555直播想请教你  详情 回复 发表于 2013-12-23 19:02

点评

呵呵 给力 支持一下:)  详情 回复 发表于 2012-8-7 08:56
点赞 关注
 

回复
举报

2万

帖子

71

TA的资源

管理员

沙发
 

回复 楼主 37°男人 的帖子

呵呵 给力 支持一下
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

888

帖子

3

TA的资源

五彩晶圆(初级)

板凳
 
谢谢, soso姐支持!
 
 
 

回复

6066

帖子

92

TA的资源

裸片初长成(初级)

4
 
不错,支持!
 
 
 

回复

3404

帖子

6

TA的资源

裸片初长成(初级)

5
 
支持一下!就是看不懂嘿嘿。太专业
 
 
 

回复

7220

帖子

192

TA的资源

五彩晶圆(高级)

6
 
第一个吃螃蟹的人哈 支持下
TMS320DM368的确很不错 还没接触过这么高档的呢
在显示方面优势太明显了
 
 
 

回复

307

帖子

0

TA的资源

纯净的硅(初级)

7
 
呵呵,感谢分享!!
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(高级)

8
 
顶。。。。。。。。。。。楼主给力啊,哈哈~~有机会也去弄DSP。嘿嘿~~
 
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

9
 
加油,争取到38度!
 
 
 

回复

888

帖子

3

TA的资源

五彩晶圆(初级)

10
 
谢谢大家的支持,以后有更多的心得和大家一起分享!
 
 
 

回复

5979

帖子

8

TA的资源

版主

11
 
  写的很不错
我还在酝酿中!

点评

很期待啊! 酝酿这么长时间了,必定是精华,一定要学习! 期待!:kiss:  详情 回复 发表于 2012-8-8 21:14
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

888

帖子

3

TA的资源

五彩晶圆(初级)

12
 

回复 11楼 chenzhufly 的帖子

很期待啊!
酝酿这么长时间了,必定是精华,一定要学习!
期待!
个人签名邮箱:ternence.hsu@foxmail.com
 
 
 

回复

37

帖子

18

TA的资源

一粒金砂(中级)

13
 
楼主很强呀,各方面技术都能涉略到!
文章不错,支持一下!
 
 
 

回复

888

帖子

3

TA的资源

五彩晶圆(初级)

14
 
坛子里面是高手如云啊!很多都是和大家学的,学了就想和大家分享啊!是不?
个人签名邮箱:ternence.hsu@foxmail.com
 
 
 

回复

95

帖子

120

TA的资源

一粒金砂(中级)

15
 
楼主很有研究啊 支持
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

16
 

给力

谈谈从零开始的经历...
 
 
 

回复

888

帖子

3

TA的资源

五彩晶圆(初级)

17
 
慢慢来哦!继续关注dsp板块,会有惊喜的哦!
有心得分享哦!
个人签名邮箱:ternence.hsu@foxmail.com
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(初级)

18
 

支持一下!

 
 
 

回复

888

帖子

3

TA的资源

五彩晶圆(初级)

19
 
谢谢支持,欢迎技术交流,本人的QQ 1969947
个人签名邮箱:ternence.hsu@foxmail.com
 
 
 

回复

4138

帖子

0

TA的资源

五彩晶圆(中级)

20
 
37兄弟给力啊,dsp公司有用,但是现在工作一会没涉及到学习它,在我心中dsp和fpga就是数字信号处理的,佼佼者,很牛的,我现在是fpg方向,也希望以后的工作能学习到dsp方面的技术,到时候来和大家一起分享,加油37,加油ee
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表