Commit graph

45 commits

Author SHA1 Message Date
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
Руслан Ижбулатов
18a34288cf segment: fix include order to get config.h before _mingw.h
config.h must always be included before any other includes, either
directly or indirectly via gst_private.h. Fixes #585733.
2009-06-14 20:00:49 +01:00
Wim Taymans
afeec70eff segment: make conversion more precise
Make sure the conversion from and the conversion to give the same results.
2009-06-09 10:23:23 +02:00
Wim Taymans
0e74bfe248 segment: add gst_segment_set_running_time
Added new method for closing the segment to a specific running time.

API: GstSegment::gst_segment_set_running_time()
2009-06-04 12:53:20 +02:00
Wim Taymans
92984a116b segment: add method for converting to position
Add gst_segment_to_position() that converts a running_time to a position in the
segment. A faulty variant of this function is currently used in inputselector
but we'll need it for frame stepping too.

API: GstSegment::gst_segment_to_position()
2009-06-03 19:06:30 +02:00
Mark Nauwelaerts
66295d508b Use g_slice_copy instead of g_slice_dup.
A (buggy) glib g_slice_dup macro may cause compiler warnings on e.g. x86_64.
2009-04-03 13:47:35 +02:00
Sebastian Dröge
10bc5670a3 segment: Use g_slice_dup() now 2009-03-26 11:17:01 +01:00
Wim Taymans
d2e5ffde24 gst/gstsegment.c: Set the last_stop to a more meaningful position when configuring the segment. ie. the start/stop of...
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_set_newsegment_full):
Set the last_stop to a more meaningful position when configuring the
segment. ie. the start/stop of the segment or clipped against the
updated segment boundaries.
* tests/check/gst/gstsegment.c: (GST_START_TEST):
Add some unit tests for the last_stop.
2008-10-23 09:49:07 +00:00
Stefan Kost
f2da156af7 gst/gstevent.c: Use gst_format_get_name() to improve debug output.
Original commit message from CVS:
* gst/gstevent.c:
Use gst_format_get_name() to improve debug output.
* gst/gstpreset.c:
Remove #ifdef'ed code. Add TODO comment.
* gst/gstsegment.c:
Add debug output to ease spotting format != segment.format assertions.
2008-07-01 05:53:32 +00:00
Tim-Philipp Müller
077450a434 No, let's not use g_slice_{dup|copy} here, since they only exist since GLib 2.14 and we still depend only on >= 2.12....
Original commit message from CVS:
* gst/gstsegment.c:
* tests/check/gst/gstsegment.c:
No, let's not use g_slice_{dup|copy} here, since they only exist
since GLib 2.14 and we still depend only on >= 2.12. Also add
unit test for gst_segment_copy().
2008-05-09 20:48:24 +00:00
Stefan Kost
6e367f59e2 gst/gstsegment.c: The glib macro seems to be borked. Use g_slice_copy directly and cast in the hope that this fixes t...
Original commit message from CVS:
* gst/gstsegment.c:
The glib macro seems to be borked. Use g_slice_copy directly and cast
in the hope that this fixes the warning on 64bit.
2008-04-23 10:14:38 +00:00
Stefan Kost
7bb59c7efc gst/gstsegment.c: Document the new function. Use g_slice_dup() (no need for gst_segment_init()).
Original commit message from CVS:
* gst/gstsegment.c:
Document the new function. Use g_slice_dup() (no need for
gst_segment_init()).
2008-04-23 07:08:53 +00:00
José Alburquerque
9b3f546832 Expose gst_segment_copy() to make things easier for the c++ bindings.
Original commit message from CVS:
Patch by:  José Alburquerque <jaalburqu at svn dot gnome dot org>
* docs/gst/gstreamer-sections.txt:
* gst/gstsegment.c:
* gst/gstsegment.h:
* win32/common/libgstreamer.def:
Expose gst_segment_copy() to make things easier for the c++ bindings.
Fixes #518932.
API: gst_segment_copy()
2008-04-09 22:37:22 +00:00
Sebastian Dröge
1e0128c47e configure.ac: Require GLib 2.12.
Original commit message from CVS:
* configure.ac:
Require GLib 2.12.
* gst/glib-compat-private.h:
* gst/gstcaps.c: (gst_caps_new_empty), (_gst_caps_free):
* gst/gstclock.c: (gst_clock_entry_new), (_gst_clock_id_free):
Unconditionally use GSlice for allocation.
* gst/gstpoll.c: (gst_poll_new), (gst_poll_free):
* gst/gstsegment.c: (gst_segment_new), (gst_segment_free):
* gst/gststructure.c: (gst_structure_id_empty_new_with_size),
(gst_structure_free):
Use GSlice for allocation.
2008-04-01 13:55:20 +00:00
Wim Taymans
4203512af9 gst/gstsegment.c: Improve some comment.
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_set_seek),
(gst_segment_to_stream_time):
Improve some comment.
Update variables where it makes more sense.
2008-02-29 15:22:34 +00:00
Wim Taymans
a332964e6c docs/design/part-synchronisation.txt: Small updates.
Original commit message from CVS:
* docs/design/part-synchronisation.txt:
Small updates.
* gst/gstsegment.c: (gst_segment_set_seek),
(gst_segment_set_newsegment_full), (gst_segment_to_stream_time),
(gst_segment_to_running_time):
The seek format can be different from the segment format when the start
and stop values are not to be updated, when we only do a rate change for
example.
* tests/check/gst/gstsegment.c: (GST_START_TEST),
(gst_segment_suite):
Add a testcase for the rate-only seeks, checking that the format is
correctly ignored when start and stop are not updated.
2007-12-19 12:48:18 +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
fbceb95076 gst/gstobject.c: Fix signal signature.
Original commit message from CVS:
* gst/gstobject.c: (gst_object_class_init):
Fix signal signature.
* gst/gstsegment.c:
Add small clarification in the api docs.
* plugins/elements/gstfilesrc.c: (gst_file_src_set_location):
States are protected with object lock.
2007-06-05 16:25:06 +00:00
Edward Hervey
1a6e50f5ca gst/gstsegment.c: Small doc fix.
Original commit message from CVS:
* gst/gstsegment.c:
Small doc fix.
2007-05-17 11:05:22 +00:00
Wim Taymans
5b6258fa8d docs/design/part-seeking.txt: Some small update.
Original commit message from CVS:
* docs/design/part-seeking.txt:
Some small update.
* gst/gstsegment.c: (gst_segment_set_seek):
Revert old bogus change that should make seeking work again.
2007-02-13 15:34:15 +00:00
Edward Hervey
f65a1d384e gst/gstsegment.c: Fine tune the cases where the segment start/stop values are really updated.
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_set_seek):
Fine tune the cases where the segment start/stop values are really
updated.
* tests/check/gst/gstsegment.c: (GST_START_TEST):
Add tests for the return values of gst_segment_set_seek().
2006-12-19 12:38:00 +00:00
Wim Taymans
f830f6f4ac gst/gstsegment.c: Fix boundary checking in to_running_time() and to_stream_time().
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_set_seek),
(gst_segment_set_newsegment_full), (gst_segment_to_stream_time),
(gst_segment_to_running_time):
Fix boundary checking in to_running_time() and to_stream_time().
Fixes #377183.
* tests/check/gst/gstsegment.c: (GST_START_TEST):
stream and running time can now be calculated for the complete
clipped segment.
2006-11-20 10:27:49 +00:00
Wim Taymans
b1504c37da gst/gstsegment.c: Relax arg checking again, -1 is allowed.
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_set_last_stop),
(gst_segment_set_seek), (gst_segment_set_newsegment_full):
Relax arg checking again, -1 is allowed.
2006-10-18 15:28:19 +00:00
Wim Taymans
fd6d33c360 gst/gstsegment.c: _set_last_stop() must be with a value != -1
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_set_last_stop),
(gst_segment_set_seek), (gst_segment_set_newsegment_full):
_set_last_stop() must be with a value != -1
A _TYPE_SET to -1 means seek to 0.
Calc last_stop correctly for negative rates.
Make sure we work with positive durations when updating a segment.
2006-10-18 13:27:39 +00:00
Wim Taymans
df08b4b762 gst/gstsegment.c: When seeking to stop -1, set last_stop (current position) to the duration of the segment.
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_set_seek):
When seeking to stop -1, set last_stop (current position) to the
duration of the segment.
2006-10-13 16:09:53 +00:00
Wim Taymans
0a53651b1f gst/gstevent.c: Rename some more @cur to @start to fix docs.
Original commit message from CVS:
* gst/gstevent.c: (gst_event_new_seek), (gst_event_parse_seek):
Rename some more @cur to @start to fix docs.
* gst/gstsegment.c: (gst_segment_set_seek):
Fix typo.
time and start must always stay in sync as defined in design doc.
* gst/gsttaglist.c: (gst_tag_list_is_empty):
Rename param to fix docs.
* tests/check/gst/gstsegment.c: (GST_START_TEST):
Check that start and time are in sync.
* tests/check/pipelines/parse-launch.c:
(gst_parse_test_element_change_state):
Activate pad before adding to the element.
2006-10-09 17:15:39 +00:00
Wim Taymans
89814eed61 docs/design/part-qos.txt: Fix typo.
Original commit message from CVS:
* docs/design/part-qos.txt:
Fix typo.
* gst/gstevent.c:
* gst/gstevent.h:
Update seek event docs regarding negative rates.
Rename @cur to @start.
* gst/gstsegment.c: (gst_segment_set_seek):
* gst/gstsegment.h:
Update set_seek docs regarding negative rates.
Correctly update last_stop to @stop when dealing with negative
rates.
Rename @cur to @start.
* tests/check/gst/gstpad.c: (GST_START_TEST):
Activate pads before trying to use them.
* tests/check/gst/gstsegment.c: (GST_START_TEST),
(gst_segment_suite):
Add simple check for segments and negative rates.
2006-10-09 16:33:29 +00:00
Wim Taymans
bb634398b7 gst/: Small cleanups in docs and code.
Original commit message from CVS:
* gst/gstobject.c: (gst_object_set_parent):
* gst/gstpipeline.c: (do_pipeline_seek):
Small cleanups in docs and code.
* gst/gstsegment.c: (gst_segment_clip):
* tests/check/gst/gstsegment.c: (GST_START_TEST):
if stop == start and start is in the segment, no clipping should be
done. Also add a test for this.
2006-09-15 08:43:44 +00:00
Wim Taymans
237c3cd57a gst/gstsegment.c: Use G_UNLIKELY to help the compiler a bit.
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_set_duration),
(gst_segment_set_last_stop), (gst_segment_set_seek),
(gst_segment_set_newsegment_full), (gst_segment_to_stream_time),
(gst_segment_to_running_time), (gst_segment_clip):
Use G_UNLIKELY to help the compiler a bit.
2006-06-12 09:29:49 +00:00
Edward Hervey
3f3e6f0258 gst/gstsegment.c: _copy() was always returning NULL...
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_copy):
_copy() was always returning NULL...
2006-06-05 12:55:58 +00:00
Wim Taymans
b9dbb55105 docs/design/part-overview.txt: Make upsteam/downstream concepts more clear.
Original commit message from CVS:
* docs/design/part-overview.txt:
Make upsteam/downstream concepts more clear.
Give an example of serialized/non-serialized events.
* docs/design/part-events.txt:
* docs/design/part-streams.txt:
Mention applied_rate.
* docs/design/part-trickmodes.txt:
Mention applied rate, flesh out some more use cases.
* gst/gstevent.c: (gst_event_new_new_segment),
(gst_event_parse_new_segment), (gst_event_new_new_segment_full),
(gst_event_parse_new_segment_full), (gst_event_new_tag),
(gst_event_parse_tag), (gst_event_new_buffer_size),
(gst_event_parse_buffer_size), (gst_event_new_qos),
(gst_event_parse_qos), (gst_event_parse_seek),
(gst_event_new_navigation):
* gst/gstevent.h:
Add applied_rate field to NEWSEGMENT event.
API: gst_event_new_new_segment_full()
API: gst_event_parse_new_segment_full()
* gst/gstsegment.c: (gst_segment_init), (gst_segment_set_seek),
(gst_segment_set_newsegment), (gst_segment_set_newsegment_full),
(gst_segment_to_stream_time), (gst_segment_to_running_time):
* gst/gstsegment.h:
Add applied_rate to GstSegment structure.
Make calculation of stream_time and running_time more correct
wrt rate/applied_rate.
Add some more docs.
API: GstSegment::applied_rate field
API: gst_segment_set_newsegment_full();
* libs/gst/base/gstbasesink.c: (gst_base_sink_configure_segment),
(gst_base_sink_get_sync_times), (gst_base_sink_get_position):
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_sink_eventfunc),
(gst_base_transform_handle_buffer):
Parse and use applied_rate in the GstSegment field.
* tests/check/gst/gstevent.c: (GST_START_TEST):
Add check for applied_rate field.
* tests/check/gst/gstsegment.c: (GST_START_TEST),
(gstsegments_suite):
Add more checks for various GstSegment operations.
2006-05-08 09:52:33 +00:00
Wim Taymans
c2d86926f5 gst/gstsegment.c: Added some more docs.
Original commit message from CVS:
* gst/gstsegment.c:
Added some more docs.
* libs/gst/base/gstbasesink.c: (gst_base_sink_perform_qos),
(gst_base_sink_reset_qos):
Calculate more accurate rate values.
2006-04-10 10:46:44 +00:00
Wim Taymans
c8456d4371 gst/gstsegment.c: Return correct return type in case of errors.
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_to_stream_time):
Return correct return type in case of errors.
2006-03-14 19:26:17 +00:00
Wim Taymans
429ebfff2c Documentation updates.
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstbin.c: (bin_bus_handler), (gst_bin_handle_message_func):
* gst/gstbin.h:
* gst/gstbus.c: (gst_bus_class_init):
* gst/gstbus.h:
* gst/gstclock.c:
* gst/gstelement.c: (gst_element_set_locked_state):
* gst/gstsegment.c:
Documentation updates.
* gst/gstpipeline.c: (gst_pipeline_get_type),
(gst_pipeline_class_init), (gst_pipeline_init),
(gst_pipeline_dispose), (gst_pipeline_set_property),
(gst_pipeline_get_property), (do_pipeline_seek),
(gst_pipeline_send_event), (gst_pipeline_change_state),
(gst_pipeline_provide_clock_func), (gst_pipeline_set_delay),
(gst_pipeline_get_delay):
* gst/gstpipeline.h:
Added methods for setting the delay.
API: gst_pipeline_set_delay
API: gst_pipeline_get_delay
Add pipeline debug category
Various cleanups.
Updated docs.
Don't reset stream time when seek failed.
2006-03-13 11:04:38 +00:00
Wim Taymans
a19398105c gst/gstbin.c: Help the compiler a bit with type registration.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_get_type), (gst_bin_handle_message_func):
Help the compiler a bit with type registration.
Use existing forward cod path instead of duplicating it when
handling a message.

* gst/gstbus.c: (gst_bus_get_type):
* gst/gstcaps.c: (gst_caps_get_type), (gst_static_caps_get_type):
* gst/gstchildproxy.c: (gst_child_proxy_get_type):
* gst/gstclock.c: (gst_clock_get_type):
* gst/gstelement.c: (gst_element_get_type),
* gst/gstelementfactory.c: (gst_element_factory_get_type):
* gst/gstindexfactory.c: (gst_index_factory_get_type):
* gst/gstminiobject.c: (gst_mini_object_get_type):
* gst/gstpad.c: (gst_pad_get_type):
* gst/gstsegment.c: (gst_segment_get_type):
* gst/gststructure.c: (gst_structure_get_type):
* gst/gstsystemclock.c: (gst_system_clock_get_type):
* gst/gsttask.c: (gst_task_get_type), (gst_task_join):
* gst/gstvalue.c:
Help compiler with type registration.

* plugins/elements/gstqueue.c: (gst_queue_handle_sink_event):
Small doc update.
2006-02-28 10:52:02 +00:00
Wim Taymans
0a52de57d7 gst/gstsegment.c: No reason to refuse to clip when start == -1
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_clip):
No reason to refuse to clip when start == -1
2006-02-02 11:59:27 +00:00
Sébastien Moutte
3c5c1d29ea libs/gst/base/gstbasesink.c: *cur = (now - base) * basesink->segment.abs_rate + time; replaced by
Original commit message from CVS:
* libs/gst/base/gstbasesink.c:
*cur = (now - base) * basesink->segment.abs_rate + time; replaced by
*cur = gst_guint64_to_gdouble(now - base) * basesink->segment.abs_rate + time; for vs6
* win32/common/config.h:
added some defines GST_MAJORMINOR and HOST_CPU
* win32/common/libgstbase.def:
* win32/common/libgstreamer.def:
added some exported functions
2006-01-12 22:04:58 +00:00
Wim Taymans
8666c1597d gst/gstsegment.c: Added more documentation.
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_init),
(gst_segment_set_last_stop), (gst_segment_set_seek),
(gst_segment_set_newsegment), (gst_segment_to_stream_time),
(gst_segment_to_running_time):
Added more documentation.
Make sure the last_pos value is updated properly.
Make sure to_stream_time and to_running_time don't
operate on wrong values.

* tests/check/gst/gstsegment.c: (GST_START_TEST):
Update check.
2005-12-12 12:48:35 +00:00
Edward Hervey
c4d1ffa5c7 gst/base/gstbasesink.c: Properly handle non GST_FORMAT_TIME segment
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
(gst_base_sink_event), (gst_base_sink_do_sync),
(gst_base_sink_activate_pull), (gst_base_sink_change_state):
Properly handle non GST_FORMAT_TIME segment
* gst/elements/gstidentity.c: (gst_identity_transform_ip):
Properly handle non GST_FORMAT_TIME segment
* gst/gstsegment.c:
This function is valid if the accumulator is 0 and the format
is different from the requested format.
2005-11-29 17:13:44 +00:00
Wim Taymans
5be62b88b8 gst/gstsegment.*: Make binding friendly.
Original commit message from CVS:
* gst/gstsegment.c: (gst_segment_copy), (gst_segment_get_type),
(gst_segment_new), (gst_segment_free), (gst_segment_init),
(gst_segment_set_duration), (gst_segment_set_last_stop),
(gst_segment_set_seek), (gst_segment_set_newsegment),
(gst_segment_to_stream_time), (gst_segment_to_running_time),
(gst_segment_clip):
* gst/gstsegment.h:
Make binding friendly.
2005-11-21 18:53:06 +00:00
Wim Taymans
a35882df1f More segment updates, replace code in plugins with segment helper functions.
Original commit message from CVS:
* check/gst/gstsegment.c: (GST_START_TEST):
* docs/design/part-TODO.txt:
* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
(gst_base_sink_event), (gst_base_sink_do_sync),
(gst_base_sink_activate_pull), (gst_base_sink_get_position),
(gst_base_sink_query), (gst_base_sink_change_state):
* gst/base/gstbasesink.h:
* gst/base/gstbasesrc.c: (gst_base_src_init), (gst_base_src_query),
(gst_base_src_default_newsegment),
(gst_base_src_configure_segment), (gst_base_src_do_seek),
(gst_base_src_get_range), (gst_base_src_loop),
(gst_base_src_change_state):
* gst/base/gstbasesrc.h:
* gst/base/gstbasetransform.c:
(gst_base_transform_prepare_output_buf),
(gst_base_transform_event), (gst_base_transform_change_state):
* gst/base/gstbasetransform.h:
* gst/base/gstcollectpads.c: (gst_collect_pads_add_pad),
(gst_collect_pads_event):
* gst/base/gstcollectpads.h:
* gst/elements/gstfakesrc.c: (gst_fake_src_init),
(gst_fake_src_create):
* gst/elements/gstfakesrc.h:
* gst/elements/gstidentity.c: (gst_identity_transform_ip):
* gst/gstsegment.c: (gst_segment_init), (gst_segment_set_duration),
(gst_segment_set_last_stop), (gst_segment_set_seek),
(gst_segment_set_newsegment), (gst_segment_to_stream_time),
(gst_segment_to_running_time), (gst_segment_clip):
* gst/gstsegment.h:
More segment updates, replace code in plugins with segment
helper functions.
2005-11-21 17:09:45 +00:00
Andy Wingo
7f0bef0423 gst/gstsegment.c (gst_segment_init): Initialize abs_rate.
Original commit message from CVS:
2005-11-21  Andy Wingo  <wingo@pobox.com>

* gst/gstsegment.c (gst_segment_init): Initialize abs_rate.
2005-11-21 14:53:34 +00:00
Wim Taymans
29ea4a0bb0 More segment updates and more checks.
Original commit message from CVS:
* check/gst/gstsegment.c: (GST_START_TEST), (gstsegments_suite),
(main):
* gst/gstsegment.c: (gst_segment_init), (gst_segment_set_duration),
(gst_segment_set_last_stop), (gst_segment_set_seek),
(gst_segment_set_newsegment), (gst_segment_to_stream_time),
(gst_segment_to_running_time), (gst_segment_clip):
* gst/gstsegment.h:
More segment updates and more checks.
2005-11-21 13:26:51 +00:00
Wim Taymans
2754334f05 Added segment helper structure and methods. Not fully implemented yet.
Original commit message from CVS:
* check/Makefile.am:
* check/gst/gstsegment.c: (GST_START_TEST), (gstevents_suite),
(main):
* gst/Makefile.am:
* gst/gst.h:
* gst/gstsegment.c: (gst_segment_init), (gst_segment_set_duration),
(gst_segment_set_seek), (gst_segment_set_newsegment),
(gst_segment_to_stream_time), (gst_segment_to_running_time),
(gst_segment_clip):
* gst/gstsegment.h:
Added segment helper structure and methods. Not fully implemented
yet.
Added segment check.
2005-11-20 19:11:09 +00:00