This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Gstreamer running with DVSDK 4.01 DM365 EVM - Streaming between two EVM boards (fatal bit error)

We are wanting to stream between 2 EVM boards. One to capture and encode the audio/video. The other to display it.

Today we were able to get this working pretty well -- for a while. The decoder side (client) would crash after a couple of seconds sometime and after minutes other times.

 

The error was

 

ERROR: from element /GstPipeline:pipeline0/GstTIViddec2:tividdec20: fatal bit error

The Commands we used were.

Encoder/ Server

Normal 0 false false false EN-US X-NONE X-NONE

gst-launch v4l2src always-copy=FALSE ! 'video/x-raw-yuv,format=(fourcc)NV12,framerate=(fraction)30/1, width=(int)1280, height=(int)720' ! TIVidenc1 engineName=codecServer codecName=h264enc contiguousInputFrame=TRUE ! rtph264pay pt=96 config-interval=1 ! udpsink host=175.14.0.209 port=5000 sync=false

 

Decoder/Client

gst-launch -v udpsrc port=5000 caps="application/x-rtp,media=(string)video, payload=96, clock-rate=90000" ! rtph264depay ! typefind ! TIViddec2 codecName=h264dec engineName=codecServer ! TIDmaiVideoSink useUserptrBufs=true numBufs=3 videoStd=720P_60 videoOutput=component sync=false hideOSD=true

 

We start the Client first then the Server.After 5 seconds the video starts playing. After a couple minutes (random time) the decoder exits with an error

 

 

 

Output:

 

gst-launch -v udpsrc port=5000 caps="application/x-rtp,media=(

string)video, payload=96, clock-rate=90000" ! rtph264depay ! typefind ! TIViddec

2 codecName=h264dec engineName=codecServer ! TIDmaiVideoSink useUserptrBufs=true

numBufs=3 videoStd=720P_60 videoOutput=component sync=false hideOSD=true

Setting pipeline to PAUSED ...

/GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps = application/x-rtp, media=(string)video, payloa

d=(int)96, clock-rate=(int)90000, encoding-name=(string)H264

Pipeline is live and does not need PREROLL ...

Setting pipeline to PLAYING ...

New clock: GstSystemClock

/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = video/x-h264

/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = application/x-rtp, media=(string)

video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264

/GstPipeline:pipeline0/GstTypeFindElement:typefindelement0.GstPad:src: caps = video/x-h264

/GstPipeline:pipeline0/GstTypeFindElement:typefindelement0.GstPad:sink: caps = video/x-h264

/GstPipeline:pipeline0/GstTIViddec2:tividdec20.GstPad:sink: caps = video/x-h264

/GstPipeline:pipeline0/GstTIViddec2:tividdec20.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)NV12, fr

amerate=(fraction)30000/1001, width=(int)1280, height=(int)720

*************NOTE: THIS IS WHERE IS STOPS WHEN IT HANGS….******************

/GstPipeline:pipeline0/GstTIDmaiVideoSink:tidmaivideosink0.GstPad:sink: caps = video/x-raw-yuv, format=(fo

urcc)NV12, framerate=(fraction)30000/1001, width=(int)1280, height=(int)720

davinci_v4l2 davinci_v4l2.1: Before finishing with S_FMT:

layer.pix_fmt.bytesperline = 1280,

layer.pix_fmt.width = 1280,

 layer.pix_fmt.height = 720,

 layer.pix_fmt.sizeimage =1382400

davinci_v4l2 davinci_v4l2.1: pixfmt->width = 1280,

layer->layer_info.config.line_length= 1280

*************NOTE: Starts playing normal video

 

ERROR: from element /GstPipeline:pipeline0/GstTIViddec2:tividdec20: fatal bit error

 

Additional debug info:

gsttividdec2.c(1635): gst_tividdec2_decode_thread (): /GstPipeline:pipeline0/GstTIViddec2:tividdec20

Execution ended after 151664182917 ns.

Setting pipeline to PAUSED ...

Setting pipeline to READY ...

/GstPipeline:pipeline0/GstTIDmaiVideoSink:tidmaivideosink0.GstPad:sink: caps = NULL

/GstPipeline:pipeline0/GstTIViddec2:tividdec20.GstPad:src: caps = NULL

/GstPipeline:pipeline0/GstTIViddec2:tividdec20.GstPad:sink: caps = NULL

/GstPipeline:pipeline0/GstTypeFindElement:typefindelement0.GstPad:src: caps = NULL

/GstPipeline:pipeline0/GstTypeFindElement:typefindelement0.GstPad:sink: caps = NULL

/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = NULL

/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = NULL

/GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps = NULL

Setting pipeline to NULL ...

Freeing pipeline ...

 

 

End of debug

 

What can be done to fix the fatal bit error?

 

Also how do we fix the problem where the the Client MUST be running before the client?

Thanks


Bill

  • Hello,

    Bitrate error indicates that codec is failed to process the input but the error was a non-fatal error. If you run gstreamer pipeline with DMAI_DEBUG=2 flag then it will provide more about about extended error codec and you can map that error code with codec user to verify the type of error receieved during processing the input.

    Please note that client need to be run first because by default encoder generates SPS+PPS header only on the first frame and if client miss  this frame then decoder will not able to decode the frames.  I think a very reliable to do RTP streaming is by using some RTP server.

    Have you looked at using gst-rtsp server (http://people.freedesktop.org/~wtay/), many people have sucesfully used it with TI gst plugin to stream the video on VLC or on other client.

    HTH.

    Thanks

    Brijesh

     

  • Hello,

    Biterror indicates that codec is failed to process the input but the error was a non-fatal error. If you run gstreamer pipeline with DMAI_DEBUG=2 flag then it will provide more about about extended error codec and you can map that error code with codec user to verify the type of error receieved during processing the input.

    Please note that client need to be run first because by default encoder generates SPS+PPS header only on the first frame and if client miss  this frame then decoder will not able to decode the frames.  I think a very reliable to do RTP streaming is by using some RTP server.

    Have you looked at using gst-rtsp server (http://people.freedesktop.org/~wtay/), many people have sucesfully used it with TI gst plugin to stream the video on VLC or on other client.

    HTH.

    Thanks

    Brijesh

  • Brijesh,

     

    Here is the info you requested.

     

     

     

    @0x074d0c61:[T:0x41981490] ti.sdo.dmai - [Vdec2] VIDDEC2_process() ret 0 inId 2 inUse 0 consumed 14935

    @0x074d3534:[T:0x41981490] ti.sdo.dmai - [Buffer] Set user pointer 0x42f031db (physical 0x84f2c1db)

    @0x074d9d4a:[T:0x41981490] ti.sdo.dmai - [Vdec2] VIDDEC2_process() ret 0 inId 3 inUse 0 consumed 13937

    @0x074dc959:[T:0x41981490] ti.sdo.dmai - [Buffer] Set user pointer 0x42f0684c (physical 0x84f2f84c)

    @0x074e307d:[T:0x41981490] ti.sdo.dmai - [Vdec2] VIDDEC2_process() ret 0 inId 4 inUse 0 consumed 12058

    @0x074e5a5b:[T:0x41981490] ti.sdo.dmai - [Buffer] Set user pointer 0x42f09766 (physical 0x84f32766)

    @0x074e5ef4:[T:0x41981490] ti.sdo.dmai - [Vdec2] VIDDEC2_process() ret -1 inId 5 inUse 0 consumed 0

    @0x074e600b:[T:0x41981490] ti.sdo.dmai - [Vdec2] VIDDEC2_process() non-fatal error 0x853

    ERROR: from element /GstPipeline:pipeline0/GstTIViddec2:tividdec20: fatal bit error

     

    Additional debug info:

    gsttividdec2.c(1635): gst_tividdec2_decode_thread (): /GstPipeline:pipeline0/GstTIViddec2:tividdec20

    Execution ended after 122374822830 ns.

    Setting pipeline to PAUSED ...

    Setting pipeline to READY ...

    /GstPipeline:pipeline0/GstTIDmaiVideoSink:tidmaivideosink0.GstPad:sink: caps = NULL

     

    This appears to be occuring on the DM368 also from this post.

      http://e2e.ti.com/support/embedded/f/354/p/91017/317158.aspx

     

    However I was not exactly sure what the solution is for gstreamer.

     

    Bill


  • Bill,

    Did you look up error code description in codec user guide ?  Like other thread pointed, it looks like somehow you are not passing valid frame to decoder and hence its failing to decode the given frame. In most of cases it could be some issue with rtppay or rtpdepay element or its configuration/usage. This is why i asked you to try using some type of rtp server instead of simple gst pipeline. E.g the gst pipeline you are using does not use RTCP to communicate control information or out-of-band statistics.

    Thanks

    Brijesh

  • Hello,

    Can you say it more clearly about how to use gst-rtsp-server ? use it to stream video ,use vlc to view it on other client.

    thanks.

  • Hi, I am having the same issues. Were you every able to get this resolved and how?

    In 2.1 everything works fine. In 4.02, I get fatal bit error for all my rtspsrc pipes. Playing from a file is fine.

    Thanks

    Tim

  • Yo también tengo el mismo problema, quiero comunicar ambas tarjetas para mandar y recibir video en tiempo real, pero aún no lo consigo.

  • Were you able to fix this problem?. Im not able to do that, I hope you can help me.

    Thanks in advance.