Pull preroll frames when paused
This commit is contained in:
parent
2debc079fc
commit
5b936f4cab
|
|
@ -46,6 +46,12 @@ static void vt_gst_free_error(char* msg) {
|
||||||
static gboolean vt_gst_message_is_error(GstMessage* msg) {
|
static gboolean vt_gst_message_is_error(GstMessage* msg) {
|
||||||
return GST_MESSAGE_TYPE(msg) == GST_MESSAGE_ERROR;
|
return GST_MESSAGE_TYPE(msg) == GST_MESSAGE_ERROR;
|
||||||
}
|
}
|
||||||
|
static GstSample* vt_gst_pull_sample(GstAppSink* sink, GstClockTime timeout, gboolean paused) {
|
||||||
|
if (paused) {
|
||||||
|
return gst_app_sink_try_pull_preroll(sink, timeout);
|
||||||
|
}
|
||||||
|
return gst_app_sink_try_pull_sample(sink, timeout);
|
||||||
|
}
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
|
|
@ -308,14 +314,22 @@ func (p *GStreamerPlayer) GetFrameImage() (*image.RGBA, error) {
|
||||||
p.queued = nil
|
p.queued = nil
|
||||||
return frame, nil
|
return frame, nil
|
||||||
}
|
}
|
||||||
return p.readFrameLocked(C.GstClockTime(50 * 1000 * 1000))
|
pullTimeout := C.GstClockTime(50 * 1000 * 1000)
|
||||||
|
if p.paused {
|
||||||
|
pullTimeout = C.GstClockTime(200 * 1000 * 1000)
|
||||||
|
}
|
||||||
|
return p.readFrameLocked(pullTimeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *GStreamerPlayer) readFrameLocked(timeout C.GstClockTime) (*image.RGBA, error) {
|
func (p *GStreamerPlayer) readFrameLocked(timeout C.GstClockTime) (*image.RGBA, error) {
|
||||||
if p.appsink == nil {
|
if p.appsink == nil {
|
||||||
return nil, errors.New("gstreamer appsink unavailable")
|
return nil, errors.New("gstreamer appsink unavailable")
|
||||||
}
|
}
|
||||||
sample := C.gst_app_sink_try_pull_sample((*C.GstAppSink)(unsafe.Pointer(p.appsink)), timeout)
|
paused := C.gboolean(0)
|
||||||
|
if p.paused {
|
||||||
|
paused = C.gboolean(1)
|
||||||
|
}
|
||||||
|
sample := C.vt_gst_pull_sample((*C.GstAppSink)(unsafe.Pointer(p.appsink)), timeout, paused)
|
||||||
if sample == nil {
|
if sample == nil {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user