UDP Payloader

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

UDP Payloader

Michael Rubinstein

Hi,

 

We need to send MPEG Transport Stream packets using UDP with seven TS packets per UDP packet.  Each UDP packet needs to be 7 * 188 = 1316 bytes.

Also the UDP packets need to be transmitted at a constant rate, not in a burst.

 

The buffers that are produced by mpegtsmux are large.

 

Is there a way to do this that I missed?

 

Would it be better to change mpegtsmux , write a “Payloader” or something else?

 

Thanks,

Michael Rubinstein

 


_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: UDP Payloader

Michael Williamson
On Sun, Oct 21, 2012 at 11:16 AM, Michael Rubinstein
<[hidden email]> wrote:

>
> Hi,
>
>
>
> We need to send MPEG Transport Stream packets using UDP with seven TS packets per UDP packet.  Each UDP packet needs to be 7 * 188 = 1316 bytes.
>
> Also the UDP packets need to be transmitted at a constant rate, not in a burst.
>
>
>
> The buffers that are produced by mpegtsmux are large.
>
>
>
> Is there a way to do this that I missed?
>
>
>
> Would it be better to change mpegtsmux , write a “Payloader” or something else?
>
>
>
>

That's interesting, as I just had to write an element to buffer up the
188 byte packets from mpegtsmux in order to feed a v4l2 driver that
feeds a hardware decoder.  My observation was that the mpegtsmux was
always pushing a single packet at a time.  I had intended to use
v4l2sink but it wasn't buffering the data at all and there were too
many QBUF exchanges for the driver to keep up working 1 packet at a
time.

How are you getting mpegtsmux to buffer the packets before pushing?  I
wonder if it's how mpegtsmux is being fed data...

-Mike


--
Michael Williamson
315-425-4045x230
www.criticallink.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

RE: UDP Payloader

Michael Rubinstein
> On Sun, Oct 21, 2012 at 11:16 AM, Michael Rubinstein <mrubinstein@rai-
> dev.com> wrote:
> > Hi,
> >
> > We need to send MPEG Transport Stream packets using UDP with seven TS
> packets per UDP packet.  Each UDP packet needs to be 7 * 188 = 1316 bytes.
> >
> > Also the UDP packets need to be transmitted at a constant rate, not in a
> burst.
> >
> > The buffers that are produced by mpegtsmux are large.
> >
> > Is there a way to do this that I missed?
> >
> > Would it be better to change mpegtsmux , write a  Payloader  or something
> else?
> >
>
> That's interesting, as I just had to write an element to buffer up the
> 188 byte packets from mpegtsmux in order to feed a v4l2 driver that feeds a
> hardware decoder.  My observation was that the mpegtsmux was always
> pushing a single packet at a time.  I had intended to use v4l2sink but it wasn't
> buffering the data at all and there were too many QBUF exchanges for the
> driver to keep up working 1 packet at a time.
>
> How are you getting mpegtsmux to buffer the packets before pushing?  I
> wonder if it's how mpegtsmux is being fed data...
>
> -Mike
>

I'm creating the transport stream with the mpeg2 video encoder.  Here's an
example pipeline:

videotestsrc pattern=smpte is-live=true \
! video/x-raw,format=I420, \
width=720,height=480,framerate=30000/1001 \
! avenc_mpeg2video bitrate=4000000 \
! queue \
! mpegtsmux \
! queue name=udpq \
! udpsink port=1234 host=127.0.0.1 sync=true buffer-size=300000

This sends UDP packets of various lengths from around 15 to 32 K Bytes.

I'm using a Windows (MinGW) build of 1.0.1.

Michael


_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel