[gst-devel] How to overcome the caps limitation of peers during caps negotiation?

Stefan Kost ensonic at hora-obscura.de
Sat Dec 15 11:15:06 CET 2007


hi,

Sharath Mudalamane schrieb:
> Hello Stefan,
> 
> Thanks for the reply. I am putting my _chain() & _init() below. Please,
> provide help & guidelines.
> 
> PLEASE NOTE, my yrtsidua() can take 1 - 6 channels and always give out 2
> channels.
> 
> 
> 
> ABOUT CHAIN FUNCTION:
> 
> In chain function, I will pass the buf->data to yrtsidua() is input. The
> processed date in out_buf is assigned back to buf->data before it is pushed
> out of _chain(). I am not changing anything in buf->caps ( DO you think, this
> is where I am going wrong, please let me know!). I allocate memory to out_buf
> in gst_wow_init().

This is not how it should work. You should do
gst_buffer(unref);
gst_pad_push (filter->srcpad, out_buf);

the out_buf you should allocate using gst_pad_buffer_alloc_and_set_caps()
important is that the buffer you sent has the right caps.

Stefan


> 
> Please, note that I am planning to use GstAdapter Interface for buffer
> management in _chain (as you have suggested) which I have not done yet!
> 
> h_yrtsidua is a global handle to yrtsidua internal module which is
> initialized during module init.
> ------------------------------------------------
> MY CHAIN FUNCTION:
> -------------------
> /* chain function
>  *  
>  * The function yrtsidua() from the underlying module, which does audio
>  * processing.
>  * yrtsidua() takes an input buffer of 64bytes multiple & puts the 
>  * processed data on 'out_buf'.
>  *
> */
> 
> static GstFlowReturn
> gst_wow_chain (GstPad * pad, GstBuffer * buf)
> {
>   GstWow *filter;
>   static int count = 0;
>   count++;
>   /* Number of samples in current data buffer in _chain() */
>   int no_samples = 0;
> 
> #ifdef DM_DEBUG
>   g_print ("\n ***[_chain() %d] Input buf size=[%u] ",
>            count,
>            (unsigned int)GST_BUFFER_SIZE (buf));
> #endif //DM_DEBUG
> 
>   filter = GST_WOW (GST_OBJECT_PARENT (pad));
> 
> #ifdef DM_DEBUG
>   {
>       gchar *type = NULL;
>       type = gst_caps_to_string (buf->caps);
>       g_print ("\n #[_chain] Proposed Capabilities by the stream:\n  [ %s
> ]\n",type);
>       g_free (type);
>   }
> #endif //DM_DEBUG
> 
>   /* no_samples = ( n_bytes / n_chans) / 2
>    * yrtsidua() processes 16 bit samples :-)
>    */
>   no_samples = (GST_BUFFER_SIZE(buf) / filter->channels) / 2; 
> 
> #ifdef DM_DEBUG
>   g_print (", no_samples[%d] \t", no_samples);
> #endif //DM_DEBUG
> 
>       yrtsidua( filter->h_yrtsidua,
>                 (IO_DATUM *) GST_BUFFER_DATA(buf),
>                 (IO_DATUM *) GST_BUFFER_DATA(out_buf),
>                 no_samples);
>      
>   GST_BUFFER_DATA(buf) = GST_BUFFER_DATA(out_buf);
>   /* push out the processed buffer */
>   return gst_pad_push (filter->srcpad, buf);
> }
> 
> -----------------------------------------------
> 
> ABOUT _INIT() FUNCTION:
> In wow_init(), I am allocation memory for out_buf (using GstBuffer
> interface), once for all
> And reuse it for audio processing.
> 
> 
> ----------------------------------------------
> 
> static void
> gst_wow_init (GstWow * filter,
>     GstWowClass * gclass)
> {
>   GstElementClass *klass = GST_ELEMENT_GET_CLASS (filter);
> 
>   filter->sinkpad =
>       gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
>           "sink"), "sink");
> 
>   gst_pad_set_setcaps_function (filter->sinkpad,
>                                 GST_DEBUG_FUNCPTR(gst_wow_set_caps));
>   gst_pad_set_getcaps_function (filter->sinkpad,
>                                 GST_DEBUG_FUNCPTR(gst_pad_proxy_getcaps));
> 
>   filter->srcpad =
>       gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
>           "src"), "src");
>   gst_pad_set_getcaps_function (filter->srcpad,
>                                 GST_DEBUG_FUNCPTR(gst_pad_proxy_getcaps));
> 
>   gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
>   gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
>   gst_pad_set_chain_function (filter->sinkpad,
>                               GST_DEBUG_FUNCPTR(gst_wow_chain));
> 
>   /*
>    * properties initial values
>    */
> 
>   /* Initializing my internal module setup */
>   filter->h_yrtsidua = yrtsidua_open();
> 
>   filter->mobile_surround = DM_FEATURE_OFF;
> 
>   /* allocate memory for Yrtsidua output buffer */
>   out_buf = gst_buffer_new();
>   GST_BUFFER_SIZE (out_buf) = YRTSIDUA_OUTPUT_BUFFER_SIZE;
>   GST_BUFFER_MALLOCDATA (out_buf) = g_malloc (YRTSIDUA_OUTPUT_BUFFER_SIZE);
>   GST_BUFFER_DATA (out_buf) = GST_BUFFER_MALLOCDATA (out_buf);
> }
> 
> ----------------------------------------------
> 
> 
> 
> 
> Thanks and regards,
> Sharath
> 
> _____________________________________________________________________________
> ___________________________________________________________________________
> 
> 
> 
> 
> 
> 
> 
> -----Original Message-----
> From: Stefan Kost [mailto:ensonic at hora-obscura.de] 
> Sent: Thursday, December 13, 2007 1:11 AM
> To: Sharath Mudalamane
> Cc: gstreamer-devel at lists.sourceforge.net
> Subject: Re: [gst-devel] How to overcome the caps limitation of peers during
> caps negotiation?
> 
> Hi,
> 
> Sharath Mudalamane schrieb:
>> To: 'gstreamer-devel at lists.sourceforge.net'
>> Subject: How to overcome the caps limitation of peers during caps
>> negotiation?
>>
>>  
>>
>>  
>>
>> Hello all,
>>
>>  
>>
>>  
>>
>> PROBLEM DESCRIPTION:
>>
>>  
>>
>> I have developed a gstreamer filter (say "wow").
>>
>> I am trying to play a 6 channel (> 2 channels) wav file with my filter
>> in the pipeline (on Nokia 770) as follows:
>>
>> Gst-launch-0.10 filesrc location=6channel.wav ! wavparse ! wow ! dsppcmsink
>>  
>>
>> But, this fails during caps negotiation due to the fact that
>> dsppcmsink's sink pad supports only a MAX of 2 channels.
>>
> Your src-pad has fixed 2 channels. So no need to negotiate there. What I
> belive
> is that you forget to set the caps on the buffer you sent out. How do you
> allocate your output buffers? Are you using
> gst_pad_alloc_buffer_and_set_caps()?
> 
> Can you post the chain-function of your code?
> 
> Stefan
> 
>>  
>>
>> How should I implement my gst_wow_getcaps (GstPad) function to overcome
>> this peer caps limitation?
>>
>> I read in Plug-in writer's guide section 10.5. about implementating
>> _getcaps() to overcome such limitations and setting order of preferences.
>>
>> But, I need more information and guidelines about how this _getcaps is
>> used by gstreamer during caps negotiation.
>>
>>  
>>
>>  
>>
>>  
>>
>>  
>>
>> DETAILS OF MY PLUGIN:
>>
>>  
>>
>>  
>>
>> My plugin's sink and src pads are like this:
>>
>> NOTE: my plugin can take 1 to 6 channels and outputs 2 channels always.
>>
>>  
>>
>>
> -----------------------------------------------------------------------------
> -----------
>> static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
>>
>>     GST_PAD_SINK,
>>
>>     GST_PAD_ALWAYS,
>>
>>     GST_STATIC_CAPS (
>>
>>         "audio/x-raw-int, "
>>
>>         "signed = (boolean){ true, false }, "
>>
>>         "width = (int) 16, "
>>
>>         "depth = (int) 16, "
>>
>>         "endianess = (int) 1234, "
>>
>>         "channels = (int) [ 1 , 6 ], "
>>
>>         "rate = (int) { 8000, 11025, 12000, 16000, 22050, 24000, 32000,
>> 44100, 48000 } "
>>
>>     )
>>
>> );
>>
>>  
>>
>> static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
>>
>>     GST_PAD_SRC,
>>
>>     GST_PAD_ALWAYS,
>>
>>     GST_STATIC_CAPS (
>>
>>         "audio/x-raw-int, "
>>
>>         "signed = (boolean){ true, false }, "
>>
>>         "width = (int) 16, "
>>
>>         "depth = (int) 16, "
>>
>>         "endianess = (int) 1234, "
>>
>>         "channels = (int) 2, "
>>
>>         "rate = (int) { 8000, 11025, 12000, 16000, 22050, 24000, 32000,
>> 44100, 48000 } "
>>
>>     )
>>
>> );
>>
>>  
>>
>>
> -----------------------------------------------------------------------------
> ------------------
>>  
>>
>>  
>>
>> Nokia770-49:~# gst-inspect-0.10 wow
>>
>> Factory Details:
>>
>>   Long name:   
>>
>>   Class:        Filter/Audio
>>
>>   Description:  Enhances stereo content for headphones
>>
>>   Author(s):    Sharath Mudalamane <sharath_m at mindtree.com>
>>
>>   Rank:         none (0)
>>
>>  
>>
>> Plugin Details:
>>
>>   Name:                 wow
>>
>>   Description:          Enhances stereo content for mobile device
>>
>>   Filename:             /usr/lib/gstreamer-0.10/libgstwow.so
>>
>>   Version:              0.10.0.1
>>
>>   License:              LGPL
>>
>>   Source module:        gst-plugin
>>
>>   Binary package:       GStreamer
>>
>>   Origin URL:          
>>
>>  
>>
>> GObject
>>
>>  +----GstObject
>>
>>        +----GstElement
>>
>>              +----GstWow
>>
>>  
>>
>> Pad Templates:
>>
>>   SRC template: 'src'
>>
>>     Availability: Always
>>
>>     Capabilities:
>>
>>       audio/x-raw-int
>>
>>                  signed: { true, false }
>>
>>                   width: 16
>>
>>                   depth: 16
>>
>>               endianess: 1234
>>
>>                channels: 2
>>
>>                    rate: { 8000, 11025, 12000, 16000, 22050, 24000,
>> 32000, 44100, 48000 }
>>
>>  
>>
>>   SINK template: 'sink'
>>
>>     Availability: Always
>>
>>     Capabilities:
>>
>>       audio/x-raw-int
>>
>>                  signed: { true, false }
>>
>>                   width: 16
>>
>>                   depth: 16
>>
>>               endianess: 1234
>>
>>                channels: [ 1, 6 ]
>>
>>                    rate: { 8000, 11025, 12000, 16000, 22050, 24000,
>> 32000, 44100, 48000 }
>>
>>  
>>
>>  
>>
>> Element Flags:
>>
>>   no flags set
>>
>>  
>>
>> Element Implementation:
>>
>>   No loopfunc(), must be chain-based or not configured yet
>>
>>   Has change_state() function: 0x40040ba1
>>
>>   Has custom save_thyself() function: 0x40040f09
>>
>>   Has custom restore_thyself() function: 0x40041191
>>
>>  
>>
>> Element has no clocking capabilities.
>>
>> Element has no indexing capabilities.
>>
>>  
>>
>> Pads:
>>
>>   SRC: 'src'
>>
>>     Implementation:
>>
>>     Pad Template: 'src'
>>
>>   SINK: 'sink'
>>
>>     Implementation:
>>
>>       Has chainfunc(): 0x4068fde8
>>
>>     Pad Template: 'sink'
>>
>>  
>>
>> Element Properties:
>>
>>  
>>
>> [ not shown ]
>>
>>  
>>
>> Nokia770-49:~#
>>
>>  
>>
>>
> -----------------------------------------------------------------------------
> -----------
>>  
>>
>> OTHER OBSERVATIONS:
>>
>>  
>>
>> Gst-launch-0.10 filesrc location=6channel.wav ! wavparse ! wow ! dsppcmsink
>>
>> The above pipeline worked for wav files with 1 and 2 channels. */It
>> fails (hang up) for 3,4,5,6 channels/*.
>>
>>  
>>
>> The logs are provided below
>>
>>
> -----------------------------------------------------------------------------
> ------------------
>> Nokia770-49:/home/user/media_samples# gst-launch-0.10 -m filesrc
>> location=SigYrtsidua_2ch_48k.wav ! wavparse ! wow ! dsppcmsink
>>
>> Setting pipeline to PAUSED ...
>>
>> Pipeline is PREROLLING ...
>>
>> Got Message from element "dsppcmsink0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wow0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wavparse0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "filesrc0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "pipeline0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_PAUSED
>>
>> Got Message from element "wow0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_READY,
>> new-state=(GstState)GST_STATE_PAUSED,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wavparse0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_READY,
>> new-state=(GstState)GST_STATE_PAUSED,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "filesrc0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_READY,
>> new-state=(GstState)GST_STATE_PAUSED,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>>  
>>
>>  #[gst_wow_set_caps] called !!... GstPad = <0x50180>, GstCaps = <0x180b0>
>>
>>  #[gst_wow_set_caps] Proposed Capabilities by the stream:
>>
>>   [ audio/x-raw-int, endianness=(int)1234, channels=(int)2,
>> width=(int)16, depth=(int)16, signed=(boolean)true, rate=(int)48000 ]
>>
>> Got Message from element "wavparse0" (tag): taglist,
>> audio-codec=(string)"Uncompressed\ 16-bit\ PCM\ audio"
>>
>> Got Message from element "dsppcmsink0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_READY,
>> new-state=(GstState)GST_STATE_PAUSED,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "pipeline0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_READY,
>> new-state=(GstState)GST_STATE_PAUSED,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Pipeline is PREROLLED ...
>>
>> Setting pipeline to PLAYING ...
>>
>> Got Message from element "pipeline0" (new-clock): GstMessageNewClock,
>> clock=(GstClock)(NULL)
>>
>> New clock: GstSystemClock
>>
>> Got Message from element "dsppcmsink0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_PAUSED,
>> new-state=(GstState)GST_STATE_PLAYING,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wow0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_PAUSED,
>> new-state=(GstState)GST_STATE_PLAYING,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wavparse0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_PAUSED,
>> new-state=(GstState)GST_STATE_PLAYING,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "filesrc0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_PAUSED,
>> new-state=(GstState)GST_STATE_PLAYING,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "pipeline0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_PAUSED,
>> new-state=(GstState)GST_STATE_PLAYING,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "pipeline0" (eos): no message details
>>
>> Got EOS from element "pipeline0".
>>
>> Execution ended after 2938873000 ns.
>>
>> Setting pipeline to PAUSED ...
>>
>> Setting pipeline to READY ...
>>
>> Setting pipeline to NULL ...
>>
>> FREEING pipeline ...
>>
>> Nokia770-49:/home/user/media_samples#
>>
>>  
>>
>>  
>>
>>  
>>
>> Nokia770-49:/home/user/media_samples# gst-launch-0.10 -m filesrc
>> location=SigYrtsidua_6ch_48k.wav ! wavparse ! wow ! dsppcmsink
>>
>> Setting pipeline to PAUSED ...
>>
>> Pipeline is PREROLLING ...
>>
>> Got Message from element "dsppcmsink0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wow0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wavparse0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "filesrc0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "pipeline0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_PAUSED
>>
>> Got Message from element "wow0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_READY,
>> new-state=(GstState)GST_STATE_PAUSED,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wavparse0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_READY,
>> new-state=(GstState)GST_STATE_PAUSED,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "filesrc0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_READY,
>> new-state=(GstState)GST_STATE_PAUSED,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wavparse0" (tag): taglist,
>> audio-codec=(string)"Uncompressed\ 16-bit\ PCM\ audio"
>>
>> Caught interrupt --
>>
>> Nokia770-49:/home/user/media_samples#
>>
>> Nokia770-49:/home/user/media_samples#
>>
>> Nokia770-49:/home/user/media_samples#
>>
>> Nokia770-49:/home/user/media_samples#
>>
>>  
>>
>>  
>>
>>  
>>
>>  
>>
>>  
>>
>>  
>>
>>  
>>
>>  
>>
>>  
>>
>>  
>>
>>  
>>
>> Nokia770-49:/home/user/media_samples# gst-launch-0.10 -m filesrc
>> location=SigYrtsidua_5ch_48k.wav ! wavparse ! wow ! dsppcmsink
>>
>> Setting pipeline to PAUSED ...
>>
>> Pipeline is PREROLLING ...
>>
>> Got Message from element "dsppcmsink0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wow0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wavparse0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "filesrc0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "pipeline0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
>> pending-state=(GstState)GST_STATE_PAUSED
>>
>> Got Message from element "wow0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_READY,
>> new-state=(GstState)GST_STATE_PAUSED,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wavparse0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_READY,
>> new-state=(GstState)GST_STATE_PAUSED,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "filesrc0" (state-changed): GstMessageState,
>> old-state=(GstState)GST_STATE_READY,
>> new-state=(GstState)GST_STATE_PAUSED,
>> pending-state=(GstState)GST_STATE_VOID_PENDING
>>
>> Got Message from element "wavparse0" (tag): taglist,
>> audio-codec=(string)"Uncompressed\ 16-bit\ PCM\ audio"
>>
>> Caught interrupt --
>>
>> Nokia770-49:/home/user/media_samples#
>>
>>  
>>
>>            
>>
>>
> -----------------------------------------------------------------------------
> ------------------
>>  
>>
>> (2)
>>
>>  
>>
>> Also I tried writing a typical */hello world program/* to check
>> capabilities during negotiation. I have collected the capabilities of my
>> filter wow during the linking of the wavparse dynamic pad (sinkpad) and
>> my filter's static source pad in the callback function. Below is my
>> observation:
>>
>>  
>>
>> FOR 6CHANNEL: the gst_pad_link () fails and also I observed the filter's
>> capabilities limited to 2 channels.
>>
>> ----------------------------------------------------------
>>
>> Nokia770-49:/home/user/bin# ./wav_hell01
>> ../media_samples/SigYrtsidua_6ch_48k.wav 
>>
>>  
>>
>> [main()] Calling ... gst_init()
>>
>>  
>>
>> [main()] AFTER Calling... gst_init()
>>
>>  
>>
>> [main()] Calling... factory_make( wow)
>>
>>  
>>
>> [main()] AFTER Calling... factory_make( wow) handle = <358504>
>>
>>  
>>
>> [main()] Adding wow to the pipeline BIN
>>
>>  
>>
>> [main()] AFTER   Adding wow to the pipeline BIN
>>
>>  
>>
>>  
>>
>> [main()] Setting to PLAYING
>>
>>  
>>
>>  
>>
>> [main()] Running
>>
>>  
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <1> new <2> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <1> new <2> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <1> new <2> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <1> new <2> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <1> new <2> pending <4>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <2> new <3> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <2> new <3> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <2> new <3> pending <0>
>>
>> */ /*
>>
>> */ [new_pad()] The Capabilities of dynamic pad of wavparse:/*
>>
>> */ [ audio/x-raw-int, endianness=(int)1234, channels=(int)6,
>> width=(int)16, depth=(int)16, signed=(boolean)true,
>> channel-positions=(GstAudioChannelPosition)<
>> GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
>> GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
>> GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER, GST_AUDIO_CHANNEL_POSITION_LFE,
>> GST_AUDIO_CHANNEL_POSITION_REAR_LEFT,
>> GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT >, rate=(int)48000 ]/*
>>
>> */ /*
>>
>> */ /*
>>
>> */ /*
>>
>> */ [new_pad()] The Caps of sinkPad of wow filter:/*
>>
>> */ [ audio/x-raw-int, endianness=(int)1234, signed=(boolean){ true,
>> false }, width=(int)16, depth=(int)16, rate=(int){ 8000, 11025, 12000,
>> 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ],
>> endianess=(int)1234 ]/*
>>
>>  
>>
>>  
>>
>>  
>>
>> [new_pad()] Dynamic pad created, linking parser-filter
>>
>>  
>>
>>  
>>
>> */[NEW_PAD()] gst_pad_link() returns [-4]/*
>>
>>  
>>
>> Nokia770-49:/home/user/bin#
>>
>>  
>>
>> -------------------------------------------------------
>>
>>  
>>
>> FOR 2 CHANNEL:
>>
>> --------------------------------------------------------
>>
>> Nokia770-49:/home/user/bin# ./wav_hell01
>> ../media_samples/SigYrtsidua_2ch_48k.wav
>>
>>  
>>
>> [main()] Calling ... gst_init()
>>
>>  
>>
>> [main()] AFTER Calling... gst_init()
>>
>>  
>>
>> [main()] Calling... factory_make( wow)
>>
>>  
>>
>> [main()] AFTER Calling... factory_make( wow) handle = <358504>
>>
>>  
>>
>> [main()] Adding wow to the pipeline BIN
>>
>>  
>>
>> [main()] AFTER   Adding wow to the pipeline BIN
>>
>>  
>>
>>  
>>
>> [main()] Setting to PLAYING
>>
>>  
>>
>>  
>>
>> [main()] Running
>>
>>  
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <1> new <2> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <1> new <2> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <1> new <2> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <1> new <2> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <1> new <2> pending <4>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <2> new <3> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <2> new <3> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <2> new <3> pending <0>
>>
>>  
>>
>> */ [new_pad()] The Capabilities of dynamic pad of wavparse:/*
>>
>> */ [ audio/x-raw-int, endianness=(int)1234, channels=(int)2,
>> width=(int)16, depth=(int)16, signed=(boolean)true, rate=(int)48000 ]/*
>>
>> */ /*
>>
>> */ /*
>>
>> */ /*
>>
>> */ [new_pad()] The Caps of sinkPad of wow filter:/*
>>
>> */ [ audio/x-raw-int, endianness=(int)1234, signed=(boolean){ true,
>> false }, width=(int)16, depth=(int)16, rate=(int){ 8000, 11025, 12000,
>> 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ],
>> endianess=(int)1234 ]/*
>>
>>  
>>
>>  
>>
>>  
>>
>> [new_pad()] Dynamic pad created, linking parser-filter
>>
>>  
>>
>>  
>>
>> */[NEW_PAD()] gst_pad_link() returns [0]/*
>>
>>  
>>
>>  #[gst_wow_set_caps] called !!... GstPad = <0x511c0>, GstCaps = <0x65fd0>
>>
>>  #[gst_wow_set_caps] Proposed Capabilities by the stream:
>>
>>   [ audio/x-raw-int, endianness=(int)1234, channels=(int)2,
>> width=(int)16, depth=(int)16, signed=(boolean)true, rate=(int)48000 ]
>>
>>  
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <2> new <3> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <2> new <3> pending <4>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <3> new <4> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <3> new <4> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <3> new <4> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <3> new <4> pending <0>
>>
>>  [GST_MESSAGE_STATE_CHANGED] recvd! old <3> new <4> pending <0>
>>
>>  
>>
>> [bus_call()] End-of-stream
>>
>>  
>>
>>  
>>
>> [main()] Returned, stopping playback
>>
>>  
>>
>>  
>>
>> [main()] Deleting pipeline ... Here wow will also be de-referenced...!
>>
>>  
>>
>> [main()] AFTER Deleting pipeline ... Here wow will also be
> de-referenced...!
>>  
>>




More information about the gstreamer-devel mailing list