[gst-devel] Size of output buffer

sudarshan bisht bisht.sudarshan at gmail.com
Tue Oct 21 15:14:55 CEST 2008


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/gstreamer-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>
> ]
> 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>
> > ]
> > 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>]
> > > 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20081021/212216ed/attachment.htm>


More information about the gstreamer-devel mailing list