[gst-devel] Segmentation fault while using GST_BUFFER macros

irfanshaikh irfanshaikh at tataelxsi.co.in
Fri Nov 7 06:20:28 CET 2008


Hi sudarshan.....

                 I fixed the segmentation fault......Yaa i had not allocated
size of outputbuff properly....
Now it works fine...Thanks for your help.....

Regards,
Irfan
:-)


  -----Original Message-----
  From: sudarshan bisht [mailto:bisht.sudarshan at gmail.com]
  Sent: Friday, November 07, 2008 10:20 AM
  To: irfanshaikh at tataelxsi.co.in; Discussion of the development of
GStreamer
  Subject: Re: [gst-devel] Segmentation fault while using GST_BUFFER macros


  Hi Irfan
           Did u check outputbuf is allocated properly as a GstBuffer  ?


  On Thu, Nov 6, 2008 at 9:02 PM, irfanshaikh <irfanshaikh at tataelxsi.co.in>
wrote:

    Hi Sudarshan,

    I was not able to do changes as you suggested to me. Instead i tried the
following. Since i just needed a flag or something which my next plug-in
element should recognize i used following.

      for(m=0; m<pkt->payload_count; m++)
      {
              if(pkt->payloads[m].key_frame == 1)
              {
                  g_print("Inside IF\n");
                  GST_BUFFER_OFFSET(outputbuf) = 1;
/*Segmentation fault*/
                  GST_BUFFER_FLAG_SET (outputbuf,
GST_BUFFER_FLAG_DELTA_UNIT);         /*Segmentation fault*/
                  GST_BUFFER_DURATION(outputbuf)=(GstClockTime)1;
/*Segmentation fault*/
                  /*
                  At RTP ASF payloader check using...
                  GST_BUFFER_FLAG_IS_SET(buf, GST_BUFFER_FLAG_DELTA_UNIT);
                  */
                  g_print("In Packet Payload %d consists of KEY FRAME\n",
m);
              }
        }

    I am not able to use any of the macros, if i use them i get a
segmentation fault. How shall i avoid Segmentation fault.


    Regards,
    Irfan

      -----Original Message-----
      From: sudarshan bisht [mailto:bisht.sudarshan at gmail.com]
      Sent: Thursday, November 06, 2008 2:14 PM
      To: Discussion of the development of GStreamer
      Subject: Re: [gst-devel] Size of output buffer


      Hi Irfan  ,
               Yes this can be done in better way . Use  gst_caps_new_simple
()  to set the flag for key frame . You can see how asfdemux sends extradata
to decoder .( see gstasfdemux.c file ) ,
           Once you do this , you can receive the same data in decoder or
next element . So in order to receive this information next element has to
register funtion using gst_pad_set_setcaps_function( )  ( just check some
decode's code which gets frame height and width from demuxer in this
manner )  .



      On Thu, Nov 6, 2008 at 11:23 AM, Irfan Shaikh
<irfanshaikh at tataelxsi.co.in> wrote:


        Hi sudarshan,

             I have completed the asfparser plug-in code now itz working
fine as per requirrement :-)

        I am only facing a small problem. I want to convey to next Plug-in
element. Whether ASF data packet i m sending to next element consists of Key
frame or no ?


        For conveying this information i have thought of using following
field of GstBuffer.
          guint64 offset;
        I would either SET it or RESET it while pushing the data
gst_pad_push(asfparse->srcpad, outputbuf)


        Is there any other convinent{feasible} way of conveying the above
information to next plug-in element {Is there some macro or Some flag that i
can use using GstBuffer before pushing outputbuf}
        So as to convey to next element whether the outputbuf {consisting
ASF data packet} has a KEY frame or no ??


        Regards,
        Irfan


        -----Original Message-----
        From: sudarshan bisht [mailto:bisht.sudarshan at gmail.com]

        Sent: Thu 11/6/2008 10:55 AM
        To: Discussion of the development of GStreamer
        Subject: Re: [gst-devel] Size of output buffer

        Hi Irfan ,

                U r right data is pushed on src pad .

        On Tue, Oct 21, 2008 at 6:58 PM, Irfan Shaikh
        <irfanshaikh at tataelxsi.co.in>wrote:

        >
        > Thanks a lot Sudarshan....
        >
        > The sample code which you have send is really helping me a lot.
        >
        > If i am not wrong, I think-------- gst_pad_push(sinkpad,
my_buffer) should
        > be like------ gst_pad_push(asfparse->srcpad, my_buffer).
        >
        > Am i corrrect ?
        >
        > Thanks a lot for your help and support,
        > Regards,
        > Irfan
        >
        >
        >
        > -----Original Message-----

        > From: sudarshan bisht
