[gst-devel] gst-launch segfault

Bebjak, Michal michal.bebjak at siemens.com
Wed Oct 4 14:25:22 CEST 2006


Hello,

I'm getting a segfault when I'm trying to change the video resolution. I have a client and a server like this:

server:
gst-launch-0.10 -v v4lsrc device=/dev/video0 ! 'video/x-raw-yuv,width=176,height=144' ! videorate ! ffenc_mpeg4 bitrate=300000 ! rtpmp4vpay send-config=true ! queue ! udpsink port=7777 sync=false qos=true

client:
gst-launch-0.10 -v udpsrc port=7777 ! 'application/x-rtp,media=video,payload=96,clock-rate=2147483647,encoding-name=MP4V-ES' ! rtpmp4vdepay ! 'video/mpeg,mpegversion=4,width=640,height=480,framerate=25/1' ! ffdec_mpeg4 ! ffmpegcolorspace ! ximagesink sync=false qos=true

So first of all i start the client and the server:



[n-brio at pcb1071 QoS_handling]$ gst-launch-0.10 -v v4lsrc device=/dev/video0 ! 'video/x-raw-yuv,width=176,height=144' ! videorate ! ffenc_mpeg4 bitrate=300000 ! rtpmp4vpay send-config=true ! queue ! udpsink port=7777 sync=false qos=true
Setting pipeline to PAUSED ...
/pipeline0/v4lsrc0.src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)176, height=(int)144, framerate=(fraction)25/1
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/pipeline0/capsfilter0.src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)176, height=(int)144, framerate=(fraction)25/1
/pipeline0/capsfilter0.sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)176, height=(int)144, framerate=(fraction)25/1
/pipeline0/videorate0.sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)176, height=(int)144, framerate=(fraction)25/1
/pipeline0/videorate0.src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)176, height=(int)144, framerate=(fraction)25/1
/pipeline0/videorate0.sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)176, height=(int)144, framerate=(fraction)25/1
/pipeline0/ffenc_mpeg40.src: caps = video/mpeg, width=(int)176, height=(int)144, framerate=(fraction)25/1, mpegversion=(int)4, systemstream=(boolean)false
/pipeline0/ffenc_mpeg40.sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)176, height=(int)144, framerate=(fraction)25/1
/pipeline0/rtpmp4vpay0.sink: caps = video/mpeg, width=(int)176, height=(int)144, framerate=(fraction)25/1, mpegversion=(int)4, systemstream=(boolean)false
/pipeline0/rtpmp4vpay0.src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, ssrc=(guint)1383135123, clock-base=(guint)1850521465, seqnum-base=(guint)4782, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800ce182c2090a21f000001b24c61766335312e372e30
/pipeline0/queue0.sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, ssrc=(guint)1383135123, clock-base=(guint)1850521465, seqnum-base=(guint)4782, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800ce182c2090a21f000001b24c61766335312e372e30
/pipeline0/queue0.src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, ssrc=(guint)1383135123, clock-base=(guint)1850521465, seqnum-base=(guint)4782, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800ce182c2090a21f000001b24c61766335312e372e30
/pipeline0/udpsink0.sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, ssrc=(guint)1383135123, clock-base=(guint)1850521465, seqnum-base=(guint)4782, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800ce182c2090a21f000001b24c61766335312e372e30







[n-brio at pcb1071 ~]$ gst-launch-0.10 -v udpsrc port=7777 ! 'application/x-rtp,media=video,payload=96,clock-rate=2147483647,encoding-name=MP4V-ES' ! rtpmp4vdepay ! 'video/mpeg,mpegversion=4,width=640,height=480,framerate=25/1' ! ffdec_mpeg4 ! ffmpegcolorspace ! ximagesink sync=false qos=true
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/pipeline0/capsfilter0.sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)2147483647, encoding-name=(string)MP4V-ES
/pipeline0/capsfilter0.src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)2147483647, encoding-name=(string)MP4V-ES
/pipeline0/rtpmp4vdepay0.sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)2147483647, encoding-name=(string)MP4V-ES
/pipeline0/capsfilter1.sink: caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, width=(int)640, height=(int)480, framerate=(fraction)25/1
/pipeline0/capsfilter1.src: caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, width=(int)640, height=(int)480, framerate=(fraction)25/1
/pipeline0/ffdec_mpeg40.sink: caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, width=(int)640, height=(int)480, framerate=(fraction)25/1
/pipeline0/ffdec_mpeg40.src: caps = video/x-raw-yuv, width=(int)176, height=(int)144, framerate=(fraction)25/1, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1
/pipeline0/ffmpegcsp0.src: caps = video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)176, height=(int)144, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1
/pipeline0/ffmpegcsp0.sink: caps = video/x-raw-yuv, width=(int)176, height=(int)144, framerate=(fraction)25/1, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1
/pipeline0/ximagesink0.sink: caps = video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)176, height=(int)144, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1




everything is fine...then I stop the server (the client is still running) and start it with a higher resolution:


[n-brio at pcb1071 QoS_handling]$ gst-launch-0.10 -v v4lsrc device=/dev/video0 ! 'video/x-raw-yuv,width=640,height=480' ! videorate ! ffenc_mpeg4 bitrate=300000 ! rtpmp4vpay send-config=true ! queue ! udpsink port=7777 sync=false qos=true
Setting pipeline to PAUSED ...
/pipeline0/v4lsrc0.src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, framerate=(fraction)25/1
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/pipeline0/capsfilter0.src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, framerate=(fraction)25/1
/pipeline0/capsfilter0.sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, framerate=(fraction)25/1
/pipeline0/videorate0.sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, framerate=(fraction)25/1
/pipeline0/videorate0.src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, framerate=(fraction)25/1
/pipeline0/videorate0.sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, framerate=(fraction)25/1
/pipeline0/ffenc_mpeg40.src: caps = video/mpeg, width=(int)640, height=(int)480, framerate=(fraction)25/1, mpegversion=(int)4, systemstream=(boolean)false
/pipeline0/ffenc_mpeg40.sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, framerate=(fraction)25/1
/pipeline0/rtpmp4vpay0.sink: caps = video/mpeg, width=(int)640, height=(int)480, framerate=(fraction)25/1, mpegversion=(int)4, systemstream=(boolean)false
/pipeline0/rtpmp4vpay0.src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, ssrc=(guint)3163254718, clock-base=(guint)3186915499, seqnum-base=(guint)31161, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800ce18a021e0a21f000001b24c61766335312e372e30
/pipeline0/queue0.sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, ssrc=(guint)3163254718, clock-base=(guint)3186915499, seqnum-base=(guint)31161, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800ce18a021e0a21f000001b24c61766335312e372e30
/pipeline0/queue0.src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, ssrc=(guint)3163254718, clock-base=(guint)3186915499, seqnum-base=(guint)31161, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800ce18a021e0a21f000001b24c61766335312e372e30
/pipeline0/udpsink0.sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, ssrc=(guint)3163254718, clock-base=(guint)3186915499, seqnum-base=(guint)31161, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800ce18a021e0a21f000001b24c61766335312e372e30




the server is working, but the client crashes with a segmentation fault. Interesting thing is that when I start with high resolution at the beginning and I lower the resolution, than the client doesn't crash. I guess it has to do with the allocation af the sources. Is it somehow possible to change the resolution to higher one, without stopping the client??

Michal




More information about the gstreamer-devel mailing list