0
votes

For my project, I am trying to use a gumstix overo, with gstreamer and the TI plugin for making use of the DSP in order to stream video via RTP. I found these two tutorials and have even been able to follow them successfully:

http://jumpnowtek.com/index.php?option=com_content&view=article&id=81:gumstix-dsp-gstreamer&catid=35:gumstix&Itemid=67

^^In this one I am able to compile an embedded linux os, with gstreamer and the GstTIPlugIn Element. after doing so, I am able to stream the videotestsource to a remote PC successfully.

However that tutorial is meant for a caspa video cam, I am using the Logitech Pro C920 used in this tutorial:

http://www.oz9aec.net/index.php/gstreamer/473-using-the-logitech-c920-webcam-with-gstreamer

^^In this one we make use of a C920 camera in H264 mode. since the V4l2 drivers do not support this, we use a c script to capture from the camera frame by frame and stream it to standard out. From here we tell Gstreamer to capture from a file source, in this case standard in (/dev/fd/0). Again I am able to complete this successfully and stream from the C920 camera, however without using the TIplugin for making use of DSP.

Now on to the problem:

./capture -c 10000 -o | gst-launch -v -e filesrc location=/dev/fd/0 ! h264parse ! rtph264pay ! udpsink host=192.168.1.100 port=4000

^^This command will run the capture program, and gstreamer will grab and stream the video using the h264parse pipeline to encode (I believe?)

when I replace h264parse with the TIplugin from the first tutorial like this:

./capture -c 10000 -o | gst-launch -v -e filesrc location=/proc/self/fd/0 ! TIVidenc1 codecName=h264enc engineName=codecServer ! rtph264pay ! udpsink host=192.168.1.100 port=4000

I get this error:

Setting pipeline to PAUSED ... Pipeline is PREROLLING ... ERROR: from element /GstPipeline:pipeline0/GstTIVidenc1:tividenc10: failed to create video encoder: h264enc

Additional debug info: gsttividenc1.c(1584): gst_tividenc1_codec_start (): /GstPipeline:pipeline0/GstTIVidenc1:tividenc10 ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ...

I also tried keeping both elements in and then the error says it cannot link h264parse0 to tividenc10

Has anyone had any experience with the GstTIPlugin and know what I'm doing wrong? thanks

1

1 Answers

1
votes

What problem are you trying to solve, exactly? Are you trying to encode H.264 using the TI's encoding element? Because if I'm reading this all correctly, the './capture' utility already receives frames in H.264-- no need to encode.

Assuming we have this golden example (this works for you, right?):

./capture -c 10000 -o | gst-launch -v -e filesrc location=/dev/fd/0 ! 
h264parse ! rtph264pay ! udpsink host=192.168.1.100 port=4000

The 'h264parse' parses an H.264 stream into H.264 NAL units for the benefit of the RTP sink. If that's working, then the h264parse element is happy because it is getting H.264 data from the capture program.

If you're trying to replace h264parse with a TI H.264 encoder element, well, that's just confusing. Again, I don't know exactly what problem you're trying to solve so I might not have the whole picture.

If you're not already familiar with it, get to know the 'gst-inspect' command. E.g., 'gst-inspect h264parse'. This will give you insight about what type of data an element can consume or produce.