Commit graph

26 commits

Author SHA1 Message Date
Lyon Wang f26835d8bb scaletempo: Scale GAP event timestamp and duration like for buffers
https://bugzilla.gnome.org/show_bug.cgi?id=781008
2017-04-09 10:45:21 +03:00
Sebastian Dröge fe2ae2c0f7 scaletempo: Ensure to reinit buffers whenever they were not allocated yet
That is, whenever we go through start/stop we have to ensure that on the
next opportunity the buffers are reallocated again. Otherwise the
buffers might be NULL because the element was reused with the same
configuration as before (i.e. set_caps() wouldn't have reinited the
buffers).

https://bugzilla.gnome.org/show_bug.cgi?id=775898
2016-12-11 13:27:27 +02:00
Sebastian Dröge 2dee0e385f scaletempo: S16 uses S32 temporary buffers, float/double their own type
Make sure to allocate not only a S16 buffer for S16 but a twice as big one to
hold S32.

https://bugzilla.gnome.org/show_bug.cgi?id=765116
2016-04-15 20:06:42 +03:00
Vineeth TM 1071309870 good: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763076
2016-03-24 14:32:20 +02:00
Sebastian Dröge 903c431d6d scaletempo: Free the various buffers in GstBaseTransform::stop()
Previously we leaked them completely, but as they're specific to the caps
freeing them in stop() instead of finalize() makes most sense.
2015-12-25 11:41:19 +01:00
Sebastian Dröge ae3b903019 scaletempo: Fix handling of rate < 0
We have to reverse all samples in a buffer before processing them to properly
have continuous data from one buffer to another. As a result we will have a
negative applied rate and a rate of 1.0.

Also make sure that input buffers are correctly clipped to the segment,
otherwise our calculations are going to go wrong.

Also copy over the segment event's sequence number to the output segment while
we're at it.

https://bugzilla.gnome.org/show_bug.cgi?id=757033
2015-10-27 17:16:41 +02:00
Sebastian Dröge 1e0b9b9853 scaletempo: Add support for F64 2015-10-23 20:16:17 +03:00
Sanjay NM 26a1344f37 Miscellaneous minor cleanups
Fix redundant variables and assignments,
and unreachable breaks.

https://bugzilla.gnome.org/show_bug.cgi?id=736875
https://bugzilla.gnome.org/show_bug.cgi?id=736876
https://bugzilla.gnome.org/show_bug.cgi?id=736879
https://bugzilla.gnome.org/show_bug.cgi?id=736880
https://bugzilla.gnome.org/show_bug.cgi?id=736881
https://bugzilla.gnome.org/show_bug.cgi?id=736888
https://bugzilla.gnome.org/show_bug.cgi?id=736890
https://bugzilla.gnome.org/show_bug.cgi?id=736892
https://bugzilla.gnome.org/show_bug.cgi?id=736893
https://bugzilla.gnome.org/show_bug.cgi?id=736894
2014-09-24 00:45:31 +01:00
Tim-Philipp Müller b19122bac8 scaletempo: no need for a private struct 2012-12-15 21:27:01 +00:00
Sebastian Dröge 314765c294 scaletempo: Fix event leak 2012-12-14 13:16:17 +00:00
Sebastian Dröge 490e408991 scaletempo: Fix timestamp tracking 2012-12-14 13:16:17 +00:00
Sebastian Dröge 502eb8d1b7 scaletempo: Implement LATENCY query 2012-12-14 13:16:17 +00:00
Sebastian Dröge c7589817cb scaletempo: Store instance private data in the instance struct
Getting it over and over again via G_TYPE_INSTANCE_GET_PRIVATE()
is really slow.
2012-12-14 13:16:17 +00:00
Tim-Philipp Müller e552bd484f scaletempo: use gst_element_class_set_static_metadata()
where possible. Avoids some string copies. Also re-indent
some stuff. Also some indent fixes here and there.
2012-12-14 13:16:17 +00:00
Mark Nauwelaerts d2dd91ac47 scaletempo: replace gst_element_class_set_details_simple with gst_element_class_set_metadata 2012-12-14 13:16:17 +00:00
Wim Taymans cb1743d578 scaletempo: ffmpegcolorspace is no more 2012-12-14 13:16:17 +00:00
Mark Nauwelaerts 3286cdd542 scaletempo: port to 0.11 2012-12-14 13:16:16 +00:00
Stefan Kost 62d780cd51 scaletempo: improve the docs
Fix the syntax, add more explanation and xref the properties.
2012-12-14 13:16:16 +00:00
Chris E Jones caf2b6cb5c scaletempo: Correctly handle newsegment events with stop==-1
Fixes bug #645420.
2012-12-14 13:16:16 +00:00
Stefan Kost 6d54058982 scaletempo: add missing G_PARAM_STATIC_STRINGS flags
Canonicalize property names as needed.
2012-12-14 13:16:16 +00:00
Benjamin Otte 38bc2dfb4a scaletempo: gst_element_class_set_details => gst_element_class_set_details_simple 2012-12-14 13:16:16 +00:00
Thiago Santos 2d72ec153a scaletempo: properly update new segments
Scaletempo was missing an update of 'stop' in
new segment parameters when pushing it downstream,
which caused files to end earlier when rate < 1.

