ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:143.46KB ,
资源ID:6448192      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6448192.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(信号系统综合实践报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

信号系统综合实践报告.docx

1、信号系统综合实践报告大连理工大学本科实验报告课程名称: 信号综合处理实践 学院(系): 信息与通信工程学院 专 业: 电子信息工程(英强) 班 级: 电英1401班 学 生 1 : 李帆 201483089 学 生 2 : 马壮 201483082 学 生 3 : 王瑞明 201483133 2017 年 10 月 12 日题目:实验39 字幕式文字显示一、方法的原理本课题为字幕式文字显示,将提前设定的文字在显示器上动态显示,随着时间逐渐移动,实现弹幕的滚动效果。主要的方法原理是,对指定文字进行字符化处理,形成32px*32px的汉字阵列,在显示器上对平面坐标进行设定,确定字符的初始位置,并确

2、定字符间的相对位置,设定二维平面内字幕的移动方向和速度,从而实现字幕的动态效果。同时,对显示器背景和字符的灰度进行调整,实现较好的演示效果。1、汉语文字的字符点阵处理:在灰度图像中,文字可以用像素点的形式显示,改变不同像素点位置的灰度值,可以实现文字的正确显示。我们对汉字进行像素点阵处理,将单个汉字表示成自由设定的大小,计算出汉字占据的像素点,从而显示出汉字的图形。利用汉字字模软件PCtoLCD2002,可以很简便地得到一般汉字的点阵表示。在软件中输入汉字内容,调整点阵背景大小和汉字的字体及大小,自动生成像素坐标形式,确定坐标可以进一步实现汉字的正确显示。我们对示例文字采用宋体,背景和汉字大小

3、均为32px*32px,这样在屏幕上显示效果较好。在程序中,我们将三名组员的姓名的每个字分别用像素点表示,作为查询表进行显示。图1 生成汉字“李帆”像素点表示示例2、对显示器进行初始化设定对显示器参数进行设定,屏幕宽度设为720,高度设为576,帧间隔设为25,最大帧率为25000。由于是灰度图像显示,所以对显示器背景色和汉字颜色采用灰度级表示,我们设定背景色为纯黑0x00,将汉字设为纯白0xff,便于清楚地显示。3、字幕文字位置及移动方式设定 对显示器进行二位平面坐标处理后,文字的位置以坐标的形式在显示器显示。将文字作为整体,实现移动效果。我们将中心字设为“马”,规定汉字第一个像素点的坐标为

4、place_x和place_y,在(x,y)至(x+32,y+32)内的矩阵将显示汉字“马”。我们在每一行显示一个成员名字,这样之后每个的汉字只需对x累加32即可实现。确定行间距也为32px,这样在每一列上只需对中心字分别做处理(y+64)和(y-64)。由此实现了一个整体操作,改变place_x和place_y的数值,可以实现字幕的滚动。滚动方式设定为以对角线形式下降,所以在每帧上使横纵坐标均累加,实现语句为 place_x+=5; place_y+=5; 改变符号和大小,可以引起字幕文字移动的方向和快慢。显而易见,place_x累加则向右移动,place_x累减则向左移动,place_y累

5、加则向下移动,place_y累减则向上。如果字幕文字接近边界,我们设定字幕坐标回到初始0点,实现语句为 if(place_x600) place_x=0; 这样可以实现往复滚动,这样更符合网站弹幕的设定。初始位置横纵坐标均设为100,实现语句为提前定义 int place_x=100; int place_y=100; 经过以上方法的讨论,可以将字幕正确转化为图像像素点,并在显示器上以平面坐标的形式显示,在显示后可以实现字幕的自由移动。二、代码和效果图核心代码实现如下:/* * = video_encdec.c = * */* Codec Engine include files: */#in

6、clude #include #include #include #include /* BIOS include files: */#include #include /* Run Time lib include files: */#include #include #include #include /* PSP include files: */#include #include #include #include /* BSL include files */#include /#include /* Video Params Defaults */#include /* Video

7、 Encoder initialization param: */#define VE_MAX_BR (4000000)/* Align on cache-line boundary since encoder uses DMA */#define BUFALIGN 128/* Number of buffers to allocate for video capture + display: */#define FRAME_BUFF_CNT 6/* This example supports either PAL or NTSC depending on position of JP1 */

8、#define STANDARD_PAL 0#define STANDARD_NTSC 1/* Video Encoder parameters for D1, set depending on PAL vs NTSC: */static int intraFrameInterval;static int inputWidth;static int inputHeight;static int maxFrameRate;/* Encoder Input, Encoder output, and Decoder Output Frame sizes */static int framesize;

9、/* Video Frame buffers: */static FVID_Frame *frameBuffTableFRAME_BUFF_CNT;static FVID_Frame *frameBuffPtr = NULL;/* Video Driver Handles: */static FVID_Handle hGioVpfeCcdc = NULL;static FVID_Handle hGioVpbeVid0 = NULL;static FVID_Handle hGioVpbeVenc = NULL;/* Intermediate buffer for the encoded vide

10、o stream: */static XDAS_Int8 *encodedBuf;/* Codec Engine engine and codec labels, defined in cfg file: */static String decoderName = h264dec;static String encoderName = h264enc;static String engineName = encdec;static String progName = app;/* Function prototypes */static Void initVE_StaticParams(VID

11、ENC_Params *vencParams);static Void initVE_DynamicParams(VIDENC_DynamicParams *encDynParams);static Void initVD_StaticParams(VIDDEC_Params *vdecParams);static Void initVD_DynamicParams(VIDDEC_DynamicParams *decDynParams);static Void encode_decode(VIDENC_Handle enc, VIDDEC_Handle dec);/static int rea

12、d_JP1(void);/* * = video_encdec = */* ARGSUSED */Int video_encdec(Int argc, String argv) int status = 0; int result; int i; Engine_Handle ce = NULL; VIDDEC_Handle dec = NULL; VIDENC_Handle enc = NULL; VIDENC_Status encStatus; VIDENC_Params vencParams; VIDENC_DynamicParams encDynParams; VIDDEC_Status

13、 decStatus; VIDDEC_Params vdecParams; VIDDEC_DynamicParams decDynParams; int standard; /* Set video display/capture driver params to defaults */ PSP_VPFE_TVP5146_ConfigParams tvp5146Params = VID_PARAMS_TVP5146_DEFAULT; PSP_VPFECcdcConfigParams vpfeCcdcConfigParams = VID_PARAMS_CCDC_DEFAULT_D1; PSP_V

14、PBEOsdConfigParams vpbeOsdConfigParams = VID_PARAMS_OSD_DEFAULT_D1; PSP_VPBEVencConfigParams vpbeVencConfigParams; printf(video_encdec started.n); / standard = read_JP1(); standard =STANDARD_PAL; /* Update display/capture params based on video standard (PAL/NTSC) */ if (standard = STANDARD_PAL) inpu

15、tWidth = 720; inputHeight = 576; intraFrameInterval = 25; maxFrameRate = 25000; vpbeVencConfigParams.displayStandard = PSP_VPBE_DISPLAY_PAL_INTERLACED_COMPOSITE; else inputWidth = 720; inputHeight = 480; intraFrameInterval = 30; maxFrameRate = 30000; vpbeVencConfigParams.displayStandard = PSP_VPBE_D

16、ISPLAY_NTSC_INTERLACED_COMPOSITE; framesize = (inputWidth * inputHeight * 2 * sizeof(Int8); vpfeCcdcConfigParams.height = vpbeOsdConfigParams.height = inputHeight; vpfeCcdcConfigParams.width = vpbeOsdConfigParams.width = inputWidth; vpfeCcdcConfigParams.pitch = vpbeOsdConfigParams.pitch = inputWidth

17、 * 2; /* Initialize Video Display Driver: */ /* create video input channel */ if (status = 0) PSP_VPFEChannelParams vpfeChannelParams; vpfeChannelParams.id = PSP_VPFE_CCDC; vpfeChannelParams.params = (PSP_VPFECcdcConfigParams*)&vpfeCcdcConfigParams; hGioVpfeCcdc = FVID_create(/VPFE0,IOM_INOUT,NULL,&

18、vpfeChannelParams,NULL); status = (hGioVpfeCcdc = NULL ? -1 : 0); /* create video output channel, plane 0 */ if (status = 0) PSP_VPBEChannelParams vpbeChannelParams; vpbeChannelParams.id = PSP_VPBE_VIDEO_0; vpbeChannelParams.params = (PSP_VPBEOsdConfigParams*)&vpbeOsdConfigParams; hGioVpbeVid0 = FVI

19、D_create(/VPBE0,IOM_INOUT,NULL,&vpbeChannelParams,NULL); status = (hGioVpbeVid0 = NULL ? -1 : 0); /* create video output channel, venc */ if (status = 0) PSP_VPBEChannelParams vpbeChannelParams; vpbeChannelParams.id = PSP_VPBE_VENC; vpbeChannelParams.params = (PSP_VPBEVencConfigParams *)&vpbeVencCon

20、figParams; hGioVpbeVenc = FVID_create(/VPBE0,IOM_INOUT,NULL,&vpbeChannelParams,NULL); status = (hGioVpbeVenc = NULL ? -1 : 0); /* configure the TVP5146 video decoder */ if (status = 0) result = FVID_control(hGioVpfeCcdc, VPFE_ExtVD_BASE+PSP_VPSS_EXT_VIDEO_DECODER_CONFIG, &tvp5146Params); status = (r

21、esult = IOM_COMPLETED ? 0 : -1); /* allocate display/capture frame buffers */ for (i=0; iFRAME_BUFF_CNT; i+) frameBuffTablei = NULL; if (status = 0) for (i=0; iFRAME_BUFF_CNT & status = 0; i+) result = FVID_allocBuffer(hGioVpfeCcdc, &frameBuffTablei); status = (result = IOM_COMPLETED & frameBuffTabl

22、ei != NULL ? 0 : -1); /* prime up the video capture channel */ if (status = 0) FVID_queue(hGioVpfeCcdc, frameBuffTable0); FVID_queue(hGioVpfeCcdc, frameBuffTable1); FVID_queue(hGioVpfeCcdc, frameBuffTable2); /* prime up the video display channel */ if (status = 0) FVID_queue(hGioVpbeVid0, frameBuffT

23、able3); FVID_queue(hGioVpbeVid0, frameBuffTable4); FVID_queue(hGioVpbeVid0, frameBuffTable5); /* grab first buffer from input queue */ if (status = 0) FVID_dequeue(hGioVpfeCcdc, &frameBuffPtr); if (status != 0) goto end; /* Allocate Encoder output buffer: */* encodedBuf = (XDAS_Int8 *)Memory_contigA

24、lloc(framesize, BUFALIGN); if (encodedBuf = NULL) goto end; else Memory_cacheWbInv(encodedBuf, framesize); */ /* use engine to encode, then decode the data */ encode_decode(enc, dec);end: /* Free Video Driver resources: */ if (hGioVpfeCcdc) for (i=0; isize = sizeof(VIDENC_Params); vencParams-encodin

25、gPreset = XDM_DEFAULT; vencParams-rateControlPreset = IVIDEO_LOW_DELAY; vencParams-maxHeight = inputHeight; vencParams-maxWidth = inputWidth; vencParams-maxFrameRate = maxFrameRate; vencParams-maxBitRate = VE_MAX_BR; vencParams-dataEndianness = XDM_BYTE; vencParams-maxInterFrameInterval = 0; vencPar

26、ams-inputChromaFormat = XDM_YUV_422ILE; vencParams-inputContentType = IVIDEO_PROGRESSIVE; return; /* * = initVE_DynamicParams = */static Void initVE_DynamicParams(VIDENC_DynamicParams *encDynParams) encDynParams-inputHeight = inputHeight; encDynParams-inputWidth = inputWidth; encDynParams-refFrameRa

27、te = maxFrameRate; encDynParams-targetFrameRate = maxFrameRate; encDynParams-targetBitRate = VE_MAX_BR; encDynParams-intraFrameInterval = intraFrameInterval; encDynParams-generateHeader = XDM_ENCODE_AU; encDynParams-captureWidth = 0; encDynParams-forceIFrame = 0; return;/* * = initVD_StaticParams =

28、*/static Void initVD_StaticParams(VIDDEC_Params * vdecParams) /* Set Constant Bit Rate, YUV422 Interlaced, little endian: */ vdecParams-size = sizeof(VIDDEC_Params); vdecParams-maxHeight = inputHeight; vdecParams-maxWidth = inputWidth; vdecParams-maxFrameRate = 0; vdecParams-maxBitRate = 0; vdecParams-dataEnd

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1