Jan 06
MPEG-4 ASPÊÓÆµ±àÂëÆ÷µÄÈí¼þÓÅ»¯Éè¼Æ
January 6th, 2009 |ÕªÒª:±¾ÎĽéÉÜÁËTMS320C6416 DSPºÍMPEG-4ASP (Advanced Simple Profile )ÊÓÆµ±àÂëÆ÷ÔÚSP»ù´¡ÉÏÐÂÔöµÄ¹¤¾ß,Ïêϸ²ûÊöÁË»ùÓÚ¸ÃÆ½Ì¨ÊµÏÖMPEG-4ASPÊÓÆµ±àÂëÆ÷µÄÈí¼þÓÅ»¯·½·¨,×îºóͨ¹ýʵÑé½á¹ûµÄ±È½ÏÕ¹ÏÖÁËÔÚǶÈëʽϵͳӦÓÃÖÐASPÏà¶ÔÓÚSP±àÂëÆ÷µÄÓÅÔ½ÐÔ¡£Óɴ˿ɿ´³ö,ÔÚ´æ´¢ÄÜÁ¦ÊÜÏÞµÄÇé¿öÏÂ,²ÉÓÃASP½øÐÐMPEG-4ÊÓÆµ±àÂë¸üΪÊʺϡ£
¹Ø¼ü´Ê:MPEG-4;ÊÓÆµ±àÂëÆ÷;Èí¼þÓÅ»¯
ÒýÑÔ
MPEG-4SP ( Simple Profile)±àÂëÆ÷ÒÔÆä³öÖÚµÄѹËõЧÂʺÍͼÏñÖÊÁ¿Êܵ½Á˹㷺¹Ø×¢,²¢ËæÖ®µ®ÉúÁ˺ܶà»ùÓÚPCƽ̨µÄ±à½âÂëÆ÷(ÈçDivx¡¢XvidµÈ) ,ÔÚÔ¶³Ì½ÌÓýºÍ¸ßÇåÎú¶ÈµçÓ°µÈ·½ÃæµÃµ½Á˹㷺ӦÓ᣶ø2001Äê·¢²¼µÄMPEG-4±ê×¼V2. 0 Öаüº¬µÄASP±àÂëÆ÷,ÔòÔÚSPµÄ»ù´¡ÉÏÔö¼ÓÁËһЩÐµĹ¤¾ß,½øÒ»²½Ìá¸ßÁËѹËõЧÂÊ,Òò´Ë¸üÊʺÏÔÚÎÞÏßÊÓÆµÍ¨ÐźÍÊýÂëÉãÏñ»úµÈǶÈëʽϵͳÖÐÓ¦Óá£
1¡¡Ó²¼þƽ̨TMS320C6416½éÉÜ
Ñ¡ÓõÄʵÑéÓ²¼þƽ̨ÊÇTMS320C6416 DSK(DSP Starter Kit) ¡£ÆäºËÐÄ´¦ÀíÆ÷ΪÃÀ¹úTI¹«Ë¾µÄ¸ßÐÔÄܶ¨µã32λDSP C6416,»ùÓÚµÚ2´ú¸ßÐÔÄÜVe2lociTI. 2 VLIW½á¹¹,´øÓÐ64¸ö32λ×Ö³¤µÄ¼Ä´æÆ÷,8¸ö¸ß¶È¶ÀÁ¢µÄ¹¦Äܵ¥Ôª( 2¸ö³Ë·¨µ¥Ôª, 6¸öËãÊõÂß¼µ¥Ôª) ,¹¤×÷ʱÖÓÆµÂÊΪ600MHz,·åÖµ´¦ÀíËٶȿɴï4800Mbit/s¡£C6416 DSP¾ßÓÐ1MB µÄƬÉÏ´æ´¢¿Õ¼ä,²ÉÓÃÁ½¼¶»º´æ½á¹¹¡£ÆäÖÐͬCPUÖ±½ÓÏàÁ¬µÄL1PºÍL1DÄÜÒÔCPUÏàͬµÄËÙ¶ÈÔËÐÐ, ¶øL2CACHEÓÐ5 ÖÖÅäÖÃģʽ,¿É¸ù¾Ýʵ¼ÊÐèÒªÀ´É趨L2CACHEµÄ´óС¡£Í¬Ê±C6416»¹¾ßÓÐ64¸ö¶ÀÁ¢µÄEDMAͨµÀ,¿ÉÔÚCPU ºǫ́½øÐдóÁ¿µÄÊý¾Ý°áÒÆ£¬²¢¼¯³ÉÁË16MBµÄSDRAM,¿ÉÅäÖÃΪ¸ßËÙ»º´æ ,Ìá¸ß·ÃÎÊЧÂÊ¡£
2¡¡MPEG-4ASPÊÓÆµ±àÂë
Ô˶¯Í¼Ïñר¼Ò×éMPEGÓÚ2001ÄêÔÚÆäз¢²¼µÄV2. 0°æ±¾ÖÐÔö¼ÓÁËһЩÐµĹ¤¾ßºÍ¿ò¼Ü,ÆäÖаüÀ¨ÁËASP ¡£ASP ÔÚSPµÄ»ù´¡ÉÏÔö¼ÓÁ˶ÔB-VOP¡¢1/4ÏñËØ¾«¶ÈµÄÔ˶¯Ê¸Á¿¡¢¿ÉÑ¡Á¿»¯Æ÷ ¡¢È«¾ÖÔ˶¯²¹³¥GMCµÈµÄÖ§³Ö,½øÒ»²½Ìá¸ßÁËѹËõЧÂÊ¡£
(1)B-VOPʹÓÃË«ÏòÔ¤²âÀ´Ìá¸ßÔ˶¯²¹³¥µÄЧÂÊ,Ò²¼´Ã¿¸öblock¿é»òÕßmacroblockºê¿é¶¼¿ÉÓÉǰÏòºÍºóÏòÔ¤²â¼ÓȨµÃµ½¡£
(2) 1/4ÏñËØÔ˶¯Ê¸Á¿ : ÔÚ½øÐÐÔ˶¯¹À¼ÆºÍ²¹³¥Ö®Ç°, ²Î¿¼VOPÏÈÔÚ1/2ÏñËØÎ»Öô¦,½ø¶øÔÚ1/4´¦½øÐвåÖµ,¾¡¹ÜÕâÑùÔö¼ÓÁËÔ˶¯¹À¼Æ¡¢Ô˶¯²¹³¥ºÍͼÏñÖØ½¨µÄ¸´ÔÓ¶È,µ«±àÂëЧÂÊÏà±ÈSP±àÂëÆ÷µÃµ½ÁËÌá¸ß¡£
(3)¿ÉÑ¡Á¿»¯Æ÷:ÔÚASPÖÐÌṩÁËÒ»ÖÖ¿ÉÑ¡µÄ·´Á¿»¯·½Ê½¡£ÔÚÕâÖÖ·½Ê½ÖÐ,Á¿»¯ÏµÊýFQ ( u, v)°´ÕÕÏÂÃæµÄ·½Ê½½øÐз´Á¿»¯À´Éú³ÉϵÊýF (u, v) : if (FQ = 0) F = 0; elseF = [ (2 ¡ÁFc( u, v) + k) ¡ÁWW ( u, v) ¡ÁQP ] /16¡£ÆäÖÐWW ÊÇ8 ¡Á8µÄ¼ÓȨÒò×Ó¾ØÕó,ÕâÖÖ·´Á¿»¯·½Ê½Ê¹µÃ±àÂëÆ÷¿É¸ù¾ÝÁ¿»¯ÏµÊýÔÚ¿éÖеÄλÖÃ,ʹÓÃWW ¸Ä±ä²½³¤¡£
(4)È«¾ÖÔ˶¯²¹³¥(GMC) :ͬһÊÓÆµ¶ÔÏó(VO)Öеĺê¿é¿ÉÄܾÀúÏàËÆµÄÔ˶¯,ÈçÉãÏñ»ú¾µÍ·µÄËõ·ÅºÍÐýתµÈÔì³ÉµÄÏßÐÔÒÆ¶¯,ÆäÖеÄһЩºê¿é¿ÉÄÜÏòͬһ·½ÏòÔ˶¯¡£´øGMCµÄ±àÂëÆ÷Ö»Ðè·¢ËÍÉÙÁ¿µÄÔ˶¯²ÎÊý¾ÍÄÜΪÕû¸öVOPÃèÊöÕâ¸ö¡°È«¾Ö¡±Ô˶¯¡£Òò´Ë,µ±VOPÖÐÏ൱ÊýÁ¿µÄºê¿éÓµÓÐÏàͬÔ˶¯ÌØÐÔʱ, GMC¾Í¿ÉÒÔÏÔÖøµÄÌá¸ßѹËõЧÂÊ¡£
3¡¡Èí¼þÒÆÖ²¼°ÓÅ»¯
ÓÉÓÚDSP²»Í¬ÓÚÆÕͨµÄPC»·¾³,Òò´Ë¼òµ¥µÄ½«´úÂë·Åµ½DSPÉÏÈ¥±àÒë,ÔËÐÐЧÂʵÍÉõÖÁ²»ÄÜÔËÐÐ,±ØÐë½øÐÐÊʺÏDSPÌØµãµÄ´úÂëÒÆÖ²¡¢¸ÄдºÍÓÅ»¯¹¤×÷,²ÅÄܴﵽʵʱÐÔÒªÇó¡£
3. 1¡¡Èí¼þÒÆÖ²
Ϊʹ´úÂëÊʺÏÔÚDSPƽ̨ÉÏÔËÐÐ,Ê×ÏÈɾ³ý³ÌÐò´úÂëÖдóÁ¿µÄprintfµÈµ÷ÊÔÐÅÏ¢,¶Ô±ØÒªµÄÐÅÏ¢Êä³ö¸ÄÓÃputs,ÒÔ¼õÉÙº¯Êý¿ªÏú;¶ÔdoubleÀàÐÍÊý¾Ý¸ÄÓÃlongÀàÐͶ¨Òå;ɾ³ý²»±ØÒªµÄ¸¡µãÔËËã(ÈçPSNRµÄ¼ÆËã) ,±ØÒªµÄ¸¡µãÔËËãͨ¹ý¶¨±êÀ´ÊµÏÖ¡£
3. 2¡¡´æ´¢Æ÷ÓÅ»¯
C6416DSPÓÐ1MB µÄƬÉÏ´æ´¢¿Õ¼ä,×î´óÄÜÒÔCPUʱÖÓÆµÂʽøÐзÃÎÊ¡£ÔÚDSKÉϼ¯³ÉÁË16Mb/sµÄSDRAM,¿Éͨ¹ýEM IFAÒÔ100MHzµÄƵÂʽøÐзÃÎÊ¡£·ÃÎÊËÙ¶ÈÉÏ´æÔڵIJîÒìÒÔ¼°CPUѰַÍⲿ´æ´¢¿Õ¼ä½«µ¼ÖÂÁ÷Ë®ÏßÍ£Ö¹Êý¸öÖÜÆÚ,Òò´Ë,ÈçºÎºÏÀíÀûÓÃC6416µÄƬÉÏ´æ´¢¿Õ¼äºÍ¶þ¼¶»º´æ½á¹¹³ÉÁ˷dz£¹Ø¼üµÄÒòËØ¡£½«1MBµÄ´æ´¢¿Õ¼ä·ÖΪ256kµÄL2CACHEºÍ768 kµÄL2SRAM,´úÂë¶Î¡¢È«¾ÖÊý¾ÝµÈ·ÅÔÚÆ¬ÄÚ´æ´¢Æ÷L2SRAM ÉÏ, ÍⲿSDRAM É趨Ϊ¿É¸ßËÙ»º´æ(Cacheable)ÒÔÌá¸ß·ÃÎÊЧÂÊ¡£ÕâЩÉèÖÿÉÒÔͨ¹ýµ÷ÓÃCSL (Chip Support Library)¿âº¯ÊýÀ´Íê³É:
#include < csl. h >
#include < csl_cache. h >
CSL_init ( ) ;
CSL_enableCaching(CACHE_EM IFA_CE00) ;
CACHE_setL2Mode (CACHE_256 k CACHE) ¡£
3. 3¡¡ÏîÄ¿¼¶ÓÅ»¯
TIΪÆä¼¯³É±àÒë»·¾³CCSÌṩÁËһϵÁеıàÒëÓÅ»¯²ÎÊý,¿É¸ù¾Ý´úÂëÐÔÄÜÒªÇó½øÐÐѡȡ¡£Òò´Ë¿ÉÒÔͨ¹ý²»¶Ï¶Ô¸÷¸ö²ÎÊý( - mw, - pm, - o3, - mtµÈ)½øÐÐ×éºÏ¡¢ÓÅÑ¡,Õâ¿ÉÒÔͨ¹ýCCS 2. 20µÄPBCÑ¡ÏîÀ´Íê³É¡£Í¬Ê±ÔÚ´úÂëÁ´½Ó¹ý³ÌÖÐ,¶Ô´úÂë¶ÎÁ´½Ó˳Ðò½øÐÐÒ»¶¨µÄ°²ÅÅ,¿ÉÒÔ¼õÉÙ³ÌÐòÖ´ÐÐʱ´úÂëµ÷ÓôøÀ´µÄ»º´æÈ±Ê§,Ìá¸ß³ÌÐòµÄÖ´ÐÐЧÂÊ¡£
3. 4¡¡´úÂëÓÅ»¯
´úÂëÓÅ»¯ÊÇMPEG-4 ASPÊÓÆµ±àÂëÆ÷Èí¼þ¿ª·¢ÖеÄÒ»¸öÖØÒª»·½Ú,δ¾¹ýÓÅ»¯µÄ´úÂëÔÚDSKƽ̨ÉϵÄÖ´ÐÐЧÂʺܵÍ,ƽ¾ùÔ¼25s²Å½øÐÐÒ»Ö¡±àÂë,¶øÊµÊ±ÐÔµÄÖ¸±êΪÿÃë25Ö¡ÒÔÉÏ¡£
(1)ʹÓÃTI¿âº¯Êý
TIÌṩÁËͼÏñ´¦Àíº¯Êý¿âIMGL IB,¿ÉÒÔµ÷ÓÃÆäÖеĺ¯Êý½øÐÐFDCTºÍIDCT±ä»»¡£
(2)¶ÔC´úÂë½øÐиÄд
Ê×ÏȶԳÌÐòÖеÄÑ»·²Ù×÷½øÐзֽâÕ¹¿ª,¶Ô²»ÄÜÕ¹¿ªµÄÑ»·ÔòºÏÀí°²ÅÅÑ»·ÄÚÍâ²ã,ÒÔ¸ü´ó³Ì¶ÈµØÌá¸ßÁ÷ˮЧÂÊ¡£C6000µÄ±àÒëÆ÷»¹ÌṩÁËÐí¶àÄÚÁªº¯Êý( intrinsics) ,ÕâЩÄÚÁªº¯ÊýÄÜÖ±½ÓÓ³Éäµ½¶ÔÓ¦µÄ»ã±àÖ¸Áî,Ìá¸ß³ÌÐòµÄЧÂÊ¡£Í¬Ê±¿ÉÀûÓñàÒëָʾαÓï¾ä( Pragma Directive)Ïò±àÒëÆ÷ÌṩһЩÏÈÑé֪ʶ,ÒÔÌá¸ß±àÒëЧÂÊ¡£ÈçÓÃ#p ragma (minimum value, maximumvalue, factor)Ïò±àÒëÆ÷Ö¸³öÑ»·Ö´ÐеÄÐÅÏ¢,ÕâÑù±ãÓÚ±àÒëÆ÷ÀûÓÃÊý¾Ý´ò°üµÈ¼¼Êõ½øÐÐÓÅ»¯¡£ÒÔ¼ÆËãºê¿éÖÐÏñËØÍ¬¾ùֵƫ²îµÄdev16º¯ÊýΪÀý,²ÉÓÃÁËÒÔÉÏ·½·¨¸Äдºó,º¯ÊýÖ´ÐÐÖÜÆÚÊýÓÉ277 ¸öcycles±äΪ130¸öcycles (ͬÔÚo3Ìõ¼þÏÂ) ,ÐÔÄÜÌáÉý³¬¹ý50%¡£
(3)½øÐÐÏßÐÔ»ã±à¸Äд
ÏßÐÔ»ã±àÊÇÕë¶ÔC6000 µÄ½á¹¹ÌصãÓÅ»¯Éè¼ÆµÄ½éÓÚCºÍ»ã±àÓïÑÔÖ®¼äµÄÒ»ÖÖ±à³ÌÓïÑÔ,Æä±àÒëЧÂÊÄÜ´ïµ½»ã±à´úÂëµÄ90%ÒÔÉÏ¡£Í¬Ê±C64xϵÁÐDSPÕë¶ÔͼÏñºÍÊÓÆµÓ¦ÓÃÔö¼ÓÁËÐí¶àÌØÓеÄÖ¸Áî,ʹµÃÕâЩӦÓõĴúÂë±àдЧÂʵõ½ÁËÌá¸ß¡£ÈçÔÚASPÊÓÆµ±àÂëÆ÷ÖÐ,°ëÏñËØ²åֵʹÓõÄavgu4¡¢shrmb¡¢unpklu4 ºÍunpkhu4Ö¸Áî,¼ÆËãSAD ʱÓõ½µÄdotpu4¡¢subabs4 Ö¸Áî,ͼÏñÖØ½¨Ê±Óõ½µÄSPACK2Ö¸ÁîµÈµÈ¡£Ò²·½±ãÁË´úÂëµÄ±àд,ÈçME (Motion EstimationÔ˶¯¹À¼Æ)ʱÔڲο¼Í¼ÏñÖ¡ÖнøÐÐÏñËØÖµ¶ÁÈ¡µÄLDNDW Ö¸Áî,½â¾öÁ˲ο¼Í¼ÏñÖÐÊý¾Ý²»Âú×ãË«×Ö¶ÔÆëµÄÎÊÌâ¡£ÏÂÃæ¸ø³öÁ˽«º¯Êýtransfer_16 to8copy( )ͨ¹ýÏßÐÔ»ã±à¸ÄдºóµÄ´úÂë,ͬÔÚo3Ñ¡ÏîÏÂ,ÏßÐÔ»ã±à´úÂëÖ»ÐèC´úÂë15. 8%µÄÖ¸ÁîÖÜÆÚ¡£±í1¸ø³öÁ˲¿·Ö´úÂë¸ÄдǰºóµÄÐÔÄܶԱÈ(ͬÔÚo3ÓÅ»¯Ñ¡ÏîÏÂ) ¡£
. global _transfer_16 to8copy
_transfer_16 to8copy: . cp roc dst, src, stride
. reg pdst, p src, count
. reg ahi: alo, bhi: blo, chi: clo
mvk 8, count
mv dst, pdst
mv src, p src
loop: . trip 8, 8
lddw 3 *psrc, ahi: alo
spacku4 ahi, alo, blo; keep the value
in the range 0 - 255
lddw 3 *+psrc (8) , chi: clo
spacku4 chi, clo, bhi
stdw bhi: blo, 3 pdst
add pdst, stride, pdst
add p src, 16, p src
[ count ] sub count, 1, count
[ count ] b loop
. endp roc
3. 5¡¡Êý¾Ý°áÒÆÓÅ»¯
ÓÉÓÚÆ¬ÉÏ´æ´¢¿Õ¼äÓÐÏÞ,Òò´ËÖ»Äܽ«²Î¿¼Í¼Ïñ¼°Öؽ¨Í¼ÏñµÈÊý¾Ý·ÅÔÚÍⲿSDRAMÖÐ,µ«Ò²µ¼ÖÂÁË·ÃÎÊÍⲿ´æ´¢Æ÷ʱ´øÀ´µÄ¾Þ´ó¿ªÏú¡£¶øC64x¾ßÓеÄEDMAºÍQDMAÖ»Ð軨·ÑÊý¸öʱÖÓÖÜÆÚ½øÐвÎÊý³õʼ»¯ºó,¾Í¿ÉÒÔÔÚCPU ºǫ́½øÐиßËÙµÄÊý¾Ý°áÒÆ²Ù×÷,Ìá¸ßÁ˳ÌÐòÖ´ÐÐЧÂÊ¡£Õë¶Ô¼òµ¥µÄÊý¾Ý°áÒÆ,¿ÉÒÔÀûÓÃCSL¿âÌṩµÄDATº¯Êý½øÐС£ÒÔÒ»¶Î¼òµ¥µÄ2DÊý¾Ý°áÒÆÎªÀý,¸ø³öÀûÓÃQDMAºóµÄʵÏÖ´úÂë:
unsigned int transferID = DAT_open (DAT_CHAA-NY,DAT_PR I_LOW,DAT_OPEN_2D) ;
DAT_copy2d (DAT_2D2D, con, ref, 16, 16,width) ;
DAT_wait ( transferID) ¡£
¶Ô¸´ÔÓµÄÊý¾Ý°áÒÆ,¿ÉÒÔ²ÉÓöàͨµÀµÄEDMAÀ´ÊµÏÖ¡£EDMAÌṩÁËlinkingºÍchainingµÄ»úÖÆ,ÔÚ²¿·ÖÊý¾Ý°áÒÆÍê³Éºó,×Ô¶¯¶ÔEDMAÁ´Â·»òͨµÀ²ÎÊý½øÐиüÐÂÔØÈë,ÎÞÐèCPU¸ÉÔ¤,ÌØ±ðÊʺϽøÐдóÁ¿µÄÊý¾Ý°áÒÆ¡£È»¶øÐèҪעÒâ,ÓÉÓÚSDRAMÖеĴý°áÒÆÊý¾ÝÔÚL2CACHEÖдæÔÚ¸±±¾,Òò´ËÔÚ½øÐÐÊý¾Ý°á񮂡,Ðè¶ÔL2CACHEºÍSDRAMÖеĴý°áÒÆÊý¾Ý½øÐÐÒ»ÖÂÐÔ²Ù×÷(Coherence Operations) ,·ñÔò½«µÃ²»µ½ÕýÈ·µÄ½á¹û¡£
4¡¡ÊµÑé½á¹ûÓë·ÖÎö
ͨ¹ýÉÏÃæÌáµ½µÄÈí¼þÓÅ»¯·½·¨,ÔÚC6416 DSKÉ϶ÔMPEG - 4ÊÓÆµ±àÂëÆ÷½øÐÐÁË·ÂÕæ¡£ÎªÁ˵õ½±àÂëÐÅÏ¢,Èç·åÖµÐÅÔë±È( PSNR) ,ÔÚ´úÂëÖÐÁÙʱ¼ÓÈëÁËcalc_p snr ( )º¯Êý,ÒÔ±ãÓÚ¶ÔASP±àÂëÆ÷ºÍSP±àÂëÆ÷½øÐÐÐÔÄܱȽϡ£ÒÔ352 ¡Á288´óСµÄCIF¸ñʽforemanÊÓÆµÐòÁÐΪÀý,ÔÚ±àÂëÂëÂÊΪ256 Kʱ,¶Ô·Ö±ðÖ§³ÖGMC¡¢QPELºÍB - VOPÒÔ¼°Í¬Ê±Ö§³ÖÉÏÊö3 ¸ö¹¤¾ßµÄASP±àÂëÆ÷ºÍSP±àÂëÆ÷½øÐÐÁËÐÔÄܶԱÈ( SP±àÂëÐÎʽΪ¡°IPPPP.¡±, ASPʹÓÃB - VOPʱΪ¡° IBBPBB-
PBBP.¡±) ¡£
±í2¸ø³öÁ˵õ½µÄ±àÂëÎļþ³¤¶È,¿ÉÒÔ¿´³öASP±àÂëÆ÷Ïà±ÈSP±àÂëÆ÷Æä´æ´¢¿Õ¼äÒªÇó¸üС,¶øÍ¼ÏñÖÊÁ¿±ä»¯²»´ó,Òò´Ë¸üÊʺÏÓÚÊýÂëÉãÏñµÈǶÈëʽ³¡ºÏµÄÓ¦Óá£
ͼ1 ¶ÔASP±àÂëÆ÷(Ö§³ÖB -VOP¡¢GMC ¼°QPEL) ÓëSP ±àÂëÆ÷½øÐÐÁ˱ȽÏ, ¿ÉÒÔ¿´³öǰÕßÔÚPSNRÐÔÄÜÉϽϺóÕ߯½Ì¹,¾ù·½²î½ÏС,ͼÏñÖÊÁ¿¸üΪÎȶ¨¡£
ͼ1¡¡foremanÐòÁÐASPºÍSPÊÓÆµ±àÂëÆ÷PSNRÐÔÄܱȽÏ
ËäȻѹËõЧÂÊÌáÉý,µ«µ¼Ö¼ÆËãÁ¿ÉÏÉý,²¢ÇÒÓÉÓÚ±àÂëʱ²ÉÓÃÁËB-VOPÔö¼ÓÁ˺óÏòÔ¤²â,±àÂëʱÑÓÔö´ó,ͼÏñÖ¡ËÙÂÊÓÐËù½µµÍ¡£
5¡¡½áÊøÓï
ÓÉÓÚASPÊÓÆµ±àÂëÆ÷¾ßÓиü¸ßµÄѹËõЧÂÊ,ËäÈ»ÔÚ±àÂëËÙ¶ÈÉÏÓÐËù½µµÍ,ʱÑÓÔö´ó,µ«ÈÔÄÜÔÚDSPÉϽøÐÐʵʱ±àÂë,Òò´ËÊʺÏÔÚ´æ´¢ÈÝÁ¿ÊÜÏ޵ij¡ºÏ(ÈçÊýÂëÉãÏñ¡¢ÊÓÆµ¼à¿ØÍøÂçµÈÁìÓò)Ó¦Óá£
#If you have any other info about this subject , Please add it free.# |


