[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