Fixes #599903

Based on patch by: Bastian Hecht <hechtb@gmail.com>
2012-12-14 13:16:16 +00:00
Maximilian Högner 2fe7a97f1c scaletempo: Explicitely cast to signed integers to fix a segfault
Fixes bug #585660.
2012-12-14 13:16:16 +00:00
Michael Smith 1b1f6f56d6 scaletempo: Do not use void pointer arithmetic. 2012-12-14 13:16:16 +00:00
Stefan Kost 9284c85b33 scaletempo: Return the result of parent_class->event()
Original commit message from CVS:
* gst/audiofx/gstscaletempo.c:
Return the result of parent_class->event().
2012-12-14 13:16:16 +00:00
Rov Juvano 43e79f7769 Add scaletempo plugin, which allows to scale the speed of audio without changing the pitch by handling seeks with a r...
Original commit message from CVS:
Patch by: Rov Juvano <rovjuvano at users dot sourceforge dot net>
* configure.ac:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-bad-plugins-docs.sgml:
* docs/plugins/gst-plugins-bad-plugins-sections.txt:
* docs/plugins/inspect/plugin-scaletempo.xml:
* examples/scaletempo/Makefile.am:
* examples/scaletempo/demo-gui.c: (pop_status_bar),
(status_bar_printf), (demo_gui_seek_bar_format), (update_position),
(demo_gui_seek_bar_change), (demo_gui_do_change_rate),
(demo_gui_do_set_rate), (demo_gui_do_rate_entered),
(demo_gui_do_toggle_advanced), (demo_gui_do_toggle_disabled),
(demo_gui_do_seek), (demo_gui_do_play), (demo_gui_do_pause),
(demo_gui_do_play_pause), (demo_gui_do_open_file),
(demo_gui_do_playlist_prev), (demo_gui_do_playlist_next),
(demo_gui_do_about_dialog), (demo_gui_do_quit),
(demo_gui_request_set_stride), (demo_gui_request_set_overlap),
(demo_gui_request_set_search), (demo_gui_rate_changed),
(demo_gui_playing_started), (demo_gui_playing_paused),
(demo_gui_playing_ended), (demo_gui_player_errored),
(demo_gui_stride_changed), (demo_gui_overlap_changed),
(demo_gui_search_changed), (demo_gui_set_player_func),
(demo_gui_set_playlist_func), (build_gvalue_array),
(create_action), (demo_gui_show_func), (demo_gui_set_player),
(demo_gui_set_playlist), (demo_gui_show), (demo_gui_get_property),
(demo_gui_set_property), (demo_gui_init), (demo_gui_class_init),
(demo_gui_get_type):
* examples/scaletempo/demo-gui.h:
* examples/scaletempo/demo-main.c: (handle_error_message),
(handle_quit), (main):
* examples/scaletempo/demo-player.c: (no_pipeline),
(demo_player_event_listener), (demo_player_state_changed_cb),
(demo_player_eos_cb), (demo_player_build_pipeline), (_set_rate),
(demo_player_scale_rate_func), (demo_player_set_rate_func),
(_set_state_and_wait), (demo_player_load_uri_func),
(demo_player_play_func), (demo_player_pause_func), (_seek_to),
(demo_player_seek_by_func), (demo_player_seek_to_func),
(demo_player_get_position_func), (demo_player_get_duration_func),
(demo_player_scale_rate), (demo_player_set_rate),
(demo_player_load_uri), (demo_player_play), (demo_player_pause),
(demo_player_seek_by), (demo_player_seek_to),
(demo_player_get_position), (demo_player_get_duration),
(demo_player_get_property), (demo_player_set_property),
(demo_player_init), (demo_player_class_init),
(demo_player_get_type):
* examples/scaletempo/demo-player.h:
* gst/audiofx/Makefile.am:
* gst/audiofx/gstscaletempo.c: (best_overlap_offset_float),
(best_overlap_offset_s16), (output_overlap_float),
(output_overlap_s16), (fill_queue), (reinit_buffers),
(gst_scaletempo_transform), (gst_scaletempo_transform_size),
(gst_scaletempo_sink_event), (gst_scaletempo_set_caps),
(gst_scaletempo_get_property), (gst_scaletempo_set_property),
(gst_scaletempo_base_init), (gst_scaletempo_class_init),
(gst_scaletempo_init):
* gst/audiofx/gstscaletempo.h:
* gst/audiofx/gstscaletempoplugin.c: (plugin_init):
Add scaletempo plugin, which allows to scale the speed of audio without
changing the pitch by handling seeks with a rate!=1.0.
Integrate it into the docs and add the example application for it.
Fixes bug #537700.
2012-12-14 13:16:15 +00:00