2007-07-20 Stefan Kost <ensonic@users.sf.net>
+ * docs/random/ensonic/audiobaseclasses.txt:
+ * docs/random/ensonic/dynlink.txt:
+ * docs/random/ensonic/profiling.txt:
+ Save my thoughts.
+
+ * docs/random/moving-plugins:
+ Add note to use g_assert type macros.
+
+2007-07-20 Stefan Kost <ensonic@users.sf.net>
+
* configure.ac:
* libs/gst/check/Makefile.am:
Add libm check as we use in for plugins.
We have gst-plugins-base/gst-libs/gst/audio with some audio helper and base
classes.
+audiofilter: for src_caps=sink_caps
+basetransform: *
+
= new stuff =
gst_pads_insert_link (e1.src, e2.sink, e3.src, e4.sink);
disconnect e1.src, e1.src.peer
disconnect e4.sink, e4.sink.peer
- connect e1.src e2.sink
- connect e3.src e4.sink
+ connect e1.src, e2.sink
+ connect e3.src, e4.sink
== removing an element ==
gst_element_remove_linked(e2);
gst_pads_remove_link (e1.src, e3.sink);
disconnect e1.src, e1.src.peer
- disconnect e3.sink, e3.sink..peer
- connect e1.src e3.sink
+ disconnect e3.sink, e3.sink.peer
+ connect e1.src, e3.sink
== swapping out an elelment ==
-* we have: e1 ! e2 ! e5
-* we want: e1 ! e3 ! e4 ! e5
-* we want: e1 ! e3 ! e5
+ * we have: e1 ! e2 ! e6
+ * we have: e1 ! e2 ! e3 ! e6
+ * we want: e1 ! e4 ! e5 ! e6
+ * we want: e1 ! e3 ! e6
-gst_element_swap_linked(e1, e3, e4, e5);
-gst_pads_insert_link (e1.src, e3.sink, e4.src, e5.sink);
+gst_element_swap_linked(e1, e4, e5, e6);
+gst_pads_insert_link (e1.src, e4.sink, e5.src, e6.sink);
disconnect e1.src, e1.src.peer (=e2.sink)
- disconnect e5.sink, e5.sink.peer
- connect e1.src e3.sink
- connect e4.src e5.sink
+ disconnect e6.sink, e6.sink.peer
+ connect e1.src, e4.sink
+ connect e5.src, e6.sink
* (streamtime,propotion) pairs from sinks
draw a graph with gnuplot or similar
* number of frames in total
- * number of frames dropped from each element that support QOS
- elements that don't support QOS wont have this information anyway
- * needs to be media type specific:
- * video: full frames
- * audio: partial buffers can be dropped in the sink, count number of dropped
- audio frames
+ * number of audio/video frames dropped from each element that support QOS
+ * could be expressed as percent in relation to total-frames
-* idea2: query data (e.g. via. gst-launch)
+* query data (e.g. via. gst-launch)
* add -r, --report option to gst-launch
- * send duration to get total number of frames (GST_FORMAT_DEFAULT for video is frames)
- * during playing we need to capture QOS-events to record 'streamtime,proportion' pairs
+ * during playing we capture QOS-events to record 'streamtime,proportion' pairs
gst_pad_add_event_probe(video_sink->sink_pad,handler,data)
* during playback we like to know when an elemnt drops frames
what about elements sending a qos_action message?
number of frames dropped
* print a nice table with the results
* QOS stats first
- * list of 'streamtime,proportion' pairs
-
- + robust
- + also available to application
- - changes in core
+ * writes a gnuplot data file
+ * list of 'streamtime,proportion,<drop>' tuples
+
= core profiling =
- use correct value, name, nick for enums
- use underscores in macros/function names/structs
e.g.: GST_BASE_SINK, GstBaseSink, gst_base_sink_
+ - use g_assert(), g_return_if_fail(), g_return_val_if_fail() for pre/post
+ condition checks
- The plug-in's build:
- should be correctly integrated with configure.ac
and following practice outlined in
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstGError.html
- this includes:
- - message strings need to be marked for translation
+ - message strings need to be marked for translation
- should be short, well-written, clear
- in particular, should *not* contain debug info, strerror, errno, ...
No, really ! NO STRERROR, NO ERRNO. If you are too lazy to provide