[mailto:bisht.sudarshan at gmail.com<bisht.sudarshan at gmail.com>
        > ]
        > Sent: Tue 10/21/2008 6:44 PM
        > To: Discussion of the development of GStreamer
        > Subject: Re: [gst-devel] Size of output buffer
        >
        >  Hi Irfan ,
        >
        >           I think here no need to use circular buffer , because
the buffer
        > which u receive in ur plugin , u have to unref that after properly
copying
        > required buffer from that . And the buffer which ul allocate in
your
        > plugin
        > will be sent u next element thus will be unref by the next element
.
        >
        >   I am writing a piece of code , may give u some hint  :-
        >
        >  asf_parser_plugin_chain(GstPad pad, GstBuffer *buffer)
        >  {
        >
        >       gint packet_size=0;
        >       GstBuffer *my_buffer=NULL;
        >
        >       packet_size = parse_buffer(GST_BUFFER_DATA(buffer) ); // get
        > the packet size
        >
        >       my_buffer=gst_buffer_new_and_alloc ( packet_size );
        >
        >
        > memcpy(GST_BUFFER_DATA( my_buffer),  GST_BUFFER_DATA(buffer),
packet_size
        > ); // can use other APIs also provided by GstBuffer (
        >
        >
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstr
eamer-GstBuffer.html
        > )
        >
        >         gst_pad_push(sinkpad, my_buffer);
        >
        >         gst_buffer_unref(buffer) ; // check if u have copied all
the data
        >
        >         return GST_FLOW_OK ;
        >       }
        >
        >
        >
        >
        >
        >
        >
        >
        >
        >
        > On Tue, Oct 21, 2008 at 5:13 PM, Irfan Shaikh
        > <irfanshaikh at tataelxsi.co.in>wrote:
        >
        > >  Hi sudarshan,
        > >
        > >           Thanks a lot for your reply. I am pretty clear now.
        > >
        > > Earlier i had decided some other appoach as follows:
        > >           SO now i think i should not use A circular buffer,
directly i
        > can
        > > use the existing Gstreamer buffer ritee ??
        > >
        > > Thanks for your reply.
        > >
        > >       Regarding my query :
        > >       1)I have written an ASF parser code which reads an ASF
file from a
        > > file location path.
        > >       2)It uses fseek and fread to read the data from file in a
temperory
        > > buffer
        > >       3)It uses the temporary buffer to parse the ASf headers
        > >       4)Lastly collect the ASF data packets after parsing the
headers
        > into
        > > another temperory bufffer (tempbuf).
        > >       5) When i make ASF parser as gstreamer plugin, i will use
        > > gst_pad_push (asfparse->srcpad, tempbuf);
        > >
        > > I am clear about the output interface when i make the ASF parser
as
        > > gstreamer plug-in.
        > >
        > >       Actual scenario:
        > >
        > >       1) Input module to ASF parser plug-in is output from
"ffmux_asf"
        > > which will be in form of data buffers.
        > >       2) I will need some buffer to collect these data buffers
        > >       3) I thought of having a "Circular buffer" to take input
from
        > > ffmux_asf.{Is it feasible to use a normal buffer like uint8_t
*Newbuf to
        > > collect
        > >          data buffers from ffmux_asf ?? {If YES. How much memory
should i
        > > allocate for NewBuf}}
        > >       4) Since my application is related to Live Streaming the
buffer
        > > NewBuf size can be huge.
        > >       5) Circular buffer would have been useful.Since i will
free the
        > > memory as soon as i read the Circular buffer.
        > >       6) I can use pointer operations similar to file operations
        > >
        > > In gstreamer i have GstBuffer *buf, If i use circular buffer how
can i
        > use
        > > the existing "buf".
        > >
        > > Regards,
        > > Irfan.
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > >
        > > -----Original Message-----
        >  > From: sudarshan bisht
[mailto:bisht.sudarshan at gmail.com<bisht.sudarshan at gmail.com>
        > <bisht.sudarshan at gmail.com>
        > > ]
        > > Sent: Tue 10/21/2008 4:53 PM
        > > To: Discussion of the development of GStreamer
        > > Subject: Re: [gst-devel] Size of output buffer
        > >
        > > HI Irfan ,
        > >               You are trying to write a ASF Parser plugin which
