Commit graph

522 commits

Author SHA1 Message Date
Wim Taymans
092a80f2f0 libs/gst/base/gstbasesink.c: Refactor adjusting the running_time with latency and offset into a separate method.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_adjust_time),
(gst_base_sink_wait_clock), (gst_base_sink_wait_eos),
(gst_base_sink_do_sync), (gst_base_sink_chain_unlocked):
Refactor adjusting the running_time with latency and offset into a
separate method.
When doing clipping, we still want to use the subclass get_times method,
just in case the DURATION or TIMESTAMP are not set.
2008-05-19 11:11:49 +00:00
Tim-Philipp Müller
8ccf150874 libs/gst/base/gstbasesrc.c: Use right error code when typefinding fails, so we can use the default (translated) error...
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_start):
Use right error code when typefinding fails, so we can use
the default (translated) error messages.
2008-05-19 10:29:57 +00:00
Wim Taymans
638ecae590 libs/gst/base/gstbasesrc.c: When the subclass did not set caps on outgoing buffers, configure the caps we negotiated ...
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_get_range),
(gst_base_src_start):
When the subclass did not set caps on outgoing buffers, configure the
caps we negotiated on the source pad.
When the typefind helper does not find caps, error out properly instead
of doing things with NULL caps.
2008-05-19 10:03:09 +00:00
Sebastian Dröge
654ba215df libs/gst/base/gsttypefindhelper.c: Sort buffer cache list by end offsets. This makes sure that we don't stop to searc...
Original commit message from CVS:
* libs/gst/base/gsttypefindhelper.c: (helper_find_peek):
Sort buffer cache list by end offsets. This makes sure that we don't
stop to search for a cached buffer that contains the requested data
too early.
Also read a minimum of 4k bytes instead of 512 bytes as this is a bit
more efficient. Fixes bug #459862.
2008-05-16 21:09:45 +00:00
Sjoerd Simons
af64309f63 libs/gst/base/gstbasetransform.c: Check the caps of the buffer returned by gst_pad_alloc_buffer() and fall back to de...
Original commit message from CVS:
Patch by: Sjoerd Simons <sjoerd at luon dot net>
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_buffer_alloc):
Check the caps of the buffer returned by gst_pad_alloc_buffer() and
fall back to default negotiation in the chain function if the caps
are different from what was requested. Fixes bug #526768.
2008-05-13 07:11:05 +00:00
Sjoerd Simons
849c17d326 libs/gst/base/gstbasetransform.c: Don't passthrough buffer allocation too easily if the caps change.
Original commit message from CVS:
Based on a patch by: Sjoerd Simons <sjoerd at luon dot net>
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_buffer_alloc):
Don't passthrough buffer allocation too easily if the caps change.
This breaks when working in passthrough mode and upstream changes
it's caps. Fixes bug #526768.
2008-05-08 05:55:34 +00:00
Ole André Vadla Ravnås
e1d03c3caf libs/gst/base/gstbasesrc.c (gst_base_src_default_query): Declaration after statement fix for compilers like MSVC.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c (gst_base_src_default_query):
Declaration after statement fix for compilers like MSVC.
2008-05-07 19:15:14 +00:00
Wim Taymans
640d16a2bc libs/gst/base/gstadapter.c: Small code cleanup.
Original commit message from CVS:
* libs/gst/base/gstadapter.c: (gst_adapter_available_fast):
Small code cleanup.
* libs/gst/base/gstbasesink.c: (gst_base_sink_query_latency),
(gst_base_sink_set_flushing):
* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek):
Fix some comments.
2008-05-07 09:47:27 +00:00
Sebastian Dröge
e9e0d0f0eb Don't allow negative sizes when allocating new buffers.
Original commit message from CVS:
* gst/gstpad.c: (gst_pad_alloc_buffer_full):
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_prepare_output_buffer):
Don't allow negative sizes when allocating new buffers.
Fixes bug #461253.
2008-05-06 08:43:57 +00:00
Stefan Kost
f368d089df libs/gst/base/: Fix doc typos and unify caps a bit.
Original commit message from CVS:
* libs/gst/base/gstbasesink.h:
* libs/gst/base/gstbasesrc.h:
* libs/gst/base/gstbasetransform.h:
* libs/gst/base/gstcollectpads.h:
Fix doc typos and unify caps a bit.
2008-04-25 13:22:32 +00:00
Wim Taymans
d8d6ab79cb libs/gst/base/gstbasesink.c: Rearrange the latency query code. We always want to do the upstream query, even if we ar...
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_query_latency),
(gst_base_sink_send_event):
Rearrange the latency query code. We always want to do the upstream
query, even if we are not live so that the upstream elements can get the
latency results too. If we fail doing the query and we are live, we
return TRUE afterwards.
2008-04-25 07:22:16 +00:00
Sebastian Dröge
3e914a83b3 gst/gstutils.*: API: Deprecate gst_atomic_int_set(), g_atomic_int_set() should be used now that we depend on new enou...
Original commit message from CVS:
* gst/gstutils.c:
* gst/gstutils.h:
API: Deprecate gst_atomic_int_set(), g_atomic_int_set() should be used
now that we depend on new enough GLib.
* gst/gstcaps.c: (gst_static_caps_get):
* gst/gstclock.c: (gst_clock_entry_new):
* gst/gstinfo.c: (_gst_debug_init), (gst_debug_set_colored),
(gst_debug_set_default_threshold), (_gst_debug_category_new),
(gst_debug_category_set_threshold):
* libs/gst/base/gstbasesink.c: (gst_base_sink_init),
(gst_base_sink_set_qos_enabled):
* libs/gst/net/gstnettimeprovider.c:
(gst_net_time_provider_set_property):
Use g_atomic_int_set() instead of gst_atomic_int_set().
2008-04-17 07:14:46 +00:00
Wim Taymans
08beab1f20 docs/design/part-buffering.txt: Fix some typos and set the estimated total for push mode to -1.
Original commit message from CVS:
* docs/design/part-buffering.txt:
Fix some typos and set the estimated total for push mode to -1.
* gst/gstquery.c: (gst_query_new_buffering):
Set buffering-left to 0 as we're not buffering by default.
* libs/gst/base/gstbasesrc.c: (gst_base_src_default_query):
Implement BUFFERING query.
2008-04-09 18:26:15 +00:00
Sebastian Dröge
cd62b1a3b4 libs/gst/base/gstbasetransform.c: Also unset the GAP flag on buffers if we're working inplace but the element is not ...
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_prepare_output_buffer):
Also unset the GAP flag on buffers if we're working inplace but
the element is not GAP-aware.
Mark a comment as FIXME 0.11.
2008-03-31 10:21:57 +00:00
Mark Nauwelaerts
7850967084 Small documentation fixes. Fixes #523978.
Original commit message from CVS:
Patch by: Mark Nauwelaerts <manauw at skynet be>
* gst/gstclock.h:
* libs/gst/base/gstbasesrc.h:
* libs/gst/base/gstbasetransform.c:
* libs/gst/check/gstcheck.c:
Small documentation fixes. Fixes #523978.
2008-03-24 16:44:25 +00:00
Rene Stadler
ec1b8c7eb6 libs/gst/base/gstbasetransform.c: Fix confusing documentation.
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_set_gap_aware): Fix confusing documentation.
2008-03-23 14:24:48 +00:00
Sebastian Dröge
b0346dff44 Define G_PARAM_STATIC_STRINGS if it's undefined (GLib < 2.13.0) and use it everywhere for GParamSpecs that use static...
Original commit message from CVS:
* docs/pwg/advanced-dparams.xml:
* docs/pwg/building-props.xml:
* docs/pwg/other-source.xml:
* gst/glib-compat.h:
* gst/gstbin.c: (gst_bin_class_init):
* gst/gstclock.c: (gst_clock_class_init):
* gst/gstindex.c: (gst_index_class_init):
* gst/gstobject.c: (gst_object_class_init):
* gst/gstpad.c: (gst_pad_class_init):
* gst/gstpipeline.c: (gst_pipeline_class_init):
* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init):
* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init):
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_class_init):
* libs/gst/base/gstdataqueue.c: (gst_data_queue_class_init):
* libs/gst/check/gstcheck.c: (_gst_check_fault_handler_restore),
(_gst_check_fault_handler_sighandler),
(_gst_check_fault_handler_setup), (gst_check_init):
* libs/gst/controller/gstcontroller.c:
(_gst_controller_class_init):
* libs/gst/controller/gstlfocontrolsource.c:
(gst_lfo_control_source_class_init):
* libs/gst/net/gstnetclientclock.c:
(gst_net_client_clock_class_init):
* libs/gst/net/gstnettimeprovider.c:
(gst_net_time_provider_class_init):
* plugins/elements/gstcapsfilter.c: (gst_capsfilter_class_init):
* plugins/elements/gstfakesink.c: (gst_fake_sink_class_init):
* plugins/elements/gstfakesrc.c: (gst_fake_src_class_init):
* plugins/elements/gstfdsink.c: (gst_fd_sink_class_init):
* plugins/elements/gstfdsrc.c: (gst_fd_src_class_init):
* plugins/elements/gstfilesink.c: (gst_file_sink_class_init):
* plugins/elements/gstfilesrc.c: (gst_file_src_class_init):
* plugins/elements/gstidentity.c: (gst_identity_class_init):
* plugins/elements/gstmultiqueue.c: (gst_multi_queue_class_init):
* plugins/elements/gstqueue.c: (gst_queue_class_init):
* plugins/elements/gsttee.c: (gst_tee_class_init):
* plugins/elements/gsttypefindelement.c:
(gst_type_find_element_class_init):
* plugins/indexers/gstfileindex.c: (gst_file_index_class_init):
Define G_PARAM_STATIC_STRINGS if it's undefined (GLib < 2.13.0) and
use it everywhere for GParamSpecs that use static strings (i.e. all).
This gives us less memory usage, fewer allocations and thus less
memory defragmentation. Fixes bug #523806.
2008-03-22 14:56:17 +00:00
Wim Taymans
f3850aca81 libs/gst/base/gstbasesink.c: Small doc update.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init):
Small doc update.
2008-02-29 15:39:44 +00:00
Sebastian Dröge
b997b0545a Correct all relevant warnings found by the sparse semantic code analyzer. This include marking several symbols static...
Original commit message from CVS:
* gst/gstconfig.h.in:
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_read_buffer):
* libs/gst/check/gstcheck.c: (gst_check_log_message_func),
(gst_check_log_critical_func), (gst_check_drop_buffers),
(gst_check_element_push_buffer_list):
* libs/gst/controller/gstcontroller.c: (gst_controller_get),
(gst_controller_get_type):
* libs/gst/controller/gsthelper.c: (gst_object_control_properties),
(gst_object_get_controller), (gst_object_get_control_source):
* libs/gst/controller/gstinterpolationcontrolsource.c:
(gst_interpolation_control_source_new):
* libs/gst/controller/gstlfocontrolsource.c:
(gst_lfo_control_source_new):
* libs/gst/dataprotocol/dataprotocol.c:
(gst_dp_event_from_packet_0_2):
* plugins/elements/gstfdsrc.c:
* plugins/elements/gstmultiqueue.c:
* plugins/elements/gsttee.c:
* plugins/elements/gsttypefindelement.c:
* plugins/indexers/gstfileindex.c: (_file_index_id_save_xml),
(gst_file_index_add_association):
* plugins/indexers/gstmemindex.c:
* tests/benchmarks/gstpollstress.c: (mess_some_more):
* tests/check/elements/queue.c: (setup_queue):
* tests/check/gst/gstpipeline.c:
* tests/check/libs/collectpads.c: (setup), (teardown),
(gst_collect_pads_suite):
* tests/examples/adapter/adapter_test.c:
* tests/examples/metadata/read-metadata.c: (make_pipeline):
* tests/examples/xml/createxml.c:
* tests/examples/xml/runxml.c:
* tools/gst-inspect.c:
* tools/gst-run.c:
Correct all relevant warnings found by the sparse semantic code
analyzer. This include marking several symbols static, using
NULL instead of 0 for pointers, not using variable sized arrays
on the stack, moving variable declarations to the beginning of
a block and using "foo (void)" instead of "foo ()" for declarations.
2008-02-29 12:41:33 +00:00
Stefan Kost
b1a800fa5f Add sub-buffer functions to collectpads. Fixes #516187.
Original commit message from CVS:
* docs/libs/gstreamer-libs-sections.txt:
* libs/gst/base/gstcollectpads.c:
* libs/gst/base/gstcollectpads.h:
Add sub-buffer functions to collectpads. Fixes #516187.
API: gst_collect_pads_take_buffer(), gst_collect_pads_read_buffer()
2008-02-15 13:15:17 +00:00
Sebastian Dröge
2faa733276 Revert previous changes to the behaviour of GstPadTemplates, etc and the possiblity to call them in class_init as it ...
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_get_type), (gst_bin_base_init),
(gst_bin_class_init):
* gst/gstelement.c: (gst_element_base_class_init),
(gst_element_class_add_pad_template):
* gst/gstpadtemplate.c: (gst_pad_template_init):
* gst/gstpipeline.c: (gst_pipeline_get_type),
(gst_pipeline_base_init), (gst_pipeline_class_init):
* libs/gst/base/gstbasesink.c:
* libs/gst/base/gstbasesrc.c: (gst_base_src_get_type),
(gst_base_src_base_init), (gst_base_src_class_init):
* plugins/elements/gstcapsfilter.c: (gst_capsfilter_base_init),
(gst_capsfilter_class_init):
* plugins/elements/gstfakesink.c: (gst_fake_sink_base_init),
(gst_fake_sink_class_init):
* plugins/elements/gstfakesrc.c: (gst_fake_src_base_init),
(gst_fake_src_class_init):
* plugins/elements/gstfdsink.c: (gst_fd_sink_base_init),
(gst_fd_sink_class_init):
* plugins/elements/gstfdsrc.c: (gst_fd_src_base_init),
(gst_fd_src_class_init):
* plugins/elements/gstfilesink.c: (gst_file_sink_base_init),
(gst_file_sink_class_init):
* plugins/elements/gstfilesrc.c: (gst_file_src_base_init),
(gst_file_src_class_init):
* plugins/elements/gstidentity.c: (gst_identity_base_init),
(gst_identity_class_init):
* plugins/elements/gstmultiqueue.c: (gst_multi_queue_base_init),
(gst_multi_queue_class_init):
* plugins/elements/gstqueue.c: (gst_queue_base_init),
(gst_queue_class_init):
* plugins/elements/gsttee.c: (gst_tee_base_init),
(gst_tee_class_init):
* plugins/elements/gsttypefindelement.c:
(gst_type_find_element_base_init),
(gst_type_find_element_class_init):
* tests/check/gst/gstelement.c: (gst_element_suite):
Revert previous changes to the behaviour of GstPadTemplates, etc
and the possiblity to call them in class_init as it breaks too
many elements. Reopens bug #491501.
Should be applied again for 0.11, thus added a few FIXME 0.11 at
several places.
2008-02-05 14:15:15 +00:00
Sebastian Dröge
9db28f8537 Don't use base_init where not absolutely necessary. For example it's not necessary anymore for adding pad templates o...
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_get_type), (gst_bin_class_init):
* gst/gstpipeline.c: (gst_pipeline_get_type),
(gst_pipeline_class_init):
* libs/gst/base/gstbasesink.c: (gst_base_sink_get_type),
(gst_base_sink_class_init):
* libs/gst/base/gstbasesrc.c: (gst_base_src_get_type),
(gst_base_src_class_init):
* libs/gst/base/gstbasetransform.c: (gst_base_transform_get_type),
(gst_base_transform_class_init):
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_base_init),
(gst_collect_pads_class_init):
* libs/gst/base/gstdataqueue.c: (gst_data_queue_get_type):
* libs/gst/net/gstnettimeprovider.c:
(gst_net_time_provider_base_init),
(gst_net_time_provider_class_init):
* plugins/elements/gstcapsfilter.c: (gst_capsfilter_base_init),
(gst_capsfilter_class_init):
* plugins/elements/gstfakesink.c: (gst_fake_sink_base_init),
(gst_fake_sink_class_init):
* plugins/elements/gstfakesrc.c: (gst_fake_src_base_init),
(gst_fake_src_class_init):
* plugins/elements/gstfdsink.c: (gst_fd_sink_base_init),
(gst_fd_sink_class_init):
* plugins/elements/gstfdsrc.c: (gst_fd_src_base_init),
(gst_fd_src_class_init):
* plugins/elements/gstfilesink.c: (gst_file_sink_base_init),
(gst_file_sink_class_init):
* plugins/elements/gstfilesrc.c: (gst_file_src_base_init),
(gst_file_src_class_init):
* plugins/elements/gstidentity.c: (gst_identity_base_init),
(gst_identity_class_init):
* plugins/elements/gstmultiqueue.c: (gst_multi_queue_base_init),
(gst_multi_queue_class_init):
* plugins/elements/gstqueue.c: (gst_queue_base_init),
(gst_queue_class_init):
* plugins/elements/gsttee.c: (gst_tee_base_init),
(gst_tee_class_init):
* plugins/elements/gsttypefindelement.c:
(gst_type_find_element_base_init),
(gst_type_find_element_class_init):
Don't use base_init where not absolutely necessary. For example it's
not necessary anymore for adding pad templates or setting element
details.
Leave empty base_init functions in several places as GST_BOILERPLATE
still defines and uses them.
2008-02-03 12:04:37 +00:00
Wim Taymans
ba976a1864 libs/gst/base/gstbasesink.c: Add fixme regarding EOS in pull mode.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_loop),
(gst_base_sink_get_position_paused):
Add fixme regarding EOS in pull mode.
Fix position reporting in PAUSED for negative rates.
2008-02-01 10:27:10 +00:00
Stefan Kost
e8d69fc551 libs/gst/base/gstbasetransform.c: Fix long property description for QoS.
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c:
Fix long property description for QoS.
2008-01-14 11:40:55 +00:00
Wim Taymans
0c964dd348 libs/gst/base/gstbasesrc.c: The start segment for reverse playback goes from start to last_stop.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek),
(gst_base_src_loop):
The start segment for reverse playback goes from start to last_stop.
2008-01-09 12:25:17 +00:00
Tim-Philipp Müller
58338a041b libs/gst/base/gstbasetransform.c: Print element name with g_warning() if there's a problem with the unit size.
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_transform_size):
Print element name with g_warning() if there's a problem
with the unit size.
2008-01-08 21:13:58 +00:00
Wim Taymans
f473d72719 libs/gst/base/gstbasesrc.c: Don't update the last_stop position in do_seek, that's the position we did a seek to.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_default_do_seek),
(gst_base_src_loop):
Don't update the last_stop position in do_seek, that's the position we
did a seek to.
Read backwards when we have a negative rate.
* tests/check/elements/filesrc.c: (event_func), (wait_eos),
(setup_filesrc), (cleanup_filesrc), (GST_START_TEST),
(filesrc_suite):
Add check for reverse reading.
2008-01-07 11:23:00 +00:00
Wim Taymans
b0076d395d libs/gst/base/gstbasesrc.c: Allow sending EOS to the source to make it send out an EOS event from the streaming thread.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_send_event),
(gst_base_src_get_range), (gst_base_src_pad_get_range),
(gst_base_src_loop), (gst_base_src_set_flushing),
(gst_base_src_change_state):
Allow sending EOS to the source to make it send out an EOS event from
the streaming thread.
Update docs and deprecate the old NULL/READY shutdown method.
* tests/check/libs/basesrc.c: (GST_START_TEST),
(gst_basesrc_suite):
Add unit test for controlled shutdown.
2007-12-19 17:49:38 +00:00
Wim Taymans
8a695165c2 libs/gst/base/gstbasesrc.c: Make _wait_playing() not check any variables so that we can call this function from subcl...
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_wait_playing),
(gst_base_src_perform_seek), (gst_base_src_get_range),
(gst_base_src_set_playing), (gst_base_src_change_state):
Make _wait_playing() not check any variables so that we can call this
function from subclasses. Move the checks elsewhere similar to
_wait_preroll() in basesink.
Add some debugging.
Only signal the LIVE cond when we are going back to PLAYING.
2007-12-17 16:38:40 +00:00
Sebastian Dröge
5f55ba792a API: Add gst_base_transform_set_gap_aware() to control whether the element correctly handles GST_BUFFER_FLAG_GAP or s...
Original commit message from CVS:
* docs/libs/gstreamer-libs-sections.txt:
* libs/gst/base/gstbasetransform.c: (gst_base_transform_init),
(gst_base_transform_prepare_output_buffer),
(gst_base_transform_set_gap_aware):
* libs/gst/base/gstbasetransform.h:
API: Add gst_base_transform_set_gap_aware() to control whether
the element correctly handles GST_BUFFER_FLAG_GAP or shouldn't
get buffers with this flag at all. Fixes #503231.
2007-12-14 16:52:38 +00:00
Stefan Kost
55bfc68e93 libs/gst/base/: Replace gst_pad_get_parent by GST_OBJECT_PARENT inside streaming thread. Correct log message in gstba...
Original commit message from CVS:
* libs/gst/base/gstbasesink.c:
* libs/gst/base/gstbasesrc.c:
* libs/gst/base/gstbasetransform.c:
Replace gst_pad_get_parent by GST_OBJECT_PARENT inside streaming
thread. Correct log message in gstbasesrc.c.
2007-12-13 16:49:54 +00:00
Stefan Kost
428a4e9669 Change GST_GET_TIMESTAMP into gst_util_get_timestamp and replace all uses as we don't have HAVE_POSIX_TIMERS in publi...
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstclock.h:
* gst/gstdebugutils.c:
* gst/gstinfo.c:
* gst/gstutils.c:
* gst/gstutils.h:
* libs/gst/base/gstbasesink.c:
* tools/gst-launch.c:
Change GST_GET_TIMESTAMP into gst_util_get_timestamp and replace all
uses as we don't have HAVE_POSIX_TIMERS in public headers.
Thanks Tim for spotting.
2007-12-11 20:23:58 +00:00
Stefan Kost
8e2d76084f libs/gst/base/gstbasesink.c: Use new API to get elapsed time.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c:
Use new API to get elapsed time.
2007-11-28 13:02:30 +00:00
Wim Taymans
b4c503929a libs/gst/base/gstbasesink.c: Only send upstream events upstream. Fixes #498746.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_send_event):
Only send upstream events upstream. Fixes #498746.
2007-11-21 13:47:52 +00:00
Wim Taymans
2c51884bb8 libs/gst/base/gstbasesink.c: Don't hold the object lock when unreffing a buffer because it could cause a deadlock whe...
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_set_last_buffer):
Don't hold the object lock when unreffing a buffer because it could
cause a deadlock when the finalize function wants to grab the object
lock too. Fixes #495133.
2007-11-09 14:05:02 +00:00
Wim Taymans
c28238d8fe gst/gstsegment.c: Also accumulate time correctly when doing reverse playback. Fixes #488201,
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_set_newsegment_full),
(gst_segment_to_stream_time), (gst_segment_to_running_time):
Also accumulate time correctly when doing reverse playback. Fixes
#488201,
When converting to running and stream time, use default values for
start/stop/time/accum when comparing different formats. Fixes #494245.
* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times):
Do running/stream time in TIME format.
* tests/check/gst/gstsegment.c: (GST_START_TEST),
(gst_segment_suite):
2 new unit tests for segment accumulation.
2007-11-09 11:56:41 +00:00
Wim Taymans
8b5019bb54 libs/gst/base/gstbasesrc.c: Unify flushing code, remove some old unlock code that is no longer used.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_default_query),
(gst_base_src_perform_seek), (gst_base_src_default_event),
(gst_base_src_set_flushing), (gst_base_src_activate_push),
(gst_base_src_activate_pull):
Unify flushing code, remove some old unlock code that is no longer used.
Take the streaming lock when seeking to avoid races. Fixes #492729.
Added some more comments.
2007-11-06 17:18:14 +00:00
Wim Taymans
9e50fa303e libs/gst/base/gstbasesink.c: Don't try to report a 0 position when we don't know, return -1 and FALSE instead. This m...
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times),
(gst_base_sink_do_sync), (gst_base_sink_preroll_object),
(gst_base_sink_event), (gst_base_sink_get_position_last),
(gst_base_sink_get_position_paused), (gst_base_sink_get_position),
(gst_base_sink_change_state):
Don't try to report a 0 position when we don't know, return -1 and FALSE
instead. This mostly happens when we are prerolling.
Make sure we can report the right position before we post the ASYNC_DONE
message so that a message handler can query position without races.
* tests/check/generic/sinks.c: (send_eos), (GST_START_TEST),
(async_done_handoff), (async_done_func), (send_buffer),
(async_done_eos_func), (gst_sinks_suite):
Add two tests for the above.
2007-11-06 10:33:22 +00:00
Stefan Kost
cb909e5a85 libs/gst/base/gstbasesrc.c: Its "Since:" and not "@Since:". And remove an superflous cast.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c:
Its "Since:" and not "@Since:". And remove an superflous cast.
2007-10-31 13:01:34 +00:00
Wim Taymans
2715cf6e28 Add a new last-buffer property that contains the last buffer used in basesink for preroll or rendering. useful for ma...
Original commit message from CVS:
* docs/libs/gstreamer-libs-sections.txt:
* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init),
(gst_base_sink_get_last_buffer), (gst_base_sink_set_last_buffer),
(gst_base_sink_get_property), (gst_base_sink_render_object),
(gst_base_sink_preroll_object),
(gst_base_sink_queue_object_unlocked), (gst_base_sink_event),
(gst_base_sink_change_state):
* libs/gst/base/gstbasesink.h:
Add a new last-buffer property that contains the last buffer used in
basesink for preroll or rendering. useful for making snapshots.
API: gst_base_sink_get_last_buffer()
API: GstBaseSink::last-buffer
2007-10-30 18:30:13 +00:00
Wim Taymans
cf21248714 libs/gst/base/gstbasesink.c: Reset last seen position after flushing so that we don't report the old position anymore.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_event):
Reset last seen position after flushing so that we don't report the old
position anymore.
2007-10-25 17:20:47 +00:00
Wim Taymans
8a96f93dc2 libs/gst/base/gstbasesink.*: Add function to wait for EOS, subclasses can use this to correctly wait for devices to d...
Original commit message from CVS:
Patch inspired by: Benoit Fouet <benoit dot fouet at purplelabs dot com>
* libs/gst/base/gstbasesink.c: (gst_base_sink_wait_eos),
(gst_base_sink_event):
* libs/gst/base/gstbasesink.h:
Add function to wait for EOS, subclasses can use this to correctly wait
for devices to drain before performing the EOS logic. Fixes #485343.
API: gst_base_sink_wait_eos()
2007-10-10 15:18:44 +00:00
Wim Taymans
de5d9793d7 libs/gst/base/gstbasesink.c: When we received EOS and are waiting for when to post the EOS message, our state is prer...
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_flush),
(gst_base_sink_queue_object_unlocked),
(gst_base_sink_queue_object), (gst_base_sink_event),
(gst_base_sink_needs_preroll), (gst_base_sink_chain_unlocked):
When we received EOS and are waiting for when to post the EOS message,
our state is prerolled and we should not return ASYNC.
Reorganize some code paths to implement this behavior.
* tests/check/generic/sinks.c: (send_eos), (GST_START_TEST),
(gst_sinks_suite):
Add unit test to verify above EOS fix.
2007-10-08 17:05:06 +00:00
Wim Taymans
71f92e2b3e libs/gst/base/gstbasesink.c: Don't try to preroll non-async elements after a flush.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_event),
(gst_base_sink_get_position):
Don't try to preroll non-async elements after a flush.
Subtract latency form clock times when reporting position.
2007-10-08 10:21:15 +00:00
Wim Taymans
04fb0735f9 libs/gst/base/gstbasesrc.c: Rework the locking of basesrc in a similar fashion to basesink. We basically have one loc...
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_wait_playing),
(gst_base_src_set_live), (gst_base_src_is_live),
(gst_base_src_query_latency), (gst_base_src_perform_seek),
(gst_base_src_default_event), (gst_base_src_wait),
(gst_base_src_do_sync), (gst_base_src_get_range),
(gst_base_src_pad_get_range), (gst_base_src_loop),
(gst_base_src_unlock), (gst_base_src_unlock_stop),
(gst_base_src_set_flushing), (gst_base_src_set_playing),
(gst_base_src_activate_push), (gst_base_src_activate_pull),
(gst_base_src_change_state):
Rework the locking of basesrc in a similar fashion to basesink. We
basically have one lock (LIVE_LOCK) protecting the dataflow. This allows
us to handle live sources and semi live ones much better.
Simplify flushing.
Fix unlocking when seeking, shutting down and pausing in live sources.
2007-10-05 14:40:06 +00:00
Stefan Kost
4331d3880e libs/gst/base/gsttypefindhelper.c: Speedup typefinding. This is work in progress (see #459862).
Original commit message from CVS:
* libs/gst/base/gsttypefindhelper.c:
Speedup typefinding. This is work in progress (see #459862).
2007-10-03 12:05:17 +00:00
Wim Taymans
d39d3debfc libs/gst/base/gstbasesrc.c: Call unlock for live sources so that they can't get stuck in _create and produce a buffer...
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_do_sync),
(gst_base_src_get_range), (gst_base_src_change_state):
Call unlock for live sources so that they can't get stuck in _create and
produce a buffer before they are set back to PLAYING.
2007-10-02 15:20:58 +00:00
Wim Taymans
03cce63d25 libs/gst/base/gstbasesrc.c: Also initialize the counter that calculates the first timestamp on a buffer correctly for...
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_change_state):
Also initialize the counter that calculates the first timestamp on a
buffer correctly for non-live sources.
2007-10-01 17:59:21 +00:00
Wim Taymans
5865af927f libs/gst/base/gstbasesink.c: Return correct gboolean from query function.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_query_latency),
(gst_base_sink_event), (gst_base_sink_change_state):
Return correct gboolean from query function.
2007-09-24 12:46:17 +00:00
Wim Taymans
af6e6cf1cc libs/gst/base/gstbasesink.c: Simplify latency query.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_query_latency),
(gst_base_sink_event), (gst_base_sink_query),
(gst_base_sink_change_state):
Simplify latency query.
When not synchronizing, we can report latency without querying the peer
element.
2007-09-24 12:29:23 +00:00