diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2012-01-25 14:50:50 +0100 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2012-01-25 14:51:25 +0100 |
commit | 21073e98cf0c939318d90cc1b07eecd308e70732 (patch) | |
tree | b06149ea0bbde911e85e6e1e2bc1d3356e0d6c27 /gst/audiovisualizers | |
parent | f5cf0caf9fd0eae937e5de5002c5de8f9c9b2765 (diff) | |
download | gstreamer-plugins-bad-21073e98cf0c939318d90cc1b07eecd308e70732.tar.gz |
port to new memory API
Diffstat (limited to 'gst/audiovisualizers')
-rw-r--r-- | gst/audiovisualizers/gstbaseaudiovisualizer.c | 14 | ||||
-rw-r--r-- | gst/audiovisualizers/gstspacescope.c | 17 | ||||
-rw-r--r-- | gst/audiovisualizers/gstspectrascope.c | 22 | ||||
-rw-r--r-- | gst/audiovisualizers/gstsynaescope.c | 19 | ||||
-rw-r--r-- | gst/audiovisualizers/gstwavescope.c | 17 |
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; } |