Just compiled gstreamer plugin and demo program (r1) on an amd64 system, but I get a segmentation fault when playing at a rate that is not 1.0:
[New Thread 0x42ac5950 (LWP 23493)]
[New Thread 0x432c6950 (LWP 23494)]
[New Thread 0x43ac7950 (LWP 23495)]
[New Thread 0x4093f950 (LWP 23496)]
(scaletempo-demo:23487): demo-player-DEBUG: Starting to Play
demo-player-Message: Scaling Rate by: 1.06
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x42ac5950 (LWP 23493)]
0x00007fd3f6490959 in best_overlap_offset_s16 (scaletempo=0x766180) at gstscaletempo.c:236
236 corr += ppc[i+0] * ps[i+0];
(gdb) bt
#0 0x00007fd3f6490959 in best_overlap_offset_s16 (scaletempo=0x766180) at gstscaletempo.c:236
#1 0x00007fd3f6491871 in gst_scaletempo_transform (trans=0x766180, inbuf=0xa9b4b0, outbuf=0xa7f400) at gstscaletempo.c:459
#2 0x00007fd3fd7b4c03 in ?? () from /usr/lib/libgstbase-0.10.so.0
(...)
(gdb) print i
$1 = 4294966240
(gdb) print *scaletempo
$2 = {element = {element = {object = {object = {g_type_instance = {g_class = 0x647030}, ref_count = 1, qdata = 0x0}, refcount = 0, lock = 0x6320c0, name = 0x6449a0 "scaletempo", name_prefix = 0x0,
parent = 0x9c9000, flags = 0, _gst_reserved = 0x0}, state_lock = 0x644950, state_cond = 0x644b80, state_cookie = 3, current_state = GST_STATE_PLAYING, next_state = GST_STATE_VOID_PENDING,
pending_state = GST_STATE_VOID_PENDING, last_return = GST_STATE_CHANGE_SUCCESS, bus = 0x97d430, clock = 0xa2c050, base_time = 0, numpads = 2, pads = 0x644560, numsrcpads = 1, srcpads = 0x644540,
numsinkpads = 1, sinkpads = 0x644400, pads_cookie = 2, abidata = {ABI = {target_state = GST_STATE_PLAYING}, _gst_reserved = {0x4, 0x0, 0x0, 0x0}}}, sinkpad = 0x768000, srcpad = 0x768170,
passthrough = 0, always_in_place = 0, cache_caps1 = 0x0, cache_caps1_size = 0, cache_caps2 = 0x0, cache_caps2_size = 0, have_same_caps = 1, delay_configure = 0, pending_configure = 0, negotiated = 1,
have_newsegment = 0, segment = {rate = 1, abs_rate = 1, format = GST_FORMAT_UNDEFINED, flags = GST_SEEK_FLAG_NONE, start = 0, stop = -1, time = 0, accum = 0, last_stop = 0, duration = -1,
applied_rate = 1, _gst_reserved = '\0' <repeats 23 times>}, transform_lock = 0x644e10, priv = 0x7663c0, _gst_reserved = {0x0 <repeats 19 times>}}}
Same problem here with git. (I had to add -g3 -ggdb -O0 to all Variables ending with FLAGS in the Makefile to make gdb print the correct line number.)
The problem is line 234 (http://repo.or.cz/w/gst-scaletempo-rj.git?a=blob;f=src/gstscaletempo.c;h=8d0b16e34d641f1df0e7bd2285d99f80c1fda8ba;hb=releases#l234):
i = -(p->samples_overlap - p->samples_per_frame);
p->samples_overlap and p->samples_per_frame are unsigned, so -(p->samples_overlap - p->samples_per_frame) yields something positive.
Replacing this line by
i = -((glong)p->samples_overlap - (glong)p->samples_per_frame);
makes it work for me.