summaryrefslogtreecommitdiff
path: root/gst-libs
diff options
context:
space:
mode:
authorWim Taymans <wtaymans@redhat.com>2014-11-04 11:01:52 +0100
committerWim Taymans <wtaymans@redhat.com>2014-11-04 17:38:11 +0100
commit562416bb943cee713de57c8c3c4e98cded5e114b (patch)
tree0ebe2d7ec6b2a8d1f8bef7b8e1307b36c0431c16 /gst-libs
parent9cc353ce7c5049c0acdaa788403494396e123760 (diff)
downloadgstreamer-plugins-base-562416bb943cee713de57c8c3c4e98cded5e114b.tar.gz
video-scaler: fix phases in interlaced mode
Diffstat (limited to 'gst-libs')
-rw-r--r--gst-libs/gst/video/video-scaler.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gst-libs/gst/video/video-scaler.c b/gst-libs/gst/video/video-scaler.c
index 6407b56cb..121e6b6bc 100644
--- a/gst-libs/gst/video/video-scaler.c
+++ b/gst-libs/gst/video/video-scaler.c
@@ -70,7 +70,7 @@ static void
resampler_zip (GstVideoResampler * resampler, const GstVideoResampler * r1,
const GstVideoResampler * r2)
{
- guint i, out_size, max_taps;
+ guint i, out_size, max_taps, n_phases;
gdouble *taps;
guint32 *offset, *phase;
@@ -78,6 +78,7 @@ resampler_zip (GstVideoResampler * resampler, const GstVideoResampler * r1,
out_size = r1->out_size + r2->out_size;
max_taps = r1->max_taps;
+ n_phases = out_size;
offset = g_malloc (sizeof (guint32) * out_size);
phase = g_malloc (sizeof (guint32) * out_size);
taps = g_malloc (sizeof (gdouble) * max_taps * out_size);
@@ -85,6 +86,7 @@ resampler_zip (GstVideoResampler * resampler, const GstVideoResampler * r1,
resampler->in_size = r1->in_size + r2->in_size;
resampler->out_size = out_size;
resampler->max_taps = max_taps;
+ resampler->n_phases = n_phases;
resampler->offset = offset;
resampler->phase = phase;
resampler->n_taps = g_malloc (sizeof (guint32) * out_size);
@@ -99,7 +101,7 @@ resampler_zip (GstVideoResampler * resampler, const GstVideoResampler * r1,
offset[i] = r->offset[idx] * 2 + (i & 1);
phase[i] = i;
- memcpy (taps + i * max_taps, r->taps + idx * max_taps,
+ memcpy (taps + i * max_taps, r->taps + phase[idx] * max_taps,
max_taps * sizeof (gdouble));
}
}
@@ -335,7 +337,7 @@ video_scale_h_near_u32 (GstVideoScaler * scale,
#if 0
/* ORC is slower on this */
- video_orc_resample_h_near_u32 (d, s, 0, scale->inc, width);
+ video_orc_resample_h_near_u32_lq (d, s, 0, scale->inc, width);
#else
{
gint i;