Commit graph

5079 commits

Author SHA1 Message Date
Stefan Kost
da9b082808 structure: remove some blank lines (previous gst-indent failure) 2009-11-17 09:40:12 +02:00
Stefan Kost
94f6eced23 structure: use local variable earlier 2009-11-17 09:40:12 +02:00
Stefan Kost
7bd9299f3e structure: don't check enum types twice.
G_VALUE_HOLDS_ENUM(value) is defined as G_TYPE_CHECK_VALUE_TYPE (value,
 G_TYPE_ENUM). Just check for the right enum-type right away.
2009-11-17 09:40:12 +02:00
Sebastian Dröge
0ed24bc50e utils: API: Add multiplication and addition functions for fractions
gst_util_fraction_add()
gst_util_fraction_multiply()

These work on plain integers instead of GValues to
keep the overhead as low as possible.
2009-11-16 09:56:32 +01:00
Sebastian Dröge
e4257e8d5f gstutils: API: Add fraction helper functions
gst_util_greatest_common_divisor()
gst_util_double_to_fraction()
gst_util_fraction_to_double()

Using these instead of going over GValue has much lower overhead.

Also add float<->fraction transform functions for GValue.
2009-11-16 09:56:32 +01:00
Stefan Kost
c84d17bcaf debug: add more debug logging to help tracking parsing errors 2009-11-13 15:46:40 +02:00
Ole André Vadla Ravnås
73f2d464b7 miniobject: avoid race when recycling buffers
Avoid a race where a miniobject is recycled and quickly freed, which causes the
g_type_free_instance() to be called on the same object twice.

Ref the object before calling the finalize method and check if we still need to
free it afterward.

Also add a unit test for this case.

Fixes #601587
2009-11-13 11:45:48 +01:00
Stefan Kost
4d17d331bf whitespace: remove blanks in doc-comment 2009-11-12 17:02:40 +02:00
Руслан Ижбулатов
b1d57a8b05 registry: Import _priv_gst_dll_handle into gstregistry.c
Fixes bug #601668.
2009-11-12 13:00:07 +01:00
Sebastian Dröge
039ef83523 registry: API: Add gst_{default,}_registry_get_feature_list_cookie()
This returns the internal feature list cookie, which changes every
time a feature is added or removed. This can be used by elements
to check if they should update their cached feature lists.
2009-11-10 18:17:26 +01:00
Tim-Philipp Müller
dfc792c904 registrychunks: fix compilation with debugging disabled
Add ugly ifdef to fix unused variable warning when compiling with
debug logging disabled.
2009-11-10 00:58:37 +00:00
Tim-Philipp Müller
8abd61339d gstconfig.h: add define to force printf format checking for debug messages
Force printf format checking for debug messages if GST_DISABLE_PRINTF_EXTENSION
is defined. This is useful to quickly check code for printf format mismatches
in debugging messages that would usually not be caught (with glibc+gcc and
printf extensions being used).

To use: make clean; make CFLAGS='-g -O2 -DGST_DISABLE_PRINTF_EXTENSION'
2009-11-05 21:23:22 +00:00
Tim-Philipp Müller
2d177f9ee7 docs: fix typo 2009-11-05 18:39:15 +00:00
Tim-Philipp Müller
6afa355856 taglist: avoid looking up GstTagInfo twice in a row
Pass the info structure to our internal function if already available.
Also clean up warnings for unknown tags.
2009-11-05 18:39:15 +00:00
Edward Hervey
6f7519704d gstregistrychunks: We're certain plugin_name is an intern string.
The only place this method is called from creates the plugin_name argument
with g_intern_string().
Shaves off 1% from registry loading.
2009-11-05 18:55:30 +01:00
Wim Taymans
7da9eb0f74 query: whitespace fixes 2009-11-05 15:14:13 +01:00
Wim Taymans
473594b3a4 ghostpad: fix locking 2009-11-05 14:02:28 +01:00
Stefan Kost
0467799f22 ghostpad: don't release mutex twice 2009-11-05 14:30:48 +02:00
Stefan Kost
df2341684f ghostpad: skip type check in internal api 2009-11-05 14:30:48 +02:00
Wim Taymans
64a4037f63 pad: indentation fix 2009-11-05 12:36:10 +01:00
Stefan Kost
f63ecd04a8 pad: rename new api from _refed to _reffed.
Due to popular demand rename the new api as we still can.
API: gst_pad_get_caps_reffed(), gst_pad_peer_get_caps_reffed()
2009-11-05 12:54:32 +02:00
Stefan Kost
211b2e4338 element: access padtemplate list directly to avoid call and type check. 2009-11-04 22:42:52 +02:00
Sebastian Dröge
82f66b4036 event: Add a FIXME 0.11 for having flush events that don't reset running time 2009-11-04 18:59:23 +01:00
Jan Schmidt
94bb0ee718 registrychunks: Fix a printf compile warning on 64-bit platforms 2009-11-04 17:52:21 +00:00
Sebastian Dröge
6042793c26 ghostpad: Make sure that nobody sets the proxypad or ghostpad itself as target
Doing this will lead to very interesting crashes, like stack overflows.
2009-11-04 17:17:17 +01:00
Jan Schmidt
f425b2711f plugin loader: Don't fail after a short read/write
The logic to handle short reads/writes was incorrect, causing the
packet handler to attempt to handle incomplete packets.

Grow the packet transmit buffer in proportion to observed usage,
causing fewer reallocs.

Add some more debug in the registry chunks code.
2009-11-04 11:36:20 +00:00
Jan Schmidt
cebbcb1cdf plugin loader: Don't crash on bogus plugin details
When invalid registry chunks are received from the child, and parsing
fails, don't access an invalid plugin pointer. Instead attempt to
figure out which plugin caused the problem and blacklist it.
2009-11-04 11:36:20 +00:00
Tim-Philipp Müller
5790c33fe4 gsttypefind: avoid one more run-time type check 2009-11-02 08:50:04 +00:00
Sebastian Dröge
f9e3b72ff6 structure: API: Add gst_structure_id_has_field{,_typed} 2009-11-02 09:24:10 +01:00
Edward Hervey
0aff2c55b7 gsttypefind: Use _CAST variants when the type has alredy been checked.
This avoids checking the type n_typefinders * 4 times when loading the
registry.
2009-11-02 08:30:24 +01:00
Sebastian Dröge
15229ab669 ghostpad: Implement iterate internal links
The internally linked pad of the ghost pad is its
proxy pad, which is the pad that is linked to the ghost
pads target.
2009-11-01 11:24:40 +01:00
Sebastian Dröge
28493b04ec parser: Make sure that signal user data is freed by setting a GClosureNotify
...instead of using a second mechanism and storing the user data
inside the GObjects qdata.
2009-10-31 16:56:17 +01:00
Sebastian Dröge
02d044e291 parser: Use GSlice for allocating the structs 2009-10-31 16:49:03 +01:00
Sebastian Dröge
5b5718cd20 parser: Always get DelayedLink information from the objects qdata
This makes sure that it is always valid.
2009-10-31 16:43:26 +01:00
Sebastian Dröge
9236921a34 queue2: Move queue2 to gstreamer coreplugins
Fixes bug #599996.
2009-10-29 11:18:20 +01:00
Tim-Philipp Müller
d98dc4788c Remove GST_DEBUG_FUNCPTR where they're pointless
There's not much point in using GST_DEBUG_FUNCPTR with GObject
virtual functions such as get_property, set_propery, finalize and
dispose, since they'll never be used by anyone anyway. Saves a
few bytes and possibly a sixteenth of a polar bear.
2009-10-29 11:17:18 +01:00
Wim Taymans
141e06b547 queue2: add custom acceptcaps function 2009-10-29 11:17:17 +01:00
Mark Nauwelaerts
f766708c17 queue2: post error message when pausing task if so appropriate
If a downstream element returns an error while upstream has already
put all data into queue2 (including EOS), upstream will no longer
chain into queue2, so it is up to queue2 to perform some
EOS handling / message posting in such cases.  See #589991.
2009-10-29 11:17:17 +01:00
Wim Taymans
ec81bbf713 queue2: fix leak and improve buffering
Keep track of the max requested position and compare this to the write position
in the temp file to get the current amount of buffered data.
Fix memleak of all incomming buffers.