will be
        > > used
        > > after ffmux_asf in pipeline .
        > >  Now you want to parse data packets and send them to next
element .
        > >
        > >    The buffer you get from ffmux_asf is already allocated so you
dont
        > need
        > > to allocated a separate buffer for that .
        > >    To know the size of input buffer in your ASF Parser plugin
you can use
        > > GST_BUFFER_SIZE(buffer) .
        > >      So now you have to parse data part of this buffer , because
data
        > part
        > > of the buffer have the actual data .
        > >      For your outgoing packets allocate one more GstBuffer and
copy the
        > > required number of bytes of data from received buffer to this
buffer and
        > > push this buffer to next element.
        > >
        > >  You can use adapter APIs also to make it simpler . Read
GstBuffer APIs
        > > thoroughly for good practice.
        > >
        > >
        > >
        > > On Tue, Oct 21, 2008 at 3:59 PM, Irfan Shaikh
        > > <irfanshaikh at tataelxsi.co.in>wrote:
        > >
        > > >
        > > >
        > > >
        > > >  -----Original Message-----
        > >  > From: sudarshan bisht
[mailto:bisht.sudarshan at gmail.com<bisht.sudarshan at gmail.com>
        > <bisht.sudarshan at gmail.com>
        > > <bisht.sudarshan at gmail.com>
        > > > ]
        > > > Sent: Tue 10/21/2008 2:25 PM
        > > > To: Discussion of the development of GStreamer
        > > > Subject: Re: [gst-devel] Size of output buffer
        > > >
        > > >  Hi
        > > >
        > > >  "gst_pad_push_event" function pushes only events ( EOS , new
segment
        > etc
        > > )
        > > > not buffer , in order to push buffer use "gst_pad_push"  api .
        > > >
        > > > On Tue, Oct 21, 2008 at 1:58 PM, Irfan Shaikh
        > > > <irfanshaikh at tataelxsi.co.in>wrote:
        > > >
        > > > >
        > > > > Hi Julien,
        > > > >
        > > > >      Thanks for your reply..
        > > > >
        > > > >      For ffmux_asf plug-in in gstffmpegmux.c.
        > > > >
        > > > >      Is "gst_pad_push_event" is the fuction which pushes the
buffer
        > > which
        > > > > has ASF data into sink pad of next elemnt ?
        > > > >      i.e. gst_pad_push_event (ffmpegmux->srcpad,
gst_event_new_eos
        > ());
        > > > > When i checked the sise of buffer its variable in size.
        > > > >
        > > > >
        > > > >       I need to allocate buffer for the next module to
"ffmux_asf".
        > > Which
        > > > > is an asf parse. i need to allocate buffer in asf parser
plugin. I
        > > wanted
        > > > to
        > > > > know what size of buffer should i allocate for ASF parser
plug-in to
        > > take
        > > > > i/p from ffmux_asf
        > > > >
        > > > > I checked the buffer size in ffmux_asf in
gst_ffmpegmux_collected
        > > > > (GstCollectPads * pads, gpointer user_data)
        > > > >
        > > > > But it shows variable part. Tell me whether i am right ??
        > > > >
        > > > > Size of buf:5757
        > > > > Size of buf:7134
        > > > > Size of buf:6927
        > > > > Size of buf:5670
        > > > > Size of buf:4989
        > > > > Size of buf:4004
        > > > > Size of buf:3615
        > > > > Size of buf:3188
        > > > > Size of buf:3022
        > > > > Size of buf:2703
        > > > >
        > > > > Thanks and regards,
        > > > > Irfan
        > > > >
        > > > >
        > > > >
        > > > > -----Original Message-----
        > > >  > From: Julien Puydt [mailto:jpuydt at free.fr <jpuydt at free.fr>
<
        > jpuydt at free.fr> <
        > > jpuydt at free.fr> <
        > > > jpuydt at free.fr>]
        > > > > Sent: Mon 10/20/2008 3:29 PM
        > > > > To: Discussion of the development of GStreamer
        > > > > Subject: Re: [gst-devel] Size of output buffer
        > > > >
        > > > > irfanshaikh a écrit :
        > > > > >         How can i find size of output buffer in
