[gst-devel] spectrum plug-in not working properly with alsasrc

Stefan Kost ensonic at hora-obscura.de
Sat May 23 20:09:39 CEST 2009


Guilherme schrieb:
> Stefan, I have the .wav been recorded properly...!
> Do you think that it might be a hardware problem.. the spectrum should 
> work either way with alsatestsrc and microphone????

If you can record a wav, it means you get valid audio. Spectrum element can be
used with any audio stream. If you use alsasrc and you don't see any spectrum
data on the screen, the only thig I can imagine is that your audio input is a
bit too quiet. Check yould alsamixer/gnome mixer. Try to break the problem into
pieces and verify each one separately - I run out of ideas.

Stefan

> 
> Tks!
> 
> -------------------
> 
> Guilherme Longo
> Dept. Eng. da Computação
> Unaerp
> 
> Linux User - #484927
> 
> *Before Asking
> http://www.istf.com.br/?page=perguntas
> 
> !- I'd rather die on my feet than live on my knees -!
> 
> 
> 
> Stefan Kost wrote:
>> Guilherme Raymo Longo schrieb:
>>   
>>> Good morning mates.
>>>
>>> I've been working on this code over a month and I can't figure out
>>> what is wrong with it.
>>>
>>> I am developing a spectrum analyser and as a first step the program is
>>> capturing sound from alsa and analysing the sound using the spectrum
>>> plug-in.
>>>
>>> If I use audiotestsrc, I get the results on screen as expected, when I
>>> change to alsasrc, I still get the results on screen but without
>>> modification, as if I didn't have any sound comming from my microfone.
>>> Its is strange 'cause my mic is working pretty well since I am able to
>>> record sound.
>>>
>>> I was wondering if someone could gimme some help here.....!
>>>     
>> if you do
>> gst-launch alsasrc num-buffers=100 ! wavenc ! filesink location=test.wav
>> and you make some noise. Does the resulting wav file has sound (or noise
>> :) ) or is it silent?
>>
>> Stefan
>>   
>>> Thanks in advanced...
>>>
>>>
>>>
>>> #include <string.h>
>>> #include <stdlib.h>
>>> #include <gst/gst.h>
>>>
>>> static guint spect_bands = 20;
>>>
>>> #define AUDIOFREQ 44100
>>>
>>> /* receive spectral data from element message */
>>> gboolean
>>> message_handler (GstBus * bus, GstMessage * message, gpointer data)
>>> {
>>>   if (message->type == GST_MESSAGE_ELEMENT) {
>>>     const GstStructure *s = gst_message_get_structure (message);
>>>     const gchar *name = gst_structure_get_name (s);
>>>     GstClockTime endtime;
>>>
>>>     if (strcmp (name, "spectrum") == 0) {
>>>       const GValue *magnitudes;
>>>       const GValue *phases;
>>>       const GValue *mag, *phase;
>>>       gdouble freq;
>>>       guint i;
>>>
>>>       if (!gst_structure_get_clock_time (s, "endtime", &endtime))
>>>         endtime = GST_CLOCK_TIME_NONE;
>>>
>>>       g_print ("New spectrum message, endtime %" GST_TIME_FORMAT "\n",
>>>           GST_TIME_ARGS (endtime));
>>>
>>>       magnitudes = gst_structure_get_value (s, "magnitude");
>>>       phases = gst_structure_get_value (s, "phase");
>>>
>>>       for (i = 0; i < spect_bands; ++i) {
>>>         freq = (gdouble) ((AUDIOFREQ / 2) * i + AUDIOFREQ / 4) /
>>> spect_bands;
>>>         mag = gst_value_list_get_value (magnitudes, i);
>>>         phase = gst_value_list_get_value (phases, i);
>>>
>>>         if (mag != NULL && phase != NULL) {
>>>           g_print ("band %d (freq %g): magnitude %f dB phase %f\n", i,
>>> freq,
>>>               g_value_get_float (mag), g_value_get_float (phase));
>>>         }
>>>       }
>>>       g_print ("\n");
>>>     }
>>>   }
>>>   return TRUE;
>>> }
>>>
>>> int
>>> main (int argc, char *argv[])
>>> {
>>>   GstElement *bin;
>>>   GstElement *src, *spectrum, *sink;
>>>   GstBus *bus;
>>>   GMainLoop *loop;
>>>
>>>   gst_init (&argc, &argv);
>>>
>>>   bin = gst_pipeline_new ("bin");
>>>
>>>   src = gst_element_factory_make ("audiotestsrc", "src");
>>>
>>>   spectrum = gst_element_factory_make ("spectrum", "spectrum");
>>>   g_object_set (G_OBJECT (spectrum), "bands", spect_bands,
>>>       "message", TRUE, "message-phase", TRUE, NULL);
>>>
>>>   sink = gst_element_factory_make ("fakesink", "sink");
>>>   g_object_set (G_OBJECT (sink), "sync", TRUE, NULL);
>>>
>>>   gst_bin_add_many (GST_BIN (bin), src, spectrum, sink, NULL);
>>>
>>>
>>>   if (!gst_element_link (src, spectrum) ||
>>>       !gst_element_link (spectrum, sink)) {
>>>     fprintf (stderr, "can't link elements\n");
>>>     exit (1);
>>>   }
>>>
>>>  
>>>  bus = gst_element_get_bus (bin);
>>>   gst_bus_add_watch (bus, message_handler, NULL);
>>>   gst_object_unref (bus);
>>>
>>>   gst_element_set_state (bin, GST_STATE_PLAYING);
>>>
>>>   /* we need to run a GLib main loop to get the messages */
>>>   loop = g_main_loop_new (NULL, FALSE);
>>>   g_main_loop_run (loop);
>>>
>>>   gst_element_set_state (bin, GST_STATE_NULL);
>>>
>>>   gst_object_unref (bin);
>>>
>>>   return 0;
>>> }
>>> -- 
>>> Guilherme Raymo Longo
>>> Software Developer
>>> Mob. 087 - 3179008
>>> msn: grlongo.ireland at hotmail.com <mailto:grlongo.ireland at hotmail.com>
>>> skype: grlongo.ireland
>>> ------------------------------------------------------------------------
>>>
>>> ------------------------------------------------------------------------------
>>> Crystal Reports - New Free Runtime and 30 Day Trial
>>> Check out the new simplified licensing option that enables 
>>> unlimited royalty-free distribution of the report engine 
>>> for externally facing server and web deployment. 
>>> http://p.sf.net/sfu/businessobjects
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>> gstreamer-devel at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>>>   
>>>     
>>
>> ------------------------------------------------------------------------------
>> Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
>> is a gathering of tech-side developers & brand creativity professionals. Meet
>> the minds behind Google Creative Lab, Visual Complexity, Processing, & 
>> iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
>> Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>>
>>   
> 
> ------------------------------------------------------------------------------
> Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
> is a gathering of tech-side developers & brand creativity professionals. Meet
> the minds behind Google Creative Lab, Visual Complexity, Processing, & 
> iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
> Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel





More information about the gstreamer-devel mailing list