Fixes #588551
2009-10-29 11:17:17 +01:00
Wim Taymans
49c01cce93 queue2: flush differently, avoiding deadlocks
Don't flush the file by closing and opening it but instead use g_freopen. This
avoids a deadlock in shutdown because we emit the temp-location property change
with the wrong lock held.
2009-10-29 11:17:17 +01:00
Wim Taymans
affe0aef6f queue2: add temp-template property
Add a new temp-template property so that queue2 can securely allocate a
temporary filename. Deprecate the temp-location property for setting the
location but still use it to notify the allocated temp file.
2009-10-29 11:17:17 +01:00
LRN
4843c0947b win32: fix seeking in large files
Fix Seeking in large files by using the 64-bit seek functions.
Fixes #576019
2009-10-29 11:17:17 +01:00
Frederic Crozat
4ec6f02e8a Make sure gettext returns translations in UTF-8 encoding rather than in the current locale encoding (#546822).
Original commit message from CVS:
Patch by: Frederic Crozat <fcrozat@mandriva.org>
* ext/alsa/gstalsaplugin.c: (plugin_init):
* ext/cdparanoia/gstcdparanoiasrc.c: (plugin_init):
* ext/gnomevfs/gstgnomevfs.c: (plugin_init):
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_plugin_init):
* gst-libs/gst/audio/gstbaseaudiosrc.c: (_do_init):
* gst-libs/gst/pbutils/pbutils.c: (gst_pb_utils_init):
* gst-libs/gst/tag/tags.c: (gst_tag_register_tags_internal):
* gst/playback/gstdecodebin.c: (plugin_init):
* gst/playback/gstdecodebin2.c: (gst_decode_bin_plugin_init):
* gst/playback/gstplayback.c: (plugin_init):
* gst/playback/gstqueue2.c: (plugin_init):
* gst/playback/gsturidecodebin.c: (gst_uri_decode_bin_plugin_init):
* sys/v4l/gstv4l.c: (plugin_init):
Make sure gettext returns translations in UTF-8 encoding rather
than in the current locale encoding (#546822).
2009-10-29 11:17:16 +01:00
Stefan Kost
f9fdf30406 Cleanup Plugin docs. Link to signals and properties. Fix sub-section titles. Drop mentining that all our example pipe...
Original commit message from CVS:
* docs/plugins/gst-plugins-base-plugins-docs.sgml:
* docs/plugins/gst-plugins-base-plugins-overrides.txt:
* docs/plugins/gst-plugins-base-plugins-sections.txt:
* docs/plugins/gst-plugins-base-plugins.args:
* docs/plugins/gst-plugins-base-plugins.hierarchy:
* docs/plugins/gst-plugins-base-plugins.interfaces:
* docs/plugins/gst-plugins-base-plugins.prerequisites:
* docs/plugins/gst-plugins-base-plugins.signals:
* docs/plugins/inspect/plugin-adder.xml:
* docs/plugins/inspect/plugin-alsa.xml:
* docs/plugins/inspect/plugin-audioconvert.xml:
* docs/plugins/inspect/plugin-audiorate.xml:
* docs/plugins/inspect/plugin-audioresample.xml:
* docs/plugins/inspect/plugin-audiotestsrc.xml:
* docs/plugins/inspect/plugin-cdparanoia.xml:
* docs/plugins/inspect/plugin-decodebin.xml:
* docs/plugins/inspect/plugin-ffmpegcolorspace.xml:
* docs/plugins/inspect/plugin-gdp.xml:
* docs/plugins/inspect/plugin-gnomevfs.xml:
* docs/plugins/inspect/plugin-libvisual.xml:
* docs/plugins/inspect/plugin-ogg.xml:
* docs/plugins/inspect/plugin-pango.xml:
* docs/plugins/inspect/plugin-playback.xml:
* docs/plugins/inspect/plugin-queue2.xml:
* docs/plugins/inspect/plugin-subparse.xml:
* docs/plugins/inspect/plugin-tcp.xml:
* docs/plugins/inspect/plugin-theora.xml:
* docs/plugins/inspect/plugin-typefindfunctions.xml:
* docs/plugins/inspect/plugin-uridecodebin.xml:
* docs/plugins/inspect/plugin-video4linux.xml:
* docs/plugins/inspect/plugin-videorate.xml:
* docs/plugins/inspect/plugin-videoscale.xml:
* docs/plugins/inspect/plugin-videotestsrc.xml:
* docs/plugins/inspect/plugin-volume.xml:
* docs/plugins/inspect/plugin-vorbis.xml:
* docs/plugins/inspect/plugin-ximagesink.xml:
* docs/plugins/inspect/plugin-xvimagesink.xml:
* ext/alsa/gstalsamixer.c:
* ext/alsa/gstalsasink.c:
* ext/alsa/gstalsasrc.c:
* ext/gio/gstgiosink.c:
* ext/gio/gstgiosrc.c:
* ext/gio/gstgiostreamsink.c:
* ext/gio/gstgiostreamsrc.c:
* ext/gnomevfs/gstgnomevfssink.c:
* ext/gnomevfs/gstgnomevfssrc.c:
* ext/ogg/gstoggdemux.c:
* ext/ogg/gstoggmux.c:
* ext/pango/gstclockoverlay.c:
* ext/pango/gsttextoverlay.c:
* ext/pango/gsttextrender.c:
* ext/pango/gsttimeoverlay.c:
* ext/theora/theoradec.c:
* ext/theora/theoraenc.c:
* ext/theora/theoraparse.c:
* ext/vorbis/vorbisdec.c:
* ext/vorbis/vorbisenc.c:
* ext/vorbis/vorbisparse.c:
* ext/vorbis/vorbistag.c:
* gst/adder/gstadder.c:
* gst/audioconvert/gstaudioconvert.c:
* gst/audioresample/gstaudioresample.c:
* gst/audiotestsrc/gstaudiotestsrc.c:
* gst/ffmpegcolorspace/gstffmpegcolorspace.c:
* gst/gdp/gstgdpdepay.c:
* gst/gdp/gstgdppay.c:
* gst/playback/gstdecodebin2.c:
* gst/playback/gstplaybin.c:
* gst/playback/gstplaybin2.c:
* gst/playback/gstqueue2.c:
* gst/playback/gsturidecodebin.c:
* gst/tcp/gstmultifdsink.c:
* gst/tcp/gsttcpserversink.c:
* gst/videorate/gstvideorate.c:
* gst/videoscale/gstvideoscale.c:
* gst/videotestsrc/gstvideotestsrc.c:
* gst/volume/gstvolume.c:
* sys/ximage/ximagesink.c:
* sys/xvimage/xvimagesink.c:
Cleanup Plugin docs. Link to signals and properties. Fix sub-section
titles. Drop mentining that all our example pipelines are "simple"
pipelines.
2009-10-29 11:17:16 +01:00
Stefan Kost
917d1c4be0 gst/playback/gstqueue2.c: Do not double notify. Remove the unsued return value.
Original commit message from CVS:
* gst/playback/gstqueue2.c:
Do not double notify. Remove the unsued return value.
2009-10-29 11:17:16 +01:00
Wim Taymans
ca7828940d docs/design/draft-keyframe-force.txt: Fix typo.
Original commit message from CVS:
* docs/design/draft-keyframe-force.txt:
Fix typo.
* gst/playback/gstqueue2.c: (update_buffering),
(gst_queue_handle_src_query):
Set buffering mode in the messages.
Set buffering percent in the query.
* tests/examples/seek/seek.c: (update_fill), (msg_state_changed),
(do_stream_buffering), (do_download_buffering), (msg_buffering):
Do some more fancy things based on the buffering method in use.
2009-10-29 11:17:16 +01:00
Wim Taymans
e9d3f79139 gst/playback/gstqueue2.c: Include extra buffering stats in the buffering message.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (update_buffering),
(gst_queue_close_temp_location_file), (gst_queue_handle_src_query),
(gst_queue_src_checkgetrange_function):
Include extra buffering stats in the buffering message.
Implement BUFFERING query.
* gst/playback/gsturidecodebin.c: (do_async_start),
(do_async_done), (type_found), (setup_streaming), (setup_source),
(gst_uri_decode_bin_change_state):
Only add decodebin2 when the type is found in streaming mode.
Make uridecodebin async to PAUSED even when we don't have decodebin2
added yet.
2009-10-29 11:17:16 +01:00
Wim Taymans
fc13a73038 gst/playback/gstqueue2.c: Update the estimated input data when we push out a buffer.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (update_out_rates),
(gst_queue_open_temp_location_file),
(gst_queue_close_temp_location_file), (gst_queue_handle_src_event),
(gst_queue_handle_src_query), (gst_queue_set_property):
Update the estimated input data when we push out a buffer.
Add some debug info about the temp file.
Only forward src events when we are not using a temp file.
Don't block the duration query, we need to find something better.
Don't leak the temp filename.
2009-10-29 11:17:16 +01:00
Wim Taymans
0e7fb0ffa5 gst/playback/gstqueue2.c: The queue is never filled when there are no buffers in the queue at all.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (gst_queue_is_filled):
The queue is never filled when there are no buffers in the queue at all.
Fixes #523993.
2009-10-29 11:17:15 +01:00
Sebastian Dröge
301b7ba7b9 Use G_PARAM_STATIC_STRINGS everywhere for GParamSpecs that use static strings (i.e. all). This gives us less memory u...
Original commit message from CVS:
* configure.ac:
* ext/alsa/gstalsamixerelement.c:
(gst_alsa_mixer_element_class_init):
* ext/alsa/gstalsasink.c: (gst_alsasink_class_init):
* ext/alsa/gstalsasrc.c: (gst_alsasrc_class_init):
* ext/cdparanoia/gstcdparanoiasrc.c:
(gst_cd_paranoia_src_class_init):
* ext/gio/gstgiosink.c: (gst_gio_sink_class_init):
* ext/gio/gstgiosrc.c: (gst_gio_src_class_init):
* ext/gio/gstgiostreamsink.c: (gst_gio_stream_sink_class_init):
* ext/gio/gstgiostreamsrc.c: (gst_gio_stream_src_class_init):
* ext/gnomevfs/gstgnomevfssink.c: (gst_gnome_vfs_sink_class_init):
* ext/gnomevfs/gstgnomevfssrc.c: (gst_gnome_vfs_src_class_init):
* ext/ogg/gstoggmux.c: (gst_ogg_mux_class_init):
* ext/pango/gsttextoverlay.c: (gst_text_overlay_class_init):
* ext/pango/gsttextrender.c: (gst_text_render_class_init):
* ext/theora/theoradec.c: (gst_theora_dec_class_init):
* ext/theora/theoraenc.c: (gst_theora_enc_class_init):
* ext/theora/theoraparse.c: (gst_theora_parse_class_init):
* ext/vorbis/vorbisenc.c: (gst_vorbis_enc_class_init):
* gst-libs/gst/audio/gstaudiofiltertemplate.c:
(gst_audio_filter_template_class_init):
* gst-libs/gst/audio/gstbaseaudiosink.c:
(gst_base_audio_sink_class_init):
* gst-libs/gst/audio/gstbaseaudiosrc.c:
(gst_base_audio_src_class_init):
* gst-libs/gst/cdda/gstcddabasesrc.c:
(gst_cdda_base_src_class_init):
* gst-libs/gst/interfaces/mixertrack.c:
(gst_mixer_track_class_init):
* gst-libs/gst/rtp/gstbasertpdepayload.c:
(gst_base_rtp_depayload_class_init):
* gst-libs/gst/rtp/gstbasertppayload.c:
(gst_basertppayload_class_init):
* gst/audioconvert/gstaudioconvert.c:
(gst_audio_convert_class_init):
* gst/audiorate/gstaudiorate.c: (gst_audio_rate_class_init):
* gst/audioresample/gstaudioresample.c:
(gst_audioresample_class_init):
* gst/audiotestsrc/gstaudiotestsrc.c:
(gst_audio_test_src_class_init):
* gst/gdp/gstgdppay.c: (gst_gdp_pay_class_init):
* gst/playback/gstdecodebin2.c: (gst_decode_bin_class_init):
* gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init),
(preroll_unlinked):
* gst/playback/gstplaybin.c: (gst_play_bin_class_init):
* gst/playback/gstplaybin2.c: (gst_play_bin_class_init):
* gst/playback/gstplaysink.c: (gst_play_sink_class_init):
* gst/playback/gstqueue2.c: (gst_queue_class_init):
* gst/playback/gststreaminfo.c: (gst_stream_info_class_init):
* gst/playback/gststreamselector.c: (gst_selector_pad_class_init),
(gst_stream_selector_class_init):
* gst/playback/gsturidecodebin.c: (gst_uri_decode_bin_class_init):
* gst/subparse/gstsubparse.c: (gst_sub_parse_class_init):
* gst/tcp/gstmultifdsink.c: (gst_multi_fd_sink_class_init):
* gst/tcp/gsttcpclientsink.c: (gst_tcp_client_sink_class_init):
* gst/tcp/gsttcpclientsrc.c: (gst_tcp_client_src_class_init):
* gst/tcp/gsttcpserversink.c: (gst_tcp_server_sink_class_init):
* gst/tcp/gsttcpserversrc.c: (gst_tcp_server_src_class_init):
* gst/videorate/gstvideorate.c: (gst_video_rate_class_init):
* gst/videoscale/gstvideoscale.c: (gst_video_scale_class_init):
* gst/videotestsrc/gstvideotestsrc.c:
(gst_video_test_src_class_init):
* gst/volume/gstvolume.c: (gst_volume_class_init):
* sys/v4l/gstv4lelement.c: (gst_v4lelement_class_init):
* sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_class_init):
* sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_class_init):
* sys/v4l/gstv4lsrc.c: (gst_v4lsrc_class_init):
* sys/ximage/ximagesink.c: (gst_ximagesink_class_init):
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_class_init):
Use G_PARAM_STATIC_STRINGS everywhere for GParamSpecs that use
static strings (i.e. all). This gives us less memory usage,
fewer allocations and thus less memory defragmentation. Depend
on core CVS for this. Fixes bug #523806.
2009-10-29 11:17:15 +01:00
Wim Taymans
4de6a788b8 gst/playback/gstqueue2.c: Use separate timers for input and output rates.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (gst_queue_init), (gst_queue_finalize),
(reset_rate_timer), (update_in_rates), (update_out_rates),
(gst_queue_locked_enqueue), (gst_queue_locked_dequeue),
(gst_queue_chain), (gst_queue_loop):
Use separate timers for input and output rates.
Pause measuring the output rate when we block for more data.
See #503262.
2009-10-29 11:17:15 +01:00
Wim Taymans
3fb28dfc90 gst/playback/gstqueue2.c: Pause the timer to measure the input rate when we block because the queue is filled. See #5...
Original commit message from CVS:
* gst/playback/gstqueue2.c: (gst_queue_chain):
Pause the timer to measure the input rate when we block because the
queue is filled. See #503262.
2009-10-29 11:17:15 +01:00
Wim Taymans
2b5653dd82 gst/playback/: Refactor some common code to filter factories and check caps compat.
Original commit message from CVS:
* gst/playback/Makefile.am:
* gst/playback/gstfactorylists.c: (compare_ranks), (print_feature),
(get_feature_array), (decoders_filter), (sinks_filter),
(gst_factory_list_get_decoders), (gst_factory_list_get_sinks),
(gst_factory_list_filter):
* gst/playback/gstfactorylists.h:
Refactor some common code to filter factories and check caps compat.
* gst/playback/gstdecodebin.c:
* gst/playback/gstdecodebin2.c: (gst_decode_bin_class_init),
(gst_decode_bin_init), (gst_decode_bin_dispose),
(gst_decode_bin_autoplug_continue),
(gst_decode_bin_autoplug_factories),
(gst_decode_bin_autoplug_select), (analyze_new_pad),
(find_compatibles):
* gst/playback/gstplaybin.c:
* gst/playback/gstplaybin2.c: (gst_play_bin_class_init),
(gst_play_bin_init), (gst_play_bin_finalize),
(autoplug_factories_cb), (activate_group):
* gst/playback/gstqueue2.c:
* gst/playback/gsturidecodebin.c: (proxy_unknown_type_signal),
(proxy_autoplug_continue_signal),
(proxy_autoplug_factories_signal), (proxy_autoplug_select_signal),
(proxy_drained_signal):
Add some more debug info and use factor filtering code.
2009-10-29 11:17:15 +01:00
Wim Taymans
ca779938d1 gst/playback/: Add playbin2.
Original commit message from CVS:
* gst/playback/Makefile.am:
* gst/playback/gstplayback.c: (plugin_init):
* gst/playback/test7.c: (update_scale), (warning_cb), (error_cb),
(eos_cb), (about_to_finish_cb), (main):
Add playbin2.
Added gapless playback example.
* gst/playback/gstplaybasebin.c:
* gst/playback/gstplaybasebin.h:
* gst/playback/gstplaybin.c: (gst_play_bin_plugin_init):
* gst/playback/gstqueue2.c:
* gst/playback/test.c:
* gst/playback/gsturidecodebin.c: (gst_uri_decode_bin_class_init),
(pad_removed_cb):
* gst/playback/gststreaminfo.h:
Change email.
* gst/playback/gstplaybin2.c: (gst_play_bin_get_type),
(gst_play_bin_class_init), (init_group), (gst_play_bin_init),
(gst_play_bin_dispose), (gst_play_bin_set_uri),
(gst_play_bin_set_suburi), (gst_play_bin_set_property),
(gst_play_bin_get_property), (gst_play_bin_handle_message),
(pad_added_cb), (pad_removed_cb), (no_more_pads_cb), (perform_eos),
(drained_cb), (unlink_group), (activate_group),
(setup_next_source), (gst_play_bin_change_state),
(gst_play_bin2_plugin_init):
Added raw first version of playbin2. Does chained oggs and gapless
playback fine. No support for raw sinks yet. No visualisations or
subtitles yet.
* gst/playback/gstplaysink.c: (gst_play_sink_get_type),
(gst_play_sink_class_init), (gst_play_sink_init),
(gst_play_sink_dispose), (gst_play_sink_vis_unblocked),
(gst_play_sink_vis_blocked), (gst_play_sink_set_video_sink),
(gst_play_sink_set_audio_sink), (gst_play_sink_set_vis_plugin),
(gst_play_sink_set_property), (gst_play_sink_get_property),
(post_missing_element_message), (free_chain), (add_chain),
(activate_chain), (gen_video_chain), (gen_text_element),
(gen_audio_chain), (gen_vis_element), (gst_play_sink_get_mode),
(gst_play_sink_set_mode), (gst_play_sink_request_pad),
(gst_play_sink_release_pad), (gst_play_sink_send_event_to_sink),
(gst_play_sink_send_event), (gst_play_sink_change_state):
* gst/playback/gstplaysink.h:
Added Element that abstracts the sinks and their pipelines for playbin2.
2009-10-29 11:17:15 +01:00
Wim Taymans
7d6d46fea6 gst/playback/gstqueue2.c: Fix queue negotiation. See #486758.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (gst_queue_init), (gst_queue_push_one):
Fix queue negotiation. See #486758.
2009-10-29 11:17:14 +01:00
Wim Taymans
73be0c35c0 gst/playback/gstqueue2.c: Fix compilation wrt printf arguments.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (gst_queue_push_one):
Fix compilation wrt printf arguments.
2009-10-29 11:17:14 +01:00
Jan Schmidt
a4614d8c8c Fix a bunch of compile warnings shown with Forte.
Original commit message from CVS:
* ext/pango/gsttextoverlay.c: (gst_text_overlay_init),
(gst_text_overlay_set_property):
* ext/vorbis/vorbisdec.c: (vorbis_handle_data_packet):
* gst-libs/gst/audio/gstbaseaudiosink.c:
(gst_base_audio_sink_render):
* gst-libs/gst/rtp/gstrtcpbuffer.c: (gst_rtcp_ntp_to_unix),
(gst_rtcp_unix_to_ntp):
* gst-libs/gst/rtsp/gstrtspmessage.c: (gst_rtsp_message_get_type):
* gst/playback/gstqueue2.c:
* tests/examples/seek/seek.c: (set_scale):
Fix a bunch of compile warnings shown with Forte.
* gst/audiorate/gstaudiorate.c:
Always pull in config.h before including any system headers.
2009-10-29 11:17:14 +01:00
Wim Taymans
ff4e3e7b94 gst/playback/gstqueue2.c: Also fix #476514 for queue2.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (update_buffering),
(gst_queue_locked_flush), (gst_queue_locked_enqueue),
(gst_queue_handle_sink_event), (gst_queue_chain),
(gst_queue_push_one), (gst_queue_sink_activate_push),
(gst_queue_src_activate_push), (gst_queue_src_activate_pull):
Also fix #476514 for queue2.
2009-10-29 11:17:14 +01:00
Tim-Philipp Müller
48d4fd8f8d gst/: Printf format fixes (#465028).
Original commit message from CVS:
* gst/playback/gstqueue2.c:
* gst/videorate/gstvideorate.c:
Printf format fixes (#465028).
2009-10-29 11:17:14 +01:00
Wim Taymans
da7a699c5f gst/playback/gstqueue2.c: Use other metrics as well when estimating the buffer level.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (apply_segment), (update_buffering):
Use other metrics as well when estimating the buffer level.
2009-10-29 11:17:14 +01:00
Wim Taymans
ee4e5d2be0 gst/playback/gstplaybasebin.c: Small debug improvement.
Original commit message from CVS:
* gst/playback/gstplaybasebin.c: (make_decoder), (setup_source):
Small debug improvement.
* gst/playback/gstqueue2.c: (apply_segment), (update_buffering),
(plugin_init):
Tweak the rate estimation period.
When calculating the buffer filledness in rate estimation mode, don't
mix it with other metrics.
2009-10-29 11:17:14 +01:00
David Schleef
0b6ee4f4b6 gst/playback/gstqueue2.c: Fix compile error from ignored return value.
Original commit message from CVS:
* gst/playback/gstqueue2.c:
Fix compile error from ignored return value.
2009-10-29 11:17:13 +01:00
Edward Hervey
8fe34426cb gst/playback/gstqueue2.c: Fix build on MacOSX.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (gst_queue_create_read):
Fix build on MacOSX.
2009-10-29 11:17:13 +01:00
Wim Taymans
c26bff1afc gst/playback/gstqueue2.c: Fix a division by zero when the max percent is <= 0. Fixes #446572. also update the bufferi...
Original commit message from CVS:
Patches by: Thiago Sousa Santos <thiagossantos at gmail dot com>
* gst/playback/gstqueue2.c: (update_buffering),
(gst_queue_locked_enqueue):
Fix a division by zero when the max percent is <= 0. Fixes #446572.
also update the buffering status when receiving events. Fixes #446551.
2009-10-29 11:17:13 +01:00
Thiago Sousa Santos
27d8c58438 gst/playback/gstqueue2.c: Wait for preroll before attempting to forward a duration query upstream.
Original commit message from CVS:
Based on patch by: Thiago Sousa Santos <thiagossantos at gmail dot com>
* gst/playback/gstqueue2.c: (gst_queue_peer_query),
(gst_queue_handle_src_query):
Wait for preroll before attempting to forward a duration query upstream.
Fixes #445505.
2009-10-29 11:17:13 +01:00
Wim Taymans
ee3f9d84ec gst/playback/gstqueue2.c: Fix compilation.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (gst_queue_get_range):
Fix compilation.
2009-10-29 11:17:13 +01:00
Thiago Sousa Santos
2d77f57853 gst/playback/gstqueue2.c: Add pull based scheduling and fix some deadlocks. Fixes #444523.
Original commit message from CVS:
Patch by: Thiago Sousa Santos <thiagossantos at gmail dot com>
* gst/playback/gstqueue2.c: (gst_queue_init),
(gst_queue_handle_sink_event), (gst_queue_chain),
(gst_queue_get_range), (gst_queue_src_checkgetrange_function),
(gst_queue_sink_activate_push), (gst_queue_src_activate_push),
(gst_queue_src_activate_pull):
Add pull based scheduling and fix some deadlocks. Fixes #444523.
Does not yet completely work because duration queries upstream won't
block yet.
2009-10-29 11:17:12 +01:00
Wim Taymans
28dca2d062 Some more fseeko checks.
Original commit message from CVS:
* configure.ac:
* gst/playback/gstqueue2.c: (gst_queue_create_read):
Some more fseeko checks.
2009-10-29 11:17:12 +01:00
Wim Taymans
e00ffac3ac gst/playback/gstqueue2.c: Include stdio to define fseeko.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (gst_queue_have_data),
(gst_queue_create_read), (gst_queue_read_item_from_file),
(gst_queue_open_temp_location_file), (gst_queue_locked_enqueue):
Include stdio to define fseeko.
2009-10-29 11:17:12 +01:00
Thiago Sousa Santos
14d39928f5 gst/playback/gstqueue2.c: Add support for filebased buffering. Fixes #441264.
Original commit message from CVS:
Based on patch by: Thiago Sousa Santos <thiagossantos at gmail dot com>
* gst/playback/gstqueue2.c: (gst_queue_class_init),
(gst_queue_init), (gst_queue_finalize),
(gst_queue_write_buffer_to_file), (gst_queue_have_data),
(gst_queue_create_read), (gst_queue_read_item_from_file),
(gst_queue_open_temp_location_file),
(gst_queue_close_temp_location_file), (gst_queue_locked_flush),
(gst_queue_locked_enqueue), (gst_queue_locked_dequeue),
(gst_queue_is_empty), (gst_queue_is_filled),
(gst_queue_change_state), (gst_queue_set_temp_location),
(gst_queue_set_property):
Add support for filebased buffering. Fixes #441264.
2009-10-29 11:17:12 +01:00
Wim Taymans
b2486d65c6 gst/playback/gstqueue2.c: Tweak the buffering thresholds a little.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (update_rates):
Tweak the buffering thresholds a little.
Update the buffer size with the previously calculate rate instead of
only when we calculate a new rate so that we get smoother buffering
updates.
* gst/playback/Makefile.am:
* gst/playback/gsturidecodebin.c: (gst_uri_decode_bin_base_init),
(gst_uri_decode_bin_class_init), (gst_uri_decode_bin_init),
(gst_uri_decode_bin_finalize), (gst_uri_decode_bin_set_property),
(gst_uri_decode_bin_get_property), (unknown_type),
(add_element_stream), (no_more_pads_full), (no_more_pads),
(source_no_more_pads), (new_decoded_pad), (array_has_value),
(gen_source_element), (has_all_raw_caps), (analyse_source),
(remove_decoders), (make_decoder), (remove_source),
(source_new_pad), (setup_source), (decoder_query_init),
(decoder_query_duration_fold), (decoder_query_duration_done),
(decoder_query_position_fold), (decoder_query_position_done),
(decoder_query_latency_fold), (decoder_query_latency_done),
(decoder_query_seeking_fold), (decoder_query_seeking_done),
(decoder_query_generic_fold), (gst_uri_decode_bin_query),
(gst_uri_decode_bin_change_state), (plugin_init):
New element that intergrates a source, optional buffering element and
decodebin.
2009-10-29 11:17:12 +01:00
Wim Taymans
aa02328e2b gst/playback/gstqueue2.c: fix build.
Original commit message from CVS:
* gst/playback/gstqueue2.c: (gst_queue_get_type),
(gst_queue_class_init), (gst_queue_finalize), (update_time_level),
(apply_segment), (apply_buffer), (update_buffering),
(reset_rate_timer), (update_rates), (gst_queue_locked_flush),
(gst_queue_locked_enqueue), (gst_queue_locked_dequeue),
(gst_queue_handle_sink_event), (gst_queue_is_filled),
(gst_queue_chain), (gst_queue_push_one), (gst_queue_loop),
(plugin_init):
fix build.
2009-10-29 11:17:11 +01:00
Wim Taymans
fa611dcc9d gst/playback/: On our way to playbin2 this is the new network queue that does buffering all by itself using high and ...
Original commit message from CVS:
* gst/playback/Makefile.am:
* gst/playback/gstqueue2.c: (gst_queue_get_type),
(gst_queue_class_init), (gst_queue_init), (gst_queue_finalize),
(gst_queue_getcaps), (gst_queue_bufferalloc),
(gst_queue_acceptcaps), (update_time_level), (apply_segment),
(apply_buffer), (update_buffering), (reset_rate_timer),
(update_rates), (gst_queue_locked_flush),
(gst_queue_locked_enqueue), (gst_queue_locked_dequeue),
(gst_queue_handle_sink_event), (gst_queue_is_empty),
(gst_queue_is_filled), (gst_queue_chain), (gst_queue_push_one),
(gst_queue_loop), (gst_queue_handle_src_event),
(gst_queue_handle_src_query), (gst_queue_sink_activate_push),
(gst_queue_src_activate_push), (gst_queue_change_state),
(gst_queue_set_property), (gst_queue_get_property), (plugin_init):
On our way to playbin2 this is the new network queue that does buffering
all by itself using high and low watermarks. It can also measure up and
downstream bandwidth to optimally size the queue.
2009-10-29 11:17:11 +01:00
David Schleef
62e236394a parse: Fix memleak of unused delayed links
Attach the DelayedLink structure to the element, so that when
the element is disposed, the DelayedLink is freed.
2009-10-28 22:05:06 -07:00
Rob Clark
746284f807 pad: make _fixate_caps() also truncate when needed
The default gst_pad_fixate_caps() previously would only fixate each individual
struct. In case there are multiple structs, the resulting caps would still not
be fixed. In the spirit of how individual structs are fixated, this patch
changes gst_pad_fixate_caps() to remove all but the first struct.

Fixes #595886
2009-10-28 16:36:13 +01:00
Wim Taymans
f5df3dea7d info: fix docs 2009-10-28 16:36:13 +01:00
Edward Hervey
27284628e4 optimisation : Use g_object_newv where possible.
This avoids:
* triple-checking for the GType when type-checking is enabled (see #597260)
* Avoids going through an expensive no-argument checking which landed in
  glib-2.22
* Avoids going through 2 extrac functions (g_object_new -> g_object_new_valist)
2009-10-28 09:31:17 +01:00
Stefan Kost
cfebdcd452 annotations: add annotations to gst_init_check too 2009-10-28 10:14:36 +02:00
Stefan Kost
b66a4dbd42 docs: tell more about what happens in gst_init.
Add links to gst_update_registry and the env-vars.
2009-10-28 09:58:52 +02:00
Stefan Kost
369a63b11c docs: remove reference to OGI and rephrase sections docs
The OGI links are dead, so remove them. Also remove the paragraph that pointed
to OGI and DS. Only mentioning DS there made it a but pointless. Add a generic
paragraph instead that tells a bit about the usecases gstreamer covers.
2009-10-28 09:38:45 +02:00
Tim-Philipp Müller
daecaf0e8a Remove GST_DEBUG_FUNCPTR where they're pointless
There's not much point in using GST_DEBUG_FUNCPTR with GObject
virtual functions such as get_property, set_propery, finalize and
dispose, since they'll never be used by anyone anyway. Saves a
few bytes and possibly a tenth of a polar bear.
2009-10-28 00:44:24 +00:00
Stefan Kost
b83fb45fac debugutils: allow to hide/show pad status with graphdetails flag 2009-10-27 12:06:35 +02:00
Sebastian Dröge
b04f7489bf registry: private is a C++ keyword, don't use it
...otherwise C++ compilers will complain when including gstregistry.h
2009-10-24 11:58:25 +02:00
Tim-Philipp Müller
4a9e983f4a docs: add Since tag to docs for new API
And tell gtk-doc that GstRegistryPrivate is private.
2009-10-24 10:31:08 +01:00
Edward Hervey
5067664c09 typefind: Keep typefind factories sorted in the registry. Fixes #599147
This avoids having to do the sorting everytime we use typefind

The behaviour of gst_type_find_factory_get_list has subtlely changed
in the sense that the order was previously undefined, whereas now
it returns them sorted by rank and then by name.
2009-10-24 10:44:09 +02:00
Edward Hervey
c79ed99bab registry: Cache element and typefind factories. Fixes 598896
This avoids unneeded list/filtering if the registry hasn't changed
2009-10-24 10:44:04 +02:00
Edward Hervey
ebee258806 gstpluginfeature: API : new gst_plugin_feature_list_copy() method
This allows copying AND incrementing the refcount at the same time,
avoiding a double iteratio of the GList
2009-10-24 10:39:30 +02:00
Edward Hervey
9e792ee5b8 gstregistry: Add a cookie for detecting feature list changes
We also create a private structure, since we will need to add more
data there in following patches.
2009-10-24 10:39:13 +02:00
Wim Taymans
db79dd88c3 message: don't use typechecking cast macros
Simply use casting macros for accessing the message fields like we do for
buffers and events. Avoids some costly typechecking that does not really buy us
much.
2009-10-23 13:40:32 -04:00
Wim Taymans
c9a7e2d188 Revert "gstmessage: Avoid expensive src/type/timestamp fetch."
This reverts commit 61cf93a334.
2009-10-23 13:13:52 -04:00
Edward Hervey
61cf93a334 gstmessage: Avoid expensive src/type/timestamp fetch.
If we've already checked that we have a valid message, use the entries
directly.
2009-10-23 18:21:47 +02:00
Edward Hervey
e5a13bd3fc gstcaps: Use inlined version of _is_any()/_is_empty()
CAPS_IS_ANY and CAPS_IS_EMPTY are the equivalent of their gst_caps_*
counterpart except that they avoid the typechecking and are inlined.

CAPS_IS_EMPTY_SIMPLE only checks for empty caps (without checking if
the caps is ANY).
2009-10-23 17:47:43 +02:00
Jan Schmidt
dc2c4de73a gstpipeline: Simplify base time checking slightly
Simplify checking and distribution of the base time - don't re-check
the value of a local variable that was set 3 lines earlier.
2009-10-22 12:54:17 +01:00
Edward Hervey
517ab2860e gsturi: Optimisation: Avoid type-checking in sorting method.
We already know the list only contains plugin features
2009-10-22 13:16:07 +02:00
Edward Hervey
a9ed7c0ec4 gsturi: Optimisation : Cast when we're sure of the type.
Also directly access GstElementFactory->uri_type instead of going
through a function that will (once again) check whether it's a
GstElementFactory
2009-10-22 13:13:56 +02:00
Edward Hervey
4b13520b61 gstregistry: Use hash table when finding a feature. Fixes #598895 2009-10-22 11:13:47 +02:00
Wim Taymans
368b7899c0 registry: hash the plugin basename
Maintain a hashtable of the plugin basename. We can then use this
hashtable to speedup the search for an existing plugin and avoid
a whole lot of strcmp calls.
2009-10-20 23:28:54 -04:00
Wim Taymans
5de94ede2f registry: speed up _strlen
Make the _strlen function a little tighter
2009-10-20 23:27:41 -04:00
Wim Taymans
50b9a3ecc3 registry: name is never NULL
When looking up a feature by name, we never call this internal
function with NULL so we don't have to check for it.
2009-10-20 21:43:58 -04:00
Wim Taymans
d722d16155 registry: refactor plugin lookup
We keep lookup plugins by their basename. Avoid creating a basename
from a filename if we can.
2009-10-20 21:39:11 -04:00
Wim Taymans
1be3d5cd83 registry: do quick check for . files
Do a quick check for . files before calling the strcmp functions
2009-10-20 21:15:56 -04:00
Benjamin Otte
868711fc70 docs: Fix docs for gst_caps_set_simple() 2009-10-20 10:51:25 +01:00
Jan Schmidt
08c56edb84 docs: Modify docs string slightly.
Apparently starting the last line of a docs string with 'returns' both
confuses and enrages gtk-doc. Use a slightly different wording instead.
2009-10-19 13:02:30 +01:00
Jan Schmidt
de199b4d8d pluginloader: When a plugin is blacklisted, output a GST_ERROR line. 2009-10-19 12:30:07 +01:00
Peter Kjellerstedt
485ae69c9e trace: Do not poison gst_trace_add_entry()
Since gst_trace_add_entry() is a macro, gcc will barf when it is
defined in case it has been poisoned due to trace support being
disabled.
2009-10-19 10:53:00 +02:00
Wim Taymans
7d86ad93a2 caps: fix typo in docs 2009-10-16 12:39:54 +02:00
Benjamin Otte
0ff4086507 Improve caps setters API
This patch adds gst_caps_set_value() and allows gst_caps_set_simple() to
work on non-simple caps. See the API documentation for the functions
about what they do.

The intention of these changes is to ease working with caps in caps
transform functions. An example for this would be ffmpegcolorspace,
where the caps transform function could be changed to look roughly like
this (pseudocode ahead):
  result = gst_caps_copy (template_caps);
  value = gst_structure_get_value (gst_caps_get_structure (caps, 0),
    "widh");
  gst_caps_set_value (result, value);
  /* same for height, framerate and par */
  return caps;
which is much cleaner and easier to understand than the current code.

https://bugzilla.gnome.org/show_bug.cgi?id=597690
2009-10-15 19:10:50 +02:00
Stefan Kost
bad284be7a docs: clarify preset api docs 2009-10-15 12:16:05 +03:00
Peter Kjellerstedt
1314aa75d5 iterator: Fix a documentation typo 2009-10-14 10:16:31 +02:00
Sebastian Dröge
b8454d623d gstobject: Replace recursive gst_object_has_ancestor() with an iterative version
This is slightly more efficient because the compiler can't do tail
recursion here and has to keep all stack frames.

Not that efficiency is that important here but I already had
the iterative version somewhere else and both are easy to read.
2009-10-14 08:34:03 +02:00
Jan Schmidt
36ccb66fb5 debug: Mark the GST_POLL symbol as extern to avoid multiply-defined error 2009-10-12 14:57:35 +01:00
Jan Schmidt
2ddf028503 gstpoll: Make the new GST_POLL debug completely private
Make the GST_POLL debug category symbol private to libgstreamer, as
there should be no external users of it.
2009-10-12 14:24:53 +01:00
Edward Hervey
7f68d7a6f8 gstpluginloader: Don't wait forever on gst_poll_wait.
This allows the macosx versions to properly error out when fds are closed.

This is only a temporary fix until the pluginloader is switched to not
use GstPoll but GIOChannels.
2009-10-12 12:21:49 +02:00
Edward Hervey
edce400c79 gstpoll: Only take into account active fds
This is needed so that select properly errors out on macosx (sigh)
2009-10-12 12:01:59 +02:00
Edward Hervey
dc3fb58a90 gstpoll: Add some debugging statements 2009-10-12 10:07:03 +02:00
Edward Hervey
3254f19c6f gstpoll: Use the error fdset when using select/pselect.
This is needed to properly detect fds that are closed or that got
an error
2009-10-12 10:01:01 +02:00
Edward Hervey
95413683fa gstpoll: Don't use poll on systems with broken poll 2009-10-12 09:53:58 +02:00
Edward Hervey
0fc16a8e74 gst: Add debugging category GST_POLL for gstpoll 2009-10-12 09:50:00 +02:00
Jan Schmidt
e3ce7d3e35 pluginloader: Fix valgrind warnings by zeroing padding bytes. 2009-10-08 23:10:40 +01:00
Jan Schmidt
09ae85670c registrychunks: Fix a debug format string harder to satisfy OS/X's gcc. 2009-10-08 16:21:45 +01:00
Jan Schmidt
a58702de89 registrychunks: Fix format string for debug error message. 2009-10-08 16:05:08 +01:00
Jan Schmidt
63934021ab pluginloader: Move stdin and stdout out of harm's way
In the plugin loader subprocess, move stdin and stdout to new fd's
so that plugins printing things during plugin init or (*gasp*)
possibly reading from stdin don't interfere with the data sent to
and from the parent.
2009-10-08 15:21:48 +01:00
Jan Schmidt
f514ef0efc registry: Fix error handling in the registry loader
When the plugin-scanner load fails (because the helper can't be
spawned), make sure to load the plugin that failed in-process, so
that all plugins do get loaded.
2009-10-08 10:36:56 +01:00
Tim-Philipp Müller
8b8d8bb112 gstinfo: add back fix that shouldn't have been reverted 2009-10-08 09:36:38 +01:00
Edward Hervey
015c5dda8f gstobject: Remove dead assignment.
object is no longer used after that line
2009-10-08 08:53:26 +02:00
Edward Hervey
219c3c5236 gstindex: Make sure writer is non-NULL.
Fixes the NULL dereference a few lines lower (where it gets the object type).
2009-10-08 08:52:18 +02:00
Jan Schmidt
69bce376b0 plugin: Ignore an empty dependency list.
If a plugin registers an empty dependency set, just ignore it rather
than serialising and checking an empty set.
2009-10-08 02:06:34 +01:00
Jan Schmidt
83252f42c9 registrychunks: Fix off-by-one error. Improve debug.
Fix an off-by-one error in the size guard for unpack_element, and
improve various debug statements in the failure paths.

Also, swap some g_new0 to g_malloc0 for the fun of it.
2009-10-08 02:06:33 +01:00
Tim-Philipp Müller
07d953b791 docs: fix Since: tags in docs for newly-added API 2009-10-07 23:34:44 +01:00
Stefan Kost
cb7a8e8b61 info: revert two of the changes
It only needed for the non constant string.
2009-10-08 00:08:47 +03:00
Stefan Kost
084bbe3921 info: use a "%s" format string when printing the memory dump line
We know that the content is save, but the compiler does not.
2009-10-07 23:36:45 +03:00
Rob Clark
e025e328fd parse: don't format the string twice
We were formatting the string once and then passing the string as a format
string to the log functions.
2009-10-07 23:23:08 +03:00
Stefan Kost
fcc5d783df pad: add variants of gst_pad_get_caps() that don't copy caps. Fixes #590941
In most places in core and baseclasses we just need the caps to do caps-
intersections. In that case ref'ed caps are enough (no need to copy).
This patch also switches the code to use the new functions.
API: gst_pad_get_caps_refed(), gst_pad_peer_get_caps_refed()
2009-10-07 22:41:30 +03:00
Michael Smith
8fd0f64951 elementfactory: fix spelling in comment 2009-10-07 10:37:39 -07:00
Tim-Philipp Müller
53c9c9d975 registry: improve plugin loader failure message for uninstalled setups
Everyone running an uninstalled git setup is going to wonder about
this failure next time they update, so let's mention the solution
in the error message.
2009-10-07 14:39:03 +01:00
Wim Taymans
b5adcf13a0 message: whitespace fixes 2009-10-07 10:38:11 +02:00
Stefan Kost
201cbbdce0 pad: flip the G_UNLIKELY
Its likely that we have caps and unlikely (error) otherwise.
2009-10-07 11:12:57 +03:00
Stefan Kost
cfb4aa4627 build: sprintf, sscanf need stdio.h 2009-10-07 10:59:54 +03:00
Stefan Kost
09c7d34921 childproxy: initialize gvalue in _valist function. Fixes #595602
Reflow the code to move error handling to the end of the functions. Initialize
gvalue like we do in the setter. Add a unit-test module with two simple tests
the catche this bug.
2009-10-07 10:59:54 +03:00
Stefan Kost
82526701f0 pad: don't intersect with any in proxy_pad_get_caps
We initialize the caps with any and if a pad has NULL caps, just skip it instead
of intersecting with any. Also add branch prediction here.
2009-10-07 10:59:54 +03:00
Stefan Kost
b1f88b3f1f docs: rename aggregator to adder in the docs. 2009-10-07 10:59:54 +03:00
Johan Bilien
920e9b569d introspection: Add annotations for gst_element_query_{duration,position}
Fixes bug #595511.
2009-10-07 07:18:04 +02:00
Wim Taymans
3ac4a08383 ghostpad: take locks around smaller section
We don't need the hold the proxy mutex locked for getting the internal pad and
for linking the new target pad when we retarget. So take the lock a little later
and release it earlier.

Fixes #596366
2009-10-06 22:40:17 +02:00
Tim-Philipp Müller
3c6db4ed95 gst: remove more unnecessary cast when using g_signal_*() 2009-10-06 20:04:10 +01:00
Jan Schmidt
8108494a38 pluginloader: Add a magic number and maximum size limit.
Guard against a hostile child process that sends bogus data
due to memory corruption by adding a magic number to each packet,
and limit the maximum size of any message to 32MB
2009-10-06 19:51:45 +01:00
Jan Schmidt
97d6c854ae registry: Also check the binary registry chunk version of the child.
When trying to find a function plugin-scanner, include a check on the
version of the binary registry chunks it sends, to make sure it's
what we understand.
2009-10-06 19:51:45 +01:00
Jan Schmidt
8bf3d8cec2 registry: Support installed/uninstalled plugin-scanner helper
Add a simple version check when starting the plugin-scanner so we can
verify we're talking to one that talks the same language.
First try a plugin-scanner in the installed path, then try one via the
GST_PLUGIN_SCANNER env var if that doesn't work.
Update the uninstalled script.
Install the plugin-scanner to the libexec dir
2009-10-06 19:51:44 +01:00
Jan Schmidt
6eee943b36 Remove checking for and mentions of fork where possible.
We no longer use fork() directly, instead using glib's spawn
functionality, so don't check for it, and don't use it in the
documentation notes.
2009-10-06 19:51:44 +01:00
Jan Schmidt
82aeddbc61 Only load the registry cache once per process.
When updating the registry, we don't need to re-read the registry cache
and waste time replacing all our existing, hopefully identical, plugins
and features that we're about to re-scan anyway.
2009-10-06 19:51:43 +01:00
Jan Schmidt
c7922fb838 Add some more debug the registry.
Add the full set of debug about why it's decided that a given plugin is
stale or not, and include the plugin name when finalizing it.
2009-10-06 19:51:43 +01:00
Jan Schmidt
ef32c11e6e Add restarting of the plugin loader and blacklisting of broken files 2009-10-06 19:51:42 +01:00
Jan Schmidt
38083fb0c8 Plugin loader phase 2
phase 2 - make the plugin loader receive the list of plugins to load and
send back the results asynchronously, so we don't context switch back
and forth so much.
2009-10-06 19:51:42 +01:00
Jan Schmidt
51675e0c2a registry: Add registry helper phase 1
Phase 1 of adding the registry scan helper
2009-10-06 19:51:42 +01:00
Jan Schmidt
1f4e477033 registry: Rearrange some things.
Prepare to land the external plugin helper process
2009-10-06 19:51:41 +01:00
Stefan Kost
4d472935a6 docs: GST_MESSAGE_STREAM_STATUS is implemented nowadays.
Docs were still mention it as "not yet implemented".
2009-09-14 14:09:07 +03:00
Sebastian Dröge
1c253a01a4 introspection: Don't typedef GstTagList to GstStructure for gobject-introspection 2009-09-12 14:35:08 +02:00
Jan Schmidt
fb1e9408b2 Don't use C++ style comments 2009-09-11 22:42:51 +01:00
Jan Schmidt
5128a1980b message: Disable restriction that structure changes are sink pads
The structure_change message was originally emitted on source pads and
then recently changed to be sink pads. This causes a failure in the
gst-python testsuite. Disable the restriction so that the published
behaviour is still allowed.
2009-09-11 22:22:34 +01:00
Stefan Kost
1949360f9b binaryregistry: don't crash in cleaning up on error.
Don't dereference NULL pointers.
2009-09-11 21:20:57 +03:00
David Schleef
61203b825f debug: use dummy code to avoid spurious semicolons
Fixes bug #589173.
2009-09-11 07:40:30 +02:00
Wim Taymans
d1032a2835 whitespace fixes 2009-09-10 11:54:01 +02:00
Wim Taymans
06e27c5209 pluginfeature: improve version check
Also parse the nano of the version and assume that X.Y.Z-1.1 >= X.Y.Z
With this change we can also check development versions against the version of
the upcomming release.
2009-09-10 11:54:01 +02:00
Sebastian Dröge
a4d38192f1 taglist: Add FIXME for 0.11 to not typedef GstTagList to be a GstStructure
See bug #518934.
2009-09-10 10:07:24 +02:00
David Schleef
e810dc0bca Fix typo in inline documentation 2009-09-09 16:29:47 -07:00
Sebastian Dröge
c4f76d5d22 utils: Add a comment to the scaling functions to explain why the rounding is correct 2009-09-09 18:38:29 +02:00
Wim Taymans
6a872b0b14 ghostpad: don't unref NULL caps
Caps can be NULL so don't call unref on it unconditionally, instead use an
existing exit pad for the function.
2009-09-09 16:45:17 +02:00
Sebastian Dröge
8d1aeeb2af utils: Use gcc's __uint128_t for 64bit unsigned integer scaling
This is available in newer gcc releases and it should only exist
on platforms that provide some native 128bit integer arithmetic
instructions.

The x86-64 assembly for this is still kept for non-gcc compilers
that don't provide __uint128_t magic.
2009-09-09 14:59:39 +02:00
Benjamin Otte
fceba1d6fe docs: Fix typo in gst_value_union() 2009-09-07 16:16:19 +02:00
Sebastian Dröge
6bbb833409 introspection: Fix for out-of-tree builds 2009-09-05 12:22:37 +02:00
Sebastian Dröge
0bb8634b37 gstbase: Add gobject-introspection support 2009-09-05 10:28:46 +02:00
Sebastian Dröge
7c031ae4d0 gst: Add gobject-introspection support
Partially fixes bug #550616.
2009-09-05 10:28:46 +02:00
Wim Taymans
1b8a3e0e2d event: whitespace fixes 2009-09-04 11:35:59 +02:00
Aurelien Grimaud
fe87509682 bin: Only unref EOS message after it is not used anymore
Fixes bug #594107.
2009-09-04 09:52:39 +02:00
Wim Taymans
f64243e037 states: post structure change on sinkpads
Post the structure change messages on the sinkpads of the elements. This allows
us to catch unlinked pads earlier without ending up with inconsistent element
degrees.
2009-09-02 18:54:06 +02:00
Wim Taymans
1ab11faf48 bin: avoid false 'loop detected' warnings
When we detect a pad unlink in progress, we will not be updating the degree of
the parent element. This can cause false loop detected warnings because the
degree counter is invalid. Handle this case by marking the iterator as 'dirty'
when we detect a pad unlink and avoid emiting the warning in this case. We have
to continue our state change as good as we can, we will eventually resync when
the pad unlink completed.
2009-09-02 18:13:22 +02:00
Wim Taymans
5ebd818ea3 buffer: whitespace fixes 2009-09-01 16:52:32 +02:00
Jan Schmidt
64fb67f700 gstbin: Don't propagate a NULL cached index to added elements
When an element is added to the bin, only set the index if we have a
cached index, rather than setting a NULL index on elements that might
have a default index object of their own.
2009-09-01 12:08:17 +01:00
Tim-Philipp Müller
0d50805678 element: don't take object lock for g_critical() and flesh out warning message some more 2009-09-01 10:05:21 +01:00
Sebastian Dröge
690f980690 iterator: Only visit the element a single time in the single iterator 2009-09-01 10:20:59 +02:00
Sebastian Dröge
66e5d4ee4b iterator: Fix single iterator for NULL objects and non-GTypeInstance objects
Fixes bug #593719.
2009-09-01 07:28:43 +02:00
Stefan Kost
86edbb954c debug: more detail in wrong-state-on-dispose error.
Also tell in which state the element actualy is and if it is eventualy
state-locked.
2009-09-01 00:06:27 +03:00
Wim Taymans
f90a9a8092 iterator: fix docs for _new_single(). 2009-08-31 20:38:07 +02:00
Tim-Philipp Müller
5dc534c642 docs: it's its
The panda says no!
2009-08-31 17:00:17 +01:00
Mark Nauwelaerts
1b6da398fb registry: fill in elementfactory when registering element
elementfactory field is filled in by gst_element_base_class_init,
but it needs some info set on the element's type, so have it
available prior to class structure creation spinning up.
This affects elements that have a well-known/public type (e.g. pipeline)
and can be created by other means than gst_element_factory_make
(which will also fill in the element's factory).
2009-08-31 15:34:54 +02:00
Wim Taymans
b0c1ebbd08 utils: use 128bits division on x86_64 2009-08-31 11:45:17 +02:00
Руслан Ижбулатов
4ad052fed7 systemclock: fix compilation of win32 code
Fixes #593460.
2009-08-29 11:32:21 +01:00
Wim Taymans
d4012be469 bin: cache index
Cache the last index that was set with _set_index() and return this in the
_get_index() call.
Set the cached index on newly added elements.

Fixes #566881
2009-08-28 18:41:42 +02:00
Wim Taymans
a3f9908266 element: better type checks
Add GST_CLOCK typecheck for _set_clock().
Allow setting NULL indexes on element (clear the current index)
Some whitespace fixes.
2009-08-28 18:36:45 +02:00
Wim Taymans
a9095a2d73 element; whitespace fixes 2009-08-28 18:14:23 +02:00
Wim Taymans
e54e5eb9bb systemclock: use preformance counters on windows
Based on clock implementation by Håvard Graff <havard.graff@tandberg.com>

Try to get the time on windows using the performance counters. These have a much
higher resolution and accuracy than the regular getcurrenttime(). Be careful to
fall back to regular getcurrenttime() or posix clocks when performance counters
are not available.
2009-08-28 17:02:30 +02:00
Wim Taymans
7c054f5f53 systemclock: fix indentation 2009-08-28 16:07:16 +02:00
Wim Taymans
378b1e30e7 utils: use shift instead of division
We can use a shift for scaling the denominator instead of a divide since the
denom is always positive. This avoids having the compiler generate code for the
different rounding rules when scaling negative values.
2009-08-28 15:32:26 +02:00
Wim Taymans
6cf8948663 utils: make inlining explicit 2009-08-28 13:45:38 +02:00
Wim Taymans
d8911f269f utils: optimize for x86_64 with some inline asm
64bit x86 has native 64x64->128 bit multiply that we can use with some inline
assembler to speed up large multiplications.
Use bsr to find the number of leading zeros more efficiently.
2009-08-28 12:43:43 +02:00
Wim Taymans
0ef7a5af52 utils: factor out the leading zero count code 2009-08-28 12:33:37 +02:00
Wim Taymans
2b8d7a54cc utils: pass correction factor around
Pass the correction factor around to get rid of the enum, some code
and some branches.
2009-08-28 12:30:41 +02:00
Wim Taymans
75e8e9eb42 utils: whitespace fixes 2009-08-28 12:21:28 +02:00
Wim Taymans
2b66b29355 utils: move common correction code in a macro 2009-08-28 12:19:34 +02:00
Sebastian Dröge
a1ae8a3a3e iterator: Allow to use NULL as object for the single iterator 2009-08-26 16:51:32 +02:00
Sebastian Dröge
b2cab40745 iterator: API: Add gst_iterator_new_single()
This allows "iteration" over a single object of some type,
which happens often for the GstPadIterIntLinksFunction for example.
2009-08-26 16:39:19 +02:00
David Schleef
6df1127daa It's __GNUC__, not _GNUC_
This appears to be an 8 year old bug.
2009-08-22 15:49:12 -07:00
Tim-Philipp Müller
a01e5b8dca pluginfeature: add guard to gst_plugin_feature_type_name_filter
So we don't just crash if there's a refcounting bug somewhere else.
2009-08-20 11:55:44 +01:00
Sebastian Dröge
884467d493 gstpad: Add some DISABLE_DEPRECATED markers in the header too
The internal links function is deprecated since some time and
there already were GST_REMOVE_DEPRECATED markers in the source file,
now add them to the header too.

Fixes bug #592209.
2009-08-18 14:57:08 +02:00
Antoine Tremblay
c87d551705 gstbin: Don't try to change children's state if they're already in the state we want
Fixes bug #368536.
2009-08-18 11:36:36 +02:00
Sebastian Dröge
a0ed1a44a5 ghostpad: Always get the proxypad's ghostpad via the ghostpad in the src caps change notify handler
Before the signal handler would get the ghostpad passed as second
argument but it could've already been unreffed and destroyed.
This would then lead to crashes and all that.

Now we get the ghostpad from the proxy pad, which we get from the
target pad as it's peer.

Fixes bug #591318.
2009-08-18 11:33:17 +02:00
Kipp Cannon
9cfd9f9374 gstutils: API: Add rounding to nearest and next integer versions of the 64 bit integer scaling functions
The new functions are
gst_util_uint64_scale_int_round()
gst_util_uint64_scale_int_ceil()
gst_util_uint64_scale_round()
gst_util_uint64_scale_ceil()

Fixes bug #590919.
2009-08-13 16:32:28 +02:00
Kipp Cannon
61481c1b79 gstutils: Revert parts of last change to optimize the scaling functions again
Partially fixes bug #590919.
2009-08-13 16:32:28 +02:00
Sebastian Dröge
6a84be95be gstutils: Fix violations of strict-aliasing rules in gst_util_uint64_scale() 2009-08-13 16:32:27 +02:00
Kipp Cannon
3d359729af gstutils: Refactor gst_util_uint64_scale()
This will later make it possible to provide rounding versions
of it without much code duplication.

Partially fixes bug #590919.
2009-08-13 16:32:27 +02:00
Jonas Holmberg
824a0b5f5f bufferlist: update doc string 2009-08-11 15:21:33 +02:00
Sebastian Dröge
276a55fd24 gstsegment: Actually start==stop==segment_start is inside the segment
Still the old code was wrong as it claimed that start==stop<segment_start
would be inside the segment and returned insane clipping differences.
2009-08-11 13:21:35 +02:00
Sebastian Dröge
ca8a0376c5 gstsegment: Clipping should detect start=stop<segment_start as outside the segment
Before it returned that [start,stop] is inside the segment and that the
difference between segment_start and start needs to be clipped. If the
clipping is done on a buffer (like in baseaudiosink) this will result
in the data pointer being at a invalid memory position.

Fixes bug #589849.
2009-08-11 12:59:13 +02:00
Edward Hervey
51bc185f7f gst: Remove dead assignments 2009-08-08 14:47:40 +02:00
Wim Taymans
aa33db85cc gstbuffer: add additional checking for writability
Check for metadata writability when setting caps on buffer or when copying
metadata flags. Only enable these extra assertions in git versions.
This should help us find bad elements.
2009-08-06 18:47:32 +02:00
Tim-Philipp Müller
459c2b9c79 docs: fix Since: tag for new gst_caps_can_intersect() function 2009-08-06 14:11:46 +01:00
Stefan Kost
50fbc34f3f utils: use new _caps_can_intersect() 2009-08-06 15:30:34 +03:00
Stefan Kost
aee208ff30 pad: use new _caps_can_intersect() 2009-08-06 15:30:33 +03:00
Stefan Kost
568202cb47 caps: add gst_caps_can_intersect()
Often we don't need the result of the intersection. Add a variant that only
tries to intersect. It can break out earlier and does less GValue copying.
API: gst_caps_can_intersect()
2009-08-06 15:30:33 +03:00
Stefan Kost
baaf7e5319 caps: split callback for structure intersect into two functions
We call this separately. there is no much benefit in reusing the callback.
Splitting is let us remove a branch also.
2009-08-06 15:30:33 +03:00
Stefan Kost
f5314ecae1 logging: log if we copy caps to be able to track it 2009-08-06 15:30:33 +03:00
Stefan Kost
24517c8975 caps: add comments about g_ptr_array size behaviour
Just explain the behaviour to avoid that someone else is wasting time trying to
improve this too.
2009-08-06 15:30:33 +03:00
Stefan Kost
12f9b39fac pad: use correct variable in test 2009-08-06 15:30:32 +03:00
Stefan Kost
e4ee7831e3 registry: add filename to debug message, like elsewhere 2009-08-06 15:30:32 +03:00
Stefan Kost
b01fb4d230 bin: fix compiler warning about unused var when disabling debug logging 2009-08-06 15:13:36 +03:00
Wim Taymans
950c70c8bb caps: add some more debugging in _replace 2009-08-06 10:52:12 +02:00
Wim Taymans
4146fa2eed pad: Add some more debugging 2009-08-06 10:52:05 +02:00
Wim Taymans
3b26e0c600 ghostpad: small improvements
Unref the target pad after we used it for debugging.
Add some more debug.
Only replace caps when they changed.
2009-08-06 10:51:54 +02:00
John Millikin
3e538b71fb taglist: Add support for ALBUM_ARTIST tag
The "album artist" tag is used when the artist of an entire
album differs from the artist of an individual track; for example,
when a "guest artist" appears on an album, or on compilations.

Fixes bug #590430.
2009-08-06 06:41:58 +02:00
Stefan Kost
1a44bd93d6 gstregistrybinary: add +1 after error checking
The current code made the error checking pointless by changing -1 to 0 in error
cases. Also don't leak a pad template on error.
2009-07-20 20:59:29 +03:00
Wim Taymans
a78199ae5e task: fix taskpool leak
GstTaks does not always unref the taskpool it was created from because it
depends on when the pool provided an ID for joining the task.
Rework some code so that we always unref the pool and optionally join when the
pool provided an id.

Fixes #589127
2009-07-20 18:02:53 +02:00
Stefan Kost
de1e991dec binaryregistry: don't unref NULL if we have an early read error 2009-07-20 11:06:22 +03:00
Tim-Philipp Müller
9459a93cb4 tags: only emit a g_warning() for empty tag strings for git versions
For now, don't show a g_warning() for empty tag strings and NULL
tags with non-git versions; we should wait for the fixes in our
plugin modules to make it into a release before we enable this
unconditionally.
2009-07-16 13:59:07 +01:00
Stefan Kost
f18bee2d8a value: add explanation for shortcut 2009-07-14 12:15:05 +03:00
Stefan Kost
c686053aac value: fix can_intersect to behave like intersect
Add a quick return if two types are the same. Change the check for the
intersection function to be the same as the one used in intersect(). The
later tries both directions.
2009-07-14 08:32:23 +02:00
Tim-Philipp Müller
6049559201 gstinfo: maintain ABI compatibility even if debugging is disabled 2009-07-14 00:04:22 +01:00
Jan Schmidt
7bf3554228 structure: Change NULL and empty string handling
Don't forbid the empty string "" in generic structures, only in taglists.
Properly allow the NULL string by adding special cases for serialising
and deserialising it. prop1=(string)NULL is the NULL string,
prop1=(string)"NULL" is the actual string with the value "NULL"
2009-07-13 18:28:37 +01:00
Sebastian Dröge
5f6bfb816b registry: Use g_build_filename() instead of g_strjoin() with /
This makes sure that the generated filenames use the platform
specific directory separator instead of /.

Fixes bug #587973.
2009-07-08 15:12:07 +02:00
Tim-Philipp Müller
6b2986194b docs: add 'Since' tag for new GST_DEBUG_CATEGORY_GET macro 2009-07-07 20:13:48 +01:00
Stefan Kost
2cb16ad7aa info: allow getting other log categories. Fixes #587417
Add a new macro GST_DEBUG_CATEGORY_GET to get a log category by name. This
allows plugins to use e.g. core categories like PERFORMANCE or CLOCK.
API: GST_DEBUG_CATEGORY_GET
2009-07-06 19:54:30 +01:00
Stefan Kost
4ef0264e66 logging: log object type in message 2009-07-06 19:52:44 +01:00
Tim-Philipp Müller
4d76b175ef docs: fix gtk-doc /*< private >*/ marker 2009-07-02 01:18:57 +01:00
Wim Taymans
30bc0361f1 message: fix parsing of the step done message
Parse the duration field too.
2009-06-30 18:23:29 +02:00
Edward Hervey
b50ba09164 binaryregistry: Use local values in while/for loops, use branch prediction macros 2009-06-30 16:30:07 +02:00
Edward Hervey
3c21f2d86c Spread branch prediction macros.
These are based on profiling several playback scenarios using playbin2.
2009-06-30 16:29:58 +02:00
Edward Hervey
923913984e Use local variables in for/while loops.
This makes the generated code faster since:
* It won't have to read an undirect value (which will most likely be
 outside of the L1/L2 cache)
* We know that value never changes (the compiler has no clue that it doesn't).
2009-06-30 16:29:50 +02:00
Wim Taymans
92b0f32d74 bufferlist: use faster gst_buffer_list_get()
Use the faster gst_buffer_list_get() to get the first buffer of a list.
2009-06-29 11:56:10 +02:00
Wim Taymans
939f6045b1 bufferlist: fix example
The _do function now takes user_data in all cases.
2009-06-29 11:55:14 +02:00
Jonas Holmberg
0e66315f2d docs: fix some typos 2009-06-29 11:07:40 +02:00
Stefan Kost
3e21ddf81f logging: add a performace log category
This category can be used to log slow code path and help auditing the
performance. Add FIXME-0.11 to some questionable categories.
2009-06-29 11:28:01 +03:00
Stefan Kost
dc9ca2e39c structure: fix int->gint to be in sync with the *.h and usage 2009-06-27 16:37:07 +03:00