<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>中文 &#187; shallon_luo</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/shallon_luo/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Sat, 26 May 2012 06:34:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>初探Mobile Linux上GL/ES等 3D APP与XServer的关系</title>
		<link>http://software.intel.com/zh-cn/blogs/2009/12/15/mobile-linuxgles-3d-appxserver/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2009/12/15/mobile-linuxgles-3d-appxserver/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 10:00:39 +0000</pubDate>
		<dc:creator>shallon_luo</dc:creator>
				<category><![CDATA[博客征文专栏]]></category>
		<category><![CDATA[移动技术]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2009/12/15/mobile-linuxgles-3d-appxserver/</guid>
		<description><![CDATA[众所周知，Mobile Linux上的3D APP是基于OpenGL，或者OpenGL ES，后者是前者面向嵌入式设备的一个简化版本。目前基于是OpenGL/ES上的一个图形封装类库Clutter也渐渐为人们所熟知。这些都是众所周知的废话，下面想探讨的是基于OPENGL/ES等 3D APP与Linux原来的面向2D的X Server是什么关系？ 当然不是吃饱了撑着平白无故想这个问题，对这个问题的疑惑来自于Moblin平台上的Clutter Destop上一个GTK程序调用gtk_widget_show时的CoreDump问题，该GTK程序在Gnome Destop下运行正常。于是想，是不是3D的UI仍然依赖于XServer? 想深一层：Linux原有的XServer系统会接管屏幕的各种输入事件，例如，键盘、鼠标、触摸屏,其配置放在Xorg.conf中。这一点从Xerver的原理图及维基百科上对Xserver的描述可以了解到。an X server communicates with various client programs. The server accepts requests for graphical output (windows) and sends back user input (from keyboard, mouse, or touchscreen). 如果3D的应用不挂在XServer上，用户的输入事件如何到达应用？ 在网上查找资料的时候发现了台湾黄敬群大牛的讲解的PPT《支援硬体加速的OPENGL/ES实做》，该大牛不愧为敬业乐群的好名字，技术精湛，乐于分享，读后深有启发。 GLX (OpenGL Extension to the X Window System)为X Windows System提供Open GL的扩展。因此3D的APP不是抛离X Server，而是与之共存。下图是敬群大牛PPT中GLX的图。 GLX包含了下面的内容： 1、X Window System application中的OpenGL [...]]]></description>
			<content:encoded><![CDATA[<p>众所周知，Mobile Linux上的3D APP是基于OpenGL，或者OpenGL ES，后者是前者面向嵌入式设备的一个简化版本。目前基于是OpenGL/ES上的一个图形封装类库Clutter也渐渐为人们所熟知。这些都是众所周知的废话，下面想探讨的是基于OPENGL/ES等 3D APP与Linux原来的面向2D的X Server是什么关系？</p>
<p>当然不是吃饱了撑着平白无故想这个问题，对这个问题的疑惑来自于Moblin平台上的Clutter Destop上一个GTK程序调用gtk_widget_show时的CoreDump问题，该GTK程序在Gnome Destop下运行正常。于是想，是不是3D的UI仍然依赖于XServer?</p>
<p>想深一层：Linux原有的XServer系统会接管屏幕的各种输入事件，例如，键盘、鼠标、触摸屏,其配置放在Xorg.conf中。这一点从Xerver的原理图及维基百科上对Xserver的描述可以了解到。an X server communicates with various client programs. The server accepts requests for graphical output (windows) and sends back user input (from keyboard, mouse, or touchscreen). 如果3D的应用不挂在XServer上，用户的输入事件如何到达应用？</p>
<p><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/shallon_luo/EntryImages/20091013/xserver.JPG" alt="null" /></p>
<p>在网上查找资料的时候发现了台湾黄敬群大牛的讲解的PPT《支援硬体加速的OPENGL/ES实做》，该大牛不愧为敬业乐群的好名字，技术精湛，乐于分享，读后深有启发。</p>
<p>GLX (OpenGL Extension to the X Window System)为X Windows System提供Open GL的扩展。因此3D的APP不是抛离X Server，而是与之共存。下图是敬群大牛PPT中GLX的图。</p>
<p><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/shallon_luo/EntryImages/20091013/glx.JPG" alt="null" /></p>
<p>GLX包含了下面的内容：</p>
<p>1、X Window System application中的OpenGL API扩展</p>
<p>2、X 协议的扩展， 上图中的除了原有的Xpackets，新扩展一种GLX Packets。使客户端(the OpenGL application)发送 3D 渲染命令给 X server (the software responsible for the display)。 我的理解是，原有的X 协议不变基础上添加新的GLX扩展，因此，原有的用户事件输入处理流程是不变的。</p>
<p>3、X server的功能扩展，使之可以接收渲染命令。 (如果无硬件加速的OpenGL类库则使用 Mesa 类库)。</p>
<p>如果X Window System application和X server运行在同一台机器上，并且3D加速的图形卡及驱动能够支持，可以使用DRI(Direct Rendering Infrastructure)直接访问图形硬件设备。</p>
<p>直接的3D图形渲染和间接的3D图形渲染。如下图所示：</p>
<p><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/shallon_luo/EntryImages/20091013/glx1.JPG" alt="null" /></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2009/12/15/mobile-linuxgles-3d-appxserver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>记录：继续探索moblin 2上的GSTREAMER：播放MP3及AVI文件</title>
		<link>http://software.intel.com/zh-cn/blogs/2009/12/15/moblin-2gstreamermp3avi/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2009/12/15/moblin-2gstreamermp3avi/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 09:59:25 +0000</pubDate>
		<dc:creator>shallon_luo</dc:creator>
				<category><![CDATA[博客征文专栏]]></category>
		<category><![CDATA[移动技术]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2009/12/15/moblin-2gstreamermp3avi/</guid>
		<description><![CDATA[在Moblin 2 上使用Gstreamer播放MP3和AVI文件 1、机器环境，某个牌子NetBook uname -a Linux localhost 2.6.29.1-18.1.moblin2-netbook #1 SMP PREEMPT Fri Apr 17 17:25:17 UTC 2009 i686 i686 i386 GNU/Linux 2.播放MP3 2.1运行gst -launch filesrc location="bb.mp3" ! mad ! alsasink 报错 2.2.下载、编译、安装 gst-plugins-ugly-0.10.11及libmad-0.15.1b，需要解决一些编译问题。前者包含了系列的ugly的plugins，包括GStreamer的mad，mad依赖于libmad-0.15.1b。 2.3、运行成功。能够正确听到MP3中的音乐。 [root@localhost shallon]# gst-launch -v filesrc location="bb.mp3" ! mad ! alsasink Setting pipeline to PAUSED ... /GstPipeline:pipeline0/GstMad:mad0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, [...]]]></description>
			<content:encoded><![CDATA[<p>在Moblin 2 上使用Gstreamer播放MP3和AVI文件</p>
<p>1、机器环境，某个牌子NetBook<br />
uname -a<br />
Linux localhost 2.6.29.1-18.1.moblin2-netbook #1 SMP PREEMPT Fri Apr 17 17:25:17 UTC 2009 i686 i686 i386 GNU/Linux</p>
<p>2.播放MP3</p>
<p>2.1运行gst -launch filesrc location="bb.mp3" ! mad ! alsasink 报错</p>
<p>2.2.下载、编译、安装 gst-plugins-ugly-0.10.11及libmad-0.15.1b，需要解决一些编译问题。前者包含了系列的ugly的plugins，包括GStreamer的mad，mad依赖于libmad-0.15.1b。</p>
<p>2.3、运行成功。能够正确听到MP3中的音乐。<br />
[root@localhost shallon]# gst-launch -v filesrc location="bb.mp3" ! mad ! alsasink</p>
<p>Setting pipeline to PAUSED ...<br />
/GstPipeline:pipeline0/GstMad:mad0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2<br />
Pipeline is PREROLLING ...<br />
/GstPipeline:pipeline0/GstAlsaSink:alsasink0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2<br />
Pipeline is PREROLLED ...<br />
Setting pipeline to PLAYING ...<br />
New clock: GstAudioSinkClock<br />
^CCaught interrupt -- handling interrupt.<br />
Interrupt: Stopping pipeline ...<br />
Execution ended after 6135758110 ns.<br />
Setting pipeline to PAUSED ...<br />
Setting pipeline to READY ...<br />
/GstPipeline:pipeline0/GstAlsaSink:alsasink0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstMad:mad0.GstPad:src: caps = NULL<br />
Setting pipeline to NULL ...<br />
FREEING pipeline ...</p>
<p>3、播放视频文件</p>
<p>3.1播放视频文件出错。 gst-launch -v filesrc location="cc.avi" ! decodebin ! xvimagesink</p>
<p>[root@localhost VERBATIM]# gst-launch -v filesrc location="cc.avi" ! decodebin ! xvimagesink</p>
<p>Setting pipeline to PAUSED ...<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-msvideo<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstAviDemux:avidemux0.GstPad:sink: caps = video/x-msvideo<br />
Pipeline is PREROLLING ...<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int)48000, channels=(int)2, codec_data=(buffer)010002000000800401007105<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int)48000, channels=(int)2, codec_data=(buffer)010002000000800401007105<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMPEGAudioParse:mpegaudioparse0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int)48000, channels=(int)2, codec_data=(buffer)010002000000800401007105<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMPEGAudioParse:mpegaudioparse0.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, rate=(int)48000, channels=(int)2, parsed=(boolean)true<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, rate=(int)48000, channels=(int)2, parsed=(boolean)true<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)48000, channels=(int)2<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)48000, channels=(int)2<br />
ERROR: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstAviDemux:avidemux0: Internal data stream error.<br />
Additional debug info:<br />
gstavidemux.c(4163): gst_avi_demux_loop (): /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstAviDemux:avidemux0:<br />
streaming stopped, reason not-linked<br />
ERROR: pipeline doesn't want to preroll.<br />
Setting pipeline to NULL ...<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMPEGAudioParse:mpegaudioparse0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMPEGAudioParse:mpegaudioparse0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstAviDemux:avidemux0.GstPad:audio_00: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstAviDemux:avidemux0.GstPad:video_00: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstAviDemux:avidemux0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL<br />
FREEING pipeline ...<br />
[root@localhost VERBATIM]#</p>
<p>3.2安装gst-ffmpeg-0.10.7</p>
<p>3.3运行gst-launch -v filesrc location="cc.avi" ! decodebin ! xvimagesink 成功看到连续的图像播放，但是无法听到声音</p>
<p>[root@localhost VERBATIM]# gst-launch -v filesrc location="cc.avi" ! decodebin ! xvimagesink Setting pipeline to PAUSED ...<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-msvideo<br />
Pipeline is PREROLLING ...<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstAviDemux:avidemux0.GstPad:sink: caps = video/x-msvideo<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue1.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int)48000, channels=(int)2, codec_data=(buffer)010002000000800401007105<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue1.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int)48000, channels=(int)2, codec_data=(buffer)010002000000800401007105<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMPEGAudioParse:mpegaudioparse0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int)48000, channels=(int)2, codec_data=(buffer)010002000000800401007105<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:sink: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:src: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMPEGAudioParse:mpegaudioparse0.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, rate=(int)48000, channels=(int)2, parsed=(boolean)true<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, rate=(int)48000, channels=(int)2, parsed=(boolean)true<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src1: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)48000, channels=(int)2<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)48000, channels=(int)2<br />
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0.GstProxyPad:proxypad1: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
Pipeline is PREROLLED ...<br />
Setting pipeline to PLAYING ...<br />
New clock: GstSystemClock<br />
ERROR: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: Output window was closed<br />
Additional debug info:<br />
xvimagesink.c(1235): gst_xvimagesink_handle_xevents (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0<br />
Execution ended after 24260868050 ns.<br />
Setting pipeline to PAUSED ...<br />
Setting pipeline to READY ...<br />
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src1: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src1: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMPEGAudioParse:mpegaudioparse0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMPEGAudioParse:mpegaudioparse0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue1.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue1.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstAviDemux:avidemux0.GstPad:audio_00: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstAviDemux:avidemux0.GstPad:video_00: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstAviDemux:avidemux0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL<br />
Setting pipeline to NULL ...<br />
FREEING pipeline ...<br />
[root@localhost VERBATIM]#</p>
<p>3.4 使用avidemux同时播放语音和图像</p>
<p>[root@localhost VERBATIM]# gst-launch -v filesrc location=cc.avi ! avidemux name=demux demux.audio_00 ! mad ! alsasink demux.video_00 ! queue ! decodebin ! ffmpegcolorspace ! videoscale ! xvimagesink</p>
<p>Setting pipeline to PAUSED ...<br />
Pipeline is PREROLLING ...<br />
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstMad:mad0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int)48000, channels=(int)2, codec_data=(buffer)010002000000800401007105<br />
/GstPipeline:pipeline0/GstMad:mad0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)48000, channels=(int)2<br />
/GstPipeline:pipeline0/GstAlsaSink:alsasink0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)48000, channels=(int)2<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:sink: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:src: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0.GstProxyPad:proxypad1: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstVideoScale:videoscale0.GstPad:src: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstVideoScale:videoscale0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
Pipeline is PREROLLED ...<br />
Setting pipeline to PLAYING ...<br />
New clock: GstAudioSinkClock<br />
ERROR: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: Output window was closed<br />
Additional debug info:<br />
xvimagesink.c(1235): gst_xvimagesink_handle_xevents (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0<br />
Execution ended after 40043404401 ns.<br />
Setting pipeline to PAUSED ...<br />
Setting pipeline to READY ...<br />
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstAlsaSink:alsasink0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstVideoScale:videoscale0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstVideoScale:videoscale0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstMad:mad0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstMad:mad0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstAviDemux:demux.GstPad:audio_00: caps = NULL<br />
/GstPipeline:pipeline0/GstAviDemux:demux.GstPad:video_00: caps = NULL<br />
Setting pipeline to NULL ...<br />
FREEING pipeline ...<br />
[root@localhost VERBATIM]#</p>
<p>3.5 使用avidemux同时播放语音和图像，所谓的gst-launch 的{} 能够使{}中间部分运行在单独的线程中。</p>
<p>[root@localhost VERBATIM]# gst-launch -v filesrc location=cc.avi ! avidemux name=demux demux.audio_00 ! mad ! alsasink {demux.video_00 ! queue ! decodebin ! ffmpegcolorspace ! videoscale ! xvimagesink}</p>
<p>Setting pipeline to PAUSED ...<br />
Pipeline is PREROLLING ...<br />
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstMad:mad0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int)48000, channels=(int)2, codec_data=(buffer)010002000000800401007105<br />
/GstPipeline:pipeline0/GstMad:mad0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)48000, channels=(int)2<br />
/GstPipeline:pipeline0/GstAlsaSink:alsasink0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)48000, channels=(int)2<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:sink: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)30000/1001, width=(int)720, height=(int)480<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:src: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0.GstProxyPad:proxypad1: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstVideoScale:videoscale0.GstPad:src: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstVideoScale:videoscale0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1<br />
Pipeline is PREROLLED ...<br />
Setting pipeline to PLAYING ...<br />
New clock: GstAudioSinkClock<br />
ERROR: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: Output window was closed<br />
Additional debug info:<br />
xvimagesink.c(1235): gst_xvimagesink_handle_xevents (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0<br />
Execution ended after 14081223436 ns.<br />
Setting pipeline to PAUSED ...<br />
Setting pipeline to READY ...<br />
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstAlsaSink:alsasink0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstVideoScale:videoscale0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstVideoScale:videoscale0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstMad:mad0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstMad:mad0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = NULL<br />
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = NULL<br />
/GstPipeline:pipeline0/GstAviDemux:demux.GstPad:audio_00: caps = NULL<br />
/GstPipeline:pipeline0/GstAviDemux:demux.GstPad:video_00: caps = NULL<br />
Setting pipeline to NULL ...<br />
FREEING pipeline ...<br />
[root@localhost VERBATIM]#</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2009/12/15/moblin-2gstreamermp3avi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

