summaryrefslogtreecommitdiff
path: root/gst/audiovisualizers
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2012-01-25 14:50:50 +0100
committerWim Taymans <wim.taymans@collabora.co.uk>2012-01-25 14:51:25 +0100
commit21073e98cf0c939318d90cc1b07eecd308e70732 (patch)
treeb06149ea0bbde911e85e6e1e2bc1d3356e0d6c27 /gst/audiovisualizers
parentf5cf0caf9fd0eae937e5de5002c5de8f9c9b2765 (diff)
downloadgstreamer-plugins-bad-21073e98cf0c939318d90cc1b07eecd308e70732.tar.gz
port to new memory API
Diffstat (limited to 'gst/audiovisualizers')
-rw-r--r--gst/audiovisualizers/gstbaseaudiovisualizer.c14
-rw-r--r--gst/audiovisualizers/gstspacescope.c17
-rw-r--r--gst/audiovisualizers/gstspectrascope.c22
-rw-r--r--gst/audiovisualizers/gstsynaescope.c19
-rw-r--r--gst/audiovisualizers/gstwavescope.c17
5 files changed, 52 insertions, 37 deletions
diff --git a/gst/audiovisualizers/gstbaseaudiovisualizer.c b/gst/audiovisualizers/gstbaseaudiovisualizer.c
index 6cb8a5837..fdd839cc3 100644
--- a/gst/audiovisualizers/gstbaseaudiovisualizer.c
+++ b/gst/audiovisualizers/gstbaseaudiovisualizer.c
@@ -792,7 +792,7 @@ gst_base_audio_visualizer_chain (GstPad * pad, GstObject * parent,
GstBuffer *inbuf;
guint64 dist, ts;
guint avail, sbpf;
- gpointer adata, vdata;
+ gpointer adata;
gboolean (*render) (GstBaseAudioVisualizer * scope, GstBuffer * audio,
GstBuffer * video);
@@ -835,6 +835,7 @@ gst_base_audio_visualizer_chain (GstPad * pad, GstObject * parent,
GST_LOG_OBJECT (scope, "avail: %u, bpf: %u", avail, sbpf);
while (avail >= sbpf) {
GstBuffer *outbuf;
+ GstMapInfo map;
/* get timestamp of the current adapter content */
ts = gst_adapter_prev_timestamp (scope->adapter, &dist);
@@ -881,11 +882,11 @@ gst_base_audio_visualizer_chain (GstPad * pad, GstObject * parent,
GST_BUFFER_TIMESTAMP (outbuf) = ts;
GST_BUFFER_DURATION (outbuf) = scope->frame_duration;
- vdata = gst_buffer_map (outbuf, NULL, NULL, GST_MAP_WRITE);
+ gst_buffer_map (outbuf, &map, GST_MAP_WRITE);
if (scope->shader) {
- memcpy (vdata, scope->pixelbuf, scope->bpf);
+ memcpy (map.data, scope->pixelbuf, scope->bpf);
} else {
- memset (vdata, 0, scope->bpf);
+ memset (map.data, 0, scope->bpf);
}
/* this can fail as the data size we need could have changed */
@@ -903,12 +904,13 @@ gst_base_audio_visualizer_chain (GstPad * pad, GstObject * parent,
} else {
/* run various post processing (shading and geometri transformation */
if (scope->shader) {
- scope->shader (scope, vdata, scope->pixelbuf);
+ scope->shader (scope, map.data, scope->pixelbuf);
}
}
}
- gst_buffer_unmap (outbuf, vdata, scope->bpf);
+ gst_buffer_unmap (outbuf, &map);
+ gst_buffer_resize (outbuf, 0, scope->bpf);
g_mutex_unlock (&scope->config_lock);
ret = gst_pad_push (scope->srcpad, outbuf);
diff --git a/gst/audiovisualizers/gstspacescope.c b/gst/audiovisualizers/gstspacescope.c
index a8585b0a9..5e19794e8 100644
--- a/gst/audiovisualizers/gstspacescope.c
+++ b/gst/audiovisualizers/gstspacescope.c
@@ -429,16 +429,17 @@ gst_space_scope_render (GstBaseAudioVisualizer * base, GstBuffer * audio,
GstBuffer * video)
{
GstSpaceScope *scope = GST_SPACE_SCOPE (base);
- gsize asize;
- guint32 *vdata =
- (guint32 *) gst_buffer_map (video, NULL, NULL, GST_MAP_WRITE);
- gint16 *adata = (gint16 *) gst_buffer_map (audio, &asize, NULL, GST_MAP_READ);
+ GstMapInfo vmap, amap;
guint num_samples;
- num_samples = asize / (base->channels * sizeof (gint16));
- scope->process (base, vdata, adata, num_samples);
- gst_buffer_unmap (video, vdata, -1);
- gst_buffer_unmap (audio, adata, -1);
+ gst_buffer_map (audio, &amap, GST_MAP_READ);
+ gst_buffer_map (video, &vmap, GST_MAP_WRITE);
+
+ num_samples = amap.size / (base->channels * sizeof (gint16));
+ scope->process (base, (guint32 *) vmap.data, (gint16 *) amap.data,
+ num_samples);
+ gst_buffer_unmap (video, &vmap);
+ gst_buffer_unmap (audio, &amap);
return TRUE;
}
diff --git a/gst/audiovisualizers/gstspectrascope.c b/gst/audiovisualizers/gstspectrascope.c
index abe2f7e97..95ce6e71f 100644
--- a/gst/audiovisualizers/gstspectrascope.c
+++ b/gst/audiovisualizers/gstspectrascope.c
@@ -167,20 +167,24 @@ gst_spectra_scope_render (GstBaseAudioVisualizer * bscope, GstBuffer * audio,
GstBuffer * video)
{
GstSpectraScope *scope = GST_SPECTRA_SCOPE (bscope);
- gsize asize;
- guint32 *vdata =
- (guint32 *) gst_buffer_map (video, NULL, NULL, GST_MAP_WRITE);
- gint16 *adata = (gint16 *) gst_buffer_map (audio, &asize, NULL, GST_MAP_READ);
- gint16 *mono_adata = (gint16 *) g_memdup (adata, asize);
+ gint16 *mono_adata;
GstFFTS16Complex *fdata = scope->freq_data;
guint x, y, off;
guint l, h = bscope->height - 1;
gfloat fr, fi;
guint w = bscope->width;
+ GstMapInfo amap, vmap;
+ guint32 *vdata;
+
+ gst_buffer_map (audio, &amap, GST_MAP_READ);
+ gst_buffer_map (video, &vmap, GST_MAP_WRITE);
+ vdata = (guint32 *) vmap.data;
+
+ mono_adata = (gint16 *) g_memdup (amap.data, amap.size);
if (bscope->channels > 1) {
guint ch = bscope->channels;
- guint num_samples = asize / (ch * sizeof (gint16));
+ guint num_samples = amap.size / (ch * sizeof (gint16));
guint i, c, v, s = 0;
/* deinterleave and mixdown adata */
@@ -196,7 +200,7 @@ gst_spectra_scope_render (GstBaseAudioVisualizer * bscope, GstBuffer * audio,
/* run fft */
gst_fft_s16_window (scope->fft_ctx, mono_adata, GST_FFT_WINDOW_HAMMING);
gst_fft_s16_fft (scope->fft_ctx, mono_adata, fdata);
- g_free (adata);
+ g_free (mono_adata);
/* draw lines */
for (x = 0; x < bscope->width; x++) {
@@ -215,8 +219,8 @@ gst_spectra_scope_render (GstBaseAudioVisualizer * bscope, GstBuffer * audio,
add_pixel (&vdata[off], 0x007F7F7F);
}
}
- gst_buffer_unmap (video, vdata, -1);
- gst_buffer_unmap (audio, adata, -1);
+ gst_buffer_unmap (video, &vmap);
+ gst_buffer_unmap (audio, &amap);
return TRUE;
}
diff --git a/gst/audiovisualizers/gstsynaescope.c b/gst/audiovisualizers/gstsynaescope.c
index c851d6f84..bba42962a 100644
--- a/gst/audiovisualizers/gstsynaescope.c
+++ b/gst/audiovisualizers/gstsynaescope.c
@@ -205,10 +205,9 @@ gst_synae_scope_render (GstBaseAudioVisualizer * bscope, GstBuffer * audio,
GstBuffer * video)
{
GstSynaeScope *scope = GST_SYNAE_SCOPE (bscope);
- gsize asize;
- guint32 *vdata =
- (guint32 *) gst_buffer_map (video, NULL, NULL, GST_MAP_WRITE);
- gint16 *adata = (gint16 *) gst_buffer_map (audio, &asize, NULL, GST_MAP_READ);
+ GstMapInfo amap, vmap;
+ guint32 *vdata;
+ gint16 *adata;
gint16 *adata_l = scope->adata_l;
gint16 *adata_r = scope->adata_r;
GstFFTS16Complex *fdata_l = scope->freq_data_l;
@@ -221,7 +220,7 @@ gst_synae_scope_render (GstBaseAudioVisualizer * bscope, GstBuffer * audio,
guint *shade = scope->shade;
//guint w2 = w /2;
guint ch = bscope->channels;
- guint num_samples = asize / (ch * sizeof (gint16));
+ guint num_samples;
gint i, j, b;
gint br, br1, br2;
gint clarity;
@@ -229,6 +228,14 @@ gst_synae_scope_render (GstBaseAudioVisualizer * bscope, GstBuffer * audio,
gdouble frl, fil, frr, fir;
const guint sl = 30;
+ gst_buffer_map (video, &vmap, GST_MAP_WRITE);
+ gst_buffer_map (audio, &amap, GST_MAP_READ);
+
+ vdata = (guint32 *) vmap.data;
+ adata = (gint16 *) amap.data;
+
+ num_samples = amap.size / (ch * sizeof (gint16));
+
/* deinterleave */
for (i = 0, j = 0; i < num_samples; i++) {
adata_l[i] = adata[j++];
@@ -297,6 +304,8 @@ gst_synae_scope_render (GstBaseAudioVisualizer * bscope, GstBuffer * audio,
}
}
}
+ gst_buffer_unmap (video, &vmap);
+ gst_buffer_unmap (audio, &amap);
return TRUE;
}
diff --git a/gst/audiovisualizers/gstwavescope.c b/gst/audiovisualizers/gstwavescope.c
index 0efe457cd..df2a3451b 100644
--- a/gst/audiovisualizers/gstwavescope.c
+++ b/gst/audiovisualizers/gstwavescope.c
@@ -407,19 +407,18 @@ gst_wave_scope_render (GstBaseAudioVisualizer * base, GstBuffer * audio,
GstBuffer * video)
{
GstWaveScope *scope = GST_WAVE_SCOPE (base);
- guint32 *vdata;
- gsize asize;
- gint16 *adata;
+ GstMapInfo amap, vmap;
guint num_samples;
- adata = gst_buffer_map (audio, &asize, NULL, GST_MAP_READ);
- vdata = gst_buffer_map (video, NULL, NULL, GST_MAP_WRITE);
+ gst_buffer_map (audio, &amap, GST_MAP_READ);
+ gst_buffer_map (video, &vmap, GST_MAP_WRITE);
- num_samples = asize / (base->channels * sizeof (gint16));
- scope->process (base, vdata, adata, num_samples);
+ num_samples = amap.size / (base->channels * sizeof (gint16));
+ scope->process (base, (guint32 *) vmap.data, (gint16 *) amap.data,
+ num_samples);
- gst_buffer_unmap (video, vdata, -1);
- gst_buffer_unmap (audio, adata, -1);
+ gst_buffer_unmap (video, &vmap);
+ gst_buffer_unmap (audio, &amap);
return TRUE;
}