"ffmux_asf" which
        > is
        > > > > pushed
        > > > > > to the sink pad of next element ?
        > > > >
        > > > > GST_BUFFER_SIZE (buffer) ?
        > > > >
        > > > > Snark on #gstreamer
        > > > >
        > > > >
        >
> -------------------------------------------------------------------------
        > > > > This SF.Net email is sponsored by the Moblin Your Move
Developer's
        > > > > challenge
        > > > > Build the coolest Linux based applications with Moblin SDK &
win
        > great
        > > > > prizes
        > > > > Grand prize is a trip for two to an Open Source event
anywhere in the
        > > > world
        > > > > http://moblin-contest.org/redirect.php?banner_id=100&url=/
        > > > > _______________________________________________
        > > > > gstreamer-devel mailing list
        > > > > gstreamer-devel at lists.sourceforge.net
        > > > > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
        > > > >
        > > > >  This message (including any attachment) is confidential and
may be
        > > > > legally privileged. Access to this message by anyone other
than the
        > > > intended
        > > > > recipient(s) listed above is unauthorized. If you are not
the
        > intended
        > > > > recipient you are hereby notified that any disclosure,
copying, or
        > > > > distribution of the message, or any action taken or omission
of
        > action
        > > by
        > > > > you in reliance upon it, is prohibited and may be unlawful.
Please
        > > > > immediately notify the sender by reply e-mail and
permanently delete
        > > all
        > > > > copies of the message if you have received this message in
error.
        > > > >
        > > > >
        >
> -------------------------------------------------------------------------
        > > > > This SF.Net email is sponsored by the Moblin Your Move
Developer's
        > > > > challenge
        > > > > Build the coolest Linux based applications with Moblin SDK &
win
        > great
        > > > > prizes
        > > > > Grand prize is a trip for two to an Open Source event
anywhere in the
        > > > world
        > > > > http://moblin-contest.org/redirect.php?banner_id=100&url=/
        > > > > _______________________________________________
        > > > > gstreamer-devel mailing list
        > > > > gstreamer-devel at lists.sourceforge.net
        > > > > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
        > > > >
        > > > >
        > > >
        > > >
        > > > --
        > > > Regards,
        > > >
        > > > Sudarshan Bisht
        > > >
        > > >
        > > > Hi sudarshan/Ved,
        > > >
        > > >       In gstffmpegmux.c {gst-ffmpeg-0.10.5/ext/ffmpeg} i do
not see any
        > > > "gst_pad_push" function.
        > > >
        > > > I understand we need a function something like "gst_pad_push
        > > > (asfmux->srcpad, buf)", so as to push the buffer to the sink
pad of
        > next
        > > > module.
        > > >
        > > > But i do not find any such api in gstffmpegmux.c.
        > > >
        > > > So i am unable to find the size of output buffer which is send
to the
        > > next
        > > > module.So i got confused with "gst_pad_push_event"
        > > >
        > > > Please can you help me regarding this issue.
        > > >
        > > > I need all this information to allocate buffer size for my
module "ASF
        > > > parser" which is built from scratch in C. rite know i am
reading from
        > > file.
        > > >
        > > > I need to do same processing in ASF parser when i use
ffmux_asf as
        > input
        > > > module for ASF parser.
        > > >
        > > > Please help me regarding this.
        > > >
        > > >
        > > > Regards,
        > > > Irfan
        > > >
        > > >  This message (including any attachment) is confidential and
may be
        > > > legally privileged. Access to this message by anyone other
than the
        > > intended
        > > > recipient(s) listed above is unauthorized. If you are not the
intended
        > > > recipient you are hereby notified that any disclosure,
copying, or
        > > > distribution of the message, or any action taken or omission
of action
        > by
        > > > you in reliance upon it, is prohibited and may be unlawful.
Please
        > > > immediately notify the sender by reply e-mail and permanently
delete
        > all
        > > > copies of the message if you have received this message in
error.
        > > >
        > > >
        > ------------------------------------------------------------------
-------
        > > > This SF.Net email is sponsored by the Moblin Your Move
Developer's
        > > > challenge
        > > > Build the coolest Linux based applications with Moblin SDK &
win great
        > > > prizes
        > > > Grand prize is a trip for two to an Open Source event anywhere
in the
        > > world
        > > > http://moblin-contest.org/redirect.php?banner_id=100&url=/
        > > > _______________________________________________
        > > > gstreamer-devel mailing list
        > > > gstreamer-devel at lists.sourceforge.net
        > > > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
        > > >
        > > >
        > >
        > >
        > > --
        > > Regards,
        > >
        > > Sudarshan Bisht
        > >
        > >   This message (including any attachment) is confidential and
may be
        > > legally privileged. Access to this message by anyone other than
the
        > intended
        > > recipient(s) listed above is unauthorized. If you are not the
intended
        > > recipient you are hereby notified that any disclosure, copying,
or
        > > distribution of the message, or any action taken or omission of
action by
        > > you in reliance upon it, is prohibited and may be unlawful.
Please
        > > immediately notify the sender by reply e-mail and permanently
delete all
        > > copies of the message if you have received this message in
error.
        > >
        >
> -------------------------------------------------------------------------
        > > This SF.Net email is sponsored by the Moblin Your Move
Developer's
        > > challenge
        > > Build the coolest Linux based applications with Moblin SDK & win
great
        > > prizes
        > > Grand prize is a trip for two to an Open Source event anywhere
in the
        > world
        > > http://moblin-contest.org/redirect.php?banner_id=100&url=/
        > > _______________________________________________
        > > gstreamer-devel mailing list
        > > gstreamer-devel at lists.sourceforge.net
        > > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
        > >
        > >
        >
        >
        > --
        > Regards,
        >
        > Sudarshan Bisht
        >
        >   This message (including any attachment) is confidential and may
be
        > legally privileged. Access to this message by anyone other than
the intended
        > recipient(s) listed above is unauthorized. If you are not the
intended
        > recipient you are hereby notified that any disclosure, copying, or
        > distribution of the message, or any action taken or omission of
action by
        > you in reliance upon it, is prohibited and may be unlawful. Please
        > immediately notify the sender by reply e-mail and permanently
delete all
        > copies of the message if you have received this message in error.
        >
        > ------------------------------------------------------------------
-------
        > This SF.Net email is sponsored by the Moblin Your Move Developer's
        > challenge
        > Build the coolest Linux based applications with Moblin SDK & win
great
        > prizes
        > Grand prize is a trip for two to an Open Source event anywhere in
the world
        > http://moblin-contest.org/redirect.php?banner_id=100&url=/
        > _______________________________________________
        > gstreamer-devel mailing list
        > gstreamer-devel at lists.sourceforge.net
        > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
        >
        >


        --
        Regards,

        Sudarshan Bisht


        This message (including any attachment) is confidential and may be
legally privileged.  Access to this message by anyone other than the
intended recipient(s) listed above is unauthorized.  If you are not the
intended recipient you are hereby notified that any disclosure, copying, or
distribution of the message, or any action taken or omission of action by
you in reliance upon it, is prohibited and may be unlawful.  Please
immediately notify the sender by reply e-mail and permanently delete all
copies of the message if you have received this message in error.


        --------------------------------------------------------------------
-----
        This SF.Net email is sponsored by the Moblin Your Move Developer's
challenge
        Build the coolest Linux based applications with Moblin SDK & win
great prizes
        Grand prize is a trip for two to an Open Source event anywhere in
the world
        http://moblin-contest.org/redirect.php?banner_id=100&url=/
        _______________________________________________
        gstreamer-devel mailing list
        gstreamer-devel at lists.sourceforge.net
        https://lists.sourceforge.net/lists/listinfo/gstreamer-devel





      --
      Regards,

      Sudarshan Bisht

    The information contained in this electronic message and any attachments
to this message are intended for the exclusive use of the addressee(s) and
may contain proprietary, confidential or privileged information. If you are
not the intended recipient, you should not disseminate, distribute or copy
this e-mail. Please notify the sender immediately and destroy all copies of
this message and any attachments contained in it.


    ------------------------------------------------------------------------
-
    This SF.Net email is sponsored by the Moblin Your Move Developer's
challenge
    Build the coolest Linux based applications with Moblin SDK & win great
prizes
    Grand prize is a trip for two to an Open Source event anywhere in the
world
    http://moblin-contest.org/redirect.php?banner_id=100&url=/
    _______________________________________________
    gstreamer-devel mailing list
    gstreamer-devel at lists.sourceforge.net
    https://lists.sourceforge.net/lists/listinfo/gstreamer-devel





  --
  Regards,

  Sudarshan Bisht

The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments contained in it.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20081107/0919cc6b/attachment.htm>


More information about the gstreamer-devel mailing list