How to write a pipeline to record to mp4 from a rtspsrc?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

How to write a pipeline to record to mp4 from a rtspsrc?

Demon Deng
I use gst-rtsp-server to stream a mp4 file.

pipeline:
filesrc location=x.mp4 ! qtdemux name=demux demux.audio_00 ! queue ! rtpmp4apay pt=96 name=pay0 demux.vid
eo_00 ! queue ! rtph264pay pt=96 name=pay1

Now, I want to record it to a mp4 in another machine, the following pipeline doesn't work.
rtspsrc location=rtsp://192.168.1.1:8554/test name=s ! rtph264depay ! queue ! mux. s. ! rtpmp4adepay ! queue ! mux. qtmux name=mux ! filesink location=x.mp4

I got 0bytes of x.mp4.

LOG:
0:00:00.147911273 22396  0x804e078 LOG                    qtmux gstqtmux.c:2116:gst_qt_mux_register: Registering muxers
0:00:00.148565619 22396  0x804e078 LOG                    qtmux gstqtmux.c:2145:gst_qt_mux_register: Finished registering muxers
0:00:00.151868676 22396  0x804e078 DEBUG                  qtmux gstqtmux.c:1924:gst_qt_mux_request_new_pad:<mux> Requested pad: (NULL)
0:00:00.152305290 22396  0x804e078 DEBUG                  qtmux gstqtmux.c:1924:gst_qt_mux_request_new_pad:<mux> Requested pad: (NULL)
Setting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0: latency = 3000
/GstPipeline:pipeline0/GstRTSPSrc:s/GstUDPSrc:udpsrc0: timeout = 5000000
/GstPipeline:pipeline0/GstRTSPSrc:s/GstUDPSrc:udpsrc2: timeout = 5000000
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpSession:rtpsession1: ntp-ns-base = 3466414130560463000
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0: ntp-ns-base = 3466414130560463000
/GstPipeline:pipeline0/GstRTSPSrc:s/GstUDPSrc:udpsrc0: timeout = 0
/GstPipeline:pipeline0/GstRTSPSrc:s/GstUDPSrc:udpsrc2: timeout = 0
New clock: GstSystemClock
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = video/x-h264
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, profile-level-id=(string)640028, sprop-parameter-sets=(string)\"Z2QAKKwZGIBQBbk\\=\\,aO48sA\\=\\=\", a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)3796410317, seqnum-base=(guint)2802, npt-start=(guint64)0, npt-stop=(guint64)176309005737, play-speed=(double)1, play-scale=(double)1
/GstPipeline:pipeline0/GstRTSPSrc:s.GstGhostPad:recv_rtp_src_1_2322064246_96: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, profile-level-id=(string)640028, sprop-parameter-sets=(string)\"Z2QAKKwZGIBQBbk\\=\\,aO48sA\\=\\=\", a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)3796410317, seqnum-base=(guint)2802, npt-start=(guint64)0, npt-stop=(guint64)176309005737, play-speed=(double)1, play-scale=(double)1
/GstPipeline:pipeline0/GstRTSPSrc:s.GstGhostPad:recv_rtp_src_1_2322064246_96.GstProxyPad:proxypad7: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, profile-level-id=(string)640028, sprop-parameter-sets=(string)\"Z2QAKKwZGIBQBbk\\=\\,aO48sA\\=\\=\", a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)3796410317, seqnum-base=(guint)2802, npt-start=(guint64)0, npt-stop=(guint64)176309005737, play-speed=(double)1, play-scale=(double)1
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0.GstGhostPad:recv_rtp_src_1_2322064246_96.GstProxyPad:proxypad6: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, profile-level-id=(string)640028, sprop-parameter-sets=(string)\"Z2QAKKwZGIBQBbk\\=\\,aO48sA\\=\\=\", a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)3796410317, seqnum-base=(guint)2802, npt-start=(guint64)0, npt-stop=(guint64)176309005737, play-speed=(double)1, play-scale=(double)1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-h264
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-h264
0:00:01.074393625 22396  0x809dfd8 DEBUG                  qtmux gstqtmux.c:1686:gst_qt_mux_video_sink_set_caps:<mux> mux:pad0, caps=video/x-h264
0:00:01.092811020 22396  0x809dfd8 WARN                   qtmux gstqtmux.c:1862:gst_qt_mux_video_sink_set_caps:<mux> pad pad0 refused caps video/x-h264
/GstPipeline:pipeline0/GstRtpMP4ADepay:rtpmp4adepay0.GstPad:src: caps = audio/mpeg, mpegversion=(int)4, framed=(boolean)true, channels=(int)2, codec_data=(buffer)1210
/GstPipeline:pipeline0/GstRtpMP4ADepay:rtpmp4adepay0.GstPad:sink: caps = application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)44100, encoding-name=(string)MP4A-LATM, profile-level-id=(string)2, cpresent=(string)0, config=(string)40002420, a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)1618789542, seqnum-base=(guint)16943, npt-start=(guint64)0, npt-stop=(guint64)176309005737, play-speed=(double)1, play-scale=(double)1
/GstPipeline:pipeline0/GstRTSPSrc:s.GstGhostPad:recv_rtp_src_0_4271355660_96: caps = application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)44100, encoding-name=(string)MP4A-LATM, profile-level-id=(string)2, cpresent=(string)0, config=(string)40002420, a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)1618789542, seqnum-base=(guint)16943, npt-start=(guint64)0, npt-stop=(guint64)176309005737, play-speed=(double)1, play-scale=(double)1
/GstPipeline:pipeline0/GstRTSPSrc:s.GstGhostPad:recv_rtp_src_0_4271355660_96.GstProxyPad:proxypad9: caps = application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)44100, encoding-name=(string)MP4A-LATM, profile-level-id=(string)2, cpresent=(string)0, config=(string)40002420, a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)1618789542, seqnum-base=(guint)16943, npt-start=(guint64)0, npt-stop=(guint64)176309005737, play-speed=(double)1, play-scale=(double)1
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0.GstGhostPad:recv_rtp_src_0_4271355660_96.GstProxyPad:proxypad8: caps = application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)44100, encoding-name=(string)MP4A-LATM, profile-level-id=(string)2, cpresent=(string)0, config=(string)40002420, a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)1618789542, seqnum-base=(guint)16943, npt-start=(guint64)0, npt-stop=(guint64)176309005737, play-speed=(double)1, play-scale=(double)1
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = audio/mpeg, mpegversion=(int)4, framed=(boolean)true, channels=(int)2, codec_data=(buffer)1210
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = audio/mpeg, mpegversion=(int)4, framed=(boolean)true, channels=(int)2, codec_data=(buffer)1210
0:00:01.273315038 22396  0x80baf78 DEBUG                  qtmux gstqtmux.c:1455:gst_qt_mux_audio_sink_set_caps:<mux> mux:pad1, caps=audio/mpeg, mpegversion=(int)4, framed=(boolean)true, channels=(int)2, codec_data=(buffer)1210
0:00:01.273362133 22396  0x80baf78 WARN                   qtmux gstqtmux.c:1631:gst_qt_mux_audio_sink_set_caps:<mux> pad pad1 refused caps audio/mpeg, mpegversion=(int)4, framed=(boolean)true, channels=(int)2, codec_data=(buffer)1210
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpSession:rtpsession1.GstPad:sync_src: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpSsrcDemux:rtpssrcdemux1.GstPad:rtcp_sink: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpSsrcDemux:rtpssrcdemux1.GstPad:rtcp_src_-1972903050: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpJitterBuffer:rtpjitterbuffer0.GstPad:sink_rtcp: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0.GstGhostPad:send_rtcp_src_0: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0.GstPad:send_rtcp_src: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstUDPSink:udpsink1.GstPad:sink: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0.GstGhostPad:send_rtcp_src_0.GstProxyPad:proxypad2: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0.GstPad:sync_src: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpSsrcDemux:rtpssrcdemux0.GstPad:rtcp_sink: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpSsrcDemux:rtpssrcdemux0.GstPad:rtcp_src_-23611636: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpJitterBuffer:rtpjitterbuffer1.GstPad:sink_rtcp: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0.GstGhostPad:send_rtcp_src_1: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpSession:rtpsession1.GstPad:send_rtcp_src: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstUDPSink:udpsink3.GstPad:sink: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0.GstGhostPad:send_rtcp_src_1.GstProxyPad:proxypad5: caps = application/x-rtcp


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to write a pipeline to record to mp4 from a rtspsrc?

florian iragne-2
dxssx a écrit :
> gstqtmux.c:1862:gst_qt_mux_video_sink_set_caps:<mux> pad pad0 refused
> caps video/x-h264

according to your log h264 and audio pads are refusing default caps

i would add something like :

rtph264depay byte-stream=false ! capsfilter
caps="video/x-h264,width=XXX,height=YYY,framerate=(fraction)YouFrameRate/1"

at least, i've had to add this to record h264 from rtspsrc with ffmux_mp4

Florian

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to write a pipeline to record to mp4 from a rtspsrc?

Demon Deng
Thanks Florian, I tried to mux only h264 as what you say:
rtspsrc location=rtsp://192.168.1.1:8554/test name=s ! rtph264depay byte-stream=false ! capsfilter caps="video/x-h264,width=1280, height=720, framerate=(fraction)30/1" ! queue ! mux. qtmux name=mux ! filesink location=x.mp4

But it didn't work. Is this a bug of qtmux since you said it works for ffmux_mp4.

0:00:00.016190484  7051  0x804e078 LOG                    qtmux gstqtmux.c:2116:gst_qt_mux_register: Registering muxers
0:00:00.016696178  7051  0x804e078 LOG                    qtmux gstqtmux.c:2145:gst_qt_mux_register: Finished registering muxers
0:00:00.019714795  7051  0x804e078 DEBUG                  qtmux gstqtmux.c:1924:gst_qt_mux_request_new_pad:<mux> Requested pad: (NULL)
Setting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0: latency = 3000
/GstPipeline:pipeline0/GstRTSPSrc:s/GstUDPSrc:udpsrc1: timeout = 5000000
/GstPipeline:pipeline0/GstRTSPSrc:s/GstUDPSrc:udpsrc4: timeout = 5000000
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpSession:rtpsession1: ntp-ns-base = 3466459682817417000
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0: ntp-ns-base = 3466459682817417000
/GstPipeline:pipeline0/GstRTSPSrc:s/GstUDPSrc:udpsrc1: timeout = 0
/GstPipeline:pipeline0/GstRTSPSrc:s/GstUDPSrc:udpsrc4: timeout = 0
New clock: GstSystemClock
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = video/x-h264, codec_data=(buffer)01640028ffe1000b67640028ac1918805005b901000468ee3cb0
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, profile-level-id=(string)640028, sprop-parameter-sets=(string)\"Z2QAKKwZGIBQBbk\\=\\,aO48sA\\=\\=\", a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)4039834199, seqnum-base=(guint)57747, npt-start=(guint64)0, npt-stop=(guint64)176309005737, play-speed=(double)1, play-scale=(double)1
/GstPipeline:pipeline0/GstRTSPSrc:s.GstGhostPad:recv_rtp_src_1_2807690748_96: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, profile-level-id=(string)640028, sprop-parameter-sets=(string)\"Z2QAKKwZGIBQBbk\\=\\,aO48sA\\=\\=\", a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)4039834199, seqnum-base=(guint)57747, npt-start=(guint64)0, npt-stop=(guint64)176309005737, play-speed=(double)1, play-scale=(double)1
/GstPipeline:pipeline0/GstRTSPSrc:s.GstGhostPad:recv_rtp_src_1_2807690748_96.GstProxyPad:proxypad7: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, profile-level-id=(string)640028, sprop-parameter-sets=(string)\"Z2QAKKwZGIBQBbk\\=\\,aO48sA\\=\\=\", a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)4039834199, seqnum-base=(guint)57747, npt-start=(guint64)0, npt-stop=(guint64)176309005737, play-speed=(double)1, play-scale=(double)1
/GstPipeline:pipeline0/GstRTSPSrc:s/GstRtpBin:rtpbin0.GstGhostPad:recv_rtp_src_1_2807690748_96.GstProxyPad:proxypad6: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, profile-level-id=(string)640028, sprop-parameter-sets=(string)\"Z2QAKKwZGIBQBbk\\=\\,aO48sA\\=\\=\", a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)4039834199, seqnum-base=(guint)57747, npt-start=(guint64)0, npt-stop=(guint64)176309005737, play-speed=(double)1, play-scale=(double)1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-h264, codec_data=(buffer)01640028ffe1000b67640028ac1918805005b901000468ee3cb0, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-h264, codec_data=(buffer)01640028ffe1000b67640028ac1918805005b901000468ee3cb0
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-h264, codec_data=(buffer)01640028ffe1000b67640028ac1918805005b901000468ee3cb0, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-h264, codec_data=(buffer)01640028ffe1000b67640028ac1918805005b901000468ee3cb0, width=(int)1280, height=(int)720, framerate=(fraction)30/1
0:00:00.068833031  7051  0x80b5018 DEBUG                  qtmux gstqtmux.c:1686:gst_qt_mux_video_sink_set_caps:<mux> mux:pad0, caps=video/x-h264, codec_data=(buffer)01640028ffe1000b67640028ac1918805005b901000468ee3cb0, width=(int)1280, height=(int)720, framerate=(fraction)30/1
0:00:00.068907314  7051  0x80b5018 DEBUG                  qtmux gstqtmux.c:1720:gst_qt_mux_video_sink_set_caps:<mux> Rate of video track selected: 3000
/GstPipeline:pipeline0/GstQTMux:mux.GstPad:pad0: caps = video/x-h264, codec_data=(buffer)01640028ffe1000b67640028ac1918805005b901000468ee3cb0, width=(int)1280, height=(int)720, framerate=(fraction)30/1
0:00:00.069019065  7051  0x80b5018 DEBUG                  qtmux gstqtmux.c:1140:gst_qt_mux_start_file:<mux> starting file
0:00:00.069060505  7051  0x80b5018 DEBUG                  qtmux gstqtmux.c:1110:gst_qt_mux_send_ftyp:<mux> Sending ftyp atom
0:00:00.069090323  7051  0x80b5018 LOG                    qtmux gstqtmux.c:1119:gst_qt_mux_send_ftyp:<mux> Pushing ftyp
0:00:00.069109441  7051  0x80b5018 LOG                    qtmux gstqtmux.c:802:gst_qt_mux_send_buffer:<mux> sending buffer size 20
0:00:00.069125781  7051  0x80b5018 LOG                    qtmux gstqtmux.c:815:gst_qt_mux_send_buffer:<mux> downstream
/GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps = video/quicktime, variant=(string)apple
0:00:00.070485105  7051  0x80b5018 DEBUG                  qtmux gstqtmux.c:920:gst_qt_mux_send_mdat_header:<mux> Sending mdat's atom header, size 0
0:00:00.070578336  7051  0x80b5018 LOG                    qtmux gstqtmux.c:944:gst_qt_mux_send_mdat_header:<mux> Pushing mdat start
0:00:00.070641742  7051  0x80b5018 LOG                    qtmux gstqtmux.c:802:gst_qt_mux_send_buffer:<mux> sending buffer size 16
0:00:00.070703335  7051  0x80b5018 LOG                    qtmux gstqtmux.c:815:gst_qt_mux_send_buffer:<mux> downstream
0:00:00.070776685  7051  0x80b5018 LOG                    qtmux gstqtmux.c:1415:gst_qt_mux_collected:<mux> selected pad pad0 with time 0:00:00.003299172
0:00:00.070846558  7051  0x80b5018 LOG                    qtmux gstqtmux.c:1217:gst_qt_mux_add_buffer:<mux> Pad pad0 has no previous buffer stored, storing now
0:00:00.070925679  7051  0x80b5018 LOG                    qtmux gstqtmux.c:1415:gst_qt_mux_collected:<mux> selected pad pad0 with time 0:00:00.003299172
0:00:00.071011560  7051  0x80b5018 WARN                   qtmux gstqtmux.c:1347:gst_qt_mux_add_buffer:<mux> error: Failed to determine time to mux.
ERROR: from element /GstPipeline:pipeline0/GstQTMux:mux: Could not multiplex stream.
Additional debug info:
gstqtmux.c(1347): gst_qt_mux_add_buffer (): /GstPipeline:pipeline0/GstQTMux:mux:
Failed to determine time to mux.
Execution ended after 6209475 ns.
Setting pipeline to PAUSED ...

2009/11/5 florian iragne <[hidden email]>
dxssx a écrit :
> gstqtmux.c:1862:gst_qt_mux_video_sink_set_caps:<mux> pad pad0 refused
> caps video/x-h264

according to your log h264 and audio pads are refusing default caps

i would add something like :

rtph264depay byte-stream=false ! capsfilter
caps="video/x-h264,width=XXX,height=YYY,framerate=(fraction)YouFrameRate/1"

at least, i've had to add this to record h264 from rtspsrc with ffmux_mp4

Florian

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel