Simple pipeline with rtp and udp

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

Simple pipeline with rtp and udp

Jon Dufresne
Hi,

I am experimenting with gstreamer for an rtp application. Before I
start coding, I want to see what gstreamer is capable of at the
moment, so I thought I would experiment with a few simple pipelines.
So far I have been unable to get even a simple pipeline working the
way I want and am at this point no sure what is going on.

I have two pipelines, one that is the server, and one that is the client.

The server looks like this:

gst-launch  \
        videotestsrc ! \
        theoraenc ! \
        rtptheorapay ! \
        udpsink

while the client looks like:

gst-launch --verbose \
        udpsrc ! \
        rtptheoradepay ! \
        theoradec ! \
        xvimagesink

I run these both on the same machine, in different terminals. My goal
is to have the videotestsrc image eventually play on the client side.

When I run the server I see the following output:

$ ./server
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock


At this point I assume it is in a good state and is doing the job I
want. So I go to star the client. Everytime I see the following:

$ ./client
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /pipeline0/rtptheoradepay0: Could not decode stream.
Additional debug info:
gstrtptheoradepay.c(623): gst_rtp_theora_depay_process ():
/pipeline0/rtptheoradepay0:
Could not switch codebooks
Execution ended after 17066459 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
FREEING pipeline ...


I am not sure what the above error is trying to tell me.

Does anyone have an idea what is wrong with my pipeline? Or an idea as
to an alternative I can try to acheive the same goal?

Thanks,
Jon

-------------------------------------------------------------------------
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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Simple pipeline with rtp and udp

Olivier Crête-2
On Sun, 2008-10-05 at 13:09 -0700, Jon Dufresne wrote:

> Hi,
>
> I am experimenting with gstreamer for an rtp application. Before I
> start coding, I want to see what gstreamer is capable of at the
> moment, so I thought I would experiment with a few simple pipelines.
> So far I have been unable to get even a simple pipeline working the
> way I want and am at this point no sure what is going on.
>
> I have two pipelines, one that is the server, and one that is the client.
>
> The server looks like this:
>
> gst-launch  \
> videotestsrc ! \
> theoraenc ! \
> rtptheorapay ! \
> udpsink
>
> while the client looks like:
>
> gst-launch --verbose \
> udpsrc ! \
> rtptheoradepay ! \
> theoradec ! \
> xvimagesink
>
> I run these both on the same machine, in different terminals. My goal
> is to have the videotestsrc image eventually play on the client side.
>
> When I run the server I see the following output:
>
> $ ./server
> Setting pipeline to PAUSED ...
> Pipeline is PREROLLING ...
> Pipeline is PREROLLED ...
> Setting pipeline to PLAYING ...
> New clock: GstSystemClock
>
>
> At this point I assume it is in a good state and is doing the job I
> want. So I go to star the client. Everytime I see the following:
>
> $ ./client
> Setting pipeline to PAUSED ...
> Pipeline is live and does not need PREROLL ...
> Setting pipeline to PLAYING ...
> New clock: GstSystemClock
> ERROR: from element /pipeline0/rtptheoradepay0: Could not decode stream.
> Additional debug info:
> gstrtptheoradepay.c(623): gst_rtp_theora_depay_process ():
> /pipeline0/rtptheoradepay0:
> Could not switch codebooks
> Execution ended after 17066459 ns.
> Setting pipeline to PAUSED ...
> Setting pipeline to READY ...
> Setting pipeline to NULL ...
> FREEING pipeline ...
>
>
> I am not sure what the above error is trying to tell me.
For theora to work over RTP, you need to carry the content of the
"configuration" value from the caps on the sender side to the receiver
side. That should preferably be done in your signalling. Or you can use
an older codec liek h263 that does not require transmitting a header.

--
Olivier Crête
[hidden email]
Collabora Ltd

-------------------------------------------------------------------------
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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel

signature.asc (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Simple pipeline with rtp and udp

Jon Dufresne
> For theora to work over RTP, you need to carry the content of the
> "configuration" value from the caps on the sender side to the receiver
> side. That should preferably be done in your signalling. Or you can use
> an older codec liek h263 that does not require transmitting a header.

Thank you for your response. I had a chance to try your suggestion. I
am going to try using h263. I changed my two pipelines to the
following:

server:
gst-launch \
        videotestsrc ! \
        ffenc_h263 ! \
        rtph263pay ! \
        udpsink

client:
gst-launch --verbose \
        udpsrc ! \
        rtph263depay ! \
        ffdec_h263 ! \
        xvimagesink

This is what I see when I first run the server in one terminal, and
then the client in a different terminal.

$ ./server

** (gst-launch-0.10:2874): WARNING **: Unknown codec ID 86022, please add here
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock


$ ./client

** (gst-launch-0.10:2878): WARNING **: Unknown codec ID 86022, please add here
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /pipeline0/ffdec_h2630: Internal GStreamer error:
negotiation problem.  Please file a bug at
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Additional debug info:
gstffmpegdec.c(2313): gst_ffmpegdec_chain (): /pipeline0/ffdec_h2630:
ffdec_h263: input format was not set before data start
Execution ended after 29165444 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
FREEING pipeline ...



My first question is, why am I getting this unknown coded ID error?
And is this something to be concerned about?

Second. Did I really come across a gstreamer bug and should I file it as such?

In the end my pipelines still do not produce the desired result, any
idea how I can fix this?

Thanks,
Jon

-------------------------------------------------------------------------
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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Simple pipeline with rtp and udp

Wim Taymans
On Mon, 2008-10-06 at 23:37 -0700, Jon Dufresne wrote:

> > For theora to work over RTP, you need to carry the content of the
> > "configuration" value from the caps on the sender side to the receiver
> > side. That should preferably be done in your signalling. Or you can use
> > an older codec liek h263 that does not require transmitting a header.
>
> Thank you for your response. I had a chance to try your suggestion. I
> am going to try using h263. I changed my two pipelines to the
> following:
>
> server:
> gst-launch \
> videotestsrc ! \
> ffenc_h263 ! \
> rtph263pay ! \
> udpsink
>
> client:
> gst-launch --verbose \
> udpsrc ! \
> rtph263depay ! \
> ffdec_h263 ! \
> xvimagesink
>
> This is what I see when I first run the server in one terminal, and
> then the client in a different terminal.

This is not going to work, see below.

>
> $ ./server
>
> ** (gst-launch-0.10:2874): WARNING **: Unknown codec ID 86022, please add here
> Setting pipeline to PAUSED ...
> Pipeline is PREROLLING ...
> Pipeline is PREROLLED ...
> Setting pipeline to PLAYING ...
> New clock: GstSystemClock
>
>
> $ ./client
>
> ** (gst-launch-0.10:2878): WARNING **: Unknown codec ID 86022, please add here
> Setting pipeline to PAUSED ...
> Pipeline is live and does not need PREROLL ...
> Setting pipeline to PLAYING ...
> New clock: GstSystemClock
> ERROR: from element /pipeline0/ffdec_h2630: Internal GStreamer error:
> negotiation problem.  Please file a bug at
> http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
> Additional debug info:
> gstffmpegdec.c(2313): gst_ffmpegdec_chain (): /pipeline0/ffdec_h2630:
> ffdec_h263: input format was not set before data start
> Execution ended after 29165444 ns.
> Setting pipeline to PAUSED ...
> Setting pipeline to READY ...
> Setting pipeline to NULL ...
> FREEING pipeline ...
>
>
>
> My first question is, why am I getting this unknown coded ID error?
> And is this something to be concerned about?

You are building against a systemwide ffmpeg, which is not supported.

>
> Second. Did I really come across a gstreamer bug and should I file it as such?

Very unlikely, your example pipeline all seems to function as designed.
Hint, you have no codec signaling going on between the sender and
receiver.

>
> In the end my pipelines still do not produce the desired result, any
> idea how I can fix this?

You should read
http://webcvs.freedesktop.org/gstreamer/gst-plugins-good/gst/rtp/README?revision=1.13&view=markup

Go to the part 'usage with udp'

Wim

>
> Thanks,
> Jon
>
> -------------------------------------------------------------------------
> 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
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


-------------------------------------------------------------------------
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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Simple pipeline with rtp and udp

Jon Dufresne
> You should read
> http://webcvs.freedesktop.org/gstreamer/gst-plugins-good/gst/rtp/README?revision=1.13&view=markup

Thank you very much for this source. My test/example now works as I
had originally envisioned. Now time to play around :)

-------------------------------------------------------------------------
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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel