ºìÁªLinuxÃÅ»§
Linux°ïÖú

linuxÏÂQt+XvÏÔʾÊÓÆµ×ܽá

·¢²¼Ê±¼ä:2007-02-28 11:23:48À´Ô´:ºìÁª×÷Õß:Çñ½¨Ôª
¡¡¡¡²ÉÓÃQt+XvʵÏÖÊÓÆµÏÔʾµÄÔ­ÒòÊÇÒòΪXv¿ÉÒÔʹÓÃÏÔ¿¨½øÐÐÏÔʾ¼ÓËÙ£»±ÈÈ磬¶ÔÓÚÊÓÆµ´óСµÄËõ·Å£¬Èç¹û½»¸øcpuÀ´Íê³ÉÕâÏî²Ù×÷£¬ÄÇcpuµÄ¼ÆËãÁ¿ÊǷdz£´óµÄ£¬Ò»°ãµÄcpu»ù±¾ÉÏÊÇÂú¸ººÉÔËתÁË£¬ËùÒÔ£¬Ñ¡ÓÃXvÀ´ÊµÏÖÊÓÆµËõ·ÅºÍÏÔʾ£¬ÊÇÒ»¸ö·Ç³£Ã÷ÖǵÄÑ¡Ôñ£»

¡¡¡¡ÕâÀïÎÒÏȼòµ¥ËµÒ»Ï£¬ÎªÊ²Ã´Qt¿ÉÒÔºÍXvºÍÔÚÒ»ÆðÀ´ÏÔʾÊÓÆµÖ¡ÄØ£¿ËüµÄÔ­ÀíÓÖÊÇÊ²Ã´ÄØ£¿

¡¡¡¡Ê×ÏÈ£¬ÎÒÃÇÒªÖªµÀ£¬ÎÞÂÛÊÇQt»¹ÊÇXv£¬ËûÃǶ¼ÊÇ»ùÓÚÒ»¸öÏÔʾ¼Ü¹¹µÄ£¬ÄǾÍÊÇX¼Ü¹¹£¬QtÊǶÔXlib½øÐеĸü¸ß²ã¼°µÄ·â×°£¬¶øXvÔòÊǶÔXlib¹¦ÄÜÉÏ µÄÒ»¸öÀ©Õ¹£¬Ö¼ÔÚ¾¡¿ÉÄܵÄÍÚ¾òÏÔ¿¨µÄÔËËãÄÜÁ¦£¬¶øÊµÏÖ¸üΪǿ´óµÄ¹¦ÄÜ£»ÕâÒ²ÊÇΪʲôÁ½Õß¿ÉÒÔ½áºÏÔÚÒ»ÆðÏÔʾÊÓÆµµÄÀíÂÛºÍʵ¼Ê»ù´¡ÁË£»È»¶ø£¬ÓÖÓÉÓÚ£¬Á½ÕßËù ÔڵIJã´Î²»Í¬£¬¶øÇÒÄ¿µÄÒ²²»Í¬£¬ÄÇôÈçºÎ½«ÕâÁ½Õß½áºÏÆðÀ´£¬¾Í³ÉΪÁ˵±Ç°µÄ×î´óµÄÎÊÌâÁË£»

¡¡¡¡Í¨¹ýÔÚÍøÉÏËÑË÷£¬¿ÉÒÔÖªµÀXv¿ÉÒÔÖ±½ÓÏÔʾYUVÊý¾Ý£¬²¢ÇÒºÜÈÝÒ×ʵÏÖÊÓÆµËõ·Å£¬¶øÇÒÕâЩ¶¼ÒѾ­¾­¹ýÓ²¼þ¼ÓËÙÓÅ»¯¹ýÁË£»ÕâÒ²ÕýÊÇÎÒ×îÐèÒªµÄ£¡

¡¡¡¡ÎÒÃÇÖ±½Ó¿ªÊ¼½éÉÜXvÖеÄÏÔʾͼƬµÄº¯Êý£­£­XvPutImage£¬ºÍXlibÌṩµÄÏÔʾͼƬº¯ÊýXPutImageÖ»Ïà²îÒ»¸ö×Öĸ£¬µ«ÊÇÕâ¸öº¯Êý¹¦ÄÜÈ·Ç¿´óÁËÐí¶à£»

¡¡¡¡´Ëº¯ÊýµÄº¯ÊýÔ­ÐÍΪ£­

¡¡¡¡XvPutImage(Display *, XvPortID, Window, GC *, XvImage *, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h);

¡¡¡¡Õë¶Ô´Ëº¯Êý£¬ÎÒÃÇÀ´¿´ÔõôʹÓô˺¯Êý£¬»áÓÃÁ˴˺¯Êý£¬¾Í¿ÉÒÔÏÔʾYUVÊý¾ÝÁË£»

¡¡¡¡´Ëº¯ÊýÐèÒª½áºÏÒ»¸öQWidget²ÅÄܹ»ÏÔʾͼƬ£»
¡¡¡¡µÚÒ»¸ö²ÎÊý£¬¿ÉÒÔͨ¹ýQWidgetµÄx11Display()º¯ÊýµÃµ½£»
¡¡¡¡µÚ¶þ¸ö£¬¿ÉÒÔͨ¹ýXvQueryAdaptorsµÃµ½£»
¡¡¡¡µÚÈý¸ö£¬Í¨¹ýQWidgetµÄwinId()µÃµ½£»
¡¡¡¡µÚËĸö£¬Í¨¹ýXvCreateImageµÃµ½£»

¡¡¡¡Ê£Ïµļ¸¸ö×ø±êº¯Êý£¬ÎҾͲ»½âÊÍÁË£¬¹â¿´²ÎÊýÃû³Æ£¬¾ÍÓ¦¸Ã²ÂµÄ³öÀ´£»

¡¡¡¡ÕâÀïÐèҪעÒâµÄÒ»µãÊÇ£¬ÔÚʹÓÃXvCreateImageÉú³ÉÁËеÄXvImageʱ£¬´Ëº¯ÊýµÄµÚËĸö²ÎÊý¿ÉÒÔÖ±½Ó¸³ÓèAVFrameµÄdata[0]Ö¸ Õ룬ÕâÑù£¬¾Í°ÑffmpegµÄÊý¾Ý֡ͬҪÏÔʾµÄXvImageÁªÏµµ½ÁËÒ»Æð£¬²¢ÇÒ£¬Õâ¸öAVFrameÖеÄdata[0]Êý¾ÝΪYUVÊý¾Ý£¬ÍêÈ«·ûºÏÒª Ç󣬿ÉÒÔÖ±½ÓË¢ÐÂÏÔʾÁË£»

¡¡¡¡×ܵÄÀ´Ëµ£¬´óÖ¾ÍÊÇÕâÑù×ÓÁË£¬ÒÔºóÓÐʲôÒÉÎÊ£¬»¹»á¶Ô´ËÎĵµ½øÐÐÏêϸÀ©³ä£»Õùȡд³É½Ì³Ì£»

¡¡¡¡²ÉÓÃXv½øÐÐÏÔʾҲÊÇ´æÔÚ·çÏյģ¬Ò»µ©µ±Ç°ÏµÍ³µÄÇý¶¯¶ÔXvÖ§³Ö²»ºÃ£¬»òÕ߸ɴ಻֧³Ö£¬ÄÇô¾Í²»ÄÜÏÔʾÊÓÆµÁË¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