Linking two elements in a gstreamer application

William Metcalf wmetcalf at
Mon Jun 6 12:51:30 PDT 2011

I have the following gstreamer terminal pipeline which converts ogg 
video to mp4 video file, and it adjusts the resolution to 640X480:

gst-launch filesrc location="c:\\video.ogg" ! oggdemux ! theoradec ! 
ffmpegcolorspace ! videorate ! videoscale ! video/x-raw-yuv, width=640, \
height=480 ! ffenc_mpeg4 ! qtmux ! filesink 

I am attempting to convert it to a c application.  I have successfully 
converted almost the entire thing, except that I cannot get the video to 
scale to 640X480.  The resulting video file is encoded correctly and 
plays, but the resolution stays at the 720X400 resolution of the 
original file.  In my c application I am trying to connect the src pad 
of videoscale with the sink pad of ffenc_mpeg4 over a cap of 
video/x-raw-yuv width=640 height=480.

Here is the snippet of my code:

caps = gst_caps_new_simple("video/x-raw-yuv", "width", G_TYPE_INT, 640, 
"height", G_TYPE_INT, 480, NULL);
gst_element_link_filtered(video_scale, video_encoder, caps);

As I understand it, this should force the video output of video_scale 
(videoscale) to be of resolution 640X480, and this video should flow 
into the video_encoder (ffenc_mpeg4) and on into the muxer and into my 
video file.

I guess my question is: Is this the correct way to link videoscale and 
ffenc_mpeg4 in an application to force the resolution, or am I doing 
this wrong?

Thank you for your help,

More information about the gstreamer-devel mailing list