Create mechanism for tolerating temporary failures for gstreamer framesources

Description

The RTHP264FrameSource should be able to tolerate network outages or other interruptions of stream traffic. It should detect such events and become functioning again automatically when the streaming server is back online.

Activity

Show:
Stephen Marquard
October 2, 2015, 12:58 PM

Using a Raspberry Pi as a framesource:

cv.lecturesight.framesource.input.mrl=rtph264://hostname:8554

sometimes the frame count ("frame: ") on the Object Tracker stops incrementing and the overview image freezes. Logs show:

Buffer is NULL!!
2015-10-02 14:38:11.485 ERROR Unable to capture frame
org.apache.felix.log.LogException: cv.lecturesight.framesource.FrameSourceException: Unable to capture frame.
cv.lecturesight.framesource.impl.FrameSourceImpl.captureFrame(FrameSourceImpl.java:90)
cv.lecturesight.heartbeat.HeartBeatImpl.nextFrame(HeartBeatImpl.java:93)
cv.lecturesight.heartbeat.HeartBeatImpl.access$100(HeartBeatImpl.java:40)
cv.lecturesight.heartbeat.HeartBeatImpl$2.triggered(HeartBeatImpl.java:126)
cv.lecturesight.opencl.impl.SignalManager.dispatch(SignalManager.java:100)
cv.lecturesight.opencl.impl.OCLSignalDispatcher.run(OCLSignalDispatcher.java:45)

Stephen Marquard
October 2, 2015, 2:55 PM

Adding some more logging shows that when this error happens, appsink.isEOS() is false, but

org.gstreamer.Buffer buf = appsink.pullBuffer();

returns buf == null.

Stephen Marquard
March 19, 2016, 3:26 PM

This turned out to be a result of a configuration error on the RPi side - it was restarting the stream periodically.

Assignee

Benjamin Wulff

Reporter

Benjamin Wulff

Components

Fix versions

Affects versions

Priority

Major
Configure