Skip to content

Developer hints

fischer edited this page Nov 1, 2012 · 5 revisions

Table of Contents


git hints

Cloning GStreamer Daemon source

git clone

cd gstd/src

Pushing local change to github repository

git pull              # make sure you are current
make                  # verify it builds
git diff HEAD         # verify you are only committing the changes you intend
git add *.c *.vala    # if you change a vala file need to check in the C file too
git commit
git push --dry-run 
git push 

Merging from a branch

git clone
git branch -a
git checkout  -b cleanu-pmerge remotes/origin/cleanup
git branch -a
git checkout master
git status
git merge cleanup-merge

Tagging repository

git tag -m "Cleaned up d-bus messages to include a success code and include a pipeline identifier with each signal." gstd-1.1
git push --dry-run --tags 
git push --tags 

Feature wish list

c) When in gst-client command line mode, don't print out "Ok." after execution (Linux apps are silent on success).

d) When in gst-client command line mode, return non-zero if the command failed. This allows

if gst-client-bsd ping ; then
    echo ERROR: GStreamer Daemon not running
    echo Please start using:
    echo "gstd --system &"
    exit -1

e) At the end of gst-client printed help output, give example usage.

f) Add configure option --disable-readline to allow building without readline library being installed.

g) Switch from using readline to using editline.

h) Combine gst-client and gst-client-bsd into single gst-client and change the licensing text to say it has a bsd lience unless readline is used, then it has a gpl2 license. This goes with wish (f).

i) Allow multiple commands on a single gst-client command line by separating the commands with a semi-colon.

j) Don't require quotes around the pipeline in gst-client create. This will more closely match the syntax of gst-launch making it easier for beginners.

k) Have gstd remember the pipelines so when the pipelines are listed, the actual contents of the pipeline can been seen. Helpful when debugging an application that uses gstd where you can separately run gst-client to see what is going on with gstd.

l) The most common use model is just to have one pipeline active. Use the default value /com/ridgerun/gstreamer/gstd/pipe0 if -p isn't specified. Also support shorthand notation of -p 0 or -p 1 instead of requiring /com/ridgerun/gstreamer/gstd/pipe.

Submitting VAPI pataches

If you find a capability unavailable in Vala because of missing code in a VAPI file (such as a missing constant definition), please submit a patch to the Vala team.

For example:

cd /usr/local/share/vala-0.12/vapi
quilt new posix_sig_proc_mask.patch
quilt add posix.vapi
emacs posix.vapi
quilt refresh
less patches/posix_sig_proc_mask.patch # verify only changes you intended are included

Submit the defect at with the Component being set to Binding.

Design Review Notes

A) XOverlay interface requires a window ID to be set in a synchronous manner. It is used with a widget on X11. The X11 ID for ready / pause posts message on bus to prepare Xwindow ID, This keeps X11 from opening new Xwindow when one already exists. This introduces a coupling between xvideosink and GStreamer Daemon. This will be removed when a cleaner solution is devised. Used to force xvimagesink to render into a window controlled by the application sending messages to gstd instead of opening a new window.

B) Synchronous set state now waits for ever. If a client wants to detect a problem with a state change, use asynchronous set state change and monitor for the change using the state change signal.

C) GstClient can't receive signals because there is no gmail loop. See comments in parse_cmd for details.

D) GStreamer base transfer class drops custom events. When this gets fixed, the pipeline ping can be enhanced to send a custom event though pipeline to verify all elements in the pipeline are alive.

E) To keep message / signal documentation up-to-date, need to create a XSLT-stylesheet to transform the XML description of the DBUS interface into a Wikipage format.

F) Need to rename PipelineSpeed to PipelineSetSpeed and add a new PipelineGetSpeed method to be consistent with other methods.

20121101 design review


  1. Add doxygen documentation
  2. Update D-Bus_message_format document


  1. don't need both ability to specify system and session buses. Instead just default to system bus (like gst-client does).
  2. does signals support work and what is the poll rate mean
  3. does watchdog support work
  4. missing doxygen documentation
  5. should we catch the SIGTERM and handle it gracefully?
  6. should we use GLib.Bus.own_name() instead of conn.get_object()/bus.request_name() -- ask Michael


  1. remove commented out code
  2. Create() returns empty string on error, not null string
  3. include the pipeline that couldn't be destroyed in log message in Destroy()
  4. do we need a try/catch when we destroy a pipeline?
  5. add display-pipe command that prints out the current pipeline being used (maybe in dot format)
  6. does factory need a destructor method that nicely cleans up all the pipelines? -- ask Michael


  1. get rid of the autostop logic
  2. update D-Bus_message_format to document QoS signal
  3. fix spelling errors
  4. ask Seb about WindowID and bus_sync_callback()
  5. did pipeline signals ever work? What is a simple test?
  6. ask Seb about keepalive
  7. in Pipeline() creation routine, get rid of this.PipelineIsInitialized() since it will always be initialized at this point in the code.
  8. in PipelineSetStateImpl and PipelineGetState() ElementGetState() pass in the time to wait for the state change to complete instead of waiting forever.
  9. update D-Bus_message_format to document PipelineSetState, get rid of the other documented set state methods


  1. delete this file


  1. change the license to indicate if readline is used, the license is gpl2
  2. better approach is have the client written in C and use the libgstc library
  3. switch from readline to editline so we can maintain bsd lience on the client example


  1. check with Seb on what it takes to get this working
  2. does the watchdog concept add clicking sound to audio pipelines?


  1. Add test cases to show signal catching works
Something went wrong with that request. Please